doif für Überschussladen Steckdose Aktualisierung Status und Schaltbefehl

Begonnen von jnewton957, 18 September 2022, 18:53:39

Vorheriges Thema - Nächstes Thema

jnewton957

Hallo,
mit den neuen E-Auto habe ich mir eine schnelle Schaltung bauen wollen, die eine WLAN Steckdose in Abhängigkeit der Verfügbarkeit von Photovoltaik- Überschuss ein- bzw. ausschalten soll.

doif ([PV_1_API:actual_Einspeisung] > 2400 )(set HS110_1 on) DOELSE (set HS110_1 off)

HS110 ist dabei die WLAN-Steckdose
PV_1_API ist das Photovoltaik define
actual_Einspeisung ist die jeweils aktuelle Einspeisung ins Netz.

Herausforderung. Die Steckdose schaltet morgens und auch irgendwann abends auch mal aus.
ABER: Sie schaltet z.B. unter Tage bei starker Bewölkung nicht aus.

WUNSCH: das doif checkt den Status z.B. alle 15 Minuten und sendet dann jeweils das Ein- bzw. Aussignal an die Steckdose.

Wie kann ich das realisieren ?

Danke für die Hilfe
Jörg
P.S: Im Sommer war das bisher nicht so relevant, da eben fast immer auch den ganzen Tag > 2400 Watt eingespeist wurden und somit für das E-Laden wiederum 2500 Watt aus der Steckdose zur Verfügung standen. Nun, der Herbst naht, sieht das schon anders aus.




FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

Per

Zitat von: jnewton957 am 18 September 2022, 18:53:39
ABER: Sie schaltet z.B. unter Tage bei starker Bewölkung nicht aus.

WUNSCH: das doif checkt den Status z.B. alle 15 Minuten und sendet dann jeweils das Ein- bzw. Aussignal an die Steckdose.

Wie kann ich das realisieren ?

Danke für die Hilfe
Jörg
P.S: Im Sommer war das bisher nicht so relevant, da eben fast immer auch den ganzen Tag > 2400 Watt eingespeist wurden und somit für das E-Laden wiederum 2500 Watt aus der Steckdose zur Verfügung standen. Nun, der Herbst naht, sieht das schon anders aus.
Wenn immer mehr als 2400 zur Verfügung standen, warum soll das DOIF dann was tun, du wolltest ja nichts anderes von ihm.
Zum Thema 15 min: Fhem ist ereignisorientiert, wenn weniger als 2400 wird das gemeldet (Trigger), da muss man nicht nachfragen.
Warte doch mal den ersten Tag mit <2400 ab und schau dann noch mal.

isy

Wenn bei >2400 Watt die Ladung startet und das Auto Strom zieht, dann sollte deiner Logik nach die Steckdose abschalten, da ja am Übergabepunkt nur noch <2400 Watt anstehen.

Schau dir mal meine Regelung für eine Wallbox an, ich habe alle Readings erklärt und evtl. kannst du den Code umbauen. Achte auch auf die DOIF attr weiter unten!

defmod WB_PV_Regelung DOIF (([SolarView:DPAC] > 500) and ([ga_myGoE:amp_current] < [ga_myGoE:amp_max_wallbox]) and ([ga_myGoE:car_state] == 2)) ## 1_incr\
(set ga_myGoE amp_current [ga_myGoE:amp_current:d:$1+1]) \
DOELSEIF (([SolarView:DPAC] < 400) and ([ga_myGoE:amp_current] > 6 ) and ([ga_myGoE:car_state] == 2)) ## 2_decr\
(set ga_myGoE amp_current [ga_myGoE:amp_current:d:$1-1]) \
DOELSEIF (([SolarView:DPAC] < 200) and ([ga_myGoE:amp_current] == 6 ) and ([ga_myGoE:car_state] == 2 )) ## 3_PV gering\
(set ga_myGoE off) ##\
DOELSEIF (([SolarView:DPAC] > 1480) and ([ga_myGoE:car_state] > 1)) ## 4_start\
(set ga_myGoE amp_current 6, set ga_myGoE on) \
DOELSEIF ([ga_myGoE:car_state] == 1) ## 5_Kein Auto\
(set ga_myGoE off) \
DOELSEIF ([ga_myGoE:car_state] == 4) ## 6_Fertig\
()\
DOELSE \
()   
attr WB_PV_Regelung alias PV_Überschussregelung
attr WB_PV_Regelung cmdState Ladung+|Ladung-|PV niedrig: aus|Start 6A|Kein Auto: aus|Fertig: aus|Unverändert
attr WB_PV_Regelung do always
attr WB_PV_Regelung group go-eCharger
attr WB_PV_Regelung icon helper_doif
attr WB_PV_Regelung room Garagen,System
attr WB_PV_Regelung wait 30:10


Also die Readings:
SolarView:DPAC ist die aktuelle Leistung am ÜP. Wenn > 1480, dann wird die Ladung gestartet, bei dir Steckdose "an". Bei mir erfolgt der Update alle 30 Sekunden (habe ich so eingestellt). Daher unten das Attribut wait 30:10. LEistung rauf nur alle 30 Sekunden prüfen, Leistung runter alle 10 Sekunden. Damit komme ich so zurecht, dass ich fast nie "negativ" am ÜP werde. MIt den Zeiten habe ich aber etwas experimentiert.

ga_myGoE:amp_current ist der aktuelle Strom, den die Box liefern soll. Das brauchst du nicht
ga_myGoE:amp_max_wallbox ist der max. Strom der Wallbox, das brauchst du auch nicht.
ga_myGoE:car_state ist der Status des Autos an der Wallbox, brauchst du nicht

