Tasmota Skript Programmierung

  • Hallo in die Runde,

    mithilfe des WebSend Befehls bekomme ich in der Konsole Folgendes angezeigt:

    13:55:00 RSL: stat/tasmota_FA5620/RESULT = 1

    Jetzt brauche ich diesen Result nur noch abgespeichert in einer Variable in meinem Skript, bzw. möchte ich ihn mit "if-then" verwenden. Weiß hier vielleicht jemand wie das geht? Wenn ich "eres" auslese, wird hier nur 0.00 zurück gegeben. In der Tasmota Beschreibung habe ich Folgendes gefunden:

    eres = result of >E section set this var to 1 in section >E to tell Tasmota event is handled (prevents MQTT)

    Kann es vielleicht daran liegen, dass die PHP Seite einen String-Wert übermittelt?


    Danke schonmal und viele Grüße

    Juri

  • es macht keinen Sinn eres zu lesen, es ist immer 0

    wenn du es innerhalb der >E section auf 1 setzt dann sagt das Tasmota dass du das Event bearbeitet hast und es wird kein MQTT verschickt.

    in der >E Sektion kommen die Events als JSON String an und können (analog zu rules) in eine Variable eingelesen werden.

    Allerdings anders als bei rules must du die Groß Klein Schreibung beachten.

    Was du da empfängst ist aber KEIN JSON string.

    Sieh dir die Tasmota MQTT JSON messages an.

    Beispiel:

    18:11:45 MQT: tele/sonoff/SENSOR = {"Time":"2020-10-14T18:11:45","ENERGY":{"TotalStartTime":"2020-10-13T13:36:11","Total":0.085,"Yesterday":0.044,"Today":0.041,"Period":1,"Power":9,"ApparentPower":17,"ReactivePower":15,"Factor":0.54,"Voltage":225,"Current":0.077}}

    Beachte beim Einlesen dass du eine Zahl nur in eine Zahlenvariable und einen String nur in eine Stringvariable einlesen kannst.

    (siehst du an den Anführungszeichen)

    also

    >D

    pow=0

    tim=""

    >E

    pow=ENERGY#Total

    tim=Time

  • Vielen Dank für eure schnellen Antworten und Tipps!

    Es war genauso, wie gemu2015 es geschrieben hat und klappt jetzt einwandfrei!

    Meine Shelly schickt eine Anfrage mit WebSend an eine PHP Seite, diese prüft die Datenbank und gab dann den Wert 1 oder 0 zurück. Jetzt habe ich in der PHP Programmierung die Ausgabe als JSON String verändert:

    Code
    if ($result) {
      die('{"Time":"' . (date("Y-m-d\TH:i:s")) . '","SCHALTER":{"Befehl":1.000}}');
      //Schalter soll auf AN gehen
    } else {
      die('{"Time":"' . (date("Y-m-d\TH:i:s")) . '","SCHALTER":{"Befehl":0.000}}');
      //Schalter soll auf AUS gehen
    }

    Und in der >E Sektion dann wie beschrieben den Wert abgegriffen:

    Code
    >E
    meineVariable=SCHALTER#Befehl

    Damit und einer IF-Anweisung kann ich den Schalter nun ein- oder ausschalten gemäß meiner programmierten Datenbank.

    Viele Grüße

    PS: Falls jemand anders etwas Ähnliches vor hat: Tasmota erkennt keine https (Port 443) Antworten, es muss über den Port 80 gemacht werden.