72_Wattpilot - Einbindung der Fronius Wattpilot Wallbox

Begonnen von Blablubblaber, 07 Januar 2026, 00:05:42

Vorheriges Thema - Nächstes Thema

Blablubblaber

Hallo zusammen,

ich möchte euch heute ein neues Modul vorstellen, mit dem die Fronius Wattpilot Wallbox nativ in FHEM eingebunden werden kann. Da ich selbst eine Lösung gesucht habe, um die Wallbox in meine Hausautomatisierung zu integrieren, habe ich das Modul 72_Wattpilot entwickelt.

Was kann das Modul?
Das Modul ermöglicht die Überwachung und Steuerung der Wallbox. Unter anderem werden folgende Funktionen unterstützt:

- Status-Abfrage: Aktuelle Ladeleistung, geladene Energie, etc.
- Modus-Steuerung: Wechsel zwischen den Modi Default, Eco und Next Trip.
- Ladesteuerung: Start/Stopp des Ladevorgangs und Anpassung der Stromstärke.

Voraussetzungen:
Das Modul kommuniziert direkt mit der Wallbox.
Es werden folgende Perl-Bibliotheken benötigt:
- JSON
- Crypt::PBKDF2
- Digest::SHA
- MIME::Base64

Installation:
Momentan ist das Modul noch nicht im offiziellen FHEM-Update-Prozess enthalten.
Die Installation erfolgt manuell:

- Die Datei 72_Wattpilot.pm von GitHub laden.
- In das FHEM-Verzeichnis kopieren.
- In FHEM ein shutdown restart oder reload 72_Wattpilot ausführen.

GitHub Repository: https://github.com/DennisGrame/FHEM_Modul_Fronius_Wattpilot

Definition in FHEM:
define <Name> Wattpilot <IP-Adresse> <Passwort> [Seriennummer]

Änderungen:

edit: 24.04.2026
Hinzugefügt
- Wattpilot Flex Support: Unterstützung für die neue Wattpilot Flex Generation durch Implementierung der bcrypt-Authentifizierung.
- Sicherheit: Das Passwort wird nun nicht mehr in der Definition, sondern separat über set <name> Password <secret> gesetzt und persistent (aber außerhalb der Konfigurationsdatei) gespeichert.
- Authentifizierungs-Modus: Neues Attribut authHash zur Auswahl des Verfahrens (auto, pbkdf2, bcrypt).
- Erweiterte Messwerte: Neue Readings für Einzelleistungen pro Phase (Power_L1, Power_L2, Power_L3) sowie die Firmware-Version (version) und das aktive Authentifizierungsverfahren (authHashMode).
Geändert
- Definition: Die Syntax des define-Befehls hat sich geändert. Das Passwort ist kein Parameter mehr.

edit: 07.03.2026
- Optimierung der PBKDF2-Kryptographie-Berechnung für den Login.

edit: 26.01.2026
- Reading "Energie_seit_Anstecken" hinzugefügt.

edit: 06.01.2026
- Erstveröffentlichung.
GitHub: DennisGrame | Entwicklung von Software Projekten in meiner Freizeit.
Ich habe dir geholfen? Ich freue mich immer über einen virtuellen Kaffee, Kaba oder ein Eis als Dankeschön!

Blablubblaber

Ich habe jetzt noch das Reading "Energie_seit_Anstecken" hinzugefügt.
Es wird angezeigt: Geladene Energie in Wh seit das Auto angesteckt wurde.
GitHub: DennisGrame | Entwicklung von Software Projekten in meiner Freizeit.
Ich habe dir geholfen? Ich freue mich immer über einen virtuellen Kaffee, Kaba oder ein Eis als Dankeschön!

Ralli

Ist das nicht eine gebrandete Variante von einer go-e? Mit oder ohne Phasen-Umschaltung?
Gruß,
Ralli

Proxmox 9 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte OpenCCU (3.89.8.20260719) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.62), FBDECT, Siri und Alexa

Blablubblaber

Laut Internet wird die zwar von Go-e für Fronius hergestellt aber eben mit Anpassungen.

Ist also nicht 1 zu 1 gleich.
GitHub: DennisGrame | Entwicklung von Software Projekten in meiner Freizeit.
Ich habe dir geholfen? Ich freue mich immer über einen virtuellen Kaffee, Kaba oder ein Eis als Dankeschön!

Jochen1977

TOP!.

Vielen Dank für das Modul. Funktioniert bei mir einwandfrei.

Danke und Gruß Jochen

nookie

