NEWS
Boolsche Werte (true / false) von InfluxDB2 in Grafana 2023
-
Erstmal ein frohes neues Jahr 2023 an die Forengemeinde!
Re: Grafana true/false anzeigen
Ich folge gerade mehr oder weniger dem sehr nützlichen Tutorial von @EddyD-s-SmartHome auf YouTube. Mehr oder weniger deshalb, weil ich völlig andere Sensordaten nutze. Genauer gesagt baue ich mir ein Dashboard für unseren Stromverbrauch, den ich mit dem PowerOpti und der Powerfox-App vom Stromzähler erfasse und dann mit dem PowerFox-Adapter in den IoBroker ziehe. Die Datenpunkte werden dabei dann ganz normal in der InfluxDB geloggt. Das ist der im Video gezeigten Heizungsanlage einigermaßen ähnlich, aber es gibt halt auch deutliche Unterschiede.
Dabei stieß ich auf das Problem, daß ich zwar auch einen Datenpunkt habe, der Wahrheitswerte liefert, aber nicht, wie im Video gezeigt, 0 und 1, sondern "true" oder "false". Bei der Suche, wie ich dafür das Beispiel auf dem Video anpassen muß, bin ich auf den o.g. Thread gestoßen, der aber ja noch für InfluxDB v1.x ist. Bei dem Gedanken, da jetzt noch extra neue Datenpunkte und / oder Scripte anlegen zu müssen, ist mir dann doch etwas blümerant geworden, weil ich doch einfache Lösungen bevorzuge Allerdings setze ich mittlerweile InfluxDB v2.x ein (wie auch im Video) und die nutzt ja bekanntermaßen Flux anstelle von InfluxQL - was Segen und Fluch zugleich ist; Fluch, weil das Zeug echt haarig ist, aber Segen, weil sich damit ein paar nette "Schweinereien" anstellen lassen, die das Problem sehr elegant lösen und damit o.G. Thread quasi überflüssig machen, wenn man InfluxDB v2.x im Einsatz hat:
Ich muß jetzt keinen Umweg mehr über irgendwelche Scripts und/oder Integer-Datenpunkte nehmen, sondern kann jetzt ganz bequem die true / false Werte aus dem IoBroker Datenpunkt einfach direkt in die InfluxDB schreiben. Wenn ich sie dann in Grafana anzeigen lassen möchte, dann geht das jetzt ganz elegant mit der Flux-Funktion "toInt()", die mir die boolschen Werte in die von Grafana benötigten 0 / 1 umwandelt. So sieht das gesamte Panel momentan aus (wie gesagt, ist work-in-progress, also noch nicht viel da ;-)):
Genau geht es um das Panel "Datenlieferung". Diese Abfrage nutze ich dabei, um die Werte aus der InfluxDB zu lesen:
from(bucket: "IoBroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "DatenVerspätet") |> filter(fn: (r) => r["_field"] == "value") |> toInt()
Der Rest ist ganz genauso wie im Video, nur daß ich statt "AUS / AN" "Pünktlich." oder "Verspätet!" in das Panel schreibe. Vielleicht hilft's ja jemandem. Nochmal in aller Deutlichkeit: dieser Weg funktioniert natürlich nur, wenn man InfluxDB v2.x nutzt; bei den älteren Versionen geht das so nicht.