I am normally using v2.0 version firmware for my floor heating controller.
Rules have got about 1900 characters and all works fine.
If I try new mega versions no "if" statements works.
I "strip" down this rules for testing and easy understood.
Code: Select all
On System#Boot do
gpio,13,0 // relay and LED off
gpio,12,0
TaskValueSet,2,2,27 // Var#Setpoint 27deg
TaskValueSet,2,3,0 // Var#Heating
TaskValueSet,2,4,20 // Var#Mode
TaskValueSet,2,1,1 // Var#HDO
TaskValueSet,4,1,0
TaskValueSet,4,2,0
TaskValueSet,3,1,24.5 // Floor#Temp simulation to 24.5deg
timerSet,1,30 // timer1 event after 30s
endon
on HeatingOn do // relay and LED on
gpio,12,1
gpio,13,0
endon
on HeatingOff do // relay and LED off
gpio,12,0
gpio,13,1
endon
On Rules#Timer=1 do
TaskValueSet,2,3,0 // clear Var#Heating
if [Floor#Temp]<[Var#Setpoint]
TaskValueSet,2,3,1 // if heating needed, set Var#Heating to 1
endif
if [Var#Heating]=1
event,HeatingOn // relay and LED on
else
event,HeatingOff // relay and LED off
endif
timerSet,1,60 // next timer1 event after 60s
endon
On v2.0 it works fine and debug is here ( commented by me ):
Code: Select all
EVENT: Rules#Timer=1
ACT : TaskValueSet,2,3,0
ACT : TaskValueSet,2,3,1 // if [Floor#Temp]<[Var#Setpoint] 24.5<27
ACT :
ACT : event,HeatingOn // if [Var#Heating]=1
EVENT: HeatingOn
ACT : gpio,12,1
SW : GPIO 12 Set to 1
ACT : gpio,13,0
SW : GPIO 13 Set to 0
EVENT: HeatingOn Processing time:69 milliSeconds
ACT : timerSet,1,60
EVENT: Rules#Timer=1 Processing time:128 milliSeconds
I see problems in "if" statements
Code: Select all
31767 : EVENT: Rules#Timer=1
31800 : ACT : TaskValueSet,2,3,0
31811 : Command: taskvalueset
31811 : TaskValueSet,2,3,0
31831 : Lev.1: [if 24.50<]=false // if [Floor#Temp]<[Var#Setpoint] 24.5<27
31839 : ACT :
31849 : Lev.1: [if =1]=false // if [Var#Heating]=1
31854 : Lev.1: [else]=true
31857 : ACT : event,HeatingOff
31865 : Command: event
31866 : event,HeatingOff
31868 : EVENT: HeatingOff
31925 : ACT : gpio,12,0
31930 : SW : GPIO 12 Set to 0
31933 : ACT : gpio,13,1
31937 : SW : GPIO 13 Set to 1
31962 : EVENT: HeatingOff Processing time:94 milliSeconds
31967 : ACT : timerSet,1,60
31974 : Command: timerset
31975 : timerSet,1,60
31992 : EVENT: Rules#Timer=1 Processing time:225 milliSeconds
this part of code works and sets Var#Heating to 1
But in real version I am sending Setpoint from Domoticz, so I need store it and compare from dummy variable.
Code: Select all
31824 : Lev.1: [if 24.50<27]=true
31828 : ACT : TaskValueSet,2,3,1
31839 : Command: taskvalueset
31839 : TaskValueSet,2,3,1
Thanks for your advice.
My Dummy variables: