NEWS
[Gelöst] Daten von MQTT nach Influx?
-
Hallo,
ich versuche gerade, von fhem auf iobroker umzusteigen und stehe vor dem Problem, die Influx-DB mit Werten zu füllen.Ich bekomme vom mqtt-Broker (mosquitto) Datensätze folgenden Formats geliefert:
{"wWComfort":"Hot","wWSelTemp":57,"wWDesiredTemp":70,"selFlowTemp":46,"selBurnPow":100,"curBurnPow":0,"pumpMod":33,"wWCircPump":0,"outdoorTemp":2.5,"wWCurTmp":52.5,"wWCurFlow":0,"curFlowTemp":40.9,"switchTemp":0,"wWActivated":"on","wWOnetime":"off","burnGas":"off","flameCurr":0,"heatPmp":"on","fanWork":"off","ignWork":"off","wWCirc":"off","heating_temp":80,"pump_mod_max":100,"pump_mod_min":10,"wWHeat":"off","wWStarts":1453,"wWWorkM":22021,"UBAuptime":2657573,"burnStarts":119821,"burnWorkMin":348923,"heatWorkMin":326902,"ServiceCode":"0Y","ServiceCodeNumber":204}Mittels des Influx-Adapters klappt es auch, diese Datensätze direkt in die DB zu speichern. Allerdings ist das Format für die Auswertungen wohl weniger geeignet.
Mir schwebt deshalb vor, mit Node-Red die Sätze vom mqtt-Broker abzuholen, mittels einer Funktion zu zerlegen und die relevanten Daten einzeln in der passenden Struktur in die Influx-DB zu schreiben.
Nur mag mir das mit meinem derzeitigen (geringen) Node-Red und Influx-DB Know-How nicht gelingen.
Infos hierzu habe ich im Forum und Doku auch nicht so richtig gefunden...
Kann mir hier jemand weiterhelfen?
Wie müßte ich z.B. einen Datensatz für "curFlowTemp" gestalten, um über die Influx-DB die Historie dieser Datensätze abspeichern zu können und wie bekomme ich dann die Datensätze in die DB?Vielen Dank schon mal für eure Hilfe!
Martin -
@LineF
Der JSON Viewer zeigt, dass man einfach auf die Attribute eines per JSON.parse() erzeugten Objektes zugreifen kann. -
In node-red habe ich die Vereinzelung schon hinbekommen und konnte auch schon was auf eine Datei was raus schreiben.
var msg1 = {};
var msg2 = {};msg1.payload = {"curFlowTemp": msg.payload.curFlowTemp};
msg2.payload = [{"curFlowTemp": msg.payload.curFlowTemp, "flameCurr": msg.payload.flameCurr, "pumpMod": msg.payload.pumpMod}];return [msg1,msg2];
Wie bekomme ich die erzeugten JSON-Daten dann aber in die Influx-DB?
Gibts da einen Influx-DB-Out Connector, oder geht das mit dem iobroker-out Connector (wie?).
Oder schreibe ich die Datensätze auf ein eigenes iobroker-Objekt raus und aktiviere dann bei dem den Influx-DB Connector?Oder muß ich eher über Blockly gehen?
Martin
-
Mittlerweile habe ich es geschafft, die Daten von MQTT in die Influx-DB zu bringen - mittels eines zusätzlich installierten Node-Red Nodes für die Influx-DB.
Die Daten lassen sich nun mit der Influx-Kommandozeile korrekt selektieren und anzeigen.
Jetzt kommt das nächste Problem:
Wie bekomme ich die Daten in die Flot-Visualisierung rein?
Wenn ich die influxdb.0 Instanz als Datenquelle angebe, erhalte ich keine Vorschläge zur Auswahl einer ID...Hat da jemand einen Tip?
Martin
-
Hab's mittlerweile gelöst bekommen.
Topic ist also erledigt.