FHEM Forum

Verschiedenes => Projekte => Thema gestartet von: Albi am 02 März 2026, 23:22:02

Titel: <update> Intelligente PV-Überschussladung für E-Auto mit Akkuschutz
Beitrag von: Albi am 02 März 2026, 23:22:02
PV-Überschussladen mit go-eCharger, Ledvance Hybrid-Wechselrichter und Tibber-Preissteuerung

Hallo zusammen,

ich möchte mein Projekt zur intelligenten E-Auto-Ladesteuerung mit FHEM vorstellen.
Das System nutzt PV-Überschuss, Batterieschutz und Tibber-Strompreise, um das Auto möglichst günstig und grün zu laden. Über telebot werden mir auch Daten zugeschickt aufs Handy. und ich kann Abfragen über den Bot an Fhem schicken.

Ich habe ein paar Code Schnippsel mit dabei in der Anlage sind alle Device List abgelegt damit der Beitrag nicht zu lange wird ;-)

Eines noch, ohne KI hätte ich das nicht hinbekommen. Mein größter Helfer war ClaudeCode das direkt auf meinem Optiplex 3070 installiert wurde, auf dem mein FHEM läuft!

Hardware:


---

# 1. Modus-Auswahl (Dummy)

Über einen Dummy werden die Lademodi gewählt.

define GoE_Modus dummy
attr GoE_Modus devStateIcon Winter:frost@blue:Smart Smart:robot@orange:PV PV:weather_sun@green:Turbo Turbo:text_max@black:Tibber Tibber:flamme@purple:Winter
attr GoE_Modus group Laden
attr GoE_Modus icon hue_room_garage
attr GoE_Modus room 0_E-Auto
attr GoE_Modus setList state:Winter,Smart,PV,Turbo,Tibber
attr GoE_Modus webCmd state

Verfügbare Modi:


ModusBeschreibung
WinterTibber-Preissteuerung, Batterie komplett gesperrt
SmartStandardmodus 16A / 3 Phasen
PVdynamische PV-Überschussladung
Turbomaximale Ladeleistung
Tibberreine Strompreissteuerung

---

# 2. go-eCharger Wallbox

define myGoE GoECharger 192.168.0.114
attr myGoE alias Wallbox GoE
attr myGoE cmdIcon on:electric_car_charger@green off:electric_car_charger@red
attr myGoE group Laden
attr myGoE icon electric_car_icon
attr myGoE interval 60
attr myGoE room 0_E-Auto
attr myGoE webCmd on:off

Das devStateIcon zeigt Ladezustand, Ampere und Phasen an.

---

# 3. Ledvance / Envertech Wechselrichter (Modbus TCP)

define Ledvance ModbusAttr 1 60 192.168.0.57:502 TCP
attr Ledvance event-on-change-reading .*
attr Ledvance group Solar Hausdach
attr Ledvance icon measure_photovoltaic_inst
attr Ledvance room 4_Solar

Beispiel wichtige Register:

attr Ledvance obj-i33057-reading PV_Leistung
attr Ledvance obj-i33057-type S32

attr Ledvance obj-i33139-reading Battery_SOC
attr Ledvance obj-i33139-type U16

attr Ledvance obj-i33130-reading Grid_Power_Meter
attr Ledvance obj-i33130-type S32

attr Ledvance obj-i33147-reading Leistung_Haus
attr Ledvance obj-i33147-type U16

Interpretation:


---

# 4. Tibber Strompreise

define Tibber HTTPMOD https://api.tibber.com/v1-beta/gql 900
attr Tibber extractAllJSON 1
attr Tibber requestHeader1 Authorization: Bearer API_TOKEN
attr Tibber requestHeader2 Content-Type: application/json
attr Tibber timeout 10
attr Tibber room 0_E-Auto
attr Tibber group Messen

UserReadings berechnen u.a.:


---

# 5. Modus → Wallbox Steuerung

