arendst / Tasmota

Alternative firmware for ESP8266 and ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at
https://tasmota.github.io/docs
GNU General Public License v3.0
22.08k stars 4.78k forks source link

if statement triggers even condition not met fullrules firmware 8.4.0.1 #9069

Closed riker65 closed 4 years ago

riker65 commented 4 years ago

PROBLEM DESCRIPTION

A clear and concise description of what the problem is.

if conditions are not checked properly. triggering every time even condition not met Fullrules 8.4.0.1

REQUESTED INFORMATION

Make sure your have performed every step and checked the applicable boxes before submitting your issue. Thank you!

09:59:03 RUL: VAR16 performs "IF (( 46.8 < 55) AND (Tr1 == Tr0) ) var7 i-12 ; var8 i-12 ENDIF" 09:59:03 MQT: stat/TA_WP_ESP0143/RESULT = {"If":"Done"} 09:59:03 MQT: stat/TA_WP_ESP0143/RESULT = {"Var7":"i-12"} 09:59:03 MQT: stat/TA_WP_ESP0143/RESULT = {"Var8":"i-12"}

- [ ] If using rules, provide the output of this command: `Backlog Rule1; Rule2; Rule3`:

Rules output here: 10:01:01 RUL: Rule3 on system#boot do var3 B3.26 endon on Time#Minute|5 do backlog publish tele/WP/%topic%/THSim5 HSich-S%VAR1%-Max%MEM9%C-%timestamp%;var,mem endon on Var16 do IF ( %VAR11% < %Mem8% AND %Var16% == Tr0 ) var6 i-11; publish tele/WP/%topic%/I-11 I-v11-%var11%-v16-%var16%; publish cmnd/TA_WP_H_P1_P2_Lolin1/power4 1 ELSE var6 else-%var2% ENDIF endon on Var16 do IF ( %VAR11% < %Mem8% AND %Var16% == Tr0 ) event TR=ON ENDIF endon on Var16 do IF ( %VAR11% < %Mem8% AND %Var16% == Tr0 ) 10:01:01 RUL: Rule3 +var6 TR_ON ENDIF endon on Var16 do IF (( %VAR11% < %Mem8%) AND (%Var16% == Tr0) ) var7 i-12 ; var8 i-12 ENDIF endon on event#TR=ON do publish cmnd/TA_WP_H_P1_P2_Lolin1/power4 1 endon 10:01:01 MQT:

- [ ] Provide the output of this command: `Status 0`:

STATUS 0 output here: 10:14:21 CMD: status0 10:14:21 MQT: stat/TA_WP_ESP0143/STATUS = {"Status":{"Module":0,"DeviceName":"TA_WP_ESP0143","FriendlyName":["TA_WP_ESP0143","Tasmota2"],"Topic":"TA_WP_ESP0143","ButtonTopic":"0","Power":1,"PowerOnState":1,"LedState":1,"LedMask":"FFFF","SaveData":4,"SaveState":1,"SwitchTopic":"0","SwitchMode":[0,0,0,0,0,0,0,0],"ButtonRetain":0,"SwitchRetain":0,"SensorRetain":0,"PowerRetain":0}} 10:14

- [ ] Provide the output of the Console log output when you experience your issue; if applicable:
  _(Please use_ `weblog 4` _for more debug information)_

