Publish stat/TOPIC/RESULT {"Objekt":WERT} z.B.: Publish stat/werkstatt_1_1F067A/RESULT {"Laser":1} --------------------------------------------------------------------- Heizung ROE Rule1 ON Switch1#State=1 DO Backlog RuleTimer1 10000; Mem1=%Mem1%+1 ENDON ON Switch1#State=0 DO Backlog Var1 1; RuleTimer ENDON ON T1 DO if (Var1==1) Backlog Var1 0; Mem2=%Mem2%+(10000-%value%); RuleTimer1 0; Event otcCalc=1 endif ENDON ON Event#otcCalc DO Backlog Mem3=%Mem2%/60; Mem4=%Mem3%/60; Event otcSend=1 ENDON ON Event#otcSend DO publish stat/%topic%/RESULT {"otcPulseCount":"%Mem1%", "otcSeconds":"%Mem2%", "otcMinutes":"%Mem3%", "otcHours":"%Mem4%"} ENDON Rule2 ON Event#otcReset DO Backlog Mem11 %Mem1%; Mem12 %Mem2%; Mem13 %Mem3%; Mem14 %Mem4%; Mem1 0; Mem2 0; Mem3 0; Mem4 0; Var1 0 ENDON Rule3 ON Event#otcPublish DO publish stat/%topic%/RESULT {"otcPulseCount":"%Mem1%", "otcSeconds":"%Mem2%", "otcMinutes":"%Mem3%", "otcHours":"%Mem4%"} ENDON --------------------------------------------------------------------- Terassen-Tür-Schloss ROE Rule1 On System#Boot DO var1 0 ENDON ON Switch1#State DO Backlog add1 1; event START ENDON ON event#START DO event pubSWState=%var1% ENDON ON event#pubSWState=1.000 DO publish stat/%topic%/RESULT {"Terassentüre": true} ENDON ON event#pubSWState=0 DO publish stat/%topic%/RESULT {"Terassentüre": false} ENDON // Mem1 => Schloss-Status [0, 1] // Mem2 => ---- [] // Mem3 => Zähler Schließungen [0-*****] // Mem4 => Zähler Öffnungen [0-*****] Rule1 ON System#Boot DO Backlog event pubState=%Mem1%; event pubCounters ENDON ON Switch1#State=0 DO Backlog Mem1 0; Mem3=%Mem3%+1; event pubState=0; event pubCounters ENDON ON Switch1#State=1 DO Backlog Mem1 1; Mem4=%Mem4%+1; event pubState=1; event pubCounters ENDON ON Event#pubState=0 DO publish stat/%topic%/RESULT {"00-TerassenTuere":{"Locked": false}} ENDON ON Event#pubState=1 DO publish stat/%topic%/RESULT {"00-TerassenTuere":{"Locked": false}} ENDON ON Event#pubCounters DO publish stat/%topic%/RESULT {"00-TerassenTuere":{"CounterUnlocks":"%Mem3%", "CounterLocks":"%Mem4%"}} ENDON ON Event#resetCounters DO Backlog Mem13 %Mem3%; Mem14 %Mem4%; Mem3 0; Mem4 0 ENDON Rule2 ON var10#state=0 DO publish stat/%topic%/RESULT {"00-TerassenTuere":{"Locked": false}} ENDON ON var10#state=1 DO publish stat/%topic%/RESULT {"00-TerassenTuere":{"Locked": true}} ENDON ON Switch1#State DO Backlog var1 %value%; event pubSWState=%value% ENDON --------------------------------------------------------------------- Rule1 ON Mem1#state DO backlog var1 %value%; Power1 %value%; RuleTimer1 2 ENDON ON Rules#Timer=1 DO backlog IF (%var1%==%var2%) var3 %var1% ELSE var3 5 ENDIF ENDON ON var3#state DO publish stat/werkstatt_1_1F067A/RESULT {"Drucker":%var3%} ENDON ON Mem2#state DO backlog var4 %value%; Power2 %value%; RuleTimer2 2 ENDON ON Rules#Timer=2 DO backlog IF (%var4%==%var5%) var6 %var4% ELSE var6 5 ENDIF ENDON ON var6#state DO publish stat/werkstatt_1_1F067A/RESULT {"Laser":%var6%} ENDON Rule2 ON Switch1#state DO var2 %value% ENDON ON Switch2#state DO var5 %value% ENDON ON Button2#state DO IF (Mem2==0) Mem2 1 ELSE Mem2 0 ENDIF ENDON Rule3 ON Power1#state DO var11 %value% ENDON ON Power2#state DO var12 %value% ENDON ------------------------------------------------------------------- Rule1 ON Mem1#state DO IF (%value%!=%var2%) var1 %value%; Power1 %value%; RuleTimer1 2 ELSEIF (var15>=2) var1 %value%; Power1 %value%; RuleTimer1 2; var15 0 ENDIF ENDON ON Rules#Timer=1 DO backlog IF (%var1%==%var2%) var3 %var1% ELSE var15 2 ENDIF ENDON ON var3#state DO publish stat/werkstatt_1_1F067A/RESULT {"Drucker":%var3%} ENDON ON Switch1#state DO var2 %value% ENDON ON Power1#state DO IF (%var15%==2) var11 %value% ELSEIF (%value%!=%Mem1%) var11 %value%; var15 1; Mem1 0 ELSE var11 %value% ENDIF ENDON Rule2 ON Mem2#state DO IF (%value%!=%var5%) var4 %value%; Power2 %value%; RuleTimer2 2 ELSEIF (var15>=22) var4 %value%; Power2 %value%; RuleTimer2 2; var15 0 ENDIF ENDON ON Rules#Timer=2 DO backlog IF (%var4%==%var5%) var6 %var4% ELSE var15 22 ENDIF ENDON ON var6#state DO publish stat/werkstatt_1_1F067A/RESULT {"Laser":%var6%} ENDON ON Switch2#state DO var5 %value% ENDON ON Power2#state DO IF (%var15%==22) var12 %value% ELSEIF (%value%!=%Mem2%)var12 %value%; var15 21; Mem2 0 ELSE var12 %value% ENDIF ENDON ON Button2#state DO IF (Mem2==0) Mem2 1 ELSE Mem2 0 ENDIF ENDON Rule3 ON Power1#Boot DO backlog var1 0; var2 0; var3 0; var4 0; var5 0; var6 0; var11 0; var12 0; var15 0; var16 0 ENDON ON var15#state=1 DO var16 Drucker: States unsynchron ENDON ON var15#state=2 DO backlog Mem1 0; var16 Drucker: Zeitüberschreitung ENDON ON var15#state=21 DO var16 Laser: States unsynchron ENDON ON var15#state=22 DO backlog Mem2 0; var16 Laser: Zeitüberschreitung ENDON ON var16#state DO backlog publish stat/werkstatt_1_1F067A/RESULT {"Fehler":"%var16%"}; var15 99 ENDON backlog var1 0; var2 0; var3 0; var4 0; var5 0; var6 0; var11 0; var12 0; var15 0; var16 0 backlog Rule1 0; Rule2 0;Rule3 0 backlog Rule1 1; Rule2 1;Rule3 1