EVSE Wifi Konfiguration - Hilfe gesucht

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
MN1
Beiträge: 1
Registriert: 21. Okt 2020 11:24
Answers: 0

EVSE Wifi Konfiguration - Hilfe gesucht

Beitrag von MN1 »

Hallo und beste Grüße , ich selber versuche gerade meine Evse-Wifi mit Openhab zu verbinden. Leider bin ich absoluter Anfänger und hab noch sehr wenig Plan. Könnt Ihr mir helfen ? Wie muss was und Wo Installiert werden? Wie sieht das ITEM aus . Eventuell habt Ihr für mich eine kleine Bauanleitung ;) Ich packe nochmal die Doku der WB dazu.



HTTP API
EVSE-WiFi lässt sich mithilfe einer HTTP API von anderen Geräten fernsteuern. Dies ermöglicht gesteuerte Ladevorgänge und Anpassungen des Ladestroms durch andere Geräte. Die folgenden Aufrufe sind möglich:

getParameters()
gibt die folgenden Parameter im JSON-Format zurück:

Parameter Beschreibung Datentyp
vehicleState Fahrzeugstatus (1: bereit | 2: Fahrzeug angeschlossen | 3: Fahrzeug lädt) integer
evseState EVSE Status (true: EVSE freigeschaltet | false: EVSE gesperrt) boolean
maxCurrent Maximaler Ladestrom (abhängig vom PP-Widerstand und dem konfigurierten maximalen Ladestrom in EVSE-WiFi – je nachdem welcher Wert niedriger ist) integer
actualCurrent Aktueller Ladestrom in A (z.B. 20) integer
actualPower Aktuelle Ladeleistung (nur wenn Stromzähler angeschlossen ist) float
duration charging duration in milliseconds integer
alwaysActive Always Active Mode enabled (true/false) boolean
lastActionUser The user name of the user who performed the last action (activate/deactivate) String
lastActionUID The UID of the user who performed the last action (activate/deactivate) String
energy charged energy of the current charging process in kWh float
mileage charged energy in km float
meterReading actual meter reading in kWh float
currentP1 actual current in A (phase 1) float
currentP2 actual current in A (phase 2) float
currentP3 actual current in A (phase 3) float
Beispiel
GET http://192.168.4.1/getParameters

Antwort im JSON-Format:

{
"type": "parameters",
"list": [{
"vehicleState": 2,
"evseState": false,
"maxCurrent": 32,
"actualCurrent": 32,
"actualPower": 5.79,
"duration": 1821561,
"alwaysActive": false,
"lastActionUser": "GUI",
"lastActionUID": "GUI",
"energy": 9.52,
"mileage": 82.3,
"meterReading": 54.35,
"currentP1": 8.54,
"currentP2": 8.54,
"currentP3": 8.54
}]
}
getLog()
gibt die folgenden Parameter im JSON-Format zurück:

Parameter Beschreibung Datentyp
uid UID des RFID Tags mit dem der Ladevorgang freigeschalten wurde
„GUI“: Der Ladevorgang wurde über die Weboberfläche freigegeben
„API“: Der Ladevorgang wurde über die HTTP API freigegeben
„Button“: Der Ladevorgang wurde über den Taster freigegeben String
username Der zugehörige Benutzername, bei RFID-Freischaltung, ansonsten analog Parameter „uid“ String
timestamp Unix-Zeitstempel in Sekunden an dem der Ladevorgang gestartet wurde integer
duration Ladedauer in Millisekunden integer
energy Geladene Energiemenge in kWh float
price Zum Zeitpunkt des Ladevorgangs konfigurierter Preis in ct/kWh float (bis v.0.3.1: integer)
Beispiel
GET http://192.168.4.1/getLog

Antwort im JSON-Format:

{
"type": "latestlog",
"list": [{
"uid": "ABCD1234",
"username": "GUI",
"timestamp": 1523295915,
"duration": 7504266,
"energy": 10.32,
"price": 21
}, {
"uid": "-",
"username": "GUI",
"timestamp": 1523568920,
"duration": 1152251,
"energy": 2.17,
"price": 23
}]
}
setCurrent()
mit dem Aufruf setCurrent() wird der zulässige Ladestrom gesetzt (z.B. 18A)

Parameter Beschreibung Datentyp
current Zu setzender maximaler Ladestrom integer
Beispiel
GET http://192.168.4.1/setCurrent?current=8

… setzt den zulässigen Ladestrom auf 8A und gibt zurück:

S0_set current to 8A
Im Fehlerfall werden folgende Meldungen zurückgegeben

Antwort Beschreibung
E0_could not set current – internal error Interner Fehler (unspezifiziert)
E1_could not set current – give a value between x and y Falscher Wert angegeben
E2_could not set current – wrong parameter Falscher Parameter angegeben
setStatus()
Aktiviert/Deaktiviert die EVSE WB/DIN

Parameter Beschreibung Datentyp
active true: EVSE Aktivieren
false: EVSE Deaktivieren boolean
Beispiel
GET http://192.168.4.1/setStatus?active=true

… gibt den Ladevorgang frei und gibt zurück

