Die hier vorgestellt Anleitung bezieht sich nur auf InfluxDB bis zu Version 1.x, aber hier geht es zu der Influx DB 2.x Version.
Node-RED bietet ja auch die Möglichkeiten Daten aus einer InfluxDB zu lesen. Natürlich ist es ebenso möglich Daten in eine InfluxDB zu schreiben. Dadurch sind die Daten verfügbar und können ebenfalls von anderen Applikationen, wie Grafana, genutzt werden. Selbst für jemanden wie mich, der keine Programmiersprache beherrscht, war die Einrichtung kein Problem und InfluxDB mit Node-RED zu verknüpfen. InfluxDB habe ich bereits hier installiert.
Erstellen einer Datenbank
Ich möchte die Daten meiner Netatmo Wetterstation in die Datenbank schreiben. Die Werte frage ich bereits mit Node-RED ab, jetzt sollen sie noch gesichert werden. Um die Datenbank zu erstellen, müsst ihr euch mit eurer InfluxDB verbinden und danach mittels create database eine Datenbank erzeugen.
root@raspberrypi:~# influx -username yourusername -password yourpassword
Connected to http://localhost:8086 version 1.2.2
InfluxDB shell version: 1.2.2
>create database netatmo;
InfluxDB mit Node-RED verknüpfen
Ich habe an meinen Funktionsblock zum Auswerten der Werte, einen weiteren Ausgang erweitert und dort den InfluxDB-Node angeschaltet.
Erstellt einen neuen InfluxDB-Server in Node-RED mit der vorher erstellen Datenbank und wählt unter Measurement für euch etwas sinnvolles.
Hier habe ich die zusätzlichen Zeilen in den Funktions-Node für euch zusammengefasst.
[code lang=“java“]
var msg7 = {};
msg7.payload = [{„Temperatur“: msg1.payload, „temp_trend“: msg2.payload, „Humidity“: msg3.payload, „min_temp“: msg4.payload, „max_temp“: msg5.payload, „CO2“: msg6.payload}];
return [msg1,msg2,msg3,msg4,msg5,msg6,msg7];
[/code]
Mehr ist es auch nicht. Ihr könnt nun in der InfluxDB testen ob Werte geschrieben werden. Nun könnt ich z.B. mittels Grafana die Werte ebenfalls visualisieren, sollte euch das Dashbaird von Node-RED nicht reichen.
PS: Es gibt immer mal wieder Probleme mit den Trend Werten, daher würde ich diese nicht mehr verarbeiten.
Hi,
interessanter blogg 🙂 Ich habe auch eine Netatmo und bin wie über grafana gestolpert. Allerdings habe ich keine Ahnung von programmieren und ich bekomme das nicht so ganz hin, meine netatmo daten mit Grafana zu verbinde 🙁 weisst du ob es eine schritt für schritt Anleitung dafür im netz gibt…?
Stefan
Welche Daten kommen denn wie in den function Node? Werden sie mit einem Join zusammengeführt?
In meinem Fall sind es Messwerte einer Netatmo Wetterstation die ich abfrage. Das Thema habe ich hier behandelt.
Ich benutze kein Join, sondern erzeuge eine neue msg.payload in welcher ich die Werte und ihre Bezeichnung zusammenfüge: msg7.payload = [{„Temperatur“: msg1.payload, „temp_trend“: msg2.payload, „Humidity“: msg3.payload, „min_temp“: msg4.payload, „max_temp“: msg5.payload, „CO2“: msg6.payload}];
Hat Netatmo was an Ihrem JSON feed geändert?
„SyntaxError: Unexpected token u in JSON at position 0“
Hallo Jens,
Die Trend-Werte gibt es wohl nicht mehr, bin aber noch nicht dazu gekommen den Beitrag zu aktualisieren.
Grüße,
Björn
guter beitrag,
ich hab bis vor kurzem noch die influxdb daten auch so formatiert, bis ich in einem flow diese version gefunden habe, was mir noch viel besser gefällt:
msg = { „payload“:
[{
temp: parseFloat(tmp[0]),
humi: parseFloat(tmp[1]),
pres: parseFloat(tmp[2]),
},
{
addr: tmp2[2],
loc: tmp2[3],
}]
};
( die parsefloats sind von mir, dann werden auch sicher fliesskommazahlen in die influxdb geschrieben) das entspricht einem z.b.
addr=“addresse“,loc=“wohnzimmer“ temp=22.45,humi=65.4,pres=1020
und sieht programmiertechnisch einfach gut aus.
Doch nochmal ne Frage zu node-red / InfluxDB speziell im Zusammenhang mit netatmo / grafana.
Da netatmo selbst ja so gut wie nix liefert an Daten (Windchill, SSI, gef. Temp, SSI, …..) nicht zu vergessen andere Sensoren an IoT Devices … was ist denn die schlauere Variante?
Blase ich mir die Datenbank auf in dem ich solche Werte so ich sie denn in node-red errechne mit in die Datenbank (wäre ja leicht redundant da man sie aus den basiswerten jederzeit erneut berechnen könnte) oder ist es am Ende dann doch einfacher sie in die Datenbank zu werfen da der Aspekt Speicherplatz ja heutzutage kaum mehr eine Rolle spielt?
Ansonsten nochmal großes Lob an Björn … vor 2 Monaten kannte ich weder node-red noch mqtt noch grafana … und es gibt dann doch wenig ähnlich gute Seiten die einem diese Themen so einfach nahe bringen ohne das man Programmierer oder IoTexperte sein muss um zum Erfolg zu kommen.
Danke erst mal für das Lob.
Wie du selber sagst, Speicherplatz kostet nix. Ich würde also alles berechnen lassen und dann in die Datenbank schreiben. Anschließend kannst du alles in Grafana darstellen.
Wenn du angst um den Speicher hast, dann kannst du pro Datenbank auch eine retention policy festlegen. Dadurch wird das maximale Alter der Daten bestimmt, z.B. alles was älter ist als ein Jahr, wird gelöscht. Per Default gibt es keine Grenze. Du musst dir selber die Frage beantworten wie lange du Daten behalten willst.
Grüße,
Björn
Hi,
Ich will von meiner fritzbox mit node-red-contrib-fritz Zustandsdaten pullen und diese an influxdb senden.
Mein output der fritzbox sieht so aus:
msg.payload : Object
object
NewTotalBytesSent: „693542844“
und die Daten sollen in grafana mit diesem Dashboard visualisiert werden:
https://grafana.com/api/dashboards/713/revisions/5/download
Kann mir da jmd mit einem node oder einer function helfen?
greetz duffy6