Hauptmenü

Wallbox mit FHEM steuern

Begonnen von roadghost, 17 März 2019, 23:10:29

Vorheriges Thema - Nächstes Thema

roadghost

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ß
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

amenomade

#1
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)?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

roadghost

#2
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.
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

Maui

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)

amenomade

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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Vize

#5
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

roadghost

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.
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

roadghost

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.
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

roadghost

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.
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

Maui

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.

Vize

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

haneub

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

Vize

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

amehl

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

amehl

Hat sich erledigt. Läuft beides gleichzeitig auf Raspi 3+ ohne Probleme.