Rule zum senden von Werten unabhänig von TelePeriod

  • Hallo, ich benötige Mal eure Hilfe.

    Ich überwache die Leistung meiner PV Anlage mit einem Mod-Bus Zähler DDS238-2.

    Das läuft soweit alles super bis auf die Tatsache dass Tasmota eine Änderung der Werte für die aktuelle Leistung nur im Abstand der TelePeriod an den IObroker sendet.Aktuell schalte ich über folgende Rule die TelePeriod morgens bei einer Leistung der PV Anlage über 10 Watt auf TelePeriod 10 und wenn Abends dann die Leistung unter 10 Watt fällt in der Nacht auf TelePeriod 600 zurück.

    Rule1 ON Energy#Power>10 DO TelePeriod 10 ENDON ON Energy#Power<10 DO TelePeriod 600 ENDON

    Rule1 5

    Meine Frage ist, wie müsste eine Rule aussehen die die aktuelle Leistung sofort bei Änderung ( unabhänig von der TelePeriod ) an den IObroker sendet?

    Ich habe schon etwas in dieser Art probiert aber ohne Erfolg.

    ON Energy#Power DO publish state/Energy/Power %value%

    Danke schon mal für eure hilfe.

    Die normale Ausgabe in der Konsole sieht so aus:

    23:22:18.830 MQT: tele/tasmota_CFE6A1/STATE = {"Time":"2021-05-17T23:22:18","Uptime":"1T03:13:17","UptimeSec":97997,"Heap":28,"SleepMode":"Dynamic","Sleep":100,"LoadAvg":9,"MqttCount":5,"Wifi":{"AP":2,"SSId":"XX","Channel":13,"RSSI":60,"Signal":-70,"LinkCount":3,"Downtime":"0T00:00:15"}}

    23:22:18.842 MQT: tele/tasmota_CFE6A1/SENSOR = {"Time":"2021-05-17T23:22:18","ENERGY":{"TotalStartTime":"2021-05-17T19:05:45","Total":147.020,"Yesterday":2.400,"Today":2.240,"ExportActive":0.000,"Period":0,"Power":0,"ApparentPower":0,"ReactivePower":0,"Factor":1.00,"Frequency":50,"Voltage":234,"Current":0.000},"DS18B20-1":{"Id":"01143BF853AA","Temperature":20.4},"DS18B20-2":{"Id":"01186D5227FF","Temperature":20.3},"TempUnit":"C"}

  • Moin.

    Ich würde das mit ner Hysterese lösen damit nicht dauernd gesendet wird.

    Im Beispiel wird die Hsystere +-2 über dir Variabel var3 gesetzt.

    Code
    Rule1
    on system#boot do backlog var1 0; var2 0; var3 2 endon
    on energy#power>%var1% do backlog publish stat/ENERGY/RESULT {"ENERGY":"%value%"}; var1 %value%; var2 %value%; add1 %var3%; sub2 %var3% endon
    on energy#power<%var2% do backlog publish stat/ENERGY/RESULT {"ENERGY":"%value%"}; var1 %value%; var2 %value%; add1 %var3%; sub2 %var3% endon

    Beim booten wird wie erwähnt erst mal die var1 und var2 auf 0 gesetzet und die var3 mit dem Hysteresenwert beschrieben.

    Dann wertet die Rule aus, ist der wert größer var1 wird zum einen MQTT Befehl abgesetzt

    (Müsste eigentlich im IOBroker einen eigenen Datenpunkt "ENERGY" anlegen, eben das was in der geschweiften Klammer vor dem %value% steht)

    Es werden auch die var1 und var2 mit dem aktuellen Energiewert beschrieben und zu var1 der Hysteresenwert addiert und von var2 subtrahiert.

    Dasselbe passiert wenn der Energiewert kleiner var2 (also der aktuelle Energiewert abzüglich Hsysteresenwert) wird.

    Rule 1 aktivieren:

    Rule1 1

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    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

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    Einmal editiert, zuletzt von HoerMirAuf (19. Mai 2021 um 07:16)

  • Moin HoerMirAuf,

    danke für deine Hilfe.

    Ich habe die Rule in der Konsole eingefügt und mit " Rule1 1 " gestartet.

    Leider sendet die Rule jetzt 2-3 mal pro Sekunde den aktuellen Wert.

    Das geht so ca 20 -30 Minuten und dann scheint die Rule abzustürzen, jedenfalls kommen dann garkeine Werte mehr.

    Erst nach einem Neustart der Rule kommen dann wieder die Werte 2-3 mal pro Sekunde.

    Mir ist gerade noch aufgefallen dass in der Ausgabe der Konsole die Var1 mit %value% beschrieben wird, während in Var2 "60" steht ( 60 ist die aktuelle Leistung )

    und in Var3 "2" steht.

    Müsste in Var1 nicht auch eine Zahl anstelle von %value% stehen ?

    2 Mal editiert, zuletzt von Elli (18. Mai 2021 um 20:05)

  • Moin.

    oh ja, ein Tippfehler, sorry. Bei einem Value fehlt hinten das %, da funktioniert natürlich die ganze Rule nicht wenn var1 nicht richtig beschrieben wird.

    hier korrigiert:

    Code
    Rule1
    on system#boot do backlog var1 0; var2 0; var3 2 endon
    on energy#power>%var1% do backlog publish stat/ENERGY/RESULT {"ENERGY":"%value%"}; var1 %value%; var2 %value%; add1 %var3%; sub2 %var3% endon
    on energy#power<%var2% do backlog publish stat/ENERGY/RESULT {"ENERGY":"%value%"}; var1 %value%; var2 %value%; add1 %var3%; sub2 %var3% endon

    Hab es Sicherheitshalber im Originalpost auch korrigiert.

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    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

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • HoerMirAuf

    ist es möglich diese obige Rule von dir, mit:

    Code
    ON tele-SR04#distance DO Backlog var4 %value%; event checklimit=%value%; event senddistance ENDON
      ON event#checklimit>30 DO var4 31 ENDON
      ON event#checklimit<5 DO var4 4 ENDON
      ON event#senddistance DO Backlog SCALE1 %var4%, 31, 4, 0, 100; event pubdata ENDON
      ON event#pubdata DO publish stat/Wassertank_prozent/RESULT {"Wassertank_prozent":"%var4%"} ENDON

    dieser zu kombinieren?

    Code
    on system#boot do backlog var1 0; var2 0; var3 1 endon
    on SR04#distance>%var1% do backlog publish stat/Wassertank_Distance/RESULT {"Wassertank_Distance":"%value%"}; var1 %value%; var2 %value%; add1 %var3%; sub2 %var3% endon
    on SR04#distance<%var2% do backlog publish stat/Wassertank_Distance/RESULT {"Wassertank_Distance":"%value%"}; var1 %value%; var2 %value%; add1 %var3%; sub2 %var3% endon

    so funktioniert sie bei mir.

    Hätte gerne den Tankinhalt in Prozent der mir ja mit der Rule ausgerechnet wird, aber eben Aktuell ohne die Teleperiode verändern zu müssen.

    3 Mal editiert, zuletzt von bishop (9. Juni 2021 um 20:42)

  • Hi

    Code
    on system#boot do backlog var1 0; var2 0; var3 1 endon
    on SR04#distance>%var1% do event checklimit=%value%; var4 %value% ; event senddistance endon
    on SR04#distance<%var2% do event checklimit=%value%; var4 %value% ; event senddistance endon
    on event#checklimit>30 do var1 31 endon
    on event#checklimit<5 do var1 4 endon
    on event#senddistance do backlog scale1 %var1%, 31, 4, 0, 100; event pubdata endon
    on event#pubdata do backlog publish stat/Wassertank_Distance/RESULT {"Wassertank_prozent":"%var1%"}; var1 %var4%; var2 %var4%; add1 %var3%; sub2 %var3% endon

    EDIT

    Ups ... mir ist eben aufgefallen, das ich 2 backlogs vergessen habe. var1 hatte ich auch doppelt verwendet.

    Das sollte zwar nicht machen aber nicht elegant.

    Hier Überarbeitet:

    Code
    Rule1 
    on system#boot do backlog var1 0; var2 0; var3 1 endon
    on SR04#distance>%var1% do backlog var4 %value%; var5 %value%; event checklimit=%value%; event senddistance endon
    on SR04#distance<%var2% do backlog var4 %value%; var5 %value%; event checklimit=%value%; event senddistance endon
    on event#checklimit>30 do var4 31 endon
    on event#checklimit<5 do var4 4 endon
    on event#senddistance do backlog scale1 %var4%, 31, 4, 0, 100; event pubdata endon
    on event#pubdata do backlog publish stat/Wassertank_Distance/RESULT {"Wassertank_prozent":"%var4%"}; var1 %var5%; var2 %var5%; add1 %var3%; sub2 %var3% endon

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    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

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    5 Mal editiert, zuletzt von HoerMirAuf (10. Juni 2021 um 10:22)

  • Hi.

    Du hast das mit Rule1 davor eingegeben?

    Also Rule1 on system#boot ....

    Sollte ja inzwischen eigentlich klar sein das das immer mit vor die Rule gehört ;)

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    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

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Moin,

    Hehe ja, dass habe selbst ich langsam kapiert :)

    In meinem Fall:

    Code
    rule2
    on system#boot do backlog var1 0; var2 0; var3 1 endon
    on SR04#distance>%var1% do backlog var4 %value%; var5 %value%; event checklimit=%value%; event senddistance endon
    on SR04#distance<%var2% do backlog var4 %value%; var5 %value%; event checklimit=%value%; event senddistance endon
    on event#checklimit>30 do var4 31 endon
    on event#checklimit<5 do var4 4 endon
    on event#senddistance do backlog scale1 %var4%, 31, 4, 0, 100; event pubdata endon
    on event#pubdata do backlog publish stat/Wassertank_Distance/RESULT {"Wassertank_prozent":"%var4%"}; var1 %var5%; var2 %var5%; add1 %var3%; sub2 %var3% endon

    als Ergebnis bekomme ich dann:

    Code
    07:18:35 MQT: stat/Hochbeet94/RESULT = {"Rule2":"ON","Once":"OFF","StopOnError":"OFF","Free":511,"Rules":""}
  • Moin. Welche FW Version?

    Bei mir passt das spielend in den Speicher zumal dir Rules seit geraumer Zeit kompermiert werden und deswegen weit über 1000 Zeichen fassen.

    Oder du hast es abgetippt und immer "Enter" gedrückt nach jeder Zeile.

    Zitat

    rule2 on system#boot do backlog var1 0; var2 0; var3 1 endon on SR04#distance>%var1% do backlog var4 %value%; var5 %value%; event checklimit=%value%; event senddistance endon on SR04#distance<%var2% do backlog var4 %value%; var5 %value%; event checklimit=%value%; event senddistance endon on event#checklimit>30 do var4 31 endon on event#checklimit<5 do var4 4 endon on event#senddistance do backlog scale1 %var4%, 31, 4, 0, 100; event pubdata endon on event#pubdata do backlog publish stat/Wassertank_Distance/RESULT {"Wassertank_prozent":"%var4%"}; var1 %var5%; var2 %var5%; add1 %var3%; sub2 %var3% endon

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    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

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    Einmal editiert, zuletzt von HoerMirAuf (11. Juni 2021 um 09:12)

  • HoerMirAuf

    ahh mein Fehler, hatte eine alte Tasmota Firmware noch drauf. Er nimmt die Rule nun.

    Aber da passt noch was nicht!

    Add1 und Sub2 passen nicht, sowie scale1 wird die Falsche Zahl gepublished. Var4 passt doch eigentlich wieso nimmt er 8.175 und nicht die 84.537?


    Edit: Add1 und Sub2 passen nur der Wert der gesendet wird ist der falsche noch.

    2 Mal editiert, zuletzt von bishop (12. Juni 2021 um 21:33)

  • Hi

    ahhh, mein Fehler. Sorry. Hatte noch nicht groß mit scale gearbeitet.

    Versuches es mal mit:

    scale4 %var4%, 31, 4, 0, 100;

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    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

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070