S0_EVSE successfully activated
Im Fehlerfall werden folgende Meldungen zurückgegeben

Antwort Beschreibung
E0_could not activate EVSE – internal error Interner Fehler (unspezifiziert)
E0_could not deactivate EVSE – internal error Interner Fehler (unspezifiziert)
E1_could not process – give a valid value (true/false) Falscher Wert angegeben
E2_could not process – wrong parameter Falscher Parameter angegeben
E3_could not activate EVSE – EVSE already activated! EVSE ist bereits aktiviert
E3_could not deactivate EVSE – EVSE already deactivated! EVSE ist bereits deaktiviert
doReboot()
startet EVSE-WiFi neu

Parameter Beschreibung Datentp
reboot true: Startet EVSE-WiFi neu boolean
Beispiel
GET http://192.168.4.1/doReboot?reboot=true

gibt zurück

S0_EVSE-WiFi is going to reboot now...
Im Fehlerfall werden folgende Meldungen zurückgegeben

Antwort Beschreibung
E1_could not do reboot – wrong value Falscher Wert angegeben
E2_could not do reboot – wrong parameter Falscher Parameter angegeben





Danke vorab schon mal :)

riogrande75
Beiträge: 4
Registriert: 14. Dez 2020 11:57
Answers: 0

Re: EVSE Wifi Konfiguration - Hilfe gesucht

Beitrag von riogrande75 »

Würde mich auch interessieren. Hast du da schon etwas zusammengebracht?

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: EVSE Wifi Konfiguration - Hilfe gesucht

Beitrag von udo1toni »

dazu musst Du nur das http Binding bemühen.Ganz grob:
1. http Binding installieren (am besten die thing-basierte Variante, falls man noch mit OH2 arbeitet)
2. jsonpath Transformation installieren
3. map Transformation installieren (für die Anzeige)
4. Thing mit der Basis-URL anlegen, ungefähr so:

Code: Alles auswählen

Thing http:url:evse "EVSE API" [
        baseUrl:"http://192.168.4.1/getParameters"
    ] {
        Type number : vState "vehicle state" [ stateTransformation="JSONPATH:$.list.vehicleState" ]
        ...
    }
für jeden gewünschten Wert wird also ein Channel definiert (mit passendem Typ!) in dem jeweils der passende JSONPath gesetzt ist.

Dann gibt es dazu noch ein Item pro Channel:

Code: Alles auswählen

Number "Status Fahrzeug [MAP(vehicle.map):%s]" {channel="http:url:evse:vState"}
und im Zweifel eine map zum Übersetzen von Zahlenwerten in Klartext:
vehicle.map:

Code: Alles auswählen

1=Bereit
2=Fahrzeug angeschlossen
3=Fahrzeug lädt
-=-
NULL=-
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

riogrande75
Beiträge: 4
Registriert: 14. Dez 2020 11:57
Answers: 0

Re: EVSE Wifi Konfiguration - Hilfe gesucht

Beitrag von riogrande75 »

Danke.
Hab nun folgendes in meinem 2.5.12er docker mit http binding 1.14.0 implementiert:

Code: Alles auswählen

eauto.things:
Thing http:url:evse "EVSE API" [ baseUrl="http://192.168.1.69/getParameters" ]
	{
		Channels:
	        Type number : vState "Vehicle Status"		[ stateTransformation="JSONPATH:$.list.vehicleState" ]
        	Type switch : eState "EVSE Status"		[ stateTransformation="JSONPATH:$.list.evseState" ]
		Type number : actualCurrent "Ladestrom"		[ stateTransformation="JSONPATH:$.list.actualCurrent" ]
		Type number : actualPower "Ladeleistung"	[ stateTransformation="JSONPATH:$.list.actualPower" ]
		Type number : duration "Ladedauer"		[ stateTransformation="JSONPATH:$.list.duration" ]
		Type number : energy "Energie"			[ stateTransformation="JSONPATH:$.list.energy" ]
		Type number : meterReading "Zählerstand"	[ stateTransformation="JSONPATH:$.list.meterReading" ]
	}
	
eauto.items:
Group eauto <car>
Number vState_evse "Status Fahrzeug [MAP(vehicle.map):%s]" (eauto) {channel="http:url:evse:vState"}
Switch eState_evse "EVSE Status" (eauto) {channel="http:url:evse:eState"}
Number current_evse "Ladestrom [%d A]" (eauto) {channel="http:url:evse:actualCurrent"}
Number power_evse "Ladeleistung [%d Watt]" (eauto) {channel="http:url:evse:actualPower"}
Number duration_evse "Ladedauer [%d Sekunden]" (eauto) {channel="http:url:evse:duration"}
Number energy_evse "Energie [%.2f kWh]" (eauto) {channel="http:url:evse:energy"}
Number meter_evse "Zählerstand [%.2f kWh]" (eauto) {channel="http:url:evse:meterReading"}