Console output here: 10:15:01 MQT: stat/TA_WP_ESP0143/RESULT = {"If":"Done"} 10:15:01 RUL: VAR16 performs "IF (( 32.8 < 55) AND (Tr1 == Tr0) ) var7 i-12 ; var8 i-12 ENDIF" 10:15:01 SRC: Rule 10:15:01 CMD: Group 0, Index 1, Command "IF", Data "(( 32.8 < 55) AND (Tr1 == Tr0) ) var7 i-12  var8 i-12 ENDIF" 10:15:01 MQT: stat/TA_WP_ESP0143/RESULT = {"If":"Done"} 10:15:01 SRC: Backlog 10:15:01 CMD: Group 0, Index 7, Command "VAR", Data "i-12" 10:15:01 MQT: stat/TA_WP_ESP0143/RESULT = {"Var7":"i-12"} 10:15:01 SRC: Backlog 10:15:01 CMD: Group 0, Index 8, Command "VAR", Data "i-12" 10:15:01 MQT: stat/TA_WP_ESP0143/RESULT = {"Var8":"i-12"} 10:15:03 MQT: stat/TA_WP_ESP0143/RESULT = {"If":"Done"} 10:15:03 RUL: VAR16 performs "IF ( 32.8 < 55 AND Tr1 == Tr0 ) var6 i-11; publish tele/WP/TA_WP_ESP0143/I-11 I-v11-32.8-v16-Tr1; publish cmnd/TA_WP_H_P1_P2_Lolin1/power4 1 ELSE var6 else-B2.46 ENDIF" 10:15:03 SRC: Rule 10:15:03 CMD: Group 0, Index 1, Command "IF", Data "( 32.8 < 55 AND Tr1 == Tr0 ) var6 i-11 publish tele/WP/TA_WP_ESP0143/I-11 I-v11-32.8-v16-Tr1 publish cmnd/TA_WP_H_P1_P2_Lolin1/power4 1 ELSE var6 else-B2.46 ENDIF" 10:15:03 MQT: stat/TA_WP_ESP0143/RESULT = {"If":"Done"} 10:15:03 RUL: VAR16 performs "IF ( 32.8 < 55 AND Tr1 == Tr0 ) event TR=ON ENDIF" 10:15:03 SRC: Rule 10:15:03 CMD: Group 0, Index 1, Command "IF", Data "( 32.8 < 55 AND Tr1 == Tr0 ) event TR=ON ENDIF" 10:15:03 MQT: stat/TA_WP_ESP0143/RESULT = {"If":"Done"} 10:15:03 RUL: VAR16 performs "IF ( 32.8 < 55 AND Tr1 == Tr0 ) var6 TR_ON ENDIF" 10:15:03 SRC: Rule 10:15:03 CMD: Group 0, Index 1, Command "IF", Data "( 32.8 < 55 AND Tr1 == Tr0 ) var6 TR_ON ENDIF" 10:15:03 MQT: stat/TA_WP_ESP0143/RESULT = {"If":"Done"} 10:15:03 RUL: VAR16 performs "IF (( 32.8 < 55) AND (Tr1 == Tr0) ) var7 i-12 ; var8 i-12 ENDIF" 10:15:03 SRC: Rule 10:15:03 CMD: Group 0, Index 1, Command "IF", Data "(( 32.8 < 55) AND (Tr1 == Tr0) ) var7 i-12  var8 i-12 ENDIF" 10:15:03 MQT: stat/TA_WP_ESP0143/RESULT = {"If":"Done"} 10:15:03 SRC: Backlog 10:15:03 CMD: Group 0, Index 7, Command "VAR", Data "i-12" 10:15:03 MQT: stat/TA_WP_ESP0143/RESULT = {"Var7":"i-12"} 10:15:03 SRC: Backlog 10:15:03 CMD: Group 0, Index 8, Command "VAR", Data "i-12" 10:15:04 MQT: stat/TA_WP_ESP0143/RESULT = {"Var8":"i-12"} 10:15:04 SRC: Backlog 10:15:04 CMD: Group 0, Index 6, Command "VAR", Data "TR_ON" 10:15:04 MQT: stat/TA_WP_ESP0143/RESULT = {"Var6":"TR_ON"} 10:15:04 SRC: Backlog 10:15:04 CMD: Group 0, Index 1, Command "EVENT", Data "TR=ON" 10:15:04 MQT: stat/TA_WP_ESP0143/RESULT = {"Event":"Done"} 10:15:04 RUL: EVENT#TR=ON performs "publish cmnd/TA_WP_H_P1_P2_Lolin1/power4 1" 10:15:04 SRC: Rule 10:15:04 CMD: Group 0, Index 1, Command "PUBLISH", Data "cmnd/TA_WP_H_P1_P2_Lolin1/power4 1" 10:15:04 MQT: cmnd/TA_WP_H_P1_P2_Lolin1/power4 = 1 10:15:04 SRC: Backlog 10:15:04 CMD: Group 0, Index 6, Command "VAR", Data "i-11" 10:15:04 MQT: stat/TA_WP_ESP0143/RESULT = {"Var6":"i-11"} 10:15:04 SRC: Backlog 10:15:04 CMD: Group 0, Index 1, Command "PUBLISH", Data "tele/WP/TA_WP_ESP0143/I-11 I-v11-32.8-v16-Tr1" 10:15:04 MQT: tele/WP/TA_WP_ESP0143/I-11 = I-v11-32.8-v16-Tr1 10:15:05 SRC: Backlog 10:15:05 CMD: Group 0, Index 1, Command "PUBLISH", Data "cmnd/TA_WP_H_P1_P2_Lolin1/power4 1" 10:15:05 MQT: cmnd/TA_WP_H_P1_P2_Lolin1/power4 = 1 10:15:05 SRC: Backlog 10:15:05 CMD: Group 0, Index 7, Command "VAR", Data "i-12" 10:15:05 MQT: stat/TA_WP_ESP0143/RESULT = {"Var7":"i-12"} 10:15:05 SRC: Backlog 10:15:05 CMD: Group 0, Index 8, Command "VAR", Data "i-12" 10:15:05 MQT: stat/TA_WP_ESP0143/RESULT = {"Var8":"i-12"} 10:15:05 SRC: Backlog 10:15:05 CMD: Group 0, Index 6, Command "VAR", Data "TR_ON" 10:15:05 MQT: stat/TA_WP_ESP0143/RESULT = {"Var6":"TR_ON"} 10:15:06 SRC: Backlog 10:15:06 CMD: Group 0, Index 1, Command "EVENT", Data "TR=ON" 10:15:06 MQT: stat/TA_WP_ESP0143/RESULT = {"Event":"Done"} 10:15:06 RUL: EVENT#TR=ON performs "publish cmnd/TA_WP_H_P1_P2_Lolin1/power4 1" 10:15:06 SRC: Rule

