NEWS
OpenDTU-onBattery
-
Ich stelle mal die ketzerische Frage wie oft / in welchen Zeitabständen sich der Hoymiles Wechselrichter regeln lässt.
Ich nutze noch AhoyDTU, da melden sich die Wechselrichter alle 1 bis 5 Minuten. Ist das bei OpenDTU anders?
Oder klappt das senden neuer Werte unabhängig davon? -
wirklich schnell wird das nie sein, Übertragungswege und Tracker lassen das nicht zu.
Etwas schneller geht dies mit den Lumentrees und der Trucky Soft. -
@bananajoe said in OpenDTU-onBattery:
Ich stelle mal die ketzerische Frage wie oft / in welchen Zeitabständen sich der Hoymiles Wechselrichter regeln lässt.
Ich nutze noch AhoyDTU, da melden sich die Wechselrichter alle 1 bis 5 Minuten. Ist das bei OpenDTU anders?
Oder klappt das senden neuer Werte unabhängig davon?Auszug dazu aus dem openDTU Repo:
stefan123t
Aug 14, 2023Hallo ,
das kleinste Abfrageintervall ist bei beiden DTUs (OpenDTU & AhoyDTU) mit Absicht >> 5/15 Sekunden gewählt.
Die Anfrage eines Inverters dauert 300ms für ein einzelnes Paket, je nach Anfrage dauert es evtl also ein Vielfaches dieser 300ms. Wenn man dann noch mehrere Wechselrichter nacheinander abfragt kommen leicht einige Minuten zusammen.
Beim Senden einer Nachricht via MQTT oder per RestAPI an das UI werden alle diese Daten in einem Rutsch an den MQTT Server geschickt. Dies öfters zu aktualisieren als es vom Wechselrichter empfangen wird / werden kann macht keinen Sinn.
Bei AhoyDTU ist daher auch das MQTT Send Intervall auf 60 Sekunden nachbinten begrenzt, da ein ESP8266 ein kleineren Speicher und langsameren Prozessor / nur einen Kern hat. -
zum Betrieb müssen die GPIO in einer JSON Datei bestimmt werden und in der
OpenDtu wiederhergestellt werden.Status : Antenne nrf24l01+ läuft
meine Basic V1
[ { "name": "Generic NodeMCU 38 pin 03112023", "battery": { "rx": 27, "tx": 14 }, "cmt": { "clk": -1, "cs": -1, "fcs": -1, "sdio": -1, "gpio2": -1, "gpio3": -1 }, "display": { "type": -1, "data": -1, "clk": -1 }, "eth": { "enabled": false, "phy_addr": -1, "power": -1, "mdc": -1, "mdio": -1, "type": -1, "clk_mode": -1 }, "huawei": { "miso": -1, "mosi": -1, "clk": -1, "irq": -1, "power": -1, "cs": -1 }, "led": { "led0": 17, "led1": -1 }, "nrf24": { "miso": 19, "mosi": 23, "clk": 18, "irq": 16, "en": 4, "cs": 5 }, "victron": { "rx": 22, "tx": -1 } } ]
-
weiter im Text,
beim Tasmota Zähler ESP einbinden hakt es noch,
kann hier jemand beim JSON Pfad helfen. -
Status :
Antenne nrf24l01+ wird empfangen
Zähler Tasmota eingebundenBüld
nun weitere Tests mit Vitron VE Direkt mit dem Solar MPPT 100/20 Laderegler
aus der Doku:
Battery support: Read the voltage from Victron MPPT charge controller or from the Hoymiles DC inputs and starts/stops the power producing based on configurable voltage thresholds
-
weiter im Text,
Status :
Antenne nrf24l01+ wird empfangen
Zähler Tasmota eingebunden läuft
Victron VE Direkt eingebunden läuftFür Victron ist der GPIO 22
Direkte Verbindung ohne weitere Hardware.Connector am Victron von Links Gnd , RX, TX, VCC
Büld
nun der anspruchsvolle Endspurt mit Pylontech
-
Anpassung des Pinmapping Battery RX 27 und TX 26 default Werte
[ { "name": "Generic NodeMCU 38 pin 04112023", "battery": { "rx": 27, "tx": 26 }, "cmt": { "clk": -1, "cs": -1, "fcs": -1, "sdio": -1, "gpio2": -1, "gpio3": -1 }, "display": { "type": -1, "data": -1, "clk": -1 }, "eth": { "enabled": false, "phy_addr": -1, "power": -1, "mdc": -1, "mdio": -1, "type": -1, "clk_mode": -1 }, "huawei": { "miso": -1, "mosi": -1, "clk": -1, "irq": -1, "power": -1, "cs": -1 }, "led": { "led0": 17, "led1": -1 }, "nrf24": { "miso": 19, "mosi": 23, "clk": 18, "irq": 16, "en": 4, "cs": 5 }, "victron": { "rx": 22, "tx": -1 } } ]
-
sehr geil... Ich habe das Projekt vor einigen Wochen auch entdeckt und kurze Zeit später gleich aufgebaut.
Der Victron 100/20 ist angebunden, habe dazu einen Pegelwandler benutzt, soll aber auch ohne funktionieren.
IR Lesekoph Hichi liefert den aktuellen Strombedarf an die DTU. Es fehlt mir noch die 48V Batterie.
Gekauft wird eine Pylontech US3000c und soll über die CAN Schnittstelle angebunden werden. Dazu habe ich beterits im Gehäuse der DTU eine Rj45 Buchse eingebaut. Ein Display parallel dazu wurde ebenso eingebaut. -
Bin noch nicht zum Can testen gekommen,
melde dich mal ob das dann bei dir läuft -
@ralla66 said in OpenDTU-onBattery:
Bin noch nicht zum Can testen gekommen,
melde dich mal ob das dann bei dir läuftdas kann dauern... Dieses Jahr wohl kaum, es sei denn, ich bekommen den Pylontech zum Sonderpreis... Zum Testen gibt es nicht viel... Über die CAN wird nur der Wert SOC (State of charge) der Batterie an OpenDTU übermittelt, mehr nicht! ...
Bis März macht es wenig Sinn die Akkus in die kalte Garage zu stellen, zumal der Akku in der Größe im Winter kaum zu laden ist.
Ich würde sagen, gegen Februar ist auch die Batterie vorhanden. Ich rechne mit ca. 600-700 KW/h, die ich noch durch die Batterie sparen kann.
-
@knopers1 said in OpenDTU-onBattery:
@ralla66 said in OpenDTU-onBattery:
Bin noch nicht zum Can testen gekommen,
melde dich mal ob das dann bei dir läuftdas kann dauern... Dieses Jahr wohl kaum, es sei denn, ich bekommen den Pylontech zum Sonderpreis... Zum Testen gibt es nicht viel... Über die CAN wird nur der Wert SOC (State of charge) der Batterie an OpenDTU übermittelt, mehr nicht! ...
Bis März macht es wenig Sinn die Akkus in die kalte Garage zu stellen, zumal der Akku in der Größe im Winter kaum zu laden ist.
Ich würde sagen, gegen Februar ist auch die Batterie vorhanden. Ich rechne mit ca. 600-700 KW/h, die ich noch durch die Batterie sparen kann.
Akku in der Garage ist schon mal ne gute Idee. Wenn er mal abfackelt, dann bleibt der Schaden geringer als wenn der Akku im Keller ist.
Das Thema „Laden bei geringen Temperaturen“ kannst du evtl. mit ner Akku-Heizung umgehen. Geht einfach auf Basis einer Dachrinnenbegleitheizung oder auch ner Spiegelheizung. Hab mal ne Akkubox gesehen bestehend aus ner Metallkiste mit Schamottsteinen zum Brandschutz und einer Mineralwolle-Isolierung. War zwar für nen 10kWh DIY-Speicher … lässt sich aber auch in klein bauen. -
Laden bei geringen Temperaturen mach wenig Sinn bei mir. Zum Laden habe ich zwei in Serie geschaltete 400Watt Module eingeplant. Die machen ca. 4Kw/h vom Mai bis ende September. Davor und danach kann ich den Akku nur teilweise beladen.... Jetzt habe ich testweise ein 24V AGM Akku am laufen, Kapazität um die 0.8 KW/h :), geladen wird es mit einem 400 PV-Modul. Das Teil braucht 3 Tage, bis der Akku aufgeladen ist
-
@ralla66
Guten Morgen, wie bekomme ich raus was in die Zeilen eingetrage, bei URL und bei Json? Wollte mein Tasmota Ir lesekopf einbinden.
Lesekopf und DTU laufen bereits aber noch ohne alles (wechselrichter, victron laderegler hab ich noch nicht).
Bin totaler Leihe was die Programierungen angeht. -
URL ist die IP deines Gerätes mit Tasmota, entweder im Router zu finden oder unter Info des Tasmota Gerätes.
Json ist zu finden in der Tasmota Konsole.
Lade mal ein Bild oder Text der Tasmota Konsole hoch. -
@ralla66 kann ich openDTU-onBattery direkt per Firmware von openDTU upgraden? Würde quasi mein Script überflüssig machen zum Thema Nulleinspeisung/Begrenzung.
-
eher nein, das Risiko das falsche Daten im Speicher verbleiben ist zu groß.
Da durch hast du eventuell ein nicht sauber ausgeführtes Programm. -
@ralla66
Screenshots von Tasmota
Danke für die Unterstützung!
-
bitte von der Konsole, du hast das script hochgeladen
-
@ralla66
Sory!
15:13:24.556 RSL: STATE = {"Time":"2023-12-13T15:13:24","Uptime":"0T22:20:09","UptimeSec":80409,"Heap":18,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":0,"POWER":"OFF","Wifi":{"AP":1,"SSId":"FritzVM","BSSId":"98:9B:CB:A1:8A:DD","Channel":1,"Mode":"11n","RSSI":100,"Signal":-35,"LinkCount":2,"Downtime":"0T00:00:05"}}
15:13:24.562 RSL: SENSOR = {"Time":"2023-12-13T15:13:24","":{"power":294,"counter_pos":800.90,"counter_neg":94.14}}
15:18:24.560 RSL: STATE = {"Time":"2023-12-13T15:18:24","Uptime":"0T22:25:09","UptimeSec":80709,"Heap":18,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":0,"POWER":"OFF","Wifi":{"AP":1,"SSId":"FritzVM","BSSId":"98:9B:CB:A1:8A:DD","Channel":1,"Mode":"11n","RSSI":100,"Signal":-35,"LinkCount":2,"Downtime":"0T00:00:05"}}
15:18:24.565 RSL: SENSOR = {"Time":"2023-12-13T15:18:24","":{"power":2325,"counter_pos":801.02,"counter_neg":94.14}}
15:23:24.582 RSL: STATE = {"Time":"2023-12-13T15:23:24","Uptime":"0T22:30:09","UptimeSec":81009,"Heap":18,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":0,"POWER":"OFF","Wifi":{"AP":1,"SSId":"FritzVM","BSSId":"98:9B:CB:A1:8A:DD","Channel":1,"Mode":"11n","RSSI":100,"Signal":-34,"LinkCount":2,"Downtime":"0T00:00:05"}}
15:23:24.588 RSL: SENSOR = {"Time":"2023-12-13T15:23:24","":{"power":2268,"counter_pos":801.21,"counter_neg":94.14}}
15:28:24.591 RSL: STATE = {"Time":"2023-12-13T15:28:24","Uptime":"0T22:35:09","UptimeSec":81309,"Heap":18,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":0,"POWER":"OFF","Wifi":{"AP":1,"SSId":"FritzVM","BSSId":"98:9B:CB:A1:8A:DD","Channel":1,"Mode":"11n","RSSI":100,"Signal":-35,"LinkCount":2,"Downtime":"0T00:00:05"}}
15:28:24.597 RSL: SENSOR = {"Time":"2023-12-13T15:28:24","":{"power":2056,"counter_pos":801.39,"counter_neg":94.14}}
15:33:24.580 RSL: STATE = {"Time":"2023-12-13T15:33:24","Uptime":"0T22:40:09","UptimeSec":81609,"Heap":18,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":0,"POWER":"OFF","Wifi":{"AP":1,"SSId":"FritzVM","BSSId":"98:9B:CB:A1:8A:DD","Channel":1,"Mode":"11n","RSSI":100,"Signal":-36,"LinkCount":2,"Downtime":"0T00:00:05"}}
15:33:24.585 RSL: SENSOR = {"Time":"2023-12-13T15:33:24","":{"power":2049,"counter_pos":801.57,"counter_neg":94.14}}
15:38:24.581 RSL: STATE = {"Time":"2023-12-13T15:38:24","Uptime":"0T22:45:09","UptimeSec":81909,"Heap":18,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":0,"POWER":"OFF","Wifi":{"AP":1,"SSId":"FritzVM","BSSId":"98:9B:CB:A1:8A:DD","Channel":1,"Mode":"11n","RSSI":100,"Signal":-36,"LinkCount":2,"Downtime":"0T00:00:05"}}
15:38:24.586 RSL: SENSOR = {"Time":"2023-12-13T15:38:24","":{"power":2076,"counter_pos":801.75,"counter_neg":94.14}}
15:43:24.961 RSL: STATE = {"Time":"2023-12-13T15:43:24","Uptime":"0T22:50:09","UptimeSec":82209,"Heap":18,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":0,"POWER":"OFF","Wifi":{"AP":1,"SSId":"FritzVM","BSSId":"98:9B:CB:A1:8A:DD","Channel":1,"Mode":"11n","RSSI":100,"Signal":-36,"LinkCount":2,"Downtime":"0T00:00:05"}}
15:43:24.967 RSL: SENSOR = {"Time":"2023-12-13T15:43:24","":{"power":2303,"counter_pos":801.93,"counter_neg":94.14}}
15:48:24.583 RSL: STATE = {"Time":"2023-12-13T15:48:24","Uptime":"0T22:55:09","UptimeSec":82509,"Heap":18,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":0,"POWER":"OFF","Wifi":{"AP":1,"SSId":"FritzVM","BSSId":"98:9B:CB:A1:8A:DD","Channel":1,"Mode":"11n","RSSI":100,"Signal":-34,"LinkCount":2,"Downtime":"0T00:00:05"}}
15:48:24.588 RSL: SENSOR = {"Time":"2023-12-13T15:48:24","":{"power":339,"counter_pos":801.98,"counter_neg":94.14}}
15:53:24.577 RSL: STATE = {"Time":"2023-12-13T15:53:24","Uptime":"0T23:00:09","UptimeSec":82809,"Heap":18,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":0,"POWER":"OFF","Wifi":{"AP":1,"SSId":"FritzVM","BSSId":"98:9B:CB:A1:8A:DD","Channel":1,"Mode":"11n","RSSI":100,"Signal":-36,"LinkCount":2,"Downtime":"0T00:00:05"}}
15:53:24.583 RSL: SENSOR = {"Time":"2023-12-13T15:53:24","":{"power":243,"counter_pos":802.01,"counter_neg":94.14}}