Hallo zusammen,
in dieser trüben Jahreszeit kommt quasi nix von der PV, um den Autoakku nennenswert zu laden. Nun kann ich ja direkt den Hausstrom nutzen, ist aber nicht lukrativ. Ganz in der Nähe habe ich einen Discountmarkt, der immerhine für 29ct Ladestrom anbietet. 11KW, aber nur 2 Stecker. Und wenn es so grau ist, stehen da auch öfter E-Autos und laden...
Hier https://forum.fhem.de/index.php?topic=142825.msg1350198#msg1350198 (https://forum.fhem.de/index.php?topic=142825.msg1350198#msg1350198) wurde schon eine Lösung gezeigt, die bei mir aber nicht funktioniert, das diese Ladesäule zwar angezigt wird, aber keine aktuellen Daten dazu. Ich habe dann rumgesucht und bin auf das hier gestossen: https://community.home-assistant.io/t/status-of-enbw-charging-stations/409573 (https://community.home-assistant.io/t/status-of-enbw-charging-stations/409573)
Es beschreibt, wie über die öffentliche Ladekarte von EnbW eine Station ausgelesen werden kann. Dazu benötigt man die stationID der gewünschten Station sowie den API-Key. Beides erhält man, wenn man die Abfrage der gewünschten Station im Browser mit den Entwicklertools mitverfolgt. Der Vorgang ist im ersten Post der HA-Beschreibung genau erklärt.
Die Rückgabe der Abfrage ist ein umfangreiches JSON. Mein Versuch mit JSONMOD hat nichts gebracht, per HTTPMOD ist es aber gelungen. Hier mal meine Abfrage:
defmod Ladestation HTTPMOD https://enbw-emp.azure-api.net/emobility-public-api/api/v1/chargestations/XXXXXX 0
attr Ladestation event-on-change-reading availableChargePoints,unknownStateChargePoints,chargePoints_0._status,chargePoints_0._state_updatedTime
attr Ladestation icon electric_car_charger
attr Ladestation reading104JSON chargePoints_01_state_updatedAt
attr Ladestation reading104Name chargePoints_01_state_updatedAt
attr Ladestation reading105Expr FmtDateTime($val / 1000)
attr Ladestation reading105JSON chargePoints_01_state_updatedAt
attr Ladestation reading105Name chargePoints_01_state_updatedTime
attr Ladestation reading109JSON chargePoints_02_evseId
attr Ladestation reading109Name chargePoints_02_evseId
attr Ladestation reading120JSON stationId
attr Ladestation reading120Name stationId
attr Ladestation reading128JSON unknownStateChargePoints
attr Ladestation reading128Name unknownStateChargePoints
attr Ladestation reading137JSON chargePoints_01_evseId
attr Ladestation reading137Name chargePoints_01_evseId
attr Ladestation reading139JSON chargePoints_02_state_updatedAt
attr Ladestation reading139Name chargePoints_02_state_updatedAt
attr Ladestation reading140Expr FmtDateTime($val / 1000)
attr Ladestation reading140JSON chargePoints_02_state_updatedAt
attr Ladestation reading140Name chargePoints_02_state_updatedTime
attr Ladestation reading141JSON chargePoints_02_status
attr Ladestation reading141Map OCCUPIED:belegt, AVAILABLE:_frei_
attr Ladestation reading141Name chargePoints_02_status
attr Ladestation reading164JSON chargePoints_01_status
attr Ladestation reading164Map OCCUPIED:belegt, AVAILABLE:_frei_
attr Ladestation reading164Name chargePoints_01_status
attr Ladestation reading167JSON numberOfChargePoints
attr Ladestation reading167Name numberOfChargePoints
attr Ladestation reading170JSON availableChargePoints
attr Ladestation reading170Name availableChargePoints
attr Ladestation replacement4Mode key
attr Ladestation replacement4Regex %%key%%
attr Ladestation replacement4Value key
attr Ladestation requestHeader1 Content-Type: application/json
attr Ladestation requestHeader2 Referer: https://www.enbw.com/
attr Ladestation requestHeader3 Origin: https://www.enbw.com
attr Ladestation requestHeader4 Ocp-Apim-Subscription-Key: %%key%%
attr Ladestation requestHeader5 User-Agent: Firefox
attr Ladestation requestHeader6 Content-Length: 0
attr Ladestation room Volvo
attr Ladestation showBody 0
attr Ladestation showError 1
attr Ladestation showMatched 0
attr Ladestation stateFormat availableChargePoints / numberOfChargePoints\
<br>\
unknown: unknownStateChargePointsDie XXXXXX in der DEF-Zeile ist die StationID. Den API-Key dann mit
set Ladestation storeKeyValue key abcdefg12345abspeichern. Der wird dann per Replacement in den Header eingebaut.
Kan natürlich sein, das bei einer anderen Station das zurückgegebene JSON auch anders aussieht. Dann empfiehlt es sich, mittels
extractAllJSON
einfach alles zurückgeben zu lassen und dann auszusortieren, was man nicht braucht.
Der Zeitstempel, ab wann ein Ladepunkt frei/belegt ist (chargePoints_0X_state_updatedAt) , kommt als UNIX Zeitangabe in 1000stel. Den gebe ich formatiert als chargePoints_01_state_updatedTime im lesbaren Format aus. Ebenso wird OCCUPIED zu belegt und AVAILABLE zu _frei_ gemapped.
Das AbfrageIntervall ist auf 0, damit nicht zyklich abgefragt wird.
Wenn ich vorhabe, zu laden, dann schicke ich per Signal ein "Wort" an mein fhem, damit wird die Abfrage freigegeben, und zwar nur zu den Öffnungszeiten (z.B. Sonn/Feiertag ist zu). Wenn beide belegt sind frage ich minütlich ab, ansonsten alle 5min. Damit erfahre ich quasi in Echtzeit, wenn ein Ladepunkt frei wurde. Kann natürlich sein, dass der auch gleich wieder belegt ist. Die Info aber per Push über Signal auf die Armbanduhr ist bequemer, als immer wieder eine App zu öffnen. Mein Auto ist auch in fhem und wenn dieses meldet, dass ein Ladekabel angeschlossen wurde (also habe ich es an die Ladestation angeschlossen) wird die Abfrage wieder gestoppt.
Damit halten sich die Abfragen in Grenzen, andererseits ist das ja nix anderes, als auf deren Website rumzuklicken, was vermutlich viele tun.....
Ohne fhem ist chargefinder.com auch eine schöne Möglichkeit. Wenn man seine Station ausgwählt hat und diese angezeigt wird dann einen Link zum Startbildschirm hinzufügen (Android) und die Seite öffnet sich gleich mit der ausgewählten Station.
Wie immer, viele Möglichkeiten, möge jeder so machen, wie er will ;)
Gruß
Sany