mercedes.sitemap:
sitemap mercedes label="eAUTO" icon="flowpipe"
{
Group item=eauto
}
Das log Zeit keinen Fehler mehr an, aber aus irgendeinem Grund wird da nichts in Richtung EVSE-Wifi geschickt.
Http debugging zeigt mir nur "HTTP Refresh Service has been shut down".

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: EVSE Wifi Konfiguration - Hilfe gesucht

Beitrag von udo1toni »

Du musst schon das http2 Binding verwenden :)

Alternativ kannst Du natürlich auch http1 verwenden, dann sieht die Konfiguration allerdings völlig anders aus!
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

riogrande75
Beiträge: 4
Registriert: 14. Dez 2020 11:57
Answers: 0

Re: EVSE Wifi Konfiguration - Hilfe gesucht

Beitrag von riogrande75 »

Jetz nochmal so eine blöde Anfängerfrage: Leider finde ich weder in meiner OH2.5.12 Installation noch im Internet irgendwas über ein "http2" Binding?
Einzig und allein in diesem Forum wurde es erwähnt, aber nur in Zusammenhab mit OH3. Den möchte ich mir aber noch sparen.

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: EVSE Wifi Konfiguration - Hilfe gesucht

Beitrag von udo1toni »

Du kannst http2 in OH2 manuell installieren (also die Datei in den addons-Ordner legen)
Leider stelle ich gerade fest, dass http2 wohl nicht mehr für OH2 kompiliert wird (warum auch immer - funktioniert nämlich wunderbar bei mir).
Das bedeutet, dass Du die Konfiguration eher mit http1 vornehmen musst. Das sieht dann folgendermaßen aus:
Es gibt im Ordner /etc/openhab2/services/ nach dem Installieren von http1 eine Datei namens http.cfg. In dieser Datei legst Du sogenannte http Caches an (das entspricht dem url Thing in http2, nur war es schon Jahre vorher da...)
Es gibt im Großen und Ganzen 5 Parameter, timeout bestimmt, nach wie vielen Millisekunden das System davon ausgeht, keine Antwort mehr zu erhalten (Standard 5000). granularity bestimmt, wie oft das http Binding prüft, ob es etwas zu tun hat (also wie oft wird der Thread ausgeführt). Standard ist 1000 (Millisekunden). format bestimmt, in welcher Form das aktuelle Kommando in die URL eingebaut wird (spielt nur abgehend eine Rolle, wenn ich mich richtig erinnere).
Die bisherigen Parameter sind global, gelten also für alle http Items.

Nun folgen noch zwei weitere Parameter, die (als Paar) mehrfach verwendet werden können und deshalb eine ID benötigen.
<cacheName>.url gibt die URL an, <cacheName>.updateInterval bestimmt, wie groß der Abstand zwischen 2 Requests ist. Mindestens diese beiden Parameter musst Du also setzen. Für die vorliegende Aufgabe sieht das dann so aus:

Code: Alles auswählen

evse.url=http://192.168.1.69/getParameters
evse.updateInterval=30000
Das bedeutet: das http Binding sendet ab sofort alle 30 Sekunden einen Request an die URL http://192.168.1.69/getParameters und macht den Inhalt im http Cache evse verfügbar.
Nun kannst Du in der Itemdefinition auf diesen http Cache zugreifen:

Code: Alles auswählen

Group eauto <car>
Number vState_evse "Status Fahrzeug [MAP(vehicle.map):%s]" (eauto) {http="<[evse:30000:JSONPATH($.list.vehicleState)]"}
Switch eState_evse "EVSE Status"                           (eauto) {http="<[evse:30000:JSONPATH($.list.evseState)]"}
Number current_evse "Ladestrom [%d A]"                     (eauto) {http="<[evse:30000:JSONPATH($.list.actualCurrent)]"}
Number power_evse "Ladeleistung [%d Watt]"                 (eauto) {http="<[evse:30000:JSONPATH($.list.actualPower)]"}
Number duration_evse "Ladedauer [%d Sekunden]"             (eauto) {http="<[evse:30000:JSONPATH($.list.duration)]"}
Number energy_evse "Energie [%.2f kWh]"                    (eauto) {http="<[evse:30000:JSONPATH($.list.energy)]"}
Number meter_evse "Zählerstand [%.2f kWh]"                 (eauto) {http="<[evse:30000:JSONPATH($.list.meterReading)]"}
Der Rest des Codes sollte identisch funktionieren. evse ist der Name des Caches, 30000 ist die Aktualisierungsrate des Items (die ist unabhängig vom Cache!) anschließend folgt die Transformation des Inputs. Das Tolle an dieser Art Zugriff: es wird nur ein http Request ausgeführt, um (hier) 7 verschiedene Werte abzubilden.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

riogrande75
Beiträge: 4
Registriert: 14. Dez 2020 11:57
Answers: 0

Re: EVSE Wifi Konfiguration - Hilfe gesucht

Beitrag von riogrande75 »

Wow - das nenn ich mal ne Auskunft! :!: DANKE - Hat funktioniert.
Allen, die das so 1:1 nachbauen sei noch gesagt: Der JSON-Path sollte mit EVSE-Wifi_1.0.4 so aussehen: JSONPATH($.list[0].vehicleState).

Antworten