Hallo zusammen,
ich möchte gern meine Wallbox über FHEM steuern, und zwar um meinen Sonnenstrom in mein Auto zu laden.
Meine Wallbox, ein go-e-charger ist per MQTT ansprechbar.
Ich habe mich hier mit einem DOIF versucht, aber Irgendwie läuft das nicht so optimal.
Ich benötige 4 "Stufen": 6,8,10 und 16 (Ampere) zum Laden. Die zur Verfügung stehende Leistung bilde ich über ein UserReading aus meiner Sonnenbatterie, welche die Erzeugug der PV, sowie den Verbrauch im Haus kennt, nämlich SonBat:Ueberschussleistung.
Hier mein DOIF für 8 Ampere:
([08:00-20:00] and [SonBat:Ueberschussleistung] >= 2050.0 and [SonBat:Ueberschussleistung] <= 2450.0) {GetHttpFile("192.168.188.52", "/mqtt?payload=amp=8") } DOELSE {GetHttpFile("192.168.188.52", "/mqtt?payload=amp=6") }
Attribute sind cmdpause mit 60 Sekunden, und doalways.
Verstehe ich die commandref richtig, dass ich bei einem DOELSE kein doalwys nutzen soll ??
Kann ich das so machen, oder gibt es einen besseren Weg ??
Gruß
Wie oft willst Du {GetHttpFile("192.168.188.52", "/mqtt?payload=amp=8") } senden?
Nur wenn die Bedingung wahr wird (dann kein do always) oder jedes mal, wenn die Readings in der Bedingung (z.B. Ueberschussleistung) sich ändern (dann mit do always)?
Moin.
Also im Idealfall möchte ich, dass alle 60 Sekunden das DOIF prüft, wie hoch die Überschussleistung ist.
Das Reading der SonBat wird alle 5 Minuten aktualisiert. Das könnte ich aber auch verkürzen, und die cmdpause beim DOIF verlängern.
Je nach Überschussleistung soll das DOIF, von dem ich ja 4 Stück habe, der Wallbox den Strom vorgeben.
DOIF 1: bei weniger als 2050 Watt 6 Ampere
DOIF 2: bei mehr als 2100 Watt, aber weniger als 3050 Watt 8 Ampere
DOIF 3: bei mehr als 3100 Watt, aber weniger als 4050 Watt 10 Ampere
DOIF 4: bei mehr als 4100 Watt, aber weniger als 5050 Watt 16 Ampere
Jeweils, mit fallback auf 6 Ampere.
Ergo also mit doalways. Aber meine DOIF´s bleiben immer auf CMD2.
Das ist gruselig mit 4 DOIFs.
Mach das ganze mit nur einem DOIF. Klar kannst du bei einem do always auch ein Else nutzen.
Ich würde das ganze grob so machen
DOIF ([Leistung] > 4100) (16 Ampere)
DOELSEIF ([Leistung] > 3100) (10 Ampere)
DOELSEIF ([Leistung] > 2100) (8 Ampere)
DOELSE (6 Ampere)
Du hast nicht verstanden, was ich meinte.
DOIF "prüft" nicht jede x Minuten. DOIF reagiert auf Events (Trigger) und dann bewertet die Bedingung.
Nehmen wir mal dein DOIF, wie im ersten Post, aber ohne Attribute (kein cmdPause, kein do always:
([08:00-20:00] and [SonBat:Ueberschussleistung] >= 2050.0 and [SonBat:Ueberschussleistung] <= 2450.0) {GetHttpFile("192.168.188.52", "/mqtt?payload=amp=8") }
DOELSE
{GetHttpFile("192.168.188.52", "/mqtt?payload=amp=6") }
Nehmen wir jetzt mal an, es ist 12:00 Uhr.
1-Event um 12:00:00 Uhr: [SonBat:Ueberschussleistung] geht auf 2055 => DOIF wird getriggert, prüft ob die Bedingung wahr ist, und setzt dann DOIF auf cmd_1 (und führt den Befehl aus) => amp=8 wird an mqtt geschickt
2-Event um 12:05:00 Uhr: [SonBat:Ueberschussleistung] geht auf 2057 => DOIF wird getriggert, prüft ob die Bdeingung wahr ist, aber da schon Zustand cmd_1, macht er nichts
3-Event um 12:10:00 Uhr: [SonBat:Ueberschussleistung] geht auf 2059 => DOIF wird getriggert, prüft ob die Bdeingung wahr ist, aber da schon Zustand cmd_1, macht er nichts
4-Event um 12:15:00 Uhr: [SonBat:Ueberschussleistung] geht auf 2500 => DOIF wird getriggert, prüft ob die Bedingung wahr ist, was nicht mehr der Fall ist, dann setzt er cmd_2 mit entspr. Befehl
5-Event um 12:20:00 Uhr: [SonBat:Ueberschussleistung] geht auf 2550 => DOIF wird getriggert, da schon cmd_2 macht er nichts.
Jetzt mit do always:
1- wie früher wird amp=8 an mqtt geschickt
2- amp=8 wird wieder geschickt
3- amp=8 wird wieder geschickt
4- amp=6 wird geschickt
5- amp=6 wird wieder geschickt
Jetzt hast Du noch cmdPause dazu: nach einem Befehl wird der DOIF so zu sagen "gefroren". Das heisst aber trotzdem: wenn zwischen 8 Uhr und 20 Uhr [SonBat:Ueberschussleistung] zwischen 2050 und 2450 jede 5 Minuten variiert, wird jede 5 Minuten, sprich innerhalb von 12 Stunden 144 Mal deine Wallbox per MQTT gesteuert: setze auf 8 amp, setze auf 8 amp, setze auf 8 amp, setze auf 8 amp, setze auf 8 amp...
Und Maui hat recht, es hat keinen Sinn dafür 4 unterschiedlische DOIFs zu schreiben.
Dein DOIF bleibt ständig auf cmd_2? Zeig bitte ein "list" des DOIFs wenn Du der Meinung bist, er sollte nicht auf cmd_2 stehen.
Hallo roadghost,
soll jetzt keine Werbung sein, aber hast du dich schonmal mit openwb.de befasst?
Der go-e-charger sollte meines Wissens nach dort auch schon implementiert sein.
Ich hab mir das auf meinem RasPi installiert und damit kann man wunderbar PV-geführt das Fahrzeug laden, ohne Angst zu haben, dass Strom aus dem Netz gezogen wird.
Ich habe eine Wallbox mit SimpleEVSE.
VG
Andreas
Zitat von: amenomade am 18 März 2019, 17:03:11
Und Maui hat recht, es hat keinen Sinn dafür 4 unterschiedlische DOIFs zu schreiben.
Dein DOIF bleibt ständig auf cmd_2? Zeig bitte ein "list" des DOIFs wenn Du der Meinung bist, er sollte nicht auf cmd_2 stehen.
Danke, habe mich jetzt mit der Lösung mit einem DOIF versucht, funktioniert.
Zitat von: Maui am 18 März 2019, 11:28:57
Das ist gruselig mit 4 DOIFs.
Mach das ganze mit nur einem DOIF. Klar kannst du bei einem do always auch ein Else nutzen.
Ich würde das ganze grob so machen
DOIF ([Leistung] > 4100) (16 Ampere)
DOELSEIF ([Leistung] > 3100) (10 Ampere)
DOELSEIF ([Leistung] > 2100) (8 Ampere)
DOELSE (6 Ampere)
Danke.
Habe es nun so gelöst:
Internals:
CFGFN
DEF ([SonBat:Ueberschussleistung] > 4100.0) ({GetHttpFile("192.168.188.52", "/mqtt?payload=amp=16") }) DOELSEIF ([SonBat:Ueberschussleistung] > 2900.0) ({GetHttpFile("192.168.188.52", "/mqtt?payload=amp=10") }) DOELSEIF ([SonBat:Ueberschussleistung] > 2100.0) ({GetHttpFile("192.168.188.52", "/mqtt?payload=amp=8") }) DOELSE ({GetHttpFile("192.168.188.52", "/mqtt?payload=amp=6") })
FUUID 5c8f7db5-f33f-8f44-3994-ab697db7d9da952d
MODEL FHEM
NAME goe_automatischer_Ueberschuss
NR 47311
NTFY_ORDER 50-goe_automatischer_Ueberschuss
STATE cmd_1
TYPE DOIF
VERSION 18890 2019-03-13 18:56:41
READINGS:
2019-03-19 09:41:22 Device SonBat
2019-03-19 09:40:37 cmd 1
2019-03-19 09:40:37 cmd_event SonBat
2019-03-19 09:40:37 cmd_nr 1
2019-03-19 09:41:22 e_SonBat_Ueberschussleistung 5035.7
2019-03-19 07:01:00 mode enabled
2019-03-19 09:40:37 state cmd_1
Regex:
accu:
attr:
cmdState:
cmdpause:
60
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'SonBat','Ueberschussleistung') > 4100.0
1 ::ReadingValDoIf($hash,'SonBat','Ueberschussleistung') > 2900.0
2 ::ReadingValDoIf($hash,'SonBat','Ueberschussleistung') > 2100.0
devices:
0 SonBat
1 SonBat
2 SonBat
all SonBat
do:
0:
0 {GetHttpFile("192.168.188.52", "/mqtt?payload=amp=16") }
1:
0 {GetHttpFile("192.168.188.52", "/mqtt?payload=amp=10") }
2:
0 {GetHttpFile("192.168.188.52", "/mqtt?payload=amp=8") }
3:
0 {GetHttpFile("192.168.188.52", "/mqtt?payload=amp=6") }
helper:
event BHKWLadung: 0.0,Erzeugung: 5335.7,Verbrauch: 223.2,Ladezustand: 29.0,OperationMode: Ladung,ModeNr: 13,WattsL1: 12.3,WattsL2: 16.2,WattsL3: 194.7,Temperatur: 25.3,Entladeleistung: 0.0,Ladeleistung: 1095.8,Ueberschussleistung: 5035.7
globalinit 1
last_timer 0
sleeptimer -1
timerdev SonBat
timerevent BHKWLadung: 0.0,Erzeugung: 5335.7,Verbrauch: 223.2,Ladezustand: 29.0,OperationMode: Ladung,ModeNr: 13,WattsL1: 12.3,WattsL2: 16.2,WattsL3: 194.7,Temperatur: 25.3,Entladeleistung: 0.0,Ladeleistung: 1095.8,Ueberschussleistung: 5035.7
triggerDev SonBat
DOIF_eventas:
cmd_nr: 1
cmd: 1
cmd_event: SonBat
state: cmd_1
timerevents:
BHKWLadung: 0.0
Erzeugung: 5335.7
Verbrauch: 223.2
Ladezustand: 29.0
OperationMode: Ladung
ModeNr: 13
WattsL1: 12.3
WattsL2: 16.2
WattsL3: 194.7
Temperatur: 25.3
Entladeleistung: 0.0
Ladeleistung: 1095.8
Ueberschussleistung: 5035.7
timereventsState:
BHKWLadung: 0.0
Erzeugung: 5335.7
Verbrauch: 223.2
Ladezustand: 29.0
OperationMode: Ladung
ModeNr: 13
WattsL1: 12.3
WattsL2: 16.2
WattsL3: 194.7
Temperatur: 25.3
Entladeleistung: 0.0
Ladeleistung: 1095.8
Ueberschussleistung: 5035.7
triggerEvents:
BHKWLadung: 0.0
Erzeugung: 5335.7
Verbrauch: 223.2
Ladezustand: 29.0
OperationMode: Ladung
ModeNr: 13
WattsL1: 12.3
WattsL2: 16.2
WattsL3: 194.7
Temperatur: 25.3
Entladeleistung: 0.0
Ladeleistung: 1095.8
Ueberschussleistung: 5035.7
triggerEventsState:
BHKWLadung: 0.0
Erzeugung: 5335.7
Verbrauch: 223.2
Ladezustand: 29.0
OperationMode: Ladung
ModeNr: 13
WattsL1: 12.3
WattsL2: 16.2
WattsL3: 194.7
Temperatur: 25.3
Entladeleistung: 0.0
Ladeleistung: 1095.8
Ueberschussleistung: 5035.7
internals:
itimer:
readings:
0 SonBat:Ueberschussleistung
1 SonBat:Ueberschussleistung
2 SonBat:Ueberschussleistung
all SonBat:Ueberschussleistung
trigger:
uiState:
uiTable:
Attributes:
cmdpause 60
do always
room 4.0_PV
verbose 0
Verbose 0 weil ich sonst im LOG alle x Sekunden einen riesen Eintrag wegen des gethttp hätte.
Zitat von: Vize am 18 März 2019, 19:56:28
Hallo roadghost,
soll jetzt keine Werbung sein, aber hast du dich schonmal mit openwb.de befasst?
Der go-e-charger sollte meines Wissens nach dort auch schon implementiert sein.
Ich hab mir das auf meinem RasPi installiert und damit kann man wunderbar PV-geführt das Fahrzeug laden, ohne Angst zu haben, dass Strom aus dem Netz gezogen wird.
Ich habe eine Wallbox mit SimpleEVSE.
VG
Andreas
Danke für den Hinweis, aber dazu finde ich nichts. Bringt mich vmtl. auch nicht weiter, weil der Rest meiner Installation nicht mit openWB kompatibel ist.
Es gibt sicherlich auch schönere Wege, deine Wallbox per MQTT anzusprechen.
Aber wenn du es per http verbiegen willst, guck dir einfach mal curl -s an, damit bekommst du nix zurück.
Schöner wäre sicherlich direkt per mqtt. Aber da weiß ich nicht wie die Wallbox da arbeitet. Schätze man kann einen MQTT-Server angeben.
Hmmm, direkt auf der homepage von openWB steht doch, dass der go-e Charger unterstützt wird.
Dann brauchst du nur noch die PV-Leistung deines Wechselrichters abfragen (entweder über ein fertiges Modul in openWB oder per HTTP), den Netzeinspeisewert und evtl. den PV-Speicher-Ladestand. Das geht meistens auch per HTTP.
Man muss sich allerdings ein wenig einlesen in openWB.
Verstehe aber nicht, was du damit meinst, dass der Rest deiner Installation nicht mit openWB kompatibel sei. Was genau meinst du damit?
Ich will dir aber nix aufdrängen... ;)
Bei mir läuft openWB parallel zu FHEM auf dem Pi und ich muss mich nicht mit irgendwelchen DOIFs rumschlagen, um die Ladeleistung anzupassen. Läuft alles sehr geschmeidig über openWB.
Werte/Readings aus FHEM lassen sich übrigens auch an openWB übergeben.
Trotzdem viel Erfolg weiterhin bei deiner Umsetzung!
VG
Andreas
Hallo,
könntest Du das ein wenig ausführen, wie openwb und fhem zusammen arbeitet?
Mein fhem kriegt u.A. von der Pv (und dem Stromzähler) Infos und soll dann die go-e steuern.
Wie kommunizieren die openwb und fhem?
Danke, Harald
Hallo Harald,
schau mal in das Forum von openWB (https://openwb.de/forum).
Unter Wissenssammlung gibt es eine Faden zu FHEM und openWB.
Der Forenbetreiber ist auch immer sehr hilfsbereit bei Anfragen.
Für openWB gibt es schon viele fertige Module zur Abfrage/Steuerung verschiedener Komponenten, in denen man dann nur ein paar Sachen auf der Web-Oberfläche eintragen muss. Vieles geht aber auch per HTTP-Abfrage.
Zur go-e kann ich leider nicht mehr sagen, da ich diese nicht besitze.
Viele Erfolg!
VG
Andreas
Hallo Andreas,
ich habe eine sehr umfangreiche, seit Jahren bestehende FHEM Installation auf einem Raspi 2 und habe openWB auf einem Raspi 3 laufen. Du schreibst bei Dir läuft alles auf einem Raspi ohne Probleme.
Vermutlich müsste ich FHEM auf einen Raspi 3 oder 4? umziehen, da mein 2er noch mit altem OS (jelly?) läuft.
Was würdest Du empfehlen? Reicht ein Raspi 3 für beides aus, oder lieber den Raspi 4 nehmen?
Grüße
Andi
Hat sich erledigt. Läuft beides gleichzeitig auf Raspi 3+ ohne Probleme.
Ich mach das über ein eigenes Modul für den go-ECharger und DOIF nach Bedarf ... s. https://forum.fhem.de/index.php/topic,110282.0.html (https://forum.fhem.de/index.php/topic,110282.0.html)