NEWS
[gelöst] Wert (JSON) an URL senden
-
@mcu das setzt der burn_level wert auch auf 0
-
on('0_userdata.0.Kamin.Set_Level', function(dp) { request({ method: 'POST', url: 'http://192.168.178.24/set_burn_level', body: {"level":dp.state.val} }, function(error, respnse, body) { if(error) log(error, 'warn'); }); });
-
@tofriedrich Wie bekommst du das JSON?
Auch per http-Abfrage? -
@mcu Kann es sein das die Nachtabsenkung den Wert immer wieder auf 0 stellt:
Nachtabsenkung stellt das System automatisch auf „Level 0“
https://www.hwam.de/pub/media/hwam/manuals/smartcontrol/53-1102_App_IHS_gen2_DE.pdf -
@mcu die Nachtabsenkung ist bei mir deaktiviert und wird nur selten genutzt. Normalerweise bleibt der Kamin immer auf dem zuletzt genutzten Level stehen.
-
@mcu so hole ich mir die Daten und schreibe sie in die Datenpunkte:
-
My German isn't great, so I'll type in English instead.
I'm the developer of the Home Assistant hwam_stove integration (https://github.com/mvn23/hwam_stove) and the pystove library it depends on (https://github.com/mvn23/pystove). All information required for the development of these projects was obtained by sniffing the HTTP traffic to and from the stove (it's completely unencrypted) and by disassembling the official Android app.First of all, while going through this thread, I saw a few attempts with "{'level':5}" as payload. Please note that JSON is very picky with the type of quotes being used. All strings - and thus dictionary keys - must be enclosed in double quotes, i.e. '{"level":5}'.
To mimic the Android app and my pystove library, the following header should be included in your request: "Accept: application/json". This is present in all requests sent by pystove. If I remember correctly (it's been a while since I coded that) it was required to make the stove respond correctly. I can't think of another reason why I would have included it in pystove at the time
-
@mcu
Oder so?on('0_userdata.0.Kamin.Set_Level', function(dp) { request({ method: 'POST', url: 'http://192.168.178.24/set_burn_level', json: true, body: {level: dp.state.val} }, function(error, response, body) { if(error) log(error, 'warn'); }); });
Laut Doku:
body - entity body for PATCH, POST and PUT requests. Must be a Buffer, String or ReadStream. If json is true, then body must be a JSON-serializable object.
json - sets body to JSON representation of value and adds Content-type: application/json header. Additionally, parses the response body as JSON. -
@paul53 kaum zu glauben… es funktioniert! Vielen vielen Dank euch allen für die Hilfe
-
@tofriedrich sagte: es funktioniert!
Dann markiere bitte das Thema in der Überschrift des ersten Beitrags als [Gelöst].
@tofriedrich sagte in Wert (JSON) an URL senden:
so hole ich mir die Daten und schreibe sie in die Datenpunkte:
Die Wandlungen "nach Zahl" und "nach Logikwert" bei "doorOpen" kann man weglassen.
-
@paul53 anderes Gerät, aber auch JSON an URL senden.
Der Befehl ist wie folgt :curl -i -d '{"method": "getSystemInformation","id": 65,"params": [],"version": "1.4"}' http://192.168.1.254:10000/sony/system
Eine Antwort erhalte ich, somit funktioniert die Kommunikation.
Nun versuche ich aber, einen anderen Befehl zu senden, welche ich auf folgender Seite finde:
API referenceAls Beispiel folgender JSON:
{ "method":"notifyPowerStatus", "params":[ { "status":"standby" } ], "version":"1.0" }
Nun habe ich folgenden exec-Befehl probiert:
curl -i -d '{"method": "notifyPowerStatus","params":[{"status":"standby"}],"version": "1.0" }' http://192.168.1.254:10000/sony/system
Folgender Fehler erscheint jetzt:
HTTP/1.1 200 OK Connection: close Content-Length: 28 Content-Type: application/json {"error":[5,"Illegal JSON"]}
Kann mir jemand weiterhelfen?