Tasmota Thermostat mit zwei Bereichen, umschaltbar über Schalter

Hallo Community, die Fehler der letzten Tage wurden hoffentlich behoben. Entschuldigt den Umstand! Viel Spaß weiterhin. Lg
  • Servus Leute,

    ... mein erster Beitrag / Frage. Bedenken und Anregungen werden gerne entgegen genommen. ;)

    Beabsichtige, eine Gärbox zu bauen, da ich nebenbei Bier braue. Die Box braucht zwei Temperaturbereiche, ~10 °C für untergäriges, ~20 °C für obergäriges Bier.

    Habe hier eine Lolin NodeMcu V3 mit Tasmota geflasht, Einzelheiten siehe KonsoleLog und Anhang [1].


    In der Konsole eingegeben (ohne #):

    # bei Systemstart alle Relais aus
    poweronstate 0

    # Switchmode einstellen
    switchmode1 1

    # Auswertung Schalter
    rule1   on switch1#state=1 do backlog rule2 1; rule3 0 endon   on switch1#state=0 do backlog rule2 0; rule3 1 endon

    # Kühlen (UG)
    rule2: on DS18S20#Temperature<9 do power1 0 endon on DS18S20#Temperature>10 do power1 1 endon

    # Heizen (OG)
    rule3: on DS18S20#Temperature<19 do power2 1 endon on DS18S20#Temperature>20 do power2 0 endon

    Und hier der KonsoleLog:

    00:00:00.001 HDW: ESP8266EX
    00:00:00.053 CFG: aus Flash geladen von F8, Anzahl 140
    00:00:00.059 QPC: Count 1
    00:00:00.091 Projekt tasmota - Gärbox Version 13.4.0(tasmota)-2_7_6(2024.02.14 16:19:06)
    00:00:01.001 WIF: verbinden mit AP1 xxx Channel 1 BSSId 44:4E:6D:BC:E1:A6 in Modus 11n als tasmota-8CDF1B-7963...
    00:00:02.529 WIF: verbunden
    00:00:02.780 HTP: Webserver aktiv bei tasmota-8CDF1B-7963 mit IP-Adresse xxx
    00:00:02.784 RSL: INFO1 = {"Info1":{"Module":"RocBrew","Version":"13.4.0(tasmota)","FallbackTopic":"cmnd/DVES_8CDF1B_fb/","GroupTopic":"cmnd/tasmotas/"}}
    00:00:02.794 RSL: INFO2 = {"Info2":{"WebServerMode":"Admin","Hostname":"tasmota-8CDF1B-7963","IPAddress":"xxx"}}
    00:00:02.802 RSL: INFO3 = {"Info3":{"RestartReason":"External System","BootCount":14}}
    00:00:02.810 RSL: RESULT = {"POWER1":"OFF"}
    00:00:02.812 RSL: POWER1 = OFF
    00:00:02.813 RSL: RESULT = {"POWER2":"OFF"}
    00:00:02.815 RSL: POWER2 = OFF
    00:00:09.487 QPC: Reset
    21:58:26.236 RSL: STATE = {"Time":"2024-03-12T21:58:26","Uptime":"0T00:00:09","UptimeSec":9,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":361,"MqttCount":0,"POWER1":"OFF","POWER2":"OFF","Wifi":{"AP":1,"SSId":"xxx","BSSId":"44:4E:6D:BC:E1:A6","Channel":1,"Mode":"11n","RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:04"}}
    21:58:26.242 RSL: SENSOR = {"Time":"2024-03-12T21:58:26","Switch1":"OFF","DS18S20":{"Id":"000801A93FB7","Temperature":23.3},"TempUnit":"C"}
    21:58:40.471 RUL: SWITCH1#STATE=1 performs "backlog Rule2 1; Rule3 0"
    21:58:40.481 RSL: RESULT = {"Rule2":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":88,"Free":423,"Rules":": on DS18S20#Temperature<9 do power1 0 endon on DS18S20#Temperature>10 do power1 1 endon"}}
    21:58:40.710 RSL: RESULT = {"Rule3":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":89,"Free":422,"Rules":": on DS18S20#Temperature<19 do power2 1 endon on DS18S20#Temperature>20 do power2 0 endon"}}
    21:59:28.719 RSL: STATE = {"Time":"2024-03-12T21:59:28","Uptime":"0T00:01:11","UptimeSec":71,"Heap":25,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":0,"POWER1":"OFF","POWER2":"OFF","Wifi":{"AP":1,"SSId":"xxx","BSSId":"44:4E:6D:BC:E1:A6","Channel":1,"Mode":"11n","RSSI":74,"Signal":-63,"LinkCount":1,"Downtime":"0T00:00:04"}}
    21:59:28.727 RSL: SENSOR = {"Time":"2024-03-12T21:59:28","Switch1":"ON","DS18S20":{"Id":"000801A93FB7","Temperature":23.4},"TempUnit":"C"}
    21:59:52.646 RUL: SWITCH1#STATE=0 performs "backlog Rule2 0; Rule3 1"
    21:59:52.654 RSL: RESULT = {"Rule2":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":88,"Free":423,"Rules":": on DS18S20#Temperature<9 do power1 0 endon on DS18S20#Temperature>10 do power1 1 endon"}}
    21:59:52.877 RSL: RESULT = {"Rule3":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":89,"Free":422,"Rules":": on DS18S20#Temperature<19 do power2 1 endon on DS18S20#Temperature>20 do power2 0 endon"}}
    22:00:28.738 RSL: STATE = {"Time":"2024-03-12T22:00:28","Uptime":"0T00:02:11","UptimeSec":131,"Heap":25,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":22,"MqttCount":0,"POWER1":"OFF","POWER2":"OFF","Wifi":{"AP":1,"SSId":"xxx","BSSId":"44:4E:6D:BC:E1:A6","Channel":1,"Mode":"11n","RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:04"}}
    22:00:28.745 RSL: SENSOR = {"Time":"2024-03-12T22:00:28","Switch1":"OFF","DS18S20":{"Id":"000801A93FB7","Temperature":23.4},"TempUnit":"C"}

    Rule2 und 3 werden ordnungsgemäß umgeschaltet. Jetzt hatte ich erwartet, dass bei einer Sensortemperatur von 23.x °C bei aktiver Rule2 "POWER"="On" ist. Leider ist dem nicht so!

    Würde mich freuen, wenn mir jemand von Euch auf die Sprünge helfen könnte.

    Vielen Dank im Voraus!

    [1]

  • bei Tasmota ist oft das Problem- das Programm ist erdacht aber mit fehlerhafter Syntax auf dem System angekommen!

    Wenn das Programm nach einem Restart nicht läuft ist eine Prüfung mit Consoleneingabe Rule0 und Prüfung der Ausgabe erforderlich .

    In deinem Fall wird rule1 und rule2: unterschiedlich dargestellt (:) da geht es schon los.

    Bitte Rule0-Ausgabe hier posten

  • Hier die Rule0-Ausgabe:

    17:05:55.445 CMD: rule0
    17:05:55.450 RSL: RESULT = {"Rule1":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":107,"Free":404,"Rules":"on Switch1#state=1 do backlog Rule2 1; Rule3 0 endon on Switch1#state=0 do backlog Rule2 0; Rule3 1 endon"}}
    17:05:55.460 RSL: RESULT = {"Rule2":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":88,"Free":423,"Rules":": on DS18S20#Temperature<9 do power1 0 endon on DS18S20#Temperature>10 do power1 1 endon"}}
    17:05:55.469 RSL: RESULT = {"Rule3":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":89,"Free":422,"Rules":": on DS18S20#Temperature<19 do power2 1 endon on DS18S20#Temperature>20 do power2 0 endon"}}