sendCommandLine + curl(REST API) in Rule klappt nicht

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

sendCommandLine + curl(REST API) in Rule klappt nicht

Beitrag von peter-pan »

Hallo,
ich bin gerade dabei mit REST API zu "spielen/lernen". Dazu habe ich mir eine kleine Regel erstellt, die allerdings nicht so ganz will, wie ich mir das vorstelle.
Die Regel sieht so aus:

Code: Alles auswählen

// curl -X GET --header "Accept: application/json" "http://localhost:8080/rest/things/avmfritz%3AComet_DECT%3AFritz-Box-7490%3A119600949320"      // Original aus REST API
// Transformation : https://www.openhab.org/docs/configuration/transformations.html#usage

rule "curl_http test"
  when
    Item Dummy4 changed to ON
  then
//  ----------------------------------> curl Aufbereitung klappt nicht <----------------------------------------------------------------------
    var vString1 = executeCommandLine("curl@@-X@@GET@@--header@@[Accept: application/json]@@http://localhost:8080/rest/things/avmfritz%3AComet_DECT%3AFritz-Box-7490%3A119600949320")
    logInfo("curl_http"," vString1 curl ist: {}", vString1)
//
    var vString2 = transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://localhost:8080/rest/things/avmfritz%3AComet_DECT%3AFritz-Box-7490%3A119600949320"))
    logInfo("curl_http"," Thermostat-Offset ist: {}", vString2)
end
Aber irgendwie komme ich mit der Syntaxaufbereitung des "curl" für den "executeCommandLine-Befehl nicht zurecht. Die Aufbereitung und Transformierung mit "sendHttpGetRequest" dagegen klappt ohne Probleme.

Die Logs sehen so aus:

Code: Alles auswählen

2019-10-20 23:41:26.724 [INFO ] [lipse.smarthome.io.net.exec.ExecUtil] - executed commandLine '[curl, -X, GET, --header, [Accept: application/json], http://localhost:8080/rest/things/avmfritz%3AComet_DECT%3AFritz-Box-7490%3A119600949320]'
2019-10-20 23:41:26.729 [INFO ] [pse.smarthome.model.script.curl_http] -  vString1 curl ist: {}
2019-10-20 23:41:26.772 [INFO ] [pse.smarthome.model.script.curl_http] -  Thermostat-Offset ist: 1.0
Der curl Befehl klappt via Shell einwandfrei. Nur bei der Umsetzung hapert's :oops: :?: Habe trotz suche in den Foren nichts passendes gefunden.

Bin für jede Hilfe dankbar.
von peter-pan » 28. Jan 2020 12:55
Hallo Kevin,

Danke für dein Feed-Back. Ich musste jetzt erst mal überlegen, was ich damals wollte bzw. im Kopf hatte :oops: . Da das Ganze schon eine Weile her ist.

Hintergrund war das AVM-Binding und die gelieferten Thermostat-Werte. Hier gibt es zwei Item-Channels (pro Thermostat) für die Temperaturanzeige

Code: Alles auswählen

Number:Temperature            radiator_valve_01                 "Temp. Büro Heizkörperregler[%.1f %unit%]"                            <heating1>        (EG_Buro,gRFritz_01,gRtIstI)                      //{ channel="avmfritz:Comet_DECT:7490:119601003400:actual_temp" }
Number:Temperature            radiator_valve_01_Temp            "Thermostat Büro Temperatur [%.1f %unit%]"                            <temperature>     (EG_Buro,gRtIstI,gRFritz_01)                      { channel="avmfritz:Comet_DECT:7490:119601003400:temperature" }
Diese zeigen aber immer den gleichen Wert an(warum auch immer), nämlich den um ein evtl. in der Fritz-Box verminderten Offset an:
offset1.jpg
Ich wollte aber den eingestellten Offset wissen. Ich hatte auch mal letzte Jahr mit C. Weitkamp, darüber gesprochen(gepostet), aber er konnte mir da auch nicht weiterhelfen, bzw. gab mir den Tipp mit einem "profile" im Channel, aber den kann man ja auch nur fix einstellen. D.h., wenn sich an meinem Offset in der Fritz-Box ändert (natürlich durch mich manuell ;) ) dann muss ich das in im profile auch wieder ändern. Und das wollte ich halt vermeiden, da ich halt ein bisschen "faul" bin.

