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)