NEWS
HTTP Sollwert Lesen und Schreiben an ESPEASY?
-
Hi
nach Defekt des Thermostats am Gefrierschrank habe ich dies durch einen ESP8266 mit ESPEASY ersetzt und dieser regelt nun mittels 2 Punkt Regler.Nun möchte ich die Möglichkeit haben per Weboberfläche den Sollwert zu verändern.
Da leider der Wifi Empfang im Keller nicht so toll ist etc. möchte ich zusätzlich den aktiven Sollwert zB bei Reconnect des ESP (MQTT LWT) auslesen.Ich scheiter nun an der HTTP Abfrage und dem Blockly dazu.
Zuerst habe ich mir einen Datenpunkt "Sollwert" angelegt und diesen kann ich auch über die VIS Oberfläche beschreiben.
Mein Blockly zum setzen sieht so aus:
lt. ESPEASY Wiki soll das setzen wie folgt gehen:
Remote Threshold configuration (feature implemented only on github version as of Aug 8th, 2017) This plugin has the ability to change the Treshold (Set value in the GUI) with a command that can be send through HTTP/MQTT. Syntax config,task,<taskname>,setlevel,<value|calculation> Example if your task name is set to "heater" and the threshold needs to be 21 degrees: config,task,heater,setlevel,21
Wie bekomme ich denn den Wert als Variable/DP im blockly hin?
Den Erfolg, kann ich mir dann nur in der Reaktion des Gefrierschranks ansehen und darum würde ich auch gerne den Sollwert mit etwas Verzögerung auslesen. Hier hänge ich an dieser Stelle:
lt.ESPEASY Wiki soll dies wie folgt funktionieren:
Get/Display Threshold value (feature implemented only on github version as of Aug 8th, 2017) This plugin offers a feature to retrieve the Treshold value so it can be displayed on an LCD screen or a custom web page. The mechanism is similar to how we retrieve task values using but instead of a valuename, we specify "getLevel": [<taskname>#getLevel] So if your task is named "heater", you can display the threshold value using: [heater#getLevel]
Würdet Ihr die Blocklys ähnlich umsetzen? Derzeit sehe ich noch keinen Schritt vorwärts bei mir?
-
@Pete0815 Laut Docu espeasy: http://<espeasyip>/control?cmd=<command>
-
@Pete0815 sagte:
Hier hänge ich an dieser Stelle:
Wenn Du Ergebnisse von request() auswerten willst, muss Du auch den Haken setzen und die Auswertung innerhalb der Callback-Funktion von request() machen.
-
@MCU said in HTTP Sollwert Lesen und Schreiben an ESPEASY?:
@Pete0815 Laut Docu espeasy: http://<espeasyip>/control?cmd=<command>
Danke! Damit (http://192.168.7.184/control?cmd=config,task,TempRegler,setlevel,20)
bekomme ich schon mal erfolgreich einen festen Sollwert geschrieben.Wie bekomme ich nun die 20 als DP dort verknüpft?
@paul53 said in HTTP Sollwert Lesen und Schreiben an ESPEASY?:
@Pete0815 sagte:
Hier hänge ich an dieser Stelle:
Wenn Du Ergebnisse von request() auswerten willst, muss Du auch den Haken setzen und die Auswertung innerhalb der Callback-Funktion von request() machen.
Danke. ok versuche noch. Sollte die Rückmeldung von ESPEASY dann auch im Log stehen? Bin noch unsicher ob der Befehl funktioniert:
-
@Pete0815
Hab nur 2 Zeilen verwendet damit du das sehen kannst. Der Text kann auch in einer Zeile sein.
-
@MCU Vielen Dank, funktioniert super!
-
Lese und probiere noch um den aktuellen Sollwert abfragen zu können.
Wenn ich das Wiki jetzt richtig deute, beschreibt es explizit die Remote Funktion um den Sollwert zu setzen. Die Beschreibung des Auslesens besagt aber nichts zu Remote und daher vermute ich, dass es sich um eine interne Funktion handelt, die nicht per HTTP/MQTT abgefragt werden kann.
Aber diese internen Funktionen können ja in Rules von ESPEASY benutzt werden. Also lege ich jetzt eine Rule an im ESPEASY und lasse mir per MQTT den aktuellen Sollwert zyklisch/bei Ausführung der Messung an den IOBRoker schicken.
Erzeugt zwar gefühlt mehr Traffic und Load als eine dedizierte Triggerung aber immerhin eine Idee.Oder wie seht ihr das? Ist natürlich ESPEASY spezifisch un jetzt weniger IObroker.
-
@Pete0815 Vielleicht hilft es: https://www.letscontrolit.com/wiki/index.php/ESPEasy_Command_Reference
-
@MCU said in HTTP Sollwert Lesen und Schreiben an ESPEASY?:
@Pete0815 Vielleicht hilft es: https://www.letscontrolit.com/wiki/index.php/ESPEasy_Command_Reference
Danke. Bin da schon mehrfach rauf und runter die Liste auf der Suche wie man get/display für tasks abfragt, weil das soll ja ähnlich sein lt. wiki.
Aber auch über die Liste bin ich dann über die ~Klassifizierung der Commands gestolpert und auf die Idee gekommen, dass es keine Funktion/Befehl ist der gedacht ist um ihn extern abzufragen. Diese Schreibweise [<taskname>#getLevel] kommt mir bekannt aus den Rules von ESPEASY vor.
Habe es jetzt per Rule versucht und bekomme mit jeder Temperaturmessung (die alle 5 Sekunden läuft) und Istwert der Regelung ist, einen Sollwert per Mqtt geliefert.
Glaube damit kann ich gut leben. Nur noch Störungshandling einbauen. Nicht, dass der MQTT Wert schon lange nicht mehr aktualiesiert wurde ich aber auf der Weboberfläche noch schön den alten Werten traue. Ist die Verbindung gestört oder länger der Wert nicht aktualisiert worden muß ich das kenntlich machen zB den Wert auf 99,99°C setzen oder sowas.
Für Interessierte auf der Suche, so schaut die Rule im ESPEASY aus:
On TempGefrierschrank1#Temperature do Publish %sysname%/TempRegler/Sollwert,"-[TempRegler#getLevel]" EndOn
Achso, nicht wundern. Ich drehe ein paar mal das Vorzeichen, da der 2-Punkt Regler zum Heizen gemacht ist. So ist es am einfachsten den Sollwert und ISTwert für die Regelung zu drehen.
-
@Pete0815 Bitte den Code in Codetags setzen: siehe oben </>, Danke.