Skip to content

Quick Start

This guide walks you through creating an account, adding your first device, and sending your first data point.

  1. Go to siliconwit.io/register
  2. Enter your email and a password (8+ characters, must include uppercase, lowercase, number, and special character - 4 of 5 required)
  3. Complete the CAPTCHA and accept the terms
  4. Check your email and click the verification link

You can also sign up with Google or GitHub for one-click registration.

After verifying your email, you will be asked to complete your profile before adding devices:

  • Legal name (required)
  • Phone number with country prefix (required)
  • Country (required)
  • Company/Organization (optional)

If you just want to see the platform working with real data, right now, with nothing to configure:

  1. Click Add Device on the dashboard
  2. Click Try it nowShow me a working device

That’s it - a real device is created in your account with about an hour of realistic sample data already flowing. Explore its charts, set up an alert, and get a feel for the platform before you touch any hardware or write any code.

When you’re ready to send your own data instead, either pick I’ll send my own data (curl/Python) from the same card for a device with real credentials and a ready-to-copy command, or follow the manual setup below for full control over fields, commands, and templates.

4. Manual Setup (Your Own Device, Your Own Fields)

Section titled “4. Manual Setup (Your Own Device, Your Own Fields)”
  1. Click Add DeviceI have hardwareDefine my own device

  2. Choose a template or start from scratch: Browse available device templates (e.g., Greenhouse Monitor, Weather Station, Fleet Tracker) to pre-fill fields, commands, and settings. Or click Start from Scratch to configure everything yourself.

  3. Fill in the required fields (marked with *):

    • Device Name * - A descriptive name (e.g., “Office Temperature Sensor”)
    • Device Type * - Sensor, actuator, controller, tracker, meter, or gateway
    • Description - What the device does or where it is located
    • Data Direction - Send-only, receive-only, or bidirectional
    • Connectivity - WiFi MQTT, HTTP, MQTT-SN, CoAP, etc.
    • Data Interval - How often the device sends data (default: 10 seconds). This is enforced as a rate limit.
  4. Define data fields * - At least one field is required. You can:

    • Click Add to add fields one by one
    • Click Import to paste or upload a JSON field configuration
    • Use children for nested data (e.g., accelerometer x/y/z grouped under “acc”)
    • Set roles for special display (e.g., “location” for GPS, “boolean” for on/off values)

    Example flat fields:

    [
    { "name": "temperature", "label": "Temperature", "unit": "°C" },
    { "name": "humidity", "label": "Humidity", "unit": "%" }
    ]

    Example nested fields with roles:

    [
    { "name": "acc", "label": "Accelerometer", "unit": "g", "children": [
    { "name": "x", "label": "X" },
    { "name": "y", "label": "Y" },
    { "name": "z", "label": "Z" }
    ]},
    { "name": "gps", "label": "GPS", "role": "location", "children": [
    { "name": "lat", "label": "Latitude" },
    { "name": "lon", "label": "Longitude" }
    ]}
    ]
  5. Click Create Device (the button activates when all required fields are filled)

After creating the device, you will see its detail page with connection information:

SettingValue
Brokermqtt.siliconwit.io
Port8883 (TLS)
UsernameYour device ID (e.g., SWD-XXXXXX)
PasswordYour device access token
Publish topicd/{device_id}/t
Command topicd/{device_id}/c (for bidirectional devices)

Use the copy buttons to copy each value to your clipboard.

Choose your preferred method. Your payload structure should match the fields you defined. For nested fields with children, send nested JSON objects.

Flat fields (temperature, humidity, battery):

import requests, time, random
DEVICE_ID = "SWD-XXXXXX"
ACCESS_TOKEN = "your-access-token"
URL = "https://siliconwit.io/api/devices/ingest"
for i in range(10):
data = {
"temperature": round(random.uniform(20.0, 35.0), 1),
"humidity": round(random.uniform(40.0, 80.0), 1),
"battery": round(random.uniform(60.0, 100.0), 0),
}
payload = {"device_id": DEVICE_ID, "access_token": ACCESS_TOKEN, "data": data}
r = requests.post(URL, json=payload, timeout=10)
print(f"[{i+1}/10] {r.status_code} {r.json()}")
time.sleep(10)

Nested fields (accelerometer + GPS):

import requests, time, random
DEVICE_ID = "SWD-XXXXXX"
ACCESS_TOKEN = "your-access-token"
URL = "https://siliconwit.io/api/devices/ingest"
for i in range(10):
data = {
"iri": round(random.uniform(1.5, 6.5), 2),
"acc": {
"x": round(random.uniform(0.8, 3.2), 2),
"y": round(random.uniform(0.8, 3.2), 2),
"z": round(random.uniform(0.8, 3.2), 2),
},
"gps": {
"lat": round(-1.2921 + i * 0.001, 6),
"lon": round(36.8219 + i * 0.001, 6),
},
}
payload = {"device_id": DEVICE_ID, "access_token": ACCESS_TOKEN, "data": data}
r = requests.post(URL, json=payload, timeout=10)
print(f"[{i+1}/10] {r.status_code}")
time.sleep(10)
Section titled “Option B: MQTT (recommended for production)”

MQTT is the fastest and most efficient protocol for IoT devices:

import paho.mqtt.client as mqtt
import ssl, json, time, random
DEVICE_ID = "SWD-XXXXXX"
ACCESS_TOKEN = "your-access-token"
client = mqtt.Client(client_id=DEVICE_ID)
client.username_pw_set(DEVICE_ID, ACCESS_TOKEN)
client.tls_set(cert_reqs=ssl.CERT_REQUIRED, tls_version=ssl.PROTOCOL_TLS_CLIENT)
client.connect("mqtt.siliconwit.io", 8883, 60)
client.loop_start()
time.sleep(2)
for i in range(10):
data = {
"env": {"temp": round(random.uniform(18.0, 32.0), 1), "humidity": round(random.uniform(35.0, 85.0), 1)},
"gps": {"lat": round(-1.30 + i * 0.001, 6), "lon": round(36.78 + i * 0.001, 6)},
"battery": round(random.uniform(50.0, 100.0), 0),
}
client.publish(f"d/{DEVICE_ID}/t", json.dumps(data), qos=1)
print(f"[{i+1}/10] Published")
time.sleep(10)
client.disconnect()

Code snippets for Arduino/ESP32, MicroPython, and Node.js are also available on the device detail page.

Terminal window
curl -X POST https://siliconwit.io/api/devices/ingest \
-H "Content-Type: application/json" \
-d '{
"device_id": "SWD-XXXXXX",
"access_token": "your-access-token",
"data": {"temperature": 25.5, "humidity": 60}
}'

Once your device sends data, it appears on the device detail page within seconds:

  • Latest reading - Shows the most recent values
  • Charts - Interactive time-series charts with drag-to-zoom
  • Telemetry table - Raw data with timestamps
  • Real-time updates - Data streams live via WebSocket (MQTT devices)

Now that your device is sending data, explore these features: