Devspace Documentation
Complete guide to connecting your ESP32/ESP8266 devices to the Devspace IoT platform.
1Getting Started
Follow these steps to start using Devspace:
2Install Libraries
Install the following libraries via Arduino Library Manager or PlatformIO:
- PubSubClient by Nick O'Leary - For MQTT connection
- ArduinoJson by Benoit Blanchon - For JSON parsing
PlatformIO: Add to platformio.ini
1lib_deps =2 knolleary/PubSubClient@^2.83 bblanchon/ArduinoJson@^6.21.3
3ESP32 Code Template
Copy the following template code to your Arduino IDE. This template includes WiFi and MQTT reconnection logic.
Important: Don't forget to update the
CONFIGURATION section with credentials you got from the dashboard.main.ino
1#include <WiFi.h>2#include <PubSubClient.h>3#include <ArduinoJson.h>45// ============================================================6// 🔧 CONFIGURATION - CUSTOMIZE WITH YOUR DATA!7// ============================================================89// WiFi Credentials10const char* WIFI_SSID = "your-wifi-ssid";11const char* WIFI_PASSWORD = "your-wifi-password";1213// MQTT Broker (Devspace)14const char* MQTT_BROKER = "mqtt.devspace.id";15const int MQTT_PORT = 1883;1617// MQTT Credentials (from Device Detail Dashboard)18const char* MQTT_CLIENT_ID = "dev_your-client-id";19const char* MQTT_USERNAME = "mqtt_your-username";20const char* MQTT_PASSWORD = "your-mqtt-password";2122// Sensor ID (from Sensor List Dashboard)23const char* SENSOR_ID = "your-sensor-uuid";2425// ============================================================26// 🔌 OBJECTS & VARIABLES27// ============================================================2829WiFiClient espClient;30PubSubClient mqttClient(espClient);3132const int SENSOR_PIN = 34; // Sensor Pin (adjust as needed)33const long SEND_INTERVAL = 5000; // Send data every 5 seconds34unsigned long lastSendTime = 0;3536// Topics37String DATA_TOPIC;38String STATUS_TOPIC;3940void setup() {41 Serial.begin(115200);4243 // Setup WiFi44 WiFi.begin(WIFI_SSID, WIFI_PASSWORD);45 while (WiFi.status() != WL_CONNECTED) {46 delay(500);47 Serial.print(".");48 }49 Serial.println("\nWiFi Connected!");5051 // Setup MQTT52 DATA_TOPIC = "devspace/" + String(MQTT_CLIENT_ID) + "/data";53 STATUS_TOPIC = "devspace/" + String(MQTT_CLIENT_ID) + "/status";5455 mqttClient.setServer(MQTT_BROKER, MQTT_PORT);56}5758void reconnect() {59 while (!mqttClient.connected()) {60 Serial.print("Connecting to MQTT...");61 if (mqttClient.connect(MQTT_CLIENT_ID, MQTT_USERNAME, MQTT_PASSWORD)) {62 Serial.println("Connected!");63 mqttClient.publish(STATUS_TOPIC.c_str(), "online");64 } else {65 Serial.print("failed, rc=");66 Serial.print(mqttClient.state());67 delay(5000);68 }69 }70}7172void loop() {73 if (!mqttClient.connected()) {74 reconnect();75 }76 mqttClient.loop();7778 // Send Data Periodically79 unsigned long now = millis();80 if (now - lastSendTime > SEND_INTERVAL) {81 lastSendTime = now;8283 // Read Sensor (Example: Random value)84 float value = random(200, 300) / 10.0;8586 // Create JSON Payload87 StaticJsonDocument<200> doc;88 doc["sensorId"] = SENSOR_ID;89 doc["value"] = value;9091 char jsonBuffer[200];92 serializeJson(doc, jsonBuffer);9394 // Publish95 mqttClient.publish(DATA_TOPIC.c_str(), jsonBuffer);96 Serial.println(jsonBuffer);97 }98}
Monitor Serial Output
After uploading, open Serial Monitor (Baud Rate: 115200). You should see output like this if successful:
1Connecting to WiFi...2WiFi Connected!3Connecting to MQTT...Connected!4{"sensorId":"your-uuid","value":25.5}5{"sensorId":"your-uuid","value":25.6}
MQTT Reference
| Topic | Direction | Description |
|---|---|---|
| devspace/{clientId}/data | Device → Server | Publish sensor data |
| devspace/{clientId}/status | Device → Server | Online/Offline status |
Payload Format
payload.json
1{2 "sensorId": "YOUR-SENSOR-UUID",3 "value": 25.5,4 "unit": "celsius" // Optional5}
Troubleshooting
Error: rc=-2 (Connect Failed)
Usually caused by incorrect credentials.
- Double check MQTT Username & Password
- Ensure Client ID is correct
Device Online but No Data
- Ensure
sensorIdin code matches exactly with the dashboard (UUID) - Check if JSON format is valid