An ESP32-based IoT sensor node that measures temperature and humidity, publishes data via MQTT, receives LED control commands, and supports OTA firmware updates over WiFi.
| Direction | Topic | Payload Example |
|---|---|---|
| 📤 Publish | iot/devices/DEV-001/telemetry |
{"device_id":"DEV-001","value":28.5,"unit":"°C","type":"Temperature","timestamp":1234567890} |
| 📤 Publish | iot/devices/DEV-001/status |
{"device_id":"DEV-001","led":"on","status":"online"} |
| 📥 Subscribe | iot/devices/DEV-001/command |
{"command":"led","state":"on","timestamp":1234567890} |
// Publish telemetry every 5 seconds
void loop() {
if (!mqttClient.connected()) reconnect();
mqttClient.loop();
if (millis() - lastPublish > 5000) {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
String payload = "{";
payload += "\"device_id\":\"DEV-001\",";
payload += "\"value\":" + String(temp) + ",";
payload += "\"unit\":\"°C\",";
payload += "\"type\":\"Temperature\",";
payload += "\"timestamp\":" + String(millis());
payload += "}";
mqttClient.publish("iot/devices/DEV-001/telemetry",
payload.c_str());
lastPublish = millis();
}
}