Quick Start
This guide walks you through creating an account, adding your first device, and sending your first data point.
1. Create an Account
Section titled “1. Create an Account”- Go to siliconwit.io/register
- Enter your email and a password (8+ characters, must include uppercase, lowercase, number, and special character - 4 of 5 required)
- Complete the CAPTCHA and accept the terms
- Check your email and click the verification link
You can also sign up with Google or GitHub for one-click registration.
2. Complete Your Profile
Section titled “2. Complete Your Profile”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)
3. The Fastest Path: Try It Now
Section titled “3. The Fastest Path: Try It Now”If you just want to see the platform working with real data, right now, with nothing to configure:
- Click Add Device on the dashboard
- Click Try it now → Show 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)”-
Click Add Device → I have hardware → Define my own device
-
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.
-
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.
-
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" }]}] -
Click Create Device (the button activates when all required fields are filled)
5. Get Your Credentials
Section titled “5. Get Your Credentials”After creating the device, you will see its detail page with connection information:
| Setting | Value |
|---|---|
| Broker | mqtt.siliconwit.io |
| Port | 8883 (TLS) |
| Username | Your device ID (e.g., SWD-XXXXXX) |
| Password | Your device access token |
| Publish topic | d/{device_id}/t |
| Command topic | d/{device_id}/c (for bidirectional devices) |
Use the copy buttons to copy each value to your clipboard.
6. Send Your First Data Point
Section titled “6. Send Your First Data Point”Choose your preferred method. Your payload structure should match the fields you defined. For nested fields with children, send nested JSON objects.
Option A: HTTP POST (simplest to start)
Section titled “Option A: HTTP POST (simplest to start)”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)Option B: MQTT (recommended for production)
Section titled “Option B: MQTT (recommended for production)”MQTT is the fastest and most efficient protocol for IoT devices:
import paho.mqtt.client as mqttimport 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.
Option C: curl (quick test)
Section titled “Option C: curl (quick test)”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} }'7. View Your Data
Section titled “7. View Your Data”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)
What’s Next?
Section titled “What’s Next?”Now that your device is sending data, explore these features:
- Field Schema - Nested fields, roles, auto-grouping, and chart behavior
- Alerts - Get notified when values exceed thresholds
- Alert Integrations - Send alerts to Discord, Slack, Telegram
- Device Sharing - Share devices with your team
- Analytics & AI - Anomaly detection and AI queries (Business+)
- Automation - Automate actions based on conditions (Business+)
- API Reference - Access data programmatically (Starter+)
- Tutorials - Step-by-step hardware guides