NEWS
[gelöst] Wert (JSON) an URL senden
-
@tofriedrich klar.. mehr infos aber müssen her
-
@arteck welche Infos werden benötigt?
-
@tofriedrich na wo kommen die werte her Datenpunkt
ist das alles was an struktur kommt...json muss man komplett lesen und auseinander pflücken -
@arteck Ich habe einen Kamin mit App Steuerung. Leider gibt es hierfür keinen eigenen Adapter. Ich habe im Netz ein paar Ansätze bis zu einer Home Assistant Geschichte gefunden. Hier bei bin ich auf links gestoßen.
Über http://192.168.178.24/get_stove_data kann ich den Status abfragen. Hier bekomme ich folgende Ausgabe:
{"updating":0,"message_id":224,"phase":5,"night_lowering":0,"new_fire_wood_hours":0,"new_fire_wood_minutes":0,"burn_level":2,"operation_mode":2,"maintenance_alarms":0,"safety_alarms":0,"refill_alarm":0,"remote_refill_alarm":1,"time_since_remote_msg":152,"version_major":1,"version_minor":12,"version_build":0,"remote_version_major":1,"remote_version_minor":2,"remote_version_build":0,"day":11,"month":9,"year":2021,"hours":22,"minutes":21,"seconds":34,"night_begin_hour":22,"night_begin_minute":0,"night_end_hour":6,"night_end_minute":0,"stove_temperature":1100,"room_temperature":2300,"oxygen_level":0,"valve1_position":0,"valve2_position":2,"valve3_position":2,"algorithm":"TEST DATA","doorOpen":false}
Ein paar Werte Schreibe ich mit einem Blockly Skript in Datenpunkte. Somit kann ich den Wert Level, Temperatur und Ähnliches auslesen.
Ich habe mir auch einen Set Datenpunkt angelegt in der Hoffnung den Wert zu senden. Allerdings habe ich es mit Blockly nicht hinbekommen.
Auf meine Frage an den Entwickler für Home Assistant bekam ich folgende Antwort:
You have to POST some json to that address, e.g. {"level":5}
This does not look like an issue with hwam_stove. Please use other channels for questions like this in the future. All HTTP requests can be found in the pystove library.GitHub: https://github.com/mvn23/hwam_stove
PyPI: https://pypi.org/project/pystove/#description -
@arteck hier noch meine Datenpunkte:
-
da stimmt was nicht
{ "updating": 0, "message_id": 224, "phase": 5, "night_lowering": 0, "new_fire_wood_hours": 0, "new_fire_wood_minutes": 0, "burn_level": 2, "operation_mode": 2, "maintenance_alarms": 0, "safety_alarms": 0, "refill_alarm": 0, "remote_refill_alarm": 1, "time_since_remote_msg": 152, "version_major": 1, "version_minor": 12, "version_build": 0, "remote_version_major": 1, "remote_version_minor": 2, "remote_version_build": 0, "day": 11, "month": 9, "year": 2021, "hours": 22, "minutes": 21, "seconds": 34, "night_begin_hour": 22, "night_begin_minute": 0, "night_end_hour": 6, "night_end_minute": 0, "stove_temperature": 1100, "room_temperature": 2300, "oxygen_level": 0, "valve1_position": 0, "valve2_position": 2, "valve3_position": 2, "algorithm": "TEST DATA", "doorOpen": false }
hier ist dein level nicht drin ... wo soll der den hingeschrieben werden.. oder setzt du den bei dir und willst den nur senden ?
-
@arteck ich habe den Punkt set_Level für mich angelegt um darüber den Wert an den Kamin zusenden. Der Wert ist burn_level.
-
@arteck ich würde den Wert von Set_Level gern an http://192.168.178.24/set_level senden. Laut dem Entwickler kann man darüber den Wert burn_level ändern.
-
@tofriedrich sagte: Wert von Set_Level gern an http://192.168.178.24/set_level senden.
Versuche es mal so:
on('0_userdata.0.Kamin.Set_Level', function(dp) { request({ method: 'POST', url: 'http://192.168.178.24/set_level', body: '{"level":dp.state.val}' }, function(error, respnse, body) { if(error) log(error, 'warn'); }); });
-
@paul53 als JavaScript oder wie kriege ich das abgebildet? Ich habe bis jetzt nur mit Blockly gearbeitet.
-
@tofriedrich Kurze Zwischenfrage: Die angegebene IP (192.168.178.24) ist vom Ofen?
-
@mcu genau, die IP ist vom Kamin
-
@tofriedrich Laut Programm ist die Funktion aber nicht "set_level" sondern "set_burn_level".
https://github.com/mvn23/hwam_stove/blob/master/pystove/pystove.pyZeile 166: STOVE_BURN_LEVEL_URL = '/set_burn_level'
-
@mcu Sorry, da hat sich bei mir ein Fehler eingeschlichen. Du hast recht
-
@tofriedrich
Schon mal so eine Variante probiert:http://192.168.178.24/set_burn_level?level=5
-
@mcu ja, da bekomme ich {"response":"unknown route"} angezeigt. Wie kann ich den Code von Paul in Blockly nutzen? Vielleicht klappt es.
-
http://192.168.178.24/set_burn_level?burn_level=5
-
@mcu auch hier {"response":"unknown route"}
-
@tofriedrich Funktionen -> Javascript-Funktion etwas tun
Da wird es verarbeitet:
json_str = await self._post('http://' + self.stove_host + STOVE_BURN_LEVEL_URL, data)
-
Mit dem Script passiert leider nichts