RESULT von WEBSEND auslesen

  • Es ist mir zwar gelungen für Release 9.4. ein Tasmota-Release zu erzeugen (Andere haben sich verweigert) welches ein RESULT in der Konsole erzeugt, aber einen Trigger oder eine Datenübernahme in eine Variable für die weitere Auswertung der Webservice-Temperatur ist mir bisher nicht gelungen.

    Kann mich jemand bitte auf den richtigen Weg bringen :saint:?


    Aktion: (gekürzt in der APPID und damit nicht lauffähig)

    on POWER1#State do websend [api.openweathermap.org] /data/2.5/weather?q=Cottbus,de&units=metric&appid=ada01f72c79beccce...... endon


    Ergebnis:

    17:27:40.587 RUL: POWER1#STATE performs "websend [api.openweathermap.org] /data/2.5/weather?q=Cottbus,de&units=metric&appid=ada01f72c79beccce...

    17:27:40.729 RSL: RESULT = {"coord":{"lon":14.3333,"lat":51.7667},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"base":"stations","main":{"temp":9.07,"feels_like":7.21,"temp_min":8.21,"temp_max":9.36,"pressure":1022,"humidity":77,"sea_level":1022,"grnd_level":1013},"visibility":10000,"wind":{"speed":3.32,"deg":288,"gust":5.69},"clouds":{"all":86},"dt":1634142396,"sys":{"type":2,"id":2035260,"country":"DE","sunrise":1634102607,"sunset":1634141640},"timezone":7200,"id":2939811,"name":"Cottbus","cod":200}

    17:27:40.735 RSL: RESULT = {"WebSend":"Done"}

  • Hi.


    mit #define USE_WEBSEND_RESPONSE in den benutzerdefinierten Parametern, geht das in allen aktuellen Tasmotaversionen. Auch in der 9.5.0.

    JSON wertest du einfach mit dem Parameter aus:


    Bsp:

    {"PARAMETER1":"WERT1"}

    on PARAMETER1 do var1 %value% endon


    Durch die JSON Ebenen hangelst Du dich dann mit # und/oder "?" als Wildcard.


    Bsp:

    {ROOT:{"PARAMETER1":"WERT1"}}

    on ?#PARAMETER1 do var1 %value% endon


    In Deinem Fall:

    on main#temp do var1 %value% endon



    Rule Trigger~

    Rule trigger names are derived from the JSON message displayed in the console. Each JSON level (all values enclosed in {...}) is separated in the trigger with a #.

    A rule trigger can consist of:

    • [TriggerName]#[ValueName]
    • [TriggerName]#[ValueName][comparison][value]
    • [SensorName]#[ValueName]
    • [SensorName]#[ValueName][comparison][value]
    • Tele-[SensorName]#[ValueName]
    • [TriggerName1]#[TriggerName2]#[ValueName]
    • [TriggerName1]#?#[ValueName]

    Use ? as a wildcard for a single trigger level. Rule will trigger on [TriggerName]#?#[Value] where ? is any value.


    EDIT:

    Aber echt interessant das man sich so ne externe Temperatur in's gerät holen kann :thumbup::)

    Online Compiler


    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/4xGoogle-Home-Mini

    4 Mal editiert, zuletzt von HoerMirAuf ()

  • Danke für den ersten Hinweis:thumbup:

    - aber ich bekomme keine Daten in die Variable beim folgenden Testskript nach Auslösung ::(

    Ist die Umgebung Tasmota 9.4 richtig übersetzt wenn die Daten wenigstens im RESULT sichtbar werden oder kann ich ein aktuelles 9.5. mit Websend_Response entladen?


    rule2

    on POWER1#State do websend [api.openweathermap.org] /data/2.5/weather?q=Cottbus,de&units=metric&appid=ada01f72c79beccce endon

    on main#temp do var1 %value% endon

    on VAR1#Status do VAR1 endon



    Protokoll:

    21:13:15.205 RUL: POWER1#STATE performs "websend [api.openweathermap.org] /data/2.5/weather?q=Cottbus,de&units=metric&appid=ada01f72c79beccce...

    21:13:15.337 RSL: RESULT = {"coord":{"lon":14.3333,"lat":51.7667},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"base":"stations","main":{"temp":11.06,"feels_like":10.65,"temp_min":10.9,"temp_max":11.16,"pressure":1018,"humidity":93},"visibility":10000,"wind":{"speed":2.68,"deg":255,"gust":3.58},"clouds":{"all":100},"dt":1634242320,"sys":{"type":2,"id":2000627,"country":"DE","sunrise":1634189109,"sunset":1634227909},"timezone":7200,"id":2939811,"name":"Cottbus","cod":200}

    21:13:15.379 RSL: RESULT = {"WebSend":"Done"}

  • Hi ....


    Ist die Umgebung Tasmota 9.4 richtig übersetzt wenn die Daten wenigstens im RESULT sichtbar werden oder kann ich ein aktuelles 9.5. mit Websend_Response entladen?

    Zumindest ist USE_WEBSEND_RESPONSE gesetzt wurden, sonst würde der ja nicht aufschlagen.


    Bei mir ergibt:

    rule2 on main#temp do var1 %value% endon

    rule2 1


    und diesem JSON:

    Code
    {"coord":{"lon":14.3333,"lat":51.7667},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"base":"stations","main":{"temp":9.07,"feels_like":7.21,"temp_min":8.21,"temp_max":9.36,"pressure":1022,"humidity":77,"sea_level":1022,"grnd_level":1013},"visibility":10000,"wind":{"speed":3.32,"deg":288,"gust":5.69},"clouds":{"all":86},"dt":1634142396,"sys":{"type":2,"id":2035260,"country":"DE","sunrise":1634102607,"sunset":1634141640},"timezone":7200,"id":2939811,"name":"Cottbus","cod":200}

    dieses Ergebnis:

    Code
    09:46:01.065 RSL: RESULT = {"coord":{"lon":14.3333,"lat":51.7667},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"base":"stations","main":{"temp":9.07,"feels_like":7.21,"temp_min":8.21,"temp_max":9.36,"pressure":1022,"humidity":77,"sea_level":1022,"grnd_level":1013},"visibility":10000,"wind":{"speed":3.32,"deg":288,"gust":5.69},"clouds":{"all":86},"dt":1634142396,"sys":{"type":2,"id":2035260,"country":"DE","sunrise":1634102607,"sunset":1634141640},"timezone":7200,"id":2939811,"name":"Cottbus","cod":200}
    09:46:01.075 RUL: MAIN#TEMP performs "var1 9.07"
    09:46:01.080 RSL: RESULT = {"Var1":"9.07"}
    09:46:01.085 RSL: RESULT = {"":"Done"}


    Das macht übrigens keinen Sinn.

    on VAR1#Status do VAR1 endon

    Wenn schon dann var1#state als trigger. Und "do var1" ja was soll den mit var1 gemacht werden?


    Möglich das die Rule nicht geht weil der Syntax falsch ist.

    Oder Du hast noch was in der Rule1 stehen, vom experimentieren und die Rule2 gar nicht aktiviert und jetzt performt die experimentelle Rule1 oder so.

    Online Compiler


    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/4xGoogle-Home-Mini

    4 Mal editiert, zuletzt von HoerMirAuf ()

  • Ja - die letzte Zeile war mit falscher Syntax, sollte den Inhalt von VAR1 mit Status (State) reflektieren, da sich ja nichts tut !

    Ja - Rule 1 und Rule 3 waren noch belegt aber ausgeschalten. Nach einem Löschen geht es auch nicht besser. :(


    Kann ich ein fertiges Standard-BIN mit WEBSEND_RESPONDSE im Netz finden:?:

  • Ich hab das jetzt nochmal mit meiner eigenen openweather Zugang getestet.


    Geht tadellos:

    Code
    16:59:21.741 CMD: websend [api.openweathermap.org] /data/2.5/weather?q=Cottbus,de&units=metric&appid=<xxx>
    16:59:21.855 RSL: RESULT = {"coord":{"lon":14.3333,"lat":51.7667},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"base":"stations","main":{"temp":10.68,"feels_like":10.1,"temp_min":9.32,"temp_max":12.74,"pressure":1013,"humidity":88,"sea_level":1013,"grnd_level":1005},"visibility":10000,"wind":{"speed":6.13,"deg":298,"gust":11.16},"rain":{"1h":1},"clouds":{"all":100},"dt":1634309670,"sys":{"type":2,"id":2035260,"country":"DE","sunrise":1634275612,"sunset":1634314179},"timezone":7200,"id":2939811,"name":"Cottbus","cod":200}
    16:59:21.905 RUL: MAIN#TEMP performs "var1 10.68"
    16:59:21.909 RSL: RESULT = {"Var1":"10.68"}
    16:59:21.914 RSL: RESULT = {"��?��?$!�?us":"Done"}

    Das kompilieren geht doch im Online Compiler sehr einfach.

    Hab Dir hier mal ein BIN erstellt. Mit USE_WEBSEND_RESPONSE und USE_EXPRESSION für die erweiterten Rule.

    Zip entpacken. Enthält das bin gezippt, ungezippt und die user_config_override.h


    tasmota_9.5.0_DE.zip

    Online Compiler


    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/4xGoogle-Home-Mini

  • Besten Danke für die 9.5.0 BIN - diese läuft aber auch noch nicht wie gewünscht - da habe ich sicherlich noch ein Handlungsproblem:?:;(


    In der Analyse scheint dein WEBSEND aus der Konsol gestartet worden zu sein. 16:59:21.741 CMD: websend [api.openweathermap.org]...

    Mit Konsole - das macht mein Release 9.4 wie deins mit 9.5.0 dann greift die hinterlegter Rule zur Übergabe an VAR1


    Aber ich habe zur Testsimulationsauslösung den Button1 am Shelly - dann kommt nichts mehr am in der Var1 an.

    Evtl. eine RESULT-Überlagerung mit POWER1 Result?


    rule2

    on POWER1#State do websend [api.openweathermap.org] /data/2.5/weather?q=Cottbus,de&units=metric&appid=ada01f72c79beccce endon

    on main#temp do var1 %value% endon


    18:01:07.172 CMD: var1 0

    18:01:07.179 RSL: RESULT = {"Var1":"0"}

    18:01:10.448 RSL: RESULT = {"POWER1":"OFF"}

    18:01:10.451 RSL: POWER1 = OFF

    18:01:10.465 RUL: POWER1#STATE performs "websend [api.openweathermap.org] /data/2.5/weather?q=Cottbus,de&units=metric&appid=ada01f72c79beccce...

    18:01:10.613 RSL: RESULT = {"coord":{"lon":14.3333,"lat":51.7667},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"base":"stations","main":{"temp":8.65,"feels_like":5.8,"temp_min":7.66,"temp_max":9.96,"pressure":1016,"humidity":84,"sea_level":1016,"grnd_level":1007},"visibility":10000,"wind":{"speed":5.26,"deg":287,"gust":9.86},"clouds":{"all":100},"dt":1634316590,"sys":{"type":2,"id":2010637,"country":"DE","sunrise":1634275612,"sunset":1634314179},"timezone":7200,"id":2939811,"name":"Cottbus","cod":200}

    18:01:10.622 RSL: RESULT = {"WebSend":"Done"}

    18:01:10.682 RSL: RESULT = {"POWER1":"ON"}

    18:01:10.687 RSL: POWER1 = ON

    18:01:10.703 RUL: POWER1#STATE performs "websend [api.openweathermap.org] /data/2.5/weather?q=Cottbus,de&units=metric&appid=ada01f72c79beccce...

    18:01:10.855 RSL: RESULT = {"coord":{"lon":14.3333,"lat":51.7667},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"base":"stations","main":{"temp":8.65,"feels_like":5.8,"temp_min":7.66,"temp_max":9.96,"pressure":1016,"humidity":84,"sea_level":1016,"grnd_level":1007},"visibility":10000,"wind":{"speed":5.26,"deg":287,"gust":9.86},"clouds":{"all":100},"dt":1634316590,"sys":{"type":2,"id":2010637,"country":"DE","sunrise":1634275612,"sunset":1634314179},"timezone":7200,"id":2939811,"name":"Cottbus","cod":200}

    18:01:10.861 RSL: RESULT = {"WebSend":"Done"}

    18:01:51.476 CMD: var1

    18:01:51.482 RSL: RESULT = {"Var1":"0"}


    D

  • Habe zur Entkopplung von Power1 einen Button4 (Touch TTP223) an den Shelly auf TX (GPIO1) gelegt und

    einen weiteren Testskript erstellt:


    rule2

    on Button4#State do websend [api.openweathermap.org] /data/2.5/weather?q=Cottbus,de&units=metric&appid=ada01f72c79beccce endon

    on main#temp do var1 %value% endon


    # ohne Erfolg, aber mit Erfolg bei :

    rule2

    on Button4#State do Backlog VAR1 -100 websend [api.openweathermap.org] /data/2.5/weather?q=Cottbus,de&units=metric&appid=ada01f72c79beccce endon

    on main#temp do var1 %value% endon




    Fazit: es muss dingend ein Backlog vor dem websend stehen (auch ohne Inhalt) sonst wird nichts übergeben - warum auch immer!


    Danke:<3

    Mit der Sicherheit der BIN 9.5. und dem stimmigen Konsolentest konnte das Zielergebnis erreicht werden. :):):):thumbup:



  • Moin!


    Das ist krass! Stimmt! Das geht zwar wenn man den websend direkt eingibet aber nicht von einem power#state, event command, etc.

    Warum, ist mir echt nicht klar. Aber mit dem backlog davor klappt das. Sehr interessant.


    Danke für die Rückinfo !!!

    Online Compiler


    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/4xGoogle-Home-Mini