#5
Hi, das Modul klappt gut, aber wenn ich die Auto`s ausstecke steht immer der letzte Powerwert dort, so dass das Modul SolarForecast dann einen verbrauch errechnet den es nicht gibt, kann man des abfangen?

mfg
Nookie


Update... ein blick in die Hilfe und Lösung gefunden ;) update_while_idle auf 1 ;)

gpflunger

Großartig, danke. Das hat mir noch gefehlt, um die relevanten Informationen von PV, Batteriespeicher, Wärmepumpe und Wallbox sinnvoll darzustellen.

Flachzange

#7
Hi Blablubblaber,

vielen Dank für das Modul. Ich laufe leider immer in ein "auth_failed". Ich habe auch schon mal testweise das Passwort geändert. Ich kann auch die Wallbox mit dem bestehenden Passwort neu in der App anlegen, nur über FHEM klappt es nicht.

Any idea?

Chris

P.S. Wattpilot Flex Home 22

define Wattpilot Wattpilot 192.168.5.191 simplepassA2
attr Wattpilot debug 1
attr Wattpilot interval 30
attr Wattpilot room Solar
attr Wattpilot update_while_idle 1
attr Wattpilot verbose 5
#   DEF        192.168.5.191 simplepassA2
#   DeviceName ws:192.168.5.191:80/ws
#   FUUID      69d93354-f33f-fd7e-a0f7-380270d9f90ce7b8
#   NAME       Wattpilot
#   NR         874
#   PASSWORD   simplepassA2
#   SERIAL     9111XXXX
#   STATE      auth_failed
#   TYPE       Wattpilot
#   VERSION    43.1-rc4
#   eventCount 15
#   hashed_password Z+EbiGePHL+S2dbh5dnLMUdzTuIOGr5R
#   Helper:
#     DBLOG:
#       state:
#         logdb:
#           TIME       1775843111.99227
#           VALUE      auth_failed
#       version:
#         logdb:
#           TIME       1775843111.63989
#           VALUE      43.1-rc4
#   READINGS:
#     2026-04-10 19:45:11   state           auth_failed
#     2026-04-10 19:45:11   version         43.1-rc4
#   header:
#     User-Agent FHEM
#
setstate Wattpilot auth_failed
setstate Wattpilot 2026-04-10 19:45:11 state auth_failed
setstate Wattpilot 2026-04-10 19:45:11 version 43.1-rc4


2026.04.10 19:45:11 3: Wattpilot (Wattpilot) - Connecting to ws:192.168.5.191:80/ws
2026.04.10 19:45:11 3: Opening Wattpilot device ws:192.168.5.191:80/ws
2026.04.10 19:45:11 5: HttpUtils url=http://192.168.5.191:80/ws NonBlocking via http
2026.04.10 19:45:11 4: IP: 192.168.5.191 -> 192.168.5.191
2026.04.10 19:45:11 5: HttpUtils request header:
GET /ws HTTP/1.1
Host: 192.168.5.191
Accept-Encoding: gzip,deflate
User-Agent: FHEM
Connection: Upgrade
Sec-WebSocket-Version: 13
Upgrade: websocket
Sec-WebSocket-Key: 1nW1KxBU24uqSHSx4cPlNg==

2026.04.10 19:45:11 4: http://192.168.5.191:80/ws: HTTP response code 101
2026.04.10 19:45:11 5: HttpUtils http://192.168.5.191:80/ws: Got data, length: 0
2026.04.10 19:45:11 5: HttpUtils response header:
HTTP/1.1 101 Switching Protocols
Server: nginx
Date: Fri, 10 Apr 2026 17:45:10 GMT
Connection: upgrade
Upgrade: websocket
Sec-WebSocket-Accept: eWScVnCoiM9xqZgcLRJLVt+qIfI=
2026.04.10 19:45:11 3: Wattpilot device opened
2026.04.10 19:45:11 5: Websocket msg: OP:1 LEN:273 MASK:0 FIN:1
2026.04.10 19:45:11 4: Wattpilot (Wattpilot) - Received type: hello
2026.04.10 19:45:11 4: Wattpilot (Wattpilot) - Hello received from Serial: 9111XXXX
2026.04.10 19:45:11 5: Websocket msg: OP:1 LEN:127 MASK:0 FIN:1
2026.04.10 19:45:11 4: Wattpilot (Wattpilot) - Received type: authRequired
2026.04.10 19:45:11 4: Wattpilot (Wattpilot) - Auth Required
2026.04.10 19:45:11 3: Wattpilot (Wattpilot) - Sending Auth Response
2026.04.10 19:45:11 5: DevIo_SimpleWrite Wattpilot: 7b2274797065223a2261757468222c2268617368223a2234383234663531613539646363346465356237373939313163346539333336333131666539623535386637626233613130353936636431623434386539353334222c22746f6b656e33223a223838323965376534393161346336393532353133643037623362663965366664227d
2026.04.10 19:45:11 5: Websocket msg: OP:1 LEN:47 MASK:0 FIN:1
2026.04.10 19:45:11 4: Wattpilot (Wattpilot) - Received type: authError
2026.04.10 19:45:11 1: Wattpilot (Wattpilot) - Authentication Failed: Wrong password



Blablubblaber

Hallo Chris,

das Problem ist das es sich bei dir um den Wattpilot "Flex" Home 22 handelt.
Das Modul ist nur kompatibel mit dem Vorgänger.
- Fronius Wattpilot Home 11 J 2.0
- Fronius Wattpilot Home 22 J 2.0
- Fronius Wattpilot Go 11 J 2.0
- Fronius Wattpilot Go 22 J 2.0

Zumindest ist es von mir für die Generation Wattpilot geschrieben und getestet.

Gruß
Dennis
GitHub: DennisGrame | Entwicklung von Software Projekten in meiner Freizeit.
Ich habe dir geholfen? Ich freue mich immer über einen virtuellen Kaffee, Kaba oder ein Eis als Dankeschön!

MichiReinelt


Blablubblaber

@MichiReinelt
Danke guter Beitrag aber ich habe leider keine Flex Wallbox zum entwickeln und testen.

Gruß
Dennis
GitHub: DennisGrame | Entwicklung von Software Projekten in meiner Freizeit.
Ich habe dir geholfen? Ich freue mich immer über einen virtuellen Kaffee, Kaba oder ein Eis als Dankeschön!

MichiReinelt

War eh klar... mir geht es genauso: würde gerne helfen, aber ohne Testobjekt...

Flachzange

Danke für den Hinweis. Ich schaue mir das mal an und mache ggf. ein PR. Ich weiß nur nicht wie zeitnah ich das hinbekomme.

Flachzange

Habs umgesetzt und PR erstellt. Falls vorher schon mal jemand mit einem normalem Wallpiloten testen möchte: https://github.com/Flachzange/FHEM_Modul_Fronius_Wattpilot/tree/Flex

Neben der Unterstützung für bcrypt hashing habe ich auch das password handling insofern angepasst, als dass es nicht mehr im Klartext sichtbar ist. Dafür wird "set Password <pw>" verwendet. Gleiches gitl für den Hash selbst.

Und den aktuellen Modus (Eco, Next Trip, Default" habe ich noch als Reading ergänzt.

Bestimmt sind noch Fehler drin.

Blablubblaber

Klasse vielen dank Flachzange.

Habe es eben angeschaut und mal auf meinem Textsystem laufen lassen hat soweit ohne Probleme funktioniert.

Hast du es mit einer Flex Wallbox schon getestet das es dort auch ohne Probleme läuft?

Wenn beide Wallboxen getestet sind und ohne Fehler laufen mach ich den merge damit deine Änderungen in die main kommen.

GitHub: DennisGrame | Entwicklung von Software Projekten in meiner Freizeit.
Ich habe dir geholfen? Ich freue mich immer über einen virtuellen Kaffee, Kaba oder ein Eis als Dankeschön!

Flachzange

Zitat von: Blablubblaber am 18 April 2026, 19:57:04Hast du es mit einer Flex Wallbox schon getestet das es dort auch ohne Probleme läuft?
Ich habe ja selbst eine Flex und das funktioniert unauffällig bisher, einzig tatsächliche Ladevorgänge habe ich noch nicht beobachtet/getestet, aber da erwarte ich jetzt keine Überraschung.

Blablubblaber

Klasse kannst du mal ein Auto an Stöpseln und alles real testen?
Wenn du mir das Go gibst das das alles ohne Probleme funktioniert kann ich den merge machen.

GitHub: DennisGrame | Entwicklung von Software Projekten in meiner Freizeit.
Ich habe dir geholfen? Ich freue mich immer über einen virtuellen Kaffee, Kaba oder ein Eis als Dankeschön!

Flachzange

Zitat von: Blablubblaber am 19 April 2026, 07:54:05Klasse kannst du mal ein Auto an Stöpseln und alles real testen?
Muss ich erst noch besorgen. Gib mir ein paar Tage ;)

Flachzange

Sieht für mich erstmal gut aus

define Wattpilot Wattpilot 192.168.5.191
attr Wattpilot disable 0
attr Wattpilot interval 10
attr Wattpilot room Solar
#   DEF        192.168.5.191
#   DeviceName ws:192.168.5.191:80/ws
#   FD         36
#   FUUID      69dbc609-f33f-fd7e-e2e0-242cfd0f57839ec4
#   LAST_UPDATE 1776949201.26784
#   NAME       Wattpilot
#   NR         874
#   PARTIAL   
#   SERIAL     91112118
#   STATE      connected
#   TYPE       Wattpilot
#   VERSION    43.1-rc4
#   WEBSOCKET  1
#   buffer    
#   eventCount 114
#   msg_id     1
#   Helper:
#     DBLOG:
#       CarState:
#         logdb:
#           TIME       1776949106.45076
#           VALUE      Charging
#       Current_L1:
#         logdb:
#           TIME       1776949201.28307
#           VALUE      15.17
#       Current_L2:
#         logdb:
#           TIME       1776949201.28307
#           VALUE      15.24
#       Current_L3:
#         logdb:
#           TIME       1776949201.28307
#           VALUE      15.28
#       Energie_seit_Anstecken:
#         logdb:
#           TIME       1776949135.26057
#           VALUE      1300.00
#       EnergyTotal:
#         logdb:
#           TIME       1776949190.47455
#           VALUE      7.47
#       Laden_starten:
#         logdb:
#           TIME       1776949106.45076
#           VALUE      Start
#       Modus:
#         logdb:
#           TIME       1776949175.23833
#           VALUE      Default
#       Power_L1:
#         logdb:
#           TIME       1776949201.28307
#           VALUE      3458.78
#       Power_L2:
#         logdb:
#           TIME       1776949201.28307
#           VALUE      3460.60
#       Power_L3:
#         logdb:
#           TIME       1776949201.28307
#           VALUE      3484.06
#       Strom:
#         logdb:
#           TIME       1776949107.28628
#           VALUE      16
#       Voltage_L1:
#         logdb:
#           TIME       1776949201.28307
#           VALUE      228.15
#       Voltage_L2:
#         logdb:
#           TIME       1776949201.28307
#           VALUE      227.24
#       Voltage_L3:
#         logdb:
#           TIME       1776949201.28307
#           VALUE      228.16
#       Zeit_NextTrip:
#         logdb:
#           TIME       1776949106.45076
#           VALUE      06:00
#       authHashMode:
#         logdb:
#           TIME       1776949106.14623
#           VALUE      bcrypt
#       power:
#         logdb:
#           TIME       1776949201.28307
#           VALUE      10403.43
#       state:
#         logdb:
#           TIME       1776949174.00361
#           VALUE      Modus Default
#       version:
#         logdb:
#           TIME       1776949106.10718
#           VALUE      43.1-rc4
#   READINGS:
#     2026-04-23 14:58:26   CarState        Charging
#     2026-04-23 15:00:01   Current_L1      15.17
#     2026-04-23 15:00:01   Current_L2      15.24
#     2026-04-23 15:00:01   Current_L3      15.28
#     2026-04-23 14:58:55   Energie_seit_Anstecken 1300.00
#     2026-04-23 14:59:50   EnergyTotal     7.47
#     2026-04-23 14:58:26   Laden_starten   Start
#     2026-04-23 14:59:35   Modus           Default
#     2026-04-23 15:00:01   Power_L1        3458.78
#     2026-04-23 15:00:01   Power_L2        3460.60
#     2026-04-23 15:00:01   Power_L3        3484.06
#     2026-04-23 14:58:27   Strom           16
#     2026-04-23 15:00:01   Voltage_L1      228.15
#     2026-04-23 15:00:01   Voltage_L2      227.24
#     2026-04-23 15:00:01   Voltage_L3      228.16
#     2026-04-23 14:58:26   Zeit_NextTrip   06:00
#     2026-04-23 14:58:26   authHashMode    bcrypt
#     2026-04-23 15:00:01   power           10403.43
#     2026-04-23 14:58:26   state           connected
#     2026-04-23 14:58:26   version         43.1-rc4
#   header:
#     User-Agent FHEM
#   helper:
#     authHashMode bcrypt
#     car_state  2
#
setstate Wattpilot connected
setstate Wattpilot 2026-04-23 14:58:26 CarState Charging
setstate Wattpilot 2026-04-23 15:00:01 Current_L1 15.17
setstate Wattpilot 2026-04-23 15:00:01 Current_L2 15.24
setstate Wattpilot 2026-04-23 15:00:01 Current_L3 15.28
setstate Wattpilot 2026-04-23 14:58:55 Energie_seit_Anstecken 1300.00
setstate Wattpilot 2026-04-23 14:59:50 EnergyTotal 7.47
setstate Wattpilot 2026-04-23 14:58:26 Laden_starten Start
setstate Wattpilot 2026-04-23 14:59:35 Modus Default
setstate Wattpilot 2026-04-23 15:00:01 Power_L1 3458.78
setstate Wattpilot 2026-04-23 15:00:01 Power_L2 3460.60
setstate Wattpilot 2026-04-23 15:00:01 Power_L3 3484.06
setstate Wattpilot 2026-04-23 14:58:27 Strom 16
setstate Wattpilot 2026-04-23 15:00:01 Voltage_L1 228.15
setstate Wattpilot 2026-04-23 15:00:01 Voltage_L2 227.24
setstate Wattpilot 2026-04-23 15:00:01 Voltage_L3 228.16
setstate Wattpilot 2026-04-23 14:58:26 Zeit_NextTrip 06:00
setstate Wattpilot 2026-04-23 14:58:26 authHashMode bcrypt
setstate Wattpilot 2026-04-23 15:00:01 power 10403.43
setstate Wattpilot 2026-04-23 14:58:26 state connected
setstate Wattpilot 2026-04-23 14:58:26 version 43.1-rc4


Blablubblaber

Klasse vielen lieben Dank.

Habe den merge gerade gemacht und die ganze Dokumentation aktualisiert.

GitHub: DennisGrame | Entwicklung von Software Projekten in meiner Freizeit.
Ich habe dir geholfen? Ich freue mich immer über einen virtuellen Kaffee, Kaba oder ein Eis als Dankeschön!

Flachzange


Flachzange

Hi Blablubblaber,

vielleicht hast du es schon im Augenwinkel gesehen: Ich habe das Modul in meinem Fork weiterentwickelt. Mit KI-Hilfe kommt man da ja mittlerweile sehr schnell sehr weit. Auslöser war, dass ich Aktualisierungs-Probleme hatte (es kamen irgendwann keine Werte mehr) und dass ich gerne auf bestimmte Config-Readings automatisiert zugreifen wollte.

Ich will den Fork nicht in Konkurrenz zu deiner Entwicklung stellen (die ja letztlich die Grundlage dafür ist), will es aber auch niemanden vorenthalten.

Die wichtigsten Ergänzungen:

  • Grundlegend überarbeitete WebSocket- und Verbindungsverwaltung
    Verbindungsaufbau, Authentifizierung, Wiederverbindung und Sitzungsverwaltung wurden robuster gestaltet. Dazu gehören auch ein Watchdog für ausbleibende Gerätedaten, ein manuell auslösbarer Reconnect sowie ein möglichst sauberer Umgang mit Modul-Reloads und Verbindungsabbrüchen.
  • Deutlich erweitertes Reading- und Statusmodell
    Viele Geräteinformationen werden jetzt als benannte FHEM-Readings bereitgestellt. Dazu gehören unter anderem Ladezustand, Ladeentscheidung, Energie- und Leistungswerte, GeräteinformationeN und Diagnosewerte
  • Erweiterte Steuerungsmöglichkeiten
    Neben Ladestrom und Lademodus lassen sich zahlreiche Wattpilot-Einstellungen direkt aus FHEM lesen und ändern. Dazu gehören unter anderem PV- und Batterieeinstellungen, Ladegrenzen, Zeitfenster, ein vollständiger Statusabruf sowie der kontrollierte Neustart des Wattpiloten.

Im Prinzip kann man jetzt alles, was die App macht, auch in FHEM machen.

Die neue Version befindet sich bereits im praktischen Betrieb mit einem Wattpilot Flex 22 und Firmware 43.4. Ob und wie es mit anderen Wattpiloten out of the box läuft, kann ich nicht sagen.

An der Diagnose meiner Aktualisierungs-Probleme bin ich übrigens weiterhin dran. Im Rahmen der Entwicklung habe ich herausgefunden, dass der Wattpilot mehrfach täglich unkontrolliert neustartete. Es liegt nicht an unserem (passiven) Modul und passiert bei mir auch ohne aktiver Verbindung. Ich habe mit der OCPP-Einstellung einen Verdächtigen ausgemacht, aber die finale Bestätigung ist noch ausstehend.

Gruß
Chris

Blablubblaber

Hallo Chris,

leider kann ich es aktuell nicht Testen da bei mir aktuell beide Wallboxen nicht funktionieren.
Sie wollen keine Verbindung mehr aufbauen auch nicht zur Fronius App ich muss da jetzt erst mal schauen wie ich die wieder zum laufen bekomme.

Gruß
Dennis 
GitHub: DennisGrame | Entwicklung von Software Projekten in meiner Freizeit.
Ich habe dir geholfen? Ich freue mich immer über einen virtuellen Kaffee, Kaba oder ein Eis als Dankeschön!