Dann hab ich aber beim "Spielen" mit der REST-Api herausgefunden, dass der Offset in diesem "Thing-Channel" neben der Temperatur auch vorhanden ist. Somit kann ich nun die Differenz zwischen der Temperatur am Heizkörper-Ventil und der per Offset (theoretischen) Raum-Temperatur messen.

Wie gesagt, ich hab's per Curl in einer Regel probiert, aber das wollte so nicht klappen. So klappt's aber einwandfrei:

Code: Alles auswählen

rule "offset temperature calculating"
  when
//    Item Dummy4 changed to ON or
    Item radiator_valve_01_Temp changed or
    Item radiator_valve_02_Temp changed or
    Item radiator_valve_03_Temp changed or
    Item radiator_valve_04_Temp changed or
    Item radiator_valve_05_Temp changed or
    Item radiator_valve_06_Temp changed or
    Item radiator_valve_07_Temp changed 
  then
//    logInfo ("http", "Triggering-Item-> Bezeichnung: {} Name: {} Status: {}  previous State: {}  new State: {}  " , triggeringItem.label, triggeringItem.name, triggeringItem.state, previousState, newState)
    radiator_valve_01.postUpdate((radiator_valve_01_Temp.state as Number).floatValue - Float::parseFloat(transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://192.168.178.yy:8080/rest/things/avmfritz%3AComet_DECT%3A7490%3A119601003400"))))
    radiator_valve_02.postUpdate((radiator_valve_02_Temp.state as Number).floatValue - Float::parseFloat(transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://192.168.178.yy:8080/rest/things/avmfritz%3AComet_DECT%3A7490%3A119600949320"))))
    radiator_valve_03.postUpdate((radiator_valve_03_Temp.state as Number).floatValue - Float::parseFloat(transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://192.168.178.yy:8080/rest/things/avmfritz%3AFRITZ_DECT_301%3A7490%3A099950152273"))))
    radiator_valve_04.postUpdate((radiator_valve_04_Temp.state as Number).floatValue - Float::parseFloat(transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://192.168.178.yy:8080/rest/things/avmfritz%3AFRITZ_DECT_301%3A7490%3A099950074210"))))
    radiator_valve_05.postUpdate((radiator_valve_05_Temp.state as Number).floatValue - Float::parseFloat(transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://192.168.178.yy:8080/rest/things/avmfritz%3AComet_DECT%3A7490%3A117950357048"))))
    radiator_valve_06.postUpdate((radiator_valve_06_Temp.state as Number).floatValue - Float::parseFloat(transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://192.168.178.yy:8080/rest/things/avmfritz%3AComet_DECT%3A7490%3A119600710200"))))
    radiator_valve_07.postUpdate((radiator_valve_07_Temp.state as Number).floatValue - Float::parseFloat(transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://192.168.178.yy:8080/rest/things/avmfritz%3AFRITZ_DECT_301%3A7490%3A099950133789"))))
end
Gruss - Peter
Gehe zur vollständigen Antwort
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: sendCommandLine + curl(REST API) in Rule klappt nicht

Beitrag von udo1toni »

Im curl Befehl werden Anführungszeichen verwendet, die müsstest Du auf jeden Fall escapen.

Warum willst Du einen curl Befehl von der DSL aus absetzen?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: sendCommandLine + curl(REST API) in Rule klappt nicht

Beitrag von peter-pan »

Hallo Udo,
Danke für deine Antwort.
Also wenn ich das richtig verstanden habe muss ich vor die jeweiligen Hochkommas ein \ setzen. Das sieht dann so aus:

Code: Alles auswählen

    var vString1 = executeCommandLine("curl@@-X@@GET@@--header@@\"Accept: application/json\"@@\"http://localhost:8080/rest/things/avmfritz%3AComet_DECT%3AFritz-Box-7490%3A119600949320\"@@")
    logInfo("curl_http"," Thermostat-Offset curl ist: {}", vString1)
Das Ergebnis im Logger sieht dann so aus:

Code: Alles auswählen

2019-10-21 12:36:45.245 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'test_executeCommand.rules'
2019-10-21 12:36:58.894 [INFO ] [lipse.smarthome.io.net.exec.ExecUtil] - executed commandLine '[curl, -X, GET, --header, "Accept: application/json", "http://localhost:8080/rest/things/avmfritz%3AComet_DECT%3AFritz-Box-7490%3A119600949320"]'
2019-10-21 12:36:58.900 [INFO ] [pse.smarthome.model.script.curl_http] -  Thermostat-Offset curl ist: {}
Also irgend etwas mache ich noch nicht richtig.

Eigentlich will ich, dass das Gleiche rauskommt wie beim zweiten Befehl mit "sendHttpGetRequest", also einen JSON-String extrahieren, der so aussieht:

Code: Alles auswählen

2019-10-21 12:36:58.937 [INFO ] [pse.smarthome.model.script.curl_http] -  Thermostat-Offset http ist: 1.0
nur eben mit curl, aber ich scheitere ja schon daran den gesamten JSON-String sichtbar (im Logger) zu machen:

Code: Alles auswählen

{"statusInfo":{"status":"ONLINE","statusDetail":"NONE"},"editable":false,"label":"Comet DECT #2","bridgeUID":"avmfritz:fritzbox:Fritz-Box-7490","configuration":{"ain":"119600949320"},"properties":{"firmwareVersion":"03.54"},"UID":"avmfritz:Comet_DECT:Fritz-Box-7490:119600949320","thingTypeUID":"avmfritz:Comet_DECT","channels":[{"linkedItems":["radiator_valve_02_ModeX"],"uid":"avmfritz:Comet_DECT:Fritz-Box-7490:119600949320:mode","id":"mode","channelTypeUID":"avmfritz:mode","itemType":"String","kind":"STATE","label":"Modus des Gerätes","description":"Zeigt den aktuellen Modus des Gerätes an (MANUAL/AUTOMATIC/VACATION).","defaultTags":[],"properties":{},"configuration":{}},{"linkedItems":["radiator_valve_02_locked"],"uid":"avmfritz:Comet_DECT:Fritz-Box-7490:119600949320:locked","id":"locked","channelTypeUID":"avmfritz:locked","itemType":"Contact","kind":"STATE","label":"Externes Schalten","description":"Zeigt an, ob das Schalten des Gerätes per Telefon, App oder Benutzeroberfläche aktiviert ist.","defaultTags":[],"properties":{},"configuration":{}},{"linkedItems":["radiator_valve_02_dev_locked"],"uid":"avmfritz:Comet_DECT:Fritz-Box-7490:119600949320:device_locked","id":"device_locked","channelTypeUID":"avmfritz:device_locked","itemType":"Contact","kind":"STATE","label":"Tastensperre","description":"Zeigt an, ob das Schalten per Taste am Gerät aktiviert ist.","defaultTags":[],"properties":{},"configuration":{}},{"linkedItems":["radiator_valve_02_Temp"],"uid":"avmfritz:Comet_DECT:Fritz-Box-7490:119600949320:temperature","id":"temperature","channelTypeUID":"avmfritz:temperature","itemType":"Number:Temperature","kind":"STATE","label":"Temperatur","description":"Zeigt die aktuelle Temperatur an.","defaultTags":[],"properties":{},"configuration":{"offset":1.0}},{"linkedItems":[],"uid":"avmfritz:Comet_DECT:Fritz-Box-7490:119600949320:actual_temp","id":"actual_temp","channelTypeUID":"avmfritz:actual_temp","itemType":"Number:Temperature","kind":"STATE","label":"Temperatur","description":"Zeigt die aktuell gemessene Temperatur des Heizkörperreglers an.","defaultTags":[],"properties":{},"configuration":{}},{"linkedItems":["radiator_valve_02_Set"],"uid":"avmfritz:Comet_DECT:Fritz-Box-7490:119600949320:set_temp","id":"set_temp","channelTypeUID":"avmfritz:set_temp","itemType":"Number:Temperature","kind":"STATE","label":"Solltemperatur","description":"Ermöglicht die Steuerung der Solltemperatur des Heizkörperreglers.","defaultTags":[],"properties":{},"configuration":{}},{"linkedItems":["radiator_valve_02_Eco"],"uid":"avmfritz:Comet_DECT:Fritz-Box-7490:119600949320:eco_temp","id":"eco_temp","channelTypeUID":"avmfritz:eco_temp","itemType":"Number:Temperature","kind":"STATE","label":"Absenktemperatur","description":"Zeigt die aktuell eingestellte Absenktemperatur des Heizkörperreglers an.","defaultTags":[],"properties":{},"configuration":{}},{"linkedItems":["radiator_valve_02_Comfort"],"uid":"avmfritz:Comet_DECT:Fritz-Box-7490:119600949320:comfort_temp","id":"comfort_temp","channelTypeUID":"avmfritz:comfort_temp","itemType":"Number:Temperature","kind":"STATE","label":"Komforttemperatur","description":"Zeigt die aktuell eingestellte Komforttemperatur des Heizkörperreglers an.","defaultTags":[],"properties":{},"configuration":{}},{"linkedItems":["radiator_valve_02_Mode"],"uid":"avmfritz:Comet_DECT:Fritz-Box-7490:119600949320:radiator_mode","id":"radiator_mode","channelTypeUID":"avmfritz:radiator_mode","itemType":"String","kind":"STATE","label":"Modus des Heizkörperreglers","description":"Ermöglicht die Steuerung des aktuellen Modus des Heizkörperreglers (ON/OFF/COMFORT/ECO/BOOST/WINDOW_OPEN).","defaultTags":[],"properties":{},"configuration":{}},{"linkedItems":["radiator_valve_02_next_change"],"uid":"avmfritz:Comet_DECT:Fritz-Box-7490:119600949320:next_change","id":"next_change","channelTypeUID":"avmfritz:next_change","itemType":"DateTime","kind":"STATE","label":"Nächste Änderung","description":"Zeigt den Zeitpunkt der nächsten Änderung der Solltemperatur des Heizkörperreglers an.","defaultTags":[],"properties":{},"configuration":{}},{"linkedItems":["radiator_valve_02_next_temp"],"uid":"avmfritz:Comet_DECT:Fritz-Box-7490:119600949320:next_temp","id":"next_temp","channelTypeUID":"avmfritz:next_temp","itemType":"Number:Temperature","kind":"STATE","label":"Nächste Solltemperatur","description":"Zeigt die nächste Solltemperatur des Heizkörperreglers an.","defaultTags":[],"properties":{},"configuration":{}},{"linkedItems":["radiator_valve_02_Battery"],"uid":"avmfritz:Comet_DECT:Fritz-Box-7490:119600949320:battery_low","id":"battery_low","channelTypeUID":"system:low-battery","itemType":"Switch","kind":"STATE","label":"Niedriger Batteriestatus","defaultTags":[],"properties":{},"configuration":{}},{"linkedItems":["radiator_valve_02_Battery_Level"],"uid":"avmfritz:Comet_DECT:Fritz-Box-7490:119600949320:battery_level","id":"battery_level","channelTypeUID":"system:battery-level","itemType":"Number","kind":"STATE","label":"Batterieladung","defaultTags":[],"properties":{},"configuration":{}}],"location":"Office"}
udo1toni hat geschrieben: 21. Okt 2019 09:31 Warum willst Du einen curl Befehl von der DSL aus absetzen?
Gute Frage. Eigentlich nur um zu sehen, wie man mit den beiden REST-API Befehlen in einer Rule Werte aus OH herausbekommt(oder vielleicht auch mal hinein).
In diesem Falle geht es mir um den Offset-Wert aus der Fritz-Box, der sich aus der Differenz zwischen der am Heizkörper gemessenen Temperatur und der eingestellten, abweichenden Temperatur ergibt
offset.jpg
Dieser Wert ist über das Binding nicht direkt abgreifbar.

Wie gesagt, ich experimentiere gerade ein bisschen. Wie würdest du das machen ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: sendCommandLine + curl(REST API) in Rule klappt nicht

Beitrag von udo1toni »

Da liegt ein Missverständnis vor.

Die REST API ist nicht gut für die DSL geeignet, sie ist dazu gedacht, von außen auf openHAB zuzugreifen, also z.B. von einem Python Script aus, oder auch aus einem Bash Script.
Du hast ja schon gemerkt, dass es nicht einfach ist, den curl Befehl überhaupt korrekt abzusetzen.

Natürlich kannst Du weiterhin damit experimentieren :) es ist halt irgendwie sinnfrei.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: sendCommandLine + curl(REST API) in Rule klappt nicht

Beitrag von peter-pan »

udo1toni hat geschrieben: 21. Okt 2019 20:16 Du hast ja schon gemerkt, dass es nicht einfach ist, den curl Befehl überhaupt korrekt abzusetzen.
Du hast Recht, das scheint wirklich nicht ganz einfach zu sein, innerhalb von DSL mit curl zu arbeiten. Ich werde das dann wohl mal auf Eis legen.

Wie du sagst, von aussen klappt das ja ganz gut und funktioniert auch und den Offset-Wert bekomme ich auch mit dem "sendHttPGetRequest" über REST heraus.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: sendCommandLine + curl(REST API) in Rule klappt nicht

Beitrag von eiGelbGeek »

peter-pan hat geschrieben: 21. Okt 2019 21:18
udo1toni hat geschrieben: 21. Okt 2019 20:16 Du hast ja schon gemerkt, dass es nicht einfach ist, den curl Befehl überhaupt korrekt abzusetzen.
Du hast Recht, das scheint wirklich nicht ganz einfach zu sein, innerhalb von DSL mit curl zu arbeiten. Ich werde das dann wohl mal auf Eis legen.

Wie du sagst, von aussen klappt das ja ganz gut und funktioniert auch und den Offset-Wert bekomme ich auch mit dem "sendHttPGetRequest" über REST heraus.
Naja auf Eis legen muss das ganze ja nicht zwingend ;-) Es gibt ja noch andere Lösungen :mrgreen: z.b. das CURL in einen Bash Script auszuführen.

Die Frage ist aber eher warum willst du das überhaupt machen? Den Wert hast du ja so und so in Openhab? Warum genau willst du den Wert nochmal in einer Rule über die RestAPI abfragen?

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: sendCommandLine + curl(REST API) in Rule klappt nicht

Beitrag von peter-pan »

Hallo Kevin,

Danke für dein Feed-Back. Ich musste jetzt erst mal überlegen, was ich damals wollte bzw. im Kopf hatte :oops: . Da das Ganze schon eine Weile her ist.

Hintergrund war das AVM-Binding und die gelieferten Thermostat-Werte. Hier gibt es zwei Item-Channels (pro Thermostat) für die Temperaturanzeige

Code: Alles auswählen

Number:Temperature            radiator_valve_01                 "Temp. Büro Heizkörperregler[%.1f %unit%]"                            <heating1>        (EG_Buro,gRFritz_01,gRtIstI)                      //{ channel="avmfritz:Comet_DECT:7490:119601003400:actual_temp" }
Number:Temperature            radiator_valve_01_Temp            "Thermostat Büro Temperatur [%.1f %unit%]"                            <temperature>     (EG_Buro,gRtIstI,gRFritz_01)                      { channel="avmfritz:Comet_DECT:7490:119601003400:temperature" }
Diese zeigen aber immer den gleichen Wert an(warum auch immer), nämlich den um ein evtl. in der Fritz-Box verminderten Offset an:
offset1.jpg
Ich wollte aber den eingestellten Offset wissen. Ich hatte auch mal letzte Jahr mit C. Weitkamp, darüber gesprochen(gepostet), aber er konnte mir da auch nicht weiterhelfen, bzw. gab mir den Tipp mit einem "profile" im Channel, aber den kann man ja auch nur fix einstellen. D.h., wenn sich an meinem Offset in der Fritz-Box ändert (natürlich durch mich manuell ;) ) dann muss ich das in im profile auch wieder ändern. Und das wollte ich halt vermeiden, da ich halt ein bisschen "faul" bin.

Dann hab ich aber beim "Spielen" mit der REST-Api herausgefunden, dass der Offset in diesem "Thing-Channel" neben der Temperatur auch vorhanden ist. Somit kann ich nun die Differenz zwischen der Temperatur am Heizkörper-Ventil und der per Offset (theoretischen) Raum-Temperatur messen.

Wie gesagt, ich hab's per Curl in einer Regel probiert, aber das wollte so nicht klappen. So klappt's aber einwandfrei:

Code: Alles auswählen

rule "offset temperature calculating"
  when
//    Item Dummy4 changed to ON or
    Item radiator_valve_01_Temp changed or
    Item radiator_valve_02_Temp changed or
    Item radiator_valve_03_Temp changed or
    Item radiator_valve_04_Temp changed or
    Item radiator_valve_05_Temp changed or
    Item radiator_valve_06_Temp changed or
    Item radiator_valve_07_Temp changed 
  then
//    logInfo ("http", "Triggering-Item-> Bezeichnung: {} Name: {} Status: {}  previous State: {}  new State: {}  " , triggeringItem.label, triggeringItem.name, triggeringItem.state, previousState, newState)
    radiator_valve_01.postUpdate((radiator_valve_01_Temp.state as Number).floatValue - Float::parseFloat(transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://192.168.178.yy:8080/rest/things/avmfritz%3AComet_DECT%3A7490%3A119601003400"))))
    radiator_valve_02.postUpdate((radiator_valve_02_Temp.state as Number).floatValue - Float::parseFloat(transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://192.168.178.yy:8080/rest/things/avmfritz%3AComet_DECT%3A7490%3A119600949320"))))
    radiator_valve_03.postUpdate((radiator_valve_03_Temp.state as Number).floatValue - Float::parseFloat(transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://192.168.178.yy:8080/rest/things/avmfritz%3AFRITZ_DECT_301%3A7490%3A099950152273"))))
    radiator_valve_04.postUpdate((radiator_valve_04_Temp.state as Number).floatValue - Float::parseFloat(transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://192.168.178.yy:8080/rest/things/avmfritz%3AFRITZ_DECT_301%3A7490%3A099950074210"))))
    radiator_valve_05.postUpdate((radiator_valve_05_Temp.state as Number).floatValue - Float::parseFloat(transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://192.168.178.yy:8080/rest/things/avmfritz%3AComet_DECT%3A7490%3A117950357048"))))
    radiator_valve_06.postUpdate((radiator_valve_06_Temp.state as Number).floatValue - Float::parseFloat(transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://192.168.178.yy:8080/rest/things/avmfritz%3AComet_DECT%3A7490%3A119600710200"))))
    radiator_valve_07.postUpdate((radiator_valve_07_Temp.state as Number).floatValue - Float::parseFloat(transform("JSONPATH", "$.channels[3].configuration.offset", sendHttpGetRequest("http://192.168.178.yy:8080/rest/things/avmfritz%3AFRITZ_DECT_301%3A7490%3A099950133789"))))
end
Gruss - Peter
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Antworten