https://github.com/Freifunk-IoT
MQTT-Server:
freifunk-iot.de Port: 1883
{ "sensor_123.temperature": 23, "sensor_123.humidity": 100, "token": "abcd", "signature": "sjnjbgsgbwoisrg", "timestamp_ms": 1527861014000 }
Backend
- - InfluxDB als Datenbank
- - Grafana mit Datasource Plugin (Simple JSON), eigene API
- - GW-Admins fragen wegen fixer IP/App-VM (notfalls LXC, hauptsache sie hat Clientnetz)
- - Monitoring mit internen Events, evtl. Icinga2 mit REST
- - Python oder Node
- - Eigenständige Module für Sink, Access und Auth
Protokolle
- Carbon (UDP/TCP)
- HTTP(S) GET/POST
- MQTT
- Sensor ID
- Timestamp UTC optional als Unixtime
Beispiele: sensor_123 ist sensorid
Carbon: sensor_123.(token).temperature 23 (1527861014) untstützt keine sub-ms
MQTT: { "sensor_123.temperature": 23, "sensor_123.humidity": 100, "token": "abcd", "signature": "sjnjbgsgbwoisrg", "timestamp_ms": 1527861014000 }
HTTP-GET: \?sensor_123.temperature=23&sensor_123.humidiity=100(×tamp=0)(×tamp_ms=1000)&token=asdf
XMPP
Für später: JSON-Batch
Authentifizierung, Autorisierung etc.
- ACL's für Sensoren
- Owner optional
Wahlweise keine Auth, Token Auth oder Signatur
Eigenes Submodul: Benachrichtigungen
Datenzugriff:
- Grafana
- REST-API
- REST-API-Berichte
- HTTP-Hook über Benachrichtuígungs-Modul
Events:
- onDataSaved(SensorId) (Datenverarbeitung abgeschlossen)
- onDataError(SensorId) (Datenverarbeitung mit Fehler abgebrochen)
- periodically(period) (Event für periodische Checks)