Background

Erfahrungen mit dem SENEC-Update

  • #senec
von Georg Ledermann

Wie kürzlich beschrieben, hat SENEC die Firmware des Speichers aktualisiert und damit einige Dinge geändert. Entsprechend groß ist der Wirbel in den User-Foren und auf Facebook. Dieses Update ist heute auch bei mir angekommen und ich möchte meine Beobachtungen dazu mitteilen - aus Sicht eines Software-Entwicklers.

Die Firmware des SENEC-Speichers besteht aus verschiedenen Komponenten (MCU, NPU, GUI etc.), die nacheinander aktualisiert werden. Der Speicher startet dabei mehrmals neu, das Ganze zieht sich über Stunden hin. Es finden diverse Tests zwischendurch statt (Selbsttest, Batteriediagnose).

Während ich diese Zeilen schreibe, ist der Versionsstand meines Speichers wie folgt:

  • REVISION MCU: 0825
  • REVISION MCU-BL: 2307
  • REVISION NPU-REGS: 10
  • REVISION NPU-IMAGE: 2106
  • REVISION GUI: 0966

Ergänzung 07.09.2023: Heute kam eine weiteres Update hinzu:

  • REVISION NPU-IMAGE: 2309

Ergänzung 18.09.2023: Die NPU wurde erneut aktualisiert:

  • REVISION NPU-IMAGE: 2310

Ergänzung 04.10.2023: Heute wurde MCU erneut aktualisiert:

  • REVISION MCU: 0826

Nun zur Aufstellung dessen, was sich aus meiner Sicht geändert hat:

API-Änderungen

Die JSON-API, die vom Speicher bereitgestellt wird (das allseits bekannte /lala.cgi, das von allen Tools zum Abgreifen von Messwerten benutzt wird, auch von SOLECTRUS), liefert die Daten mit etwas anderer Strukturierung zurück. Einige Werte sind auch ganz verschwunden. Das macht eine Anpassung aller Tools erforderlich, die darauf zugreifen.

Hier zwei Dinge, die ich für SOLECTRUS anpassen musste:

  1. Einen genauen Zeitstempel der Messung gibt es offenbar nicht mehr, zuvor stand dieser in STATISTIC.MEASURE_TIME. SOLECTRUS bedient sich nun bei RTC.WEB_TIME. Das erscheint mir als eine Verschlechterung der Messgenauigkeit, weil dies offenbar die Uhrzeit des Speichers ist, nicht der Zeitpunkt der Messung. Die zu erwartende Abweichung dürfte sich aber nur minimal auswirken.

  2. Der Status des Speichers steht nicht mehr in STATISTIC.CURRENT_STATE, sondern in ENERGY.STAT_STATE.

URL-Änderungen

Die URL einiger Webseiten hat sich minimal geändert, es ist jetzt eine veränderte Groß-/Kleinschreibung zu beachten. Das betrifft die folgenden Seiten:

  • Log-Viewer: /log.html => /Log.html
  • Tages-Logs als reiner Text: /log/yyyy/mm/dd.log => /Log/yyyy/mm/dd.log
  • Display-Anzeige: /display.html => /Display.html
  • Variablen: /vars.html => /Vars.html
  • Diagramme: /chart.html => /Chart.html

Die alten URLs führen zu einer Fehlermeldung “Unauthorized” (http-Status 401). Dies lässt einige User vermuten, dass SENEC nützliche Informationen vor allzu neugierigen Blicken absichtlich verbergen möchte. Für mich sieht das aber eher nach unbeabsichtigten Fehlern aus, die SENEC vermutlich bald korrigieren wird.

Klar ist aber auch: Dass es kein automatisches URL-Redirect gibt, ist unschön.

Ergänzung 04.10.2023:

Die URLs haben sich erneut geändert, es ist sind jetzt zwei Slashes nach der IP-Adresse notwendig:

  • Log-Viewer: //Log.html
  • Tages-Logs als reiner Text: //Log/yyyy/mm/dd.log
  • Display-Anzeige: //Display.html
  • Variablen: //Vars.html
  • Diagramme: //Chart.html

Umstellung auf https

Der Zugriff auf den Speicher ist nur noch per https möglich, nicht mehr per http. Leider wurde das unschön implementiert, denn es gibt keinen automatischen Redirect von http zu https.

Alle Tools, die direkt auf den Speicher zugreifen, müssen also zwingend angepasst werden. Das betrifft natürlich SOLECTRUS, aber auch ioBroker, Home Assistant, evcc, etc. Soweit ich das mitbekomme, stehen solche Updates aber auch bereit. Alle haben eines gemeinsam: Als User muss man die Zugriffsmethode (engl. “Schema”, hier http oder https) manuell und explizit einstellen.

Die Umstellung von http auf https scheint übrigens zuletzt dran zu kommen, bei mir ist sie jedenfalls noch gar nicht erfolgt, mein Speicher werkelt noch auf http. Ein SOLECTRUS-User hatte die Vermutung geäußert, dass erst das NPU-Update die Umstellung auf https bewirkt. Das könnte stimmen, denn bei mir ist die Revision des NPU-Images bislang unverändert bei 2106.

Ergänzung 07.09.2023: Seit heute ist auch bei mir die Umstellung auf https erfolgt, nachdem das NPU-Image auf 2309 aktualisiert wurde. Insofern stimmt die obige Vermutung.

Eine weitere, etwas unschöne Sache bezüglich https sei erwähnt: Der Datenverkehr wird zwar nun verschlüsselt, was grundsätzlich eine gute Sache ist.

ABER: Das für https prinzipiell erforderliche Zertifikat ist selbst-signiert, sodass der Browser die Gültigkeit nicht bestätigen kann:

SSL-Zertifikat

Je nach Browser wird dadurch eine mehr oder weniger alarmistische Warnung ausgegeben. Diese Warnung gilt es zu ignorieren.

Ich denke, hier hat SENEC einen Kompromiss gewählt: Einerseits wird der Datenverkehr nun verschlüsselt, was eine Verbesserung darstellt. Denn über den Webserver werden auch Passwörter verschickt, nämlich wenn der Installateur den Speicher in den Admin-Modus versetzt. Andererseits wurde die Warnmeldung bezüglich der Signierung in Kauf genommen.

Mir ist übrigens kein Weg bekannt, mit der SENEC diese Warnmeldung hätte verhindern können, ohne dem User noch mehr zuzumuten. Eine Aufforderung zur Installation eines Root-Zertifikats hätte zu weiteren Irritationen geführt. Ein solcher Hinweis tauchte übrigens vor einigen Tagen in der SENEC-App auf, wurde aber offenbar wieder entfernt.

Ergänzung 10.09.2023: Inzwischen hat SENEC auf mein-senec.de im Bereich “Allgemeine Dokumente” tatsächlich ein Zertifikat mit der Bezeichnung SenecGui-Root bereitgestellt. Dieses Root-Zertifikat kann man sich installieren und als vertrauenswürdig einstufen, aber das ist kein trivialer Vorgang. Ich habe das mal gemacht und kann bestätigen, dass die Warnmeldung im Browser dann verschwindet. Aber das ist sicherlich keine Lösung für den normalen User.

In Firefox läuft die Installation des Zertifikats beispielsweise wie folgt ab:

  • Zip-Datei von mein-senec.de (Allgemeine Dokumente) herunterladen und entpacken. Enthalten ist eine .pem-Datei
  • In Firefox über Einstellungen die Zertifikatsverwaltung aufrufen, dort zum Tab “Zertifizierungsstellen” wechseln
  • Button “Importieren” klicken, dann .pem-Datei auswählen, öffnen und per Checkbox festlegen, dass dieser CA zur Identifizierung von Websites vertraut werden soll
  • Danach ist die Warnmeldung in Firefox beim Aufruf von https://[speicher-ip] verschwunden

Fehler in der neuen Firmware

Soweit ich das sehe, stecken zumindest zwei Fehler in der neuen Firmware, die in den verschiedenen User-Foren für größere Aufregung sorgen:

1. Display-Anzeige ohne Werte

Unter /Display.html erscheine eine leere Anzeige, es sieht folgendermaßen aus:

Display ist leer

Es ist also nur das Layout zu sehen, die eigentlich anzuzeigenden Werte fehlen. Schaut man in die DevTools des Browsers, stellt sich schnell heraus, dass die Seite bestimmte Variablen per /lala.cgi abfragt, die es in der API gar nicht mehr gibt:

{ "DISPLAY": { "IMAGE": "VARIABLE_NOT_FOUND", "LEDS": "VARIABLE_NOT_FOUND" } }

Das ist ein Fehler und vermutlich keine Absicht. Hier wird SENEC sicherlich nachbessern - entweder, indem die API diese Variablen in einer zukünftigen Version wieder zurückliefert oder indem die Seite /Display.html ganz entfernt wird.

(Ergänzung 02.10.2023)

Laut einer Ankündigung von SENEC hat man sich dort für die zweite Möglichkeit entschieden - die Display-Anzeige wird in Kürze wegfallen. Weitere Informationen dazu finden sich im Abschnitt “Häufige NPU-Fehler” weiter unten.

(Ergänzung 04.10.2023)

Die Display-Anzeige ist auch durch das Update auf MCU-Version 826 nicht entfernt worden, es hat sich aber die URL auf //Display.html geändert. Der Fehler mit der leeren Anzeige ist geblieben.

2. Lov-Viewer bleibt leer

Unter /Log.html erscheint ebenfalls eine leere Anzeige, es sieht folgendermaßen aus:

Log ist leer

Auch das dürfte keineswegs Absicht sein, ein Blick in die Browser-Devtools verrät die Details:

Request URL: /log/2023/09/06.log
Request Method: GET
Status Code: 401 Unauthorized

Der aufmerksame Leser erkennt den Fehler sofort: Die URL stimmt einfach nicht, der Log-Viewer greift auf die alte URL mit /log zu, nicht auf die neue, die ja auf /Log lautet. SENEC hat einfach vergessen, den Programmcode des Log-Viewers anzupassen. Ein ganz banaler Fehler. Auch hier wird es sicherlich ein weiteres Update geben.

(Ergänzung 04.10.2023)

Auch hier hat sich die Adresse geändert, nun lautet es //Log.html. Die Anzeige ist aber weiterhin leer, weil intern unverändert die alte URL (mit /log) aufgerufen wird.

3. Häufige NPU-Fehler

(Ergänzung 09.09.2023)

Im Log finden sich seit den Updates häufige Mitteilungen wie diese:

2023-09-09 03:14:32 [I|NPU] Switched off
2023-09-09 03:15:03 [I|Energy Management] State: Entladen -> NPU-Fehler
2023-09-09 03:15:07 [I|NPU] Correctly started
2023-09-09 03:15:10 [I|NPU] Communication established
2023-09-09 03:15:11 [I|NET] IP address changed from 192.168.178.29 to unconnected (255.255.255.255).
2023-09-09 03:15:11 [I|NPU] NPU: Change backend server to 0
2023-09-09 03:15:18 [I|NPU] NPU: image version 2309-b5746b50
2023-09-09 03:15:18 [I|NPU] NPU: protocol version 10 (0xB574)
2023-09-09 03:15:20 [I|NET] IP address changed from unconnected (255.255.255.255) to 192.168.178.29.
2023-09-09 03:15:41 [I|Energy Management] State: NPU-Fehler -> Netz & Entladen

Bei mir passiert das etwa 10 Mal am Tag. Während dieses etwa eine Minute dauernden Vorgangs ist der Speicher über das Netzwerk nicht erreichbar und zeigt im Display die Meldung NPU-Fehler an. Tools wie der SENEC-Collector von SOLECTRUS können in dieser Zeit keine Messwerte abfragen.

NPU ist die Kommunikationseinheit, also der Teil des Speichers, der für den Netzwerkzugang zuständig ist. Offenbar wird die NPU neu gestartet, vielleicht weil irgendein Problem festgestellt wurde, das im Log nicht erwähnt wird. Die Auswirkungen sind recht gering, aber normal ist das sicherlich nicht.

Da die Logs automatisch an SENEC übertragen werden, dürfte dort das Problem bekannt sein. Potential für weitere Updates ist also vorhanden.

(Ergänzung 15.09.2023)

Die Protokollierung von Switched off und die damit verbundene Anzeige von NPU-Fehler im Display traten bei mir nach dem Firmware-Update insgesamt fünf Tage lang auf und wurden 73 Mal im Log vermerkt, also alle 1-2 Stunden. Dann hört es plötzlich auf, seit mittlerweile vier Tagen findet sich die Meldung nicht mehr im Log. Die Installation eines weiteren Updates kann ich nicht erkennen. Von anderen Usern höre ich ähnliches.

Völlig spekulative, aber denkbare Erklärung: Im Rahmen des Firmware-Updates lief ein mehrtägiger Prozess im Gerät ab, der viel Rechenleistung verschlungen hat (Prüfvorgänge, Aufräumen oder was auch immer). Ein Watchdog-Modul hat das erkannt und die NPU sicherheitshalber bei einer bestimmten Schwelle neu gestartet. Nach Fertigstellung des Prozesses ist die Auslastung wieder normal und der Watchdog greift nicht mehr ein.

(Ergänzung 02.10.2023)

Zwischenzeitlich ist der NPU-Fehler bei mir sporadisch wieder aufgetreten. Das Problem ist also nicht aus der Welt.

In diesem Zusammenhang findet sich seit heute in der SENEC-App der Hinweis, dass in Kürze (ab dem 04.10.2023) ein weiteres Firmware-Update (826) kommen wird, das u.a. den “NPU-Fehler” beheben soll. Ich bin gespannt. Leider wird außerdem angekündigt, dass die Funktionen /Display.html und /Vars.html nicht mehr unterstützt werden.

Begründet wird der Wegfall mit der Optimierung des Speicherverbrauchs der Firmware und der allgemeinen Erhöhung der Sicherheitsstandards. Zumindest wird dies in einem Schreiben von SENEC an die Installateure so dargestellt, das derzeitig auf Facebook kursiert.

/Vars.html ist eine Komfortfunktion, die sämtliche Variablen und Messwerte aus dem Speicher abruft und tabellarisch darstellt. Durch den Wegfall dieser Funktion ist es aber nicht so, dass man an diese Daten gar nicht mehr herankommt. /Vars.html verwendet intern die API (/lala.cgi) die es weiterhin gibt. Es fällt nur der bequeme Zugriff über den Browser weg. Für neugierige, aber weniger versierte User ist das allerdings eine deutliche Einschränkung.

(Ergänzung 04.10.2023)

Das von SENEC angekündigte MCU-Update auf Version 826 ist bei mir heute angekommen. Neustart und Selbsttest liefen problemlos durch, der Speicher ist wieder erreichbar. SOLECTRUS funktioniert unverändert weiter. Ob sich die NPU-Fehler dadurch wirklich erledigt haben, wird sich zeigen.

Der angekündigte Wegfall von /Display.html und /Vars.html ist nicht erfolgt, die URLs haben sich aber erneut geändert. Sie lauten nun //Display.html und //Vars.html, die bekannten Fehler der leeren Anzeige sind aber geblieben.

(Ergänzung 06.10.2023)

Auch nach dem MCU-Update auf 826 ist heute in meinem Speicher ein NPU-Fehler aufgetreten, der zu einer 10-minütigen Nichterreichbarkeit geführt hat. Das Thema ist also noch nicht durch.

Ausblick

Soweit der aktuelle Stand. Ich bin gespannt, wie es weitergeht. Ich werde diesen Beitrag aktualisieren, sobald es Neuigkeiten gibt.