Each sensor node sends readings as JSON over HTTP every 60 seconds. The Sensor API broadcasts live data over WebSocket and writes to long-term storage hourly. The dashboard consumes both streams: live data on the Feeds page and historical data on the Trends page.
protocol: WiFiClientSecure
{
ssid: "MyNetwork",
ipAssigned: "192.168.0.105"
}The ESP32 connects to Wi-Fi using WiFiClientSecure. Once it receives an IP it stays online and sends readings over HTTPS.
Internal pub/sub
{
sensorId: "cf-001",
timestamp: "2026-05-20 14:00",
temperatureC: 44.0,
humidityPct: 54.1,
pressureHPa: 1008.6
}Every POST to /api/sensor emits a reading on the internal event bus that the alert service subscribes to.