HTTPMOD und HTTP Method DELETE

Begonnen von hogan87, 02 Mai 2023, 15:26:27

Vorheriges Thema - Nächstes Thema

hogan87

Hallo Zusammen!

ich versuche gerade über eine API meinen Auto zu steuern.
Das Auslesen, also Statusabruf klappt schon.
Ich würde jedoch gerne im Device einen SET Befehl ausführen, welcher zum einen bestimmte Header und eine definierte HTTP Methode sendet (PUT/GET/DELETE).
In der CommandRef hab ich dazu nichts gefunden.
Daher die Frage - hat von euch jemand eine Idee wie das im selben HTTPMOD Device, welches bereits die Informationen abruft,  gelingt?
Praktisch: FHEM SET Device Unlock -> sendet API Request mit HTTP Methode DELETE.

Vielen Dank für eure Hilfe!
Martin

ch.eick

Moin,
hier mal Beispiele mit PUT, POST, Argument oder auch ohne Argument.
attr WR_1_API set06Header01 authorization: Session %auth_sessionId%
attr WR_1_API set06Header02 Content-type:application/json, Accept:application/json, Connection:keep-alive
attr WR_1_API set06Method POST
attr WR_1_API set06Name 06_auth_logout
attr WR_1_API set06NoArg 1
attr WR_1_API set06URL http://%IP-WR%/api/v1/auth/logout


attr WR_1_API set2201Data [{"moduleid":"devices:local","settings":[{"id":"Battery:DynamicSoc:Enable","value":"$val"}]}]
attr WR_1_API set2201FollowGet 22_Battery_InternControl
attr WR_1_API set2201Header01 authorization: Session %auth_sessionId%
attr WR_1_API set2201Header02 Content-type:application/json, Accept:application/json, Connection:keep-alive
attr WR_1_API set2201Hint 0,1
attr WR_1_API set2201Method PUT
attr WR_1_API set2201Name 22_01_Battery_DynamicSoc_Enable
attr WR_1_API set2201URL http://%IP-WR%/api/v1/settings

VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

hogan87

Hi Christian,

vielen Dank! Das wars :)
Für alle die es interessiert, ich hab das benötigt um meinen Ford, welcher über die Ford App "FordPass" zu steuern ist, aus FHEM zu anzusprechen.
Hier die Definition dazu:
defmod Edgehttp HTTPMOD https://usapi.cv.ford.com/api/vehicles/v4/[FAHRZEUGVIN]/status?token=$sid 30
attr Edgehttp userattr
attr Edgehttp extractAllJSON 1
attr Edgehttp extractAllJSONFilter vehiclestatus_lockStatus_value|dowPosition_value|vehiclestatus_windowPosition_.*WindowPos_value|vehiclestatus_TPMS_.*TireStatus_value|vehiclestatus_odometer_value|vehiclestatus_fuel_fuelLevel|vehiclestatus_fuel_distanceToEmpty|vehiclestatus_gps_.*tude|vehiclestatus_remoteStart_remoteStart.*|vehiclestatus_remoteStartStatus_value|vehiclestatus_battery_batteryHealth_value|vehiclestatus_battery_batteryStatusActual_value|vehiclestatus_oil_oilL.*|vehiclestatus_tirePressure_value|vehiclestatus_.*TirePressure_value|vehiclestatus_.*TireStatus_value|vehiclestatus_doorStatus_.*Door_value|vehiclestatus_ignitionStatus_value
attr Edgehttp reAuthRegex .*Access Denied.*
attr Edgehttp requestHeader01 auth-token: $sid
attr Edgehttp requestHeader02 Application-Id: 71A3AD0A-CF46-4CCF-B473-FC7FE5BC4592
attr Edgehttp room GDN Parkplatz
attr Edgehttp set01Data [{}]
attr Edgehttp set01Header01 auth-token: $sid
attr Edgehttp set01Header02 Accept: */*
attr Edgehttp set01Header03 Accept-Language: en-US
attr Edgehttp set01Header04 Content-Type: application/json
attr Edgehttp set01Header05 Accept-Encoding: gzip,deflate,br
attr Edgehttp set01Header06 Application-Id: 71A3AD0A-CF46-4CCF-B473-FC7FE5BC4592
attr Edgehttp set01Header07 User-Agent: fordpass-na/353 CFNetwork/1121.2.2 Darwin/19.3.0
attr Edgehttp set01Method PUT
attr Edgehttp set01Name Absperren
attr Edgehttp set01NoArg 1
attr Edgehttp set01URL https://usapi.cv.ford.com/api/vehicles/v2/[FAHRZEUGVIN]/doors/lock
attr Edgehttp set02Data [{}]
attr Edgehttp set02Header01 auth-token: $sid
attr Edgehttp set02Header02 Accept: */*
attr Edgehttp set02Header03 Accept-Language: en-US
attr Edgehttp set02Header04 Content-Type: application/json
attr Edgehttp set02Header05 Accept-Encoding: gzip,deflate,br
attr Edgehttp set02Header06 Application-Id: 71A3AD0A-CF46-4CCF-B473-FC7FE5BC4592
attr Edgehttp set02Header07 User-Agent: fordpass-na/353 CFNetwork/1121.2.2 Darwin/19.3.0
attr Edgehttp set02Method DELETE
attr Edgehttp set02Name Aufsperren
attr Edgehttp set02NoArg 1
attr Edgehttp set02URL https://usapi.cv.ford.com/api/vehicles/v2/[FAHRZEUGVIN]/doors/lock
attr Edgehttp set03Data [{}]
attr Edgehttp set03Header01 auth-token: $sid
attr Edgehttp set03Header02 Accept: */*
attr Edgehttp set03Header03 Accept-Language: en-US
attr Edgehttp set03Header04 Content-Type: application/json
attr Edgehttp set03Header05 Accept-Encoding: gzip,deflate,br
attr Edgehttp set03Header06 Application-Id: 71A3AD0A-CF46-4CCF-B473-FC7FE5BC4592
attr Edgehttp set03Header07 User-Agent: fordpass-na/353 CFNetwork/1121.2.2 Darwin/19.3.0
attr Edgehttp set03Method PUT
attr Edgehttp set03Name Anlassen
attr Edgehttp set03NoArg 1
attr Edgehttp set03URL https://usapi.cv.ford.com/api/vehicles/v2/[FAHRZEUGVIN]/engine/start
attr Edgehttp set04Data [{}]
attr Edgehttp set04Header01 auth-token: $sid
attr Edgehttp set04Header02 Accept: */*
attr Edgehttp set04Header03 Accept-Language: en-US
attr Edgehttp set04Header04 Content-Type: application/json
attr Edgehttp set04Header05 Accept-Encoding: gzip,deflate,br
attr Edgehttp set04Header06 Application-Id: 71A3AD0A-CF46-4CCF-B473-FC7FE5BC4592
attr Edgehttp set04Header07 User-Agent: fordpass-na/353 CFNetwork/1121.2.2 Darwin/19.3.0
attr Edgehttp set04Method DELETE
attr Edgehttp set04Name Abstellen
attr Edgehttp set04NoArg 1
attr Edgehttp set04URL https://usapi.cv.ford.com/api/vehicles/v2/[FAHRZEUGVIN]/engine/start
attr Edgehttp sid1Data {\
"clientId": "9fb503e0-715b-47e8-adfd-ad4b7770f73b",\
"username": "[fordpass@account.de]",\
"password": "[Passwort]"\
}
attr Edgehttp sid1Header01 Accept: */*
attr Edgehttp sid1Header02 Accept-Language: en-US
attr Edgehttp sid1Header03 Accept-Encoding: gzip, deflate, br
attr Edgehttp sid1Header04 Content-Type: application/json
attr Edgehttp sid1IdJSON access_token
attr Edgehttp sid1URL https://us-central1-ford-connected-car.cloudfunctions.net/api/auth
attr Edgehttp stateFormat {sprintf("\
<TABLE>\
<TR Height=50>\
<TD colspan=5 bgcolor=#a0a0a0>&nbsp;;</TD>\
</TR>\
<TR>\
<TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>\
</TR>\
<TR Height=50>\
<TD bgcolor=#a0a0a0>%s</TD><TD bgcolor=#0000e1>%s</TD><TD>%s<br>%s<br>%s</TD><TD bgcolor=#0000e1>%s</TD><TD bgcolor=#a0a0a0>%s</TD>\
</TR>\
<TR>\
<TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>\
</TR>\
<TR Height=50>\
<TD bgcolor=#a0a0a0>%s</TD><TD bgcolor=#0000e1>%s</TD>\
<TD WIDTH=50>%1.1f %</TD>\
<TD bgcolor=#0000e1>%s</TD><TD bgcolor=#a0a0a0>%s</TD>\
</TR>\
<TR>\
<TD></TD><TD></TD><TD></TD><TD></TD><TD></TD>\
</TR>\
<TR Height=50>\
<TD  colspan=5 bgcolor=#a0a0a0>%s</TD>\
</TR>\
<TR>\
<TD colspan=5></TD>\
</TR>\
</TABLE>\
<TABLE cellpadding=0 cellspacing=0>\
<TR>\
<TD align=left>Reifendruck:</TD><TD align=left>%s</TD>\
</TR>\
<TR>\
<TD align=left>Batteriezustand:</TD><TD align=left>%s (%0.1f V)</TD>\
</TR>\
<TR>\
<TD align=left>Reifendruck:</TD><TD align=left>%s</TD>\
</TR>\
</TABLE>\
" ,\
(ReadingsVal($name,"vehiclestatus_doorStatus_driverDoor_value","") eq "Closed") ? "Zu":"Auf",\
(ReadingsVal($name,"vehiclestatus_windowPosition_rearDriverWindowPos_value","") eq "Fully_Closed") ? "100":"OPEN",\
ReadingsVal($name,"vehiclestatus_ignitionStatus_value",0),\
(ReadingsVal($name,"vehiclestatus_remoteStartStatus_value","") eq "1") ? "Läuft(Remote)":"",\
ReadingsVal($name,"vehiclestatus_lockStatus_value",0),\
(ReadingsVal($name,"vehiclestatus_windowPosition_rearPassWindowPos_value","") eq "Fully_Closed") ? "100":"OPEN",\
(ReadingsVal($name,"vehiclestatus_doorStatus_passengerDoor_value","") eq "Closed") ? "Zu":"Auf",\
(ReadingsVal($name,"vehiclestatus_doorStatus_leftRearDoor_value","") eq "Closed") ? "Zu":"Auf",\
(ReadingsVal($name,"vehiclestatus_windowPosition_rearDriverWindowPos_value","") eq "Fully_Closed") ? "100":"OPEN",\
ReadingsVal($name,"vehiclestatus_fuel_fuelLevel",0),\
(ReadingsVal($name,"vehiclestatus_windowPosition_rearPassWindowPos_value","") eq "Fully_Closed") ? "100":"OPEN",\
(ReadingsVal($name,"vehiclestatus_doorStatus_rightRearDoor_value","") eq "Closed") ? "Zu":"Auf",\
(ReadingsVal($name,"vehiclestatus_doorStatus_tailgateDoor_value","") eq "Closed") ? "Zu":"Auf",\
ReadingsVal($name,"vehiclestatus_tirePressure_value",0),\
ReadingsVal($name,"vehiclestatus_battery_batteryHealth_value",0),\
ReadingsVal($name,"vehiclestatus_battery_batteryStatusActual_value",0),\
ReadingsVal($name,"vehiclestatus_tirePressure_value",0)\
)}
attr Edgehttp timeout 10
attr Edgehttp webCmd Absperren:Aufsperren:Abstellen:Anlassen

Dabei sind die Variablen Anteile [FAHRZEUGVIN], [fordpass@account.de] und [Passwort] durch die eigenen Daten zu ersetzen.

Vielen Dank nochmal und viel Erfolg denen die es gebrauchen können ;)

Martin