SENEC-Speicher in fünf Minuten per NodeRED ins Smart Home einbinden

IM EINSATZ?

Dann schau dir UNSEREN LOXKURS an und profitiere von unserem Wissen!

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.

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

YouTube-Direktlink

Downloads

NodeRED Flow Senec Integration (1164 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
  1. 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?

    1. 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

  2. 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.

  3. 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

  4. 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”? 😉

    1. 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

  5. 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

    1. 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…

  6. 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

    1. 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.

    2. 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.

    3. 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

    4. 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).

    5. 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!

    6. 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…

    7. 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

  7. 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?

    1. 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?

    2. 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

  8. @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 👍🏻

  9. @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?

  10. 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?

    1. 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.

  11. 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.

  12. 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

  13. 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

    1. Ö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

  14. 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

    1. 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

  15. 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

Schreibe einen Kommentar zu Christoph Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte dir auch gefallen