define n_LadeControl_GoE notify GoE_Modus:.* {
my $modus = ReadingsVal("GoE_Modus","state","Winter");

if ($modus eq "Smart") {
fhem("set myGoE on");
fhem("set myGoE amp_current 16");
fhem("set myGoE force_single_phase 3_Phases");
}

elsif ($modus eq "PV") {
fhem("set myGoE on");
fhem("set myGoE amp_current 6");
fhem("set myGoE force_single_phase 1_Phase");
}

elsif ($modus eq "Turbo") {
fhem("set myGoE on");
fhem("set myGoE amp_current 16");
}
}

---

# 6. Tibber Preissteuerung

define n_LadeControl_Tibber notify Tibber:current_price.* {
my $price = ReadingsVal("Tibber","current_price",99);
my $level = ReadingsVal("Tibber","price_level","EXPENSIVE");

if ($price > 30 || $level eq "EXPENSIVE") {
fhem("set myGoE off");
}

elsif ($level eq "NORMAL") {
fhem("set myGoE on");
fhem("set myGoE amp_current 10");
}

else {
fhem("set myGoE on");
fhem("set myGoE amp_current 16");
}
}

---

# 7. Automatischer PV / Tibber Wechsel

define n_PV_Tibber_Switch DOIF
([Ledvance:PV_Leistung] > 2000 and [?GoE_Modus] eq "Tibber")
(set GoE_Modus Smart)
DOELSEIF
([Ledvance:PV_Leistung] <= 2000 and ([?GoE_Modus] eq "Smart" or [?GoE_Modus] eq "PV"))
(set GoE_Modus Tibber)

attr n_PV_Tibber_Switch wait 300,300

---

# 8. Dynamische PV-Ampere-Regelung

define n_LadeControl_PV_Ampere notify Ledvance:Grid_Power_Meter.* {

my $feedin = ReadingsVal("Ledvance","Grid_Power_Meter",0);
my $current_amp = ReadingsVal("myGoE","amp_current",6);

my $available = $current_amp*230 + $feedin;
my $new_amp = int($available / 230);

$new_amp = 6 if ($new_amp < 6);
$new_amp = 16 if ($new_amp > 16);

if (abs($new_amp-$current_amp) >= 2) {
fhem("set myGoE amp_current $new_amp");
}

}

---

# 9. Batterie-Schutz

define n_LadeControl_Batterie notify myGoE:state {

my $state = Value("myGoE");
my $modus = ReadingsVal("GoE_Modus","state","Winter");

if ($state =~ /charging/ && $modus eq "Winter") {

```
 fhem("set Ledvance Battery_Force_Mode 1");
 fhem("set Ledvance Battery_Discharge_Limit 0");
```

}

elsif ($state =~ /finished|ready/) {

```
 fhem("set Ledvance Battery_Force_Mode 0");
 fhem("set Ledvance Battery_Discharge_Limit 0");
```

}

}

---

# 10. Ladestatistik

Die Statistik berechnet:


Grundprinzip:

Kosten = Netzstrom × Tibber Preis
Ersparnis = (PV + Batterie) × Tibber Preis

---

# Erfahrungen

Grid_Power_Meter statt Grid_FeedIn verwenden

Grid_FeedIn ist bei Netzbezug immer 0.

Dadurch würde die Regelung den Ladestrom nicht reduzieren.

Battery_Discharge_Limit ist nur ein Setpoint

Wenn der Setpoint höher als die Hauslast ist, speist die Batterie ins Netz ein.

Hysterese einbauen


---

Viel Spaß beim Nachbauen 🙂
Bei Fragen gerne melden.
Titel: Aw: Intelligente PV-Überschussladung für E-Auto mit Akkuschutz
Beitrag von: Prof. Dr. Peter Henning am 05 März 2026, 15:12:04
Nett, aber ohne Code kann das keiner nachvollziehen.

Das sollte also in allen Details im Wiki beschrieben werden, so wie wir das auch mit unseren "Projekten" gemacht haben.

LG

pah
Titel: Aw: <update> Intelligente PV-Überschussladung für E-Auto mit Akkuschutz
Beitrag von: Albi am 11 März 2026, 11:04:55
Hallo, habe es im ersten Beitrag nun mit Codeschnippsel und am Ende alle DeviceList als Text Datei mit eingefügt.

Gruß Albi