SENEC-Speicher in fünf Minuten per NodeRED ins Smart Home einbinden
Da ich gerade den Raspberry Pi mit Venus OS für meinen Kumpel neu aufgesetzt habe, musste ich seinen SENEC-Speicher auch wieder frisch einbinden. Hierfür habe ich einen NodeRED-Flow gebaut, den man super einfach in maximal fünf Minuten selbst nutzen kann, um alle relevanten Messwerte seiner SENEC-Anlage auslesen zu können.
Wie das im Detail klappt – inkl. Download des im Video gezeigten NodeRED-Flows – ist Inhalt des nachfolgenden Blogpost.
Downloads
NodeRED Flow Senec Integration (1169 Downloads )UPDATE VOM 10.09.2023:
SENEC hat die letzten Tage mit der neuen Firmware Revision MCU 3825 nach und nach die Abfragemöglichkeit von http auf https umgestellt. Der im Video gezeigte Befehl muss deshalb angepasst werden, damit die Daten weiterhin korrekt abgerufen werden können:
Vorher mit http:
curl http://192.168.2.101/lala.cgi...
Jetzt mit https:
curl -k https://192.168.2.101/lala.cgi...
Und hier nochmal der komplette Befehl, der bei meinem Kumpel nach der Umstellung sofort funktioniert hat, um die wichtigsten Daten abzurufen:
curl -k https://192.168.2.101/lala.cgi -H 'Content-Type: application/json' -d '{"ENERGY":{"GUI_HOUSE_POW":"","GUI_GRID_POW":"","GUI_INVERTER_POWER":"","GUI_BAT_DATA_POWER":"","GUI_BAT_DATA_FUEL_CHARGE":"","STAT_STATE":""},"STATISTIC":{"LIVE_GRID_IMPORT":""},"PM1OBJ1":{"P_AC":""}}'
UPDATE ENDE
41 Kommentare
War zwar schon auf YT, aber hier noch mal etwas mehr.
Habe mir den Flow unter Home Assistant mal angeschaut. Die integration dort aktalisiert standardmäßig nur alle 60 sec und wenn man den Zyklus verkürzt kommt es schon deutlich über deiner Frequenz von 1 Hz zu Abbrüchen.
Also für einige Dinge sehr interessant.
Ich würde gerne bei meinem Senec (Li2.1) den Lüfterbetrieb tracken und ggf. auch den Einsatz verstärken. Im (passwortgeschützten) Installateurmodus ist der Lüfter als Tick-Box vorhanden und kann manuell eingeschaltet werden.
Hast du ne Idee wie man mit den Zugangsdaten unter NR da ran käme?
Hi Klaus,
danke auch für deinen Input.
Ich habe mich mit der SENEC-Thematik nur paar Minuten auseinandergesetzt, bis es eben so lief, wie im Video gezeigt. So läuft es jetzt schon mehr als ein halbes Jahr ohne jeden Ausfall. Mal sehen, ob ich das bei meinem Kumpel überhaupt noch erweitere, denn aktuell kommen alle Daten im Sekundentakt an, die er braucht zwecks Steuerung seines Victron-Systems.
Aber vielleicht wissen ja andere mehr, die hier mitlesen…
Viele Grüße
Jörg
Danke für ein mal wieder interessantes Video. Ich weiß nicht genau, wie die Rohdaten in JSON da aussehen, aber es gibt hier sehr viele Variablen, die man abfragen kann. Etwas Doku gibt es hier:
https://documenter.getpostman.com/view/10329335/UVCB9ihW#intro
https://documenter.getpostman.com/view/10329335/UVCB9ihZ
Man kann eigentlich Senec auch direkt abfragen, aber das ändert sich offensichtlich immer mal:
http://senec-ip/Vars.html
Letztlich eine der umfangreichsten Varianten steckt in www.solaranzeige.de.
Läuft auch auf einem Raspi (allerdings Vorsicht mit der SD-Karte, da wird viel geschrieben), Visualisierung in Grafana und Historie in InfluxDB. Das ist nicht nur für Senec, sondern auch viele andere Systeme möglich.
Geil, danke für den ganzen Input Nino!
Viele Grüße
Jörg
Hallo Jörg
ich hole mir z.B. die Senec-Daten aus dem ioBroker Adapter “Senec”
https://github.com/nobl/ioBroker.senec
Da bei mir im ioBroker auch ein Node Red Adapter läuft, ist es in meinen Fall recht einfach: Ich hol mir nen ioBroker InputNode und wähl mir ein Objekt von den Hunderten “Senecs” aus und verwerte es in Node Red weiter.
Grundsätzlich ist bei mir der ioBroker die “Hauptzentrale”, alles Weitere läuft im ioBroker als Adapter, sofern vorhanden. Der Rest der angepassten Steuerung in Node Red.
Der ioBroker wiederum läuft auf einer Ubuntu Linux VM auf meinen (bereits vorhandenen) ESXI-Host, Raspi´s sind als ioBroker-Slaves angebunden. So hab ich alles schön kompakt beieinander.
…Alex
Danke für das tolle Video!
Jetzt wäre es natürlich spannend, ob man damit ein “friedliches” Zusammenspiel zwischen Victron-System und Senec bauen könnte.
Ich mache das derzeit recht umständlich unter ioBroker indem ich permanent den Netzbezug bzw. die -einspeisung überwache und den Victron dann gegensteuere. Alles via ESS Mode 2, also vollkommen manuelle Laderegelung.
Das klappt auch prinzipiell gut, jedoch habe ich natürlich immer wieder ein gewisses Überschwingen (Victron lädt Senec und umgekehrt) und außerdem fände ich es technisch sauberer, wenn dies direkt unter VenusOS mittels NodeRED gelöst werden könnte.
Hat da jemand vielleicht schonmal mit “rumgespielt”? 😉
Die Lade-/Entladelogik des Victron-Systems wird in diesem Fall in Loxone realisiert. Die Senec-Anlage ist quasi das führende System und die Victron-Installation ordnet sich dem unter. Mit passenen Regeln ist so ein “harmonisches” Zusammenspiel möglich… Werde ich evtl. auch mal “live” in einem Video vorstellen.
Viele Grüße
Jörg
Hallo Jörg,
das hört sich gut an! Welchen Weg gehst Du denn in Loxone?
Regelst Du direkt den SetPoint (also Ladung/Entladung des Victron-Systems) oder modifizierst Du den GridSetPoint im Bereich von z. B. -100W bis +100W und VenusOS steuert selber?
Bin gespannt auf ein Video 😉
Gruß,
Christoph
Direkt den “Grid Power Setpoint” per ESS Mode 3 abhängig von verschiedenen Faktoren, wie Überschuss und SoC des Senec-Systems, um die gewünschte Regelungslogik zu erreichen…
Hallo,
Senec hat vor paar Tagen ein Update gestartet und den internen Webserver auf HTTPS umgestellt. Leider funktioniert seitdem Node Red nicht mehr. Habe es auf HTTPS geändert, aber leider geht es nicht.
Wäre super, wenn du eine Lösung hättest. Vielen Dank
VG
Du kannst eine HTTPS-Seite mit selbstsigniertem Zertifikat heutzutage nicht mehr einfach so abrufen. Dein Webbrowser warnt und alles Automatische streikt. Was das soll, wissen die wahrscheinlich nichtmal selber.
Du musst dem Node-Red-Prozess beim Start die Environmentvariable NODE_TLS_REJECT_UNAUTHORIZED=0 verpassen, dann geht’s wieder. Theoretisch. Praktisch finden sich im Netz haufenweise Berichte, dass Senec bei der Gelegenheit auch anderen Unfug gebaut hat. Viel Glück.
Danke, werde es mal versuchen.
Gibt es auch noch eine andere Lösung?
Vielen Dank
Naja, du kannst möglicherweise für das Ding ein lets-encrypt-Zertifikat generieren und da aufspielen. Oder den öffentlichen Teil des Zertifikats von dem Ding runterladen und deinem Node-Prozess beipulen. Oder den Deppen verklickern dass sie HTTP-ohne-S gefälligst wieder einschalten sollen, weil das Abschalten des Ports (ohne Möglichkeit, ihn wieder zu aktivieren?!?) echt der allerletzte Schwachsinn ist.
All das ist ungleich mehr Aufwand und/oder dauert länger. Falls es überhaupt geht.
Okay, wäre schön, wenn die Firma überhaupt mal antworten würde. Ich bezweifle, dass sie HTTP wieder aktivieren.
Wo finde ich denn den Eintrag
,,NODE_TLS_REJECT_UNAUTHORIZED=0„
Bzw den Prozess um es hinzuzufügen?
Bin verzweifelt am suchen.
VG
Irgendwo wird der node-red-Prozess gestartet. Wahrscheinlich via /opt/victronenergy/service/nodered/run oder so. Ersetze darin “exec /wo/immer/node-red/ist” durch “exec env NODE_TLS_REJECT_UNAUTHORIZED=0 /wo/immer/node-red/ist”. Starte neu. Fertig (jedenfalls bis zum nächsten venus-Update).
bzw. (vorsichtshalber) /usr/bin/env statt env
Habe es gelöst! Eine ganz schnelle und einfache Lösung.
Einfach nach dem curl ein (-k) setzen. Das bedeutet er ignoriert das Zertifikat.
curl -k https://192.168.178.50/lala.cgi…..
Alle Werte funktionieren dann wieder!
Haha wie geil… Danke Frodo für deinen Tipp!
Bei meinem Kumpel läuft alles aktuell noch wie “eh und je” ohne jegliche Anpassung. Aber vermutlich wurde bei seiner Anlage noch kein Remote-Update eingespielt…
Hi Frodo,
ober geiler Tipp!
Habe ich gerade bei meinem Kumpel entsprechend angepasst, da es seit drei Tagen auch nicht mehr lief. Was soll ich sagen: Läuft wieder ohne Probleme mit dem zusätzlichen Attribut -k und https -> Habe dem Blogpost oben ein Update verpasst…
Tausend Dank nochmal und viele Grüße
Jörg
Hallo,
Senec hat außer der Umstellung auf https auch Änderungen am übermittelten JSON-Objekt vorgenommen. U.a. sind die LIVE_*-Werte aus dem STATISTIC-Bereich verschwunden. Weiß jemand, ob wo diese jetzt zu finden sind, bzw. wie die neue Struktur aussieht?
Danke zunächst für das Beispiel. Läuft wunderbar. Ich bin jetzt noch auf einer Suche, wie ich meinen Tagesverbrauch entsprechen tracken kann und in eine influxDb packen kann um dies dann bspw. mit Grafana zu visualisieren.
Hat hier jemand eine Idee?
Daten aus NodeRED in eine InfluxDB schieben (dafür gibt es eine entsprechende Node) und dann dort von Grafana abholen und visualisieren…
Werde ich demnächst auch im Blog vorstellen.
Viele Grüße
Jörg
@Holger, wie oben von Frodo schon geschrieben, einfach ein -k einsetzen und an das http ein s ran.
So hat es bei mir auch funktioniert ✌🏻
Danke Frodo und auch an dich Jörg 👍🏻
Danke für dein Feeback!!! Bei meinem Kumpel läuft es bisher immer noch nach “alter” http-Variante…
Bei mir wurde zwar eine neue Firmware eingespielt, aber es ist auch noch http. Eine schöne Zusammenfassung gibt es übrigens hier:
https://solectrus.de/blog/2023-09-06-erfahrungen-mit-dem-senec-update
@DanSe85, ja, danke, https funktioniert unter Node Red, wenn man in der TLS-Konfiguration für den http-request-Node den Haken bei “Serverzertifikat überprüfen” entfernt. curl benutze ich nicht.
Aber mein Problem sind die fehlenden Langzeitdaten (LIVE_*) unter STATISTIC. Kann man die irgendwo anders in dem JSON-Objekt finden oder werden die gar nicht mehrt übertragen?
Hallo,
ich habe den Flow in den Node Red eingebunden und die IP adressen geändert, bekomme aber leider keine werte und dafür eine Fehlermeldung:
Unexpected end of JSON input
Kann mir jemand helfen?
Bei meinem SENEC.Home V3 hybrid duo (MCU 0825) kommt auch nur “Unexpected end of JSON input” im Debug. Unabhängig von http oder https, wobei die GUI von Senec auch noch auf http läuft.
Ups fail. Gerade mal wieder bei der Anlage meines Kumpels draufgeschaut: Läuft weiterhin 1a… 🤷♂️
Heißen die Datenpunkte beim SENEC.Home V3 hybrid duo vllt anders?
Hallo zusammen,
man kann sich die Daten auch via einem extra Node für Senec ziehen und bekommt dann so die ganzen Daten:
Bspw. in dieser Form.
msg.payload : Object
object
wartungsplan: object
suppressedNotificationIds: array[0]
wartungNotwendig: false
steuereinheitState: “AKKU_LEER”
state: 15
firmwareVersion: 826
gridimport: object
today: 19.81854248046875
now: 0.45095
lastupdated: 1700919420
powergenerated: object
today: 0.60455322265625
now: 0
consumption: object
today: 20.42230224609375
now: 0.449308
gridexport: object
today: 0.0023636817932128906
now: 0
accuexport: object
today: 0.01618480682373047
now: 0.001494
accuimport: object
today: 0.017765045166015625
now: 0
acculevel: object
today: 0
now: 0
mcuOperationalModeId: 3
machine: “MCU”
Wer mehr darüber wissen möchte, darf sich gerne bei mir melden.
Meldung! 🙂
Gerne. Wie kann man dich kontaktieren?
joerg@meintechblog.de
Wenn auch spät. Aber ich würde gerne auch mehr Infos bekommen
Hallo Jörg,
vielen Dank für die Erklärungen und deine Arbeit des Flows.
Ich habe Node Red in einen Container auf meiner Synology eingerichtet und deinen Flow angewandt.
Leider bekomme ich aus der Senec wohl keine Daten. Nach dem “Deploy” wird kurz ein Timeout gemeldet und nachfolgenden komme mit jeder Abfrage (sekündlich) der Status “rc: 6”.
Funktioniert es denn bei Euch noch?
Wie oben beschrieben habe ich auf https umgestellt:
curl -k https://192.168.xx.xx/lala.cgi -H ‘Content-Type: application/json’ -d ‘{“ENERGY”:{“GUI_HOUSE_POW”:””,”GUI_GRID_POW”:””,”GUI_INVERTER_POWER”:””,”GUI_BAT_DATA_POWER”:””,”GUI_BAT_DATA_FUEL_CHARGE”:””,”STAT_STATE”:””},”STATISTIC”:{“LIVE_GRID_IMPORT”:””},”PM1OBJ1″:{“P_AC”:””}}’
Umstellung in der Node “Senec” und “Senec_Working”
Den Speicher erreiche ich unter der verwendeten IP-Adresse.
Auch die Werte kann ich in die virtuellen Eingänge von Loxone schreiben.
Hättet ihr noch eine Idee wie ich weiterkomme?
Viele Grüße
Max
Hallo,
Die Anfrage der Senec läuft soweit gut. Vielen Dank für dir super Beträge!
Lediglich werden nicht alle Werte korrekt an Loxone übergeben.
Der Ladestand wird übertragen, jedoch nicht die anderen Werte.
Manuel furniert der Befehl zum virtuellen Eingang, sprich das Kommando ist korrekt.
Gibt es hier noch etwas in der Einrichtung der Eingänge zu beachten?
Grüße Max
Öhm schick mir einfach mal deinen Flow per E-Mail zu, dann schau ich drüber -> joerg@meintechblog.de
Ansonsten würde ich vermuten, dass die Zahlenwerte evtl. noch als String (oder sonstiges Format) vorliegen, sodass es nicht korrekt weiterverarbeitet werden kann. Just a guess…
Viele Grüße
Jörg
Hallo Jörg,
gibt es eigentlich einen Grund, warum Du die Abfrage über den Shell-Befehl anstelle der eingebauten HTTP-Client-Funktion machst?
Gruß,
Christoph
Hi Christoph!
Öhm ne. Hatte ich mir damals gar keine Platte gemacht. War nur froh, dass es lief…
Wie würde konkret der Befehl für die HTTP-Client-Funktion aussehen? Evtl. hilft das ja jemandem weiter.
Viele Grüße
Jörg
Ahh, alles klar 😉
Ich kann gerade leider keine Flows exportieren, aber vom Prinzip her ist es recht simpel:
Zunächst msg.payload auf die gewünschten Felder aus der lala setzen, also z. B.:
{“FACTORY”:{},”ENERGY”:{},”PM1OBJ1″:{},”PV1″:{}}
Das geht dann raus zu einem “http request”-node mit folgenden Eigenschaften:
– POST
– URL = https://xxx/lala.cgi
– TLS aktivieren (Zertifikat egal)
– keep-alive aktivieren
– nur non-2xx Antworten senden
– Ausgabe als “parsed JSON-Objekt”
– Kopfzeile: “Accept” = “application/json, text/javascript, */*; q=0.01”
Dann hast Du als Ergebnis ein schönes JSON-Objekt mit allem, was man braucht 😉
Ich sage aber gleich, es gibt auch hier ein Problem, wenn der Senec mal wieder nicht erreichbar ist (NPU-Fehler). Hier müsste man noch ein wenig mit Timeouts arbeiten.
Liebe Grüße,
Christoph