Laderegel erstellen für E-Auto
Verfasst: 11. Okt 2022 20:38
Hallo an alle.
Seit Sommer diesen Jahres steht ein BMW I3 auf dem Hof. Dieser soll in Abhängigkeit der Restkapazität morgens um 2 Uhr nachgeladen werden, bis 60% erreicht sind.
Das Binding mybmw: https://www.openhab.org/addons/bindings/mybmw/ ist installiert, konfiguriert und holt sich die Infos von BMW.
things:
hier die dazugehörigen items:
Mit einer kleinen rule wird der I3 abgefragt:
Das Ergebniss im Log:
Der I3 hat aktuell 61% Restkapazität, Wallbox ist angeschlossen und keine Ladung am Start.
Das Ziel ist, der I3 soll bei unter 58% in der Zeit von 01:00 - 05:00 Uhr geladen werden, bis 60 % erreicht sind.
Und hier das rule, wo es schon am Anfang klemmt.
OH schimpft über die " if (i3PlugConnection.state != Connected)", hier der Log:
Jetzt die Frage, wie erfährt die rule, ob der Stecker steckt oder nicht?
Seit Sommer diesen Jahres steht ein BMW I3 auf dem Hof. Dieser soll in Abhängigkeit der Restkapazität morgens um 2 Uhr nachgeladen werden, bis 60% erreicht sind.
Das Binding mybmw: https://www.openhab.org/addons/bindings/mybmw/ ist installiert, konfiguriert und holt sich die Infos von BMW.
things:
Code: Alles auswählen
Bridge mybmw:account:i3 "BMW Account" [userName="user@mail.net",password="xxxx",region="ROW"] {
Thing bev i3 "BMW i3 120h" [ vin="WxxxPxxxxxxKxxxxx",refreshInterval=5,vehicleBrand="BMW"]
}
hier die dazugehörigen items:
Code: Alles auswählen
Number:Dimensionless i3BatterySoc "Battery Charge [%.0f %%]" {channel="mybmw:bev:i3:i3:range#soc"}
Number i3Battery "Battery Charge in %" {channel="mybmw:bev:i3:i3:range#soc"} // Extra angelegt für den reinen Wert
String i3PlugConnection "Plug [%s]" {channel="mybmw:bev:i3:i3:status#plug-connection" }
String i3ChargingStatus "[%s]" {channel="mybmw:bev:i3:i3:status#charge" }
Mit einer kleinen rule wird der I3 abgefragt:
Code: Alles auswählen
rule "Test On"
when
Time cron " 0 0/1 * 1/1 * ? * "
then
logInfo( "Wallbox", "Batt Level: {}", i3BatterySoc.state )
logInfo( "Wallbox", " Plug: {}", i3PlugConnection.state )
logInfo( "Wallbox", " Status: {}", i3ChargingStatus.state )
end
Code: Alles auswählen
2022-10-11 20:11:00.249 [INFO ] [rg.openhab.core.model.script.Wallbox] - Batt Level: 61 %
2022-10-11 20:11:00.251 [INFO ] [rg.openhab.core.model.script.Wallbox] - Plug: Connected
2022-10-11 20:11:00.253 [INFO ] [rg.openhab.core.model.script.Wallbox] - Status: Not Charging
Das Ziel ist, der I3 soll bei unter 58% in der Zeit von 01:00 - 05:00 Uhr geladen werden, bis 60 % erreicht sind.
Und hier das rule, wo es schon am Anfang klemmt.

Code: Alles auswählen
rule " Charging Start"
when
Time cron " 10 0/1 * 1/1 * ? * "
then
if (i3PlugConnection.state != Connected)
return;
if (i3Battery.state > 60 )
return;
if (now.getHour > 0 || now.getHour < 6) {
sendHttpPutRequest( "http://10.0.60.10/cnf?cmd=override_device&dev_id=E1&flags=c&value=1" )
logInfo( "Wallbox", " Status: {}", i3ChargingStatus.state )
}
end
Code: Alles auswählen
2022-10-11 20:30:10.233 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test-1' failed: The name 'Connected' cannot be resolved to an item or type; line 8, column 31, length 9 in test