NEWS
TIBBER Pulse Livedaten mit NodeRed abholen
-
Die Beschreibung dient dem Abholen von Live-Daten des Tibber Pulse Infrarot Zählerkopfes.
Die Beschreibung setzt ein paar Grundkenntnisse im ioBroker voraus. Sollte Euch etwas unbekannt vorkommen , schreibt einfach kurz in den Chat.Ganz besonders möchte ich auf die Tutorials von https://haus-automatisierung.com/ hinweisen. Diese sind jeden Cent wert und haben wir einen Großteil des Wissens vermitelt, welches ich jetzt gerne weitergeben.
Voraussetzungen
Unter https://developer.tibber.com ist ein Tibber-API-Token zu generieren
Unter https://developer.tibber.com/explorer ist die Tibber HomeId zu ermitteln.
Im ioBroker ist ein Datenpunkt vom Typ „JSON“ zu erzeugen.
Grundlegender Ablauf
- Installation node-red Adapter unter ioBroker
- Einrichtung des node-red Adapters in ioBroker
- Installation der Tibber Nodes in NodeRed
- Aufbau eines „Flows“ in NodeRed
- Einrichtung der Node „Tibber-feed“ mit WebSocket-Verbindung und Authentifizierung
- Einrichten der Node „ioBroker out“ mit Anbindung des ioB-Datenpunkts
- Compilieren/Deploy des Flows und hoffen, dass alles passt
Datenfluss
- Der Stromzähler sendet seine Informationen als IR-Impulse.
- Der TIBBER Pulse liest diese Daten aus, interpretiert diese und sendet sie über die Tibber-Bridge zum TIBBER Server.
- Der Tibber-Server verarbeitet die Daten als Grundlage zur Abrechnung, Anzeige in der Tibber-App und Steuerung verschiedener Tibber-Aktoren.
- Parallel stellt der Tibber Server die Daten als „LiveStream“ über eine WebSocketverbindung zur Verfügung
- Diese Daten werden über NodeRed abgeholt und im Datenpunkt des ioBrokers abgelegt.
Quasi einmal um die Welt und wieder zurück ins heimische Netzwerk . Und das fast in Echtzeit. Ich finde das echt Beeindruckend.
Installation und Einrichtung NodeRed-Adapter im ioBroker
NodeRed wird als Adapter im ioBroker installiert. Dies ist vermutlich die einfachste Art NodeRed nutzen zu können. NodeRed kann auch eigenständig als Paket auf z.B. einem Raspi oder Docker installiert werden. Dies ist aber kein Teil der Beschreibung.
Bei der Suche nach dem Adapter ist bitte auf den „Bindestrich“ zu achten.Ist der Adapter installiert muss dieser wie folgt eingerichtet werden.
Achtet darauf, den „Palettenmanager“ zu aktivieren.Mit Klick auf den Link oder direktem Aufruf von http://ip-adresse:1880 wird NodeRed in separatem Fenster geöffnet.
Einrichtung NodeRed mit den TIBBER Nodes
In NodeRed erfolgt die „Programmierung“ in den „Flows“. Zum Einsatz kommen dabei die sog. „Nodes“, die sich am linken Rand finden. Die Nodes für die TIBBER-Funktionalitäten müssen erst noch eingebunden werden. Dies erfolgt als nächstes.
Wähle im Hamburger-Menu den Eintrag „Palette verwalten“ aus. Dieser Eintrag ist nur vorhanden, wenn vorab in den Einstellungen des NodeRed Adapter „Palettenmanager benutzen“ aktiviert wurde – s.o.
Suche im Palettenmanager nach „tibber“ und klicke auf „installieren“.
Die Installation wird durchgeführt und die „node-red-contrib-tibber.api“ angezeigt. Nun muss der komplette NodeRed Adapter im ioBroker gestoppt und neu gestartet werden..
Sobald der Adapter wieder „grün“ ist, können wir loslegen.
TIBBER Livedaten abholen und als JSON-String zur Verfügung stellen
Klappt zuerst mal alle Nodes auf der linken Seite zu. Dafür unten auf die Doppelpfeile klicken.
Wenn Ihr dann ein wenig rollt, findet Ihr die Kategorie „Tibber API“ mit den zugehörigen Nodes.
Wählt nun aus den genannten Kategorien die folgenden Nodes aus und ordnet diese per „drag&drop“ wie abgebildet an
Aus der Kategorie „Tibber“ die Node „tibber-feed“. Aus der Kategorie „Parser“ die Node „JSON“. Aus der Kategorie „ioBroker“ die Node „ioBroker out“. Aus der Kategorie „Allgemein“ die Node „Debug“
Verbindet die Nodes nun, durch „drag&drop“ der grauen Kästchen. Danach sollte es so aussehen.
Damit haben wir den Aufbau unseres Flows abgeschlossen und wollen diesen noch umbenennen.
Dazu bitte doppelt auf den Reiter „Flow1“ klicken und einen Namen vergeben und mit „Fertig“ bestätigen.
Flow einrichten und Datenabholen
Tibber WebSocket-Verbindung einrichten
Damit der Flow Daten von Tibber abholen und in einem Datenpunkt im ioBroker ablegen kann, bedarf es noch folgender Angaben.
Durch Doppelklick auf die Node „tibber-feed“ können wir folgende Daten hinterlegen.
Zuerst richten wir die WebSocket-Verbindung zum TIBBER-Server ein. Dazu bitte auf den „Stift“ klicken.
Danach sind die Angaben wie abgebildet zu ergänzen. Der QraphQL-Endpoint lautet: https://api.tibber.com/v1-beta/gpl.
Im Feld „Access Token“ ist Euer TIBBER-API-Token einzutragen.Die Angaben mit „Hinzufügen“ speichern.
Dann muss Eure TIBBER-API-HomeID im Feld „Home ID” eingetragen werden und noch ein Name für die Node vergeben werden.
Mit den Checkboxen könnt Ihr festlegen, welche Daten von Tibber abholt werden sollen.
GANZ WICHTIG: oben muss „active“ angehakt sein.
Speicher über „Fertig“ nicht vergessen .Es kann sein, dass die Nodes nun ein wenig verrutsch sind. Zieht diese einfach wieder in Position.
Ablage der Daten im ioBroker Datenpunkt
Mit Doppelklick öffnet Ihr die Einstellung der „ioBroker Out Node“
Hinterlegt die Angaben wie abgebildet und klickt auf die 3 Punkte „…“, um den Datenpunkt im ioBroker auszuwählen, in den die Tibber-Daten geschrieben werden sollen.
Sollte Euer ioBroker Datenpunkt noch nicht angezeigt werden, dann müsst Ihr die Liste vorab aktualisieren – Symbol oben links.
Nicht vergessen unten links über „select“ zu speichern .
Auch hier abschließend mit „Fertig“ speichern.
Datenabholung Starten und im ioBroker prüfen
Mit Klick auf „Übernahme (deploy)“ erfolgt die Ausführung der Logik. Das heißt es sollen bestenfalls Daten abgeholt und im Datenpunkt abgelegt werden.
Wenn alles korrekt eingerichtet wurde sieht es dann so aus:
Oben seht Ihr, dass der „deploy“ erfolgreich durchgeführt wurde.
An den grünen Kästchen seht Ihr, dass die Verbindung zu Tibber und zum ioBroker erfolgreich aufgebaut wurde.
Und im rechten Bereich seht Ihr die Debug-Ausgabe der Debug-Node, mit den abgeholten Daten.Im ioBroker kommen die Daten nun wie folgt an:
Abschalten der Debug-Daten in NodeRed
Sobald die Verbindung funzt und die Daten im ioB-Datenpunkt ankommen, kann der „Debug“ abgeschaltet werden.
Klickt dazu in das größere grüne Kästchen. Es verändert sich die Farbe.
Danach wieder auf „Übernahme (deploy)“ klicken.Im Endeffekt werden alle Änderungen in NodeRed erst durch den „deploy“ verarbeitet.
Prüfen und Aktualisieren der Tibber-Nodes
Leider aktualisieren sich die eingebundenen Nodes nicht von selbst. Daher ist wiederkehrend manuell auf Aktualisierungen zu prüfen.
Im Hamburger-Menu die Funktion "Palette verwalten" anwählen.
Im Suchfeld nach "tibber" suchen und schauen, ob Aktualisierungen vorliegen.
Wenn ja aktualisieren
Und bitte daran denken, dass der Tibber-Adapter im ioBroker neu gestartet werden muss. s.o. -
@thomkast Perfekt, hat geklappt! Tolles Tutorial, danke dafür!
-
@ThomKast Danke für die super Anleitung!
Leider bleibt mein Tibber-node auf "connecting" und das Debug wirft diesen Error:
An error ocurred while trying to check if real time consumption is enabled. {"responseMessage":"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /v1-beta/qpl</pre>\n</body>\n</html>\n","httpCode":404,"statusCode":404,"statusMessage":"Not Found"}
-
@thegrinch Die Meldung ist nicht eindeutig für mich. Prüfe bitte zuerst mit dem Tibber API Explorer, ob Du Daten empfangen kannst. Wenn Du dort unter "Real time subscription" fortlaufende Daten erhältst, dann muss es auch in NodeRed funktionieren.
... ich gehe natürlich davon aus, dass Du einen aktiven Vertrag bei Tibber hast und auch einen angeschlossenen Pulse... -
Michaelnorge vor 4 Stunden
@thomkast Erst einmal vielen Dank für das geniale Tutorial, hat super funktioniert.Ich brauche ja wie gesagt nur den RealTime-Verbrauch von Pulse, alle anderen Daten ziehe ich immer noch über den immer noch funktionierenden Test Adapter tibber v0.1.x. (Die Funktion, das dieser Adapter ausrechnen kann, wann der Strompreis in den nächsten Stunden am billigsten ist, ist unverzichtbar für mich.)
Um meine Balkenanzeige in VIS zu reaktivieren habe ich mir behelfsmäßig ein Blockly zusammengewürfelt, um an die "reine" Zahl in der Node-Red Ausgabe zu kommen.
dfc2a694-457e-4738-990c-8e1db30a43ad-image.png
Gibt bestimmt was eleganteres, bestimmt auch direkt in Node-Red - aber da müßte ich mich reinfuchsen und da fehlt mir momentan leider die Zeit!Trotzdem vielen Dank für Deine Hilfe!
Zu Deiner Frage... "Eleganter" kann man ja trefflich diskutieren
Der Begriff "Real Time Verbrauch" soll wahrscheinlich der aktuelle Strom-Bezugswert am Hausanschlusszähler sein. Also der, an dem der Tibber-Pulse hängt.
Tibber-JSON-Daten im ioBroker aufsplitten:
Da die Tibber-Daten im JSON-Format abgelegt werden, kann man einzelne Daten quasi "adressieren". Die Grundlagen zu JSON habe ich HIER mal ganz rudimentär erklärt. Für unsere Daten bedeutet dies:Du möchtest nur den Wert "power" aus dem JSON verwenden. Dies kannst Du wie folgt extrahieren.
Diese Funktion beansprucht weniger Performance Deines Raspi.Tibber-JSON-Daten in NodeRed aufsplitten:
Wenn die Aufteilung direkt in NodeRed erfolgt ist es noch performanter.
Dies könnte so erfolgen:
Dabei kommt die Node "function" zum Einsatz.
Stelle diese Node wie abgebildet ein:
... und immer an den "deploy" denken, sonst ändert sich nix
Und schon sind die reinen Zahl-Werte des aktuellen Bezugs im ioBroker
-
@thomkast 1x im Api-Explorer abgerufen, jetzt läufts.
Verstehe ich nicht, aber danke!!! -
@thomkast Super, herzlichen Dank für Deinen Support!!!
An Node-Red habe ich mich mit Deiner Lösung nicht rangetraut, aber hab Deine Lösung über ioBroker übernommen. So war mir das noch nicht bekannt, aber man lernt bekannlich niemals aus!Jetzt kommen alle Daten (endlich) wieder rein und werden auf meinem Tablet angezeigt, dank Dir!
Ich wünsche Dir ein schönes Wochenende, und danke nochmals für Deine Hilfe!
-
@michaelnorge hab's gemacht und stelle jetzt schon fest: NodeRed wird mein nächstes zeitfressendes Hobby.
@ThomKast kann man bei NodeRed sowas auch exportieren? Dann würde ich meins zur Verfügung stellen und es müsste nicht jeder selber puzzlen.
-
@thegrinch Freut mich .
Such mal nach "node-red flow exportieren". Da finden sich ganz viele Tutorials. -
Weil grad ein bißchen Sonne rauskam fiel mir auf, dass "power" auf 0 bleibt wenn ich einspeise. @ThomKast hat gleich ausgeholfen. Wenn's negativ wird, kommt das als positiver Wert über "powerProduction".
Ich habe mir einen Datenpunkt "power-anzeige" erstellt und folgendes blockly zur Befüllung gestrickt:
Blockly:
Jetzt ist die Sonne weg, so dass ich das "x-1" nicht testen kann, sollte aber so passen.
/edit: Sonne wieder da und Anzeige passt.
-
@ThomKast Dank Deines Tutorials hat alles super funktioniert. Vielen Dank!!
-
@thomkast sagte in TIBBER Pulse Livedaten mit NodeRed abholen:
Stelle die Node wie folgt ein:
Das ist jetzt aber nicht Dein Ernst?
In Deinem Flow war das vorher schon ein Typ Number. (s. Ausgabe debug 1 - Deine Change Node macht absolut nichts) Im Übrigen ist das ein Objekt was aus der Node rauskommt und kein JSON. Das Objekt wird erst durch die JSON Node in einen String für die iobroker-Out Node in einen String umgewandelt. Ich will mich da nicht weiter einmischen - aber hier sind einfach bestimmte Dinge falsch.
Und wer seine Daten als einzelne Datenpunkte aus dem JSON haben will, schaut sich halt mal meinen Thread an.
-
@mickym sagte
Und wer seine Daten als einzelne Datenpunkte aus dem JSON haben will, schaut sich halt mal meinen Thread an.
Kannst du den hier bitte verlinken? Ich find nix.
-
@thegrinch sagte in TIBBER Pulse Livedaten mit NodeRed abholen:
@mickym sagte
Und wer seine Daten als einzelne Datenpunkte aus dem JSON haben will, schaut sich halt mal meinen Thread an.
Kannst du den hier bitte verlinken? Ich find nix.
https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen
Falls Du Hilfe brauchst dann einfach schreien. - obwohl ich glaub alles gut dokumentiert habe.
-
Habt ihr eigentlich auch ziemlich häufig Fehlermeldungen bezgl. eines Timeouts?
Connection timed out after 60000 ms.
kommt bei mir alle 2-3min. Ansonsten kommen die Daten aber immer Sekundentakt rein.
-
@oxident Ja, aber lange nicht so oft wie Du, ein- oder zwei Mal pro Tag.
Schlechte Internetverbindung? -
@michaelnorge said in TIBBER Pulse Livedaten mit NodeRed abholen:
@oxident Ja, aber lange nicht so oft wie Du, ein- oder zwei Mal pro Tag.
Schlechte Internetverbindung?Hmm, Du könntest Recht haben. Ich glaube, die WS-Verbindung zu Tibber muss ja wirklich konstant sein, oder? Will sagen, Paketverluste würden die Verbindung vermutlich unterbrechen.
Da weiß ich doch gleich, wen ich da mal wieder anrufen muss
Hättet ihr denn eine Idee, wie man über Node Red irgendwie einen "connection"-DP simulieren könnte? Will ja nicht mit alten Daten arbeiten oder verpassen, wenn wirklich über einen längeren Zeitraum keine Daten mehr abgerufen werden konnten.
-
EDIT:
Ich habe den Fehler gefunden:Die GraphQL Endpoint URL lautet nicht https://api.tibber.com/v1-beta/qpl, sondern
https://api.tibber.com/v1-beta/gqlVermutlich ein Tippfehler ?
Vielen Danke für Deine Anleitung !
Leider kann irgendwie keine Verbindung mit dem Tibberserver aufgebaut werden.
Als Debug bekomme ich folgende Meldung:An error ocurred while trying to check if real time consumption is enabled. {"responseMessage":"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /v1-beta/qpl</pre>\n</body>\n</html>\n","httpCode":404,"statusCode":404,"statusMessage":"Not Found"}
Der Tibber Flow bleibt auch auf "connecting" stehen.
Über den API Explorer bekomme ich die Livedaten.
Die HomeID habe ich auch dort rauskopiert.
Hat mir jemand einen Tipp ?Viele Grüße und besten Dank
-
@oxident said in TIBBER Pulse Livedaten mit NodeRed abholen:
Hättet ihr denn eine Idee, wie man über Node Red irgendwie einen "connection"-DP simulieren könnte? Will ja nicht mit alten Daten arbeiten oder verpassen, wenn wirklich über einen längeren Zeitraum keine Daten mehr abgerufen werden konnten.
Okay, habe es selber gefunden. Man nutzt einfach einen Trigger-Node:
-
@wauzzi sagte in TIBBER Pulse Livedaten mit NodeRed abholen:
Die GraphQL Endpoint URL lautet nicht https://api.tibber.com/v1-beta/qpl, sondern
https://api.tibber.com/v1-beta/gqlSorry, musss ich eingeschlichen haben. Habe es in der Dokumentation oben krrogiert. Danke für Deinen Hinweis.