TO REPRODUCE

Steps to reproduce the behavior:

EXPECTED BEHAVIOUR

A clear and concise description of what you expected to happen.

if statement properly checked and Command "IF", Data "(( 32.8 < 55) AND (Tr1 == Tr0) ) will not trigger !!

SCREENSHOTS

If applicable, add screenshots to help explain your problem.

ADDITIONAL CONTEXT

Add any other context about the problem here.

(Please, remember to close the issue when the problem has been addressed)

riker65 commented 4 years ago

even having () around every comparison no change

`rule3 on system#boot do var3 B3.28 endon on Time#Minute|5 do backlog publish tele/WP/%topic%/THSim5 HSich-S%VAR1%-Max%MEM9%C-%timestamp%;var,mem endon on Var16 do IF ( (%VAR11% < %Mem8% ) AND (%Var16% == Tr0) ) var6 i-11; publish tele/WP/%topic%/I-11 {I-v11-%var11%-v16-%var16%}; publish cmnd/TA_WP_H_P1_P2_Lolin1/power4 1 ELSE var6 else-%var2% ENDIF endon on Var16 do IF (( %VAR11% < %Mem8% )AND (%Var16% == Tr0 )) event TR=ON ENDIF endon on Var16 do IF ( (%VAR11% < %Mem8% )AND (%Var16% == Tr0 )) var6 TR_ON ENDIF endon on Var16 do IF (( %VAR11% < %Mem8%) AND (%Var16% == Tr0) ) var7 i-12 ; var8 i-12 ENDIF endon

on event#TR=ON do publish cmnd/TA_WP_H_P1_P2_Lolin1/power4 1 endon`

10:19:48 CMD: Group 0, Index 1, Command "IF", Data "(( 31.1 < 55) AND (Tr1 == Tr0) )  var7 i-12   var8 i-12    ENDIF"
10:19:48 MQT: stat/TA_WP_ESP0143/RESULT = {"If":"Done"}
10:19:48 SRC: Backlog
10:19:48 CMD: Group 0, Index 7, Command "VAR", Data "i-12"
10:19:48 MQT: stat/TA_WP_ESP0143/RESULT = {"Var7":"i-12"}
10:19:48 SRC: Backlog
10:19:48 CMD: Group 0, Index 8, Command "VAR", Data "i-12"
10:19:48 MQT: stat/TA_WP_ESP0143/RESULT = {"Var8":"i-12"}
10:19:49 SRC: Backlog
10:19:49 CMD: Group 0, Index 6, Command "VAR", Data "TR_ON"
10:19:49 MQT: stat/TA_WP_ESP0143/RESULT = {"Var6":"TR_ON"}
riker65 commented 4 years ago

looks solved hat to use = instead of == for text comparison

please check if ( | ) {{AND | OR} }

should be ( | ) {{AND | OR} ()}