Hallo zusammen,
ich möchte gern einen Wert von einer externen API via https abrufen.
Ist meiner Meinung nach ein simpler aufruf:
https://app.evnotify.de/soc?akey=123456a&token=123456789123456789
Heraus kommt, mit den richtigen Daten (akey = user, token = password) folgendes:
{"soc_display":52.5,"soc_bms":33,"last_soc":1578555836}
Hierbei handelt es sich um den SoC State of Charge eines Elektroauto, welches seinen SoC an einen Server sendet. Die App dazu nennt sich evnotify.
Ich möchte den SoC gern verwenden, um zu Hause beim Laden an der Wallbox, welche leider den SoC nicht vom Auto direkt abfragen kann, die Ladung bei SoC XX zu beenden.
Wie bekomme ich in FHEM die Daten abgerufen ?
Ich bin bei weitem nicht so fit in der Materie, als dass ich das allein hinkriegen kann.....
Gruß
Eine "billige" Loesung waeredefine eApi at +*00:10 { HttpUtils_NonblockingGet({ \
url=>"https://app.evnotify.de/soc?akey=123456a&token=123456789123456789",\
callback=>sub() { json2reading("eApi", $_[2]) } \
}) }
Die "richtige" Loesung ist eine HTTPMOD Instanz anzulegen und zu konfigurieren.
Hallo rudolfkoenig,
wenn ich deinen "billigen" Vorschlag teste, erhalte ich:
syntax error at (eval 482490) line 1, near "} \"
syntax error at (eval 482490) line 1, near "}}"
Ich versuche mich mal an HTTPMOD, leider kennt sich der Giuseppe (erfinder der App) nicht damit aus, und kann mir demnach nicht helfen.
Gruß
Diese Schreibweise funktioniert, wenn man es im FHEMWEB per + (oben links), per telnet, oder direkt in fhem.cfg eingibt.
Ich fuerchte du hast eine andere Methode gewaehlt, da koennte das weglassen von \, und alles auf einer Zeile schreiben helfen.
Aber ich habe auch nichts gegen HTTPMOD einzuwenden.
define SoC HTTPMOD https://app.evnotify.de/soc?akey=123456a&token=123456789123456789 60
attr SoC extractAllJSON 1
sollte reichen, um alle 60s die 3 Werte zu extrahieren
Zitat von: rudolfkoenig am 09 Januar 2020, 21:53:48
Diese Schreibweise funktioniert, wenn man es im FHEMWEB per + (oben links), per telnet, oder direkt in fhem.cfg eingibt.
Ich fuerchte du hast eine andere Methode gewaehlt, da koennte das weglassen von \, und alles auf einer Zeile schreiben helfen.
Aber ich habe auch nichts gegen HTTPMOD einzuwenden.
Danke, rudolfkoenig, der hinweis des define mittels des +-Zeichen hat zum erfolg geführt.
Ich hatte gestern Abend allerdings noch beobachtet, dass trotz sich änderndem SoC (Auto wurde geladen) der Abruf in FHEM sich nicht änderte / aktualisierte.
Im log von FEHM habe ich keine Hinweise gefunden. Ich teste das übers Wochenende noch weiter aus.
Zitat von: amenomade am 10 Januar 2020, 00:07:39
define SoC HTTPMOD https://app.evnotify.de/soc?akey=123456a&token=123456789123456789 60
attr SoC extractAllJSON 1
sollte reichen, um alle 60s die 3 Werte zu extrahieren
Danke, amenomade, dein Vorschlag funktioniert. Ich hatte gestern ein HTTPMOD-Device angelegt, aber mit den attributen noch nicht weitergemacht - ich war einfach zu Müde.
Habe soeben remote das attribut hinzugefügt, und hatte nach 1 Minute die Daten vorliegen. Mal schauen, ob sich diese auch aktualisieren, wenn ich nachher mit dem Wagen fahre.
Update von mir:
@rudolfkoenig: Die von Dir vorgeschlagene Lösung aktualisiert sich aus irgendeinem Grund nach mehr als 5 Minuten nicht mehr. Der SoC verändert sich, aber in Fhem stagniert der Wert.
@amenomade: Deine Lösung aktualisiert sich wunderbar. Heute habe ich an userattr und userreadings gebastelt - es aber nicht hinbekommen. Es geht ja nur um das reading soc_display. Wie stelle ich es an, dass ich das reading in der device overview angezeigt bekomme als reinen Wert (ohne %-Zeichen) ?
ZitatDie von Dir vorgeschlagene Lösung aktualisiert sich aus irgendeinem Grund nach mehr als 5 Minuten nicht mehr.
Das at holt die Daten ja auch nur alle 10 Minuten ab (+*00:10)
Aber wie geschrieben: das ist nur 'ne "billig" Version von HTTPMOD.
Status aus Reading kann man z.Bsp. mit stateFormat setzen.
zB
stateFormat {ReadingsNum("SoC","soc_display",0)}