Das Node Red Projekt - surfer1264/Zendure-Stuff GitHub Wiki
Zellspannungen überwachen und handeln
Ziel und Motivation
Wenn Ihr hier startet, dann habt Ihr Euch bereits die Daten des Zendure-Hubs im HA verfügbar gemacht. Jetzt gehts ans Überwachen und Eingreifen.
Folgendes Projekt überwacht:
- die unteren Zellspannungen der Akkus
- überwacht den Zeitraum seit letzter Kalibrierung auf 100%
- riegelt bei Überschreiten bzw. Unterschreiten der Zielwerte den Wechselrichter ab.
Erreicht wird damit:
- Tiefentladung der Akkus wird unterbunden
- ggf. das Aufladen auf 100% forciert
- nach Erreichen der 100% Grenze wird die Einspeisung wieder freigegeben.
Disclaimer
Ihr seid mit Node-Red vertraut! Ich gehe auf keine Konzept von NodeRed ein, oder erkläre das Funktionieren einzelner Nodes.
Dies ist ein experimentelles Projekt. Anwendung auf eigene Gefahr und Verantwortung. Testet gut, macht Euch mit dem Projekt vertraut und konfiguriert es nach Euren Wünschen. Anpassungen werden ggf. erforderlich sein bezugnehmend auf Eure Gesamtkonfiguration (weil Ihr andere HW einsetzt oder Eure Sensornamen anders benannt sind)
Vorbereitungen
eine Node-Red HomeAssistent-Installation (ein HA Add-on), Deaktivieren der SSL Option!
Installation
Importiere den Quellcode ( Node-red_flow) des Flows in Deine Node-Red-Instanz und passe die Namen der Entitäten ggf. an die Namensgebung in Deiner HA-Instanz an. Passe die Parameter nach Deinen Wünschen an.
Im Folgenden gibt es eine Beschreibung des Projektes.
Vorbereitungen im HA
Um meine Flows verwenden zu können, sind im HomeAssistent folgende Helfervariablen anzulegen (Bereich Geräte und Dienste):
Name | Helfer-Typ | Bemerkung |
---|---|---|
Letzte Kalibrierung | Zahlenwerteingabe | Diese Variable gibt die Anzahl der Tage wieder, die vergangen sind, seit der letzten Kalibrierung. Diese Variable wird in den Flows überprüft (Zeitüberschreitung) |
Akku voll | Zähler | Wenn Akku voll, dann +1. Ich will damit zählen, wie oft der Akku auf 100% geht (nur Information, Anzeige im HA Dashboard) |
Ladung erreicht | Schalter | Am Tag der 100% Ladung wird die Variable auf TRUE gesetzt, ansonsten FALSE. Die Variable wird nur für den Export benutzt für eine externe Statistik. |
Batterie kritisch | Schalter | Die Variable wird auf True gesetzt, wenn minVol unter einen Schwellwert fällt und die letzte Kalibrierung einen Wert überschreitet. Diese Variable steuert den Wechselrichter (An oder Aus) |
Folgende Entities der HA-Integrationen werden verwendet:
- electriclevel (Akku-Ladezustand (über MQTT)
- switch.solar_wechselrichterstatus (EIN/AUS-Switch des APSystem EZ1, über HA-Integration APSystems)
- minVol (AB2000, AB1000S, über MQTT)
Dokumentation
Die Umsetzung erfolgt mit Node-Red. Mein Ziel mit dem Project war auch ein paar Konzepte mit Node-Red auszuprobieren (E-Mail versenden, Dateien schreiben, join-Node, function-Node, etc.). Auf die Konzepte selbst gehe ich nicht im Detail ein. Ein paar Dinge sind ggf. überflüssig geworden. Bedient Euch und passt an.
Konfigurationsflow
In diesem Flow werden zwei allgemeine Flow-Variablen gesetzt.
- minVol_SOLL gegen diesen Wert wird die untere Zellspannung der Akkus geprüft. Wird der Wert von einem Akku unterschritten wird die Variabe Batterie kritisch auf "on" gesetzt.
- check_kalibrierung gegen diesen Wert wird der Wert der letzten Kalibrierung geprüft. Wird der Wert überschritten wird die Variabe Batterie kritisch auf "on" gesetzt.
Dieser Flow ist dafür gedacht, eine individuelle Konfiguration zu ermöglichen, ohne in den einzelnen Nodes/Flows nach diesen Werten suchen zu müssen, wenn ihr diese Werte anpassen möchtet.
1. Hilfsflows
- Der erste Hilfsflow setzt den Helfer Letzte Kalibrierung auf den Wert 0 (eine Art Reset). Dieser Flow kann auch verwendet werden, um jeden anderen Wert einzustellen.
- Mit dem zweiten Hilfsflow wird der WR auf AUS gesetzt. (button.wechselrichter_ausschalten)
- Mit dem dritten Hilfsflow lässt sich der Akku abfragen (electriclevel)
Alle drei Hilfsflows sind experimentell, anpassbar und werden für den Betrieb nicht benötigt.
2. Überwachungsflow Akku 100%
Der Flow wird mit Statuswechsel des Akkus auf 100% automatisch angestoßen.
Ist electriclevel = 100%
- wird der Helfer Letzte Kalibierung auf "0" (heute) gesetzt. (Wird in diversen Flows abgefragt)
- wird der Helfer ladung_erreicht auf TRUE gesetzt. (Nutze ich zum Rausschreiben in eine Datei)
- wird der Counter-Helfer akku_voll inkementiert. (Ich will damit zählen wie oft der Akku auf 100% geht.)
- wird batterie_kritisch auf Off gesetzt. (Hiermit wird der WR gsteuert (An/Aus), indem Flow 6 "WR Steuerung" aufgerufen wird))
- wird eine Nachricht in die Konsole geschrieben zum Akkustand 100%
- wird der Kommunikationsflow aufgerufen
Dieser Flow hebt damit eine (mögliche) Einspeisesperre auf, die im FLow 5 "Überprüfung kritischer Werte" und FLow 6 "kritische Zellspannung" gesetzt wird.
3. Inkrementiere Letzte Kalibrierung täglich
Dieser FLow wird täglich eine Stunde nach Sonnenaufgang ausgeführt. Bedeutung: Wieviel Tage sind vergangen seit letzter Ladung auf 100%? Hier wird der Helfer Letzte Kalibierung
- um den Wert 1 erhöht
- der Kommunikationsflow wird aufgerufen
4. Kommunikationsflow
In diesem FLow werden folgende Daten zu einer Nachricht zusammengefasst:
- minVol
- akku_voll
- electriclevel
- letzte_Kalibierung
- ladung_erreicht
Es wird eine Mail aufbereitet und versendet. Die Node müsst ihr mit Euren Zugangsdaten konfigurieren. Fragt mal ChatGPT.
Es wird eine Nachricht in die Konsole geschrieben.
Es wird ein Datensatz (CSV-Datei) erzeugt im Verzeichnis: /addon_configs/a0d7b954_nodered zur externen Weiterverarbeitung.
5. Akku fällt unter Min-Wert; letzte Kalibrierung zu lange her
Dieser Flow wird automatisch angestoßen, wenn die Zellspannung(en) minVol und die letzte Kalibrierung die konfigurierten Werte über-/unterschreiten (Siehe Konfigurationsflow)).
- wird batterie_kritisch auf on gesetzt
Dieser Flow setzt natürlich voraus, dass die Zellspannungsdaten der Akkus im HA verfügbar gemacht wurden !! (siehe Vorbereitungen)
(Bemerkung: Dieser Flow wurde bei mir noch nie ausgelöst!)
6. Wechselrichter Steuerung
Dieser Flow wird automatisch aufgerufen, wenn sich batterie_kritisch ändert
- wird batterie_kritisch "on" (Ergebnis von Flow 5), wird der Wechselrichter deaktiviert
- wird batterie_kritisch "off", (Ergebnis von Flow 2) wird der Wechselrichter aktiviert
- der Kommunikationsflow wird aufgerufen
- wird eine Nachricht in die Konsole geschrieben
7. Überprüfung kritischer Werte
Ob dieser Flow (noch) sinnvoll ist, ist fraglich. Der Wert Wechselrichter AN/AUS scheint flüchtig zu sein (zumindest war er es mal). Der WR geht z.B. in den Standby wenn keine Eingangsspannung anliegt. Die Einstellungen sind daher flüchtig. Wenn das so wäre, würde der WR aufwachen und wieder Energie einspeisen,
Um die Funktion sicherzustellen, wird dieser Flow daher alle 120 Minuten aufgerufen und überprüft batterie_kritisch== "on". Sind die Eingangsvoraussetzungen unverändert, werden die Einstellungen (WR AUS) daher aufgefrischt.