DOELSEIF (([SolarView:DPAC] < 200)   So was brauchst du zum Abschalten der Steckdose

Die DOIF-Teile
DOELSEIF (([SolarView:DPAC] < 400) brauche ich, um die Leistung der Wallbox zu reduzieren
und
DOIF (([SolarView:DPAC] > 500) um die Leistung der Wallbox zu erhöhen.
Beide kannst du rauslöschen

Vielleicht hilft dir der Code weiter.
Ich habe auch mal eine Grafik angehangen. An einem Tag wie heute sieht das natürlich sehr "auf" und "ab" aus. Aber so geht halt meine Logik!

VG Helmut
 
Ein Weg wird erst zu einem Weg, wenn man ihn geht

jnewton957

Zitat von: Per am 19 September 2022, 10:35:18
Wenn immer mehr als 2400 zur Verfügung standen, warum soll das DOIF dann was tun, du wolltest ja nichts anderes von ihm.
Zum Thema 15 min: Fhem ist ereignisorientiert, wenn weniger als 2400 wird das gemeldet (Trigger), da muss man nicht nachfragen.
Warte doch mal den ersten Tag mit <2400 ab und schau dann noch mal.

Missverständlich von mir ausgedrückt. Im Sommer habe ich halt schnell den Überschuss von 2400 Watt. Aber nun (nahender Herbst) mag es mal um 10 Uhr >2400 sein, um 12-14 Uhr bewölt <2400 und vielleicht 14-15 nochmals >2400 und dann ist für den Tag Schluss.
Und so möchte ich eben, dass das doif die Steckdose von 10-12 und 14-15 Uhr einschaltet und den Rest des Tages eben aus.

Ich habe das heute mehrfach versucht und kontrolliert. obwohl PV_1_API:actual_Einspeisung >2400 gegen 11 Uhr wurde (so 2800) , blieb die Steckdose auf aus.
Als ich dann mal das doif geändert hatte bei Bewölkung auf >800 sprang sie an. Aber dann als nachmittags der Regen kan, blieb die Steckdose an.

Ich habe schon mit attr do resetwait und do always jeweils versucht. Keine Änderung.
Irgendwie triggert da wohl nicht obwohl PV_1_API:actual_Einspeisung alle 60 Sekunden ein update macht

==> bin ratlos.
FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

Damian

Zitat von: jnewton957 am 19 September 2022, 20:34:18
Missverständlich von mir ausgedrückt. Im Sommer habe ich halt schnell den Überschuss von 2400 Watt. Aber nun (nahender Herbst) mag es mal um 10 Uhr >2400 sein, um 12-14 Uhr bewölt <2400 und vielleicht 14-15 nochmals >2400 und dann ist für den Tag Schluss.
Und so möchte ich eben, dass das doif die Steckdose von 10-12 und 14-15 Uhr einschaltet und den Rest des Tages eben aus.

Ich habe das heute mehrfach versucht und kontrolliert. obwohl PV_1_API:actual_Einspeisung >2400 gegen 11 Uhr wurde (so 2800) , blieb die Steckdose auf aus.
Als ich dann mal das doif geändert hatte bei Bewölkung auf >800 sprang sie an. Aber dann als nachmittags der Regen kan, blieb die Steckdose an.

Ich habe schon mit attr do resetwait und do always jeweils versucht. Keine Änderung.
Irgendwie triggert da wohl nicht obwohl PV_1_API:actual_Einspeisung alle 60 Sekunden ein update macht

==> bin ratlos.

Du kannst doch mit Zeitintervallen arbeiten:

doif (([10:00-12:00] or [14:00-15:00]) and [PV_1_API:actual_Einspeisung] > 2400 )(set HS110_1 on) DOELSE (set HS110_1 off)

so wird nur in der angegebenen Zeit geladen, sonst nicht. Um 12:00 und 15:00 gibt es einen Trigger, der auf jeden Fall den Off-Befehl auslöst.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Zitat von: Damian am 19 September 2022, 22:35:19
Du kannst doch mit Zeitintervallen arbeiten:

doif (([10:00-12:00] or [14:00-15:00]) and [PV_1_API:actual_Einspeisung] > 2400 )(set HS110_1 on) DOELSE (set HS110_1 off)

so wird nur in der angegebenen Zeit geladen, sonst nicht. Um 12:00 und 15:00 gibt es einen Trigger, der auf jeden Fall den Off-Befehl auslöst.

Kann er nicht, er weiß ja vorher nicht die genaue Zeit, wann es bewölkt ist. Aber er bekommt die Zeit noch nicht aus dem Kopf!

Damian

Zitat von: Per am 20 September 2022, 08:53:17
Kann er nicht, er weiß ja vorher nicht die genaue Zeit, wann es bewölkt ist. Aber er bekommt die Zeit noch nicht aus dem Kopf!

Man kann statt fester Zeiten auch Readings angeben, deren Zeiten berechnet werden können.

Aber vermutlich habe ich hier das eigentliche Problem nicht erfasst.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

moskito

Kommen denn die minütlichen Events am DOIF an, bzw. ist das Reading "actual_Einspeisung" auch wirklich ein reiner Zahlenwert?
Oder funktioniert das DOIF, aber die WLAN-Steckdose ist nicht die zuverlässigste?

Gruß
Danny
FHEM auf Intel NUC/Proxmox & Debian 12 + HM-CFG-USB + zigbee2mqtt + Zwave + Enocean