Webcore Pistons not Turning Off GE/Jasco Ceiling Fan Switch


#1

Hello,

I updated the WebCore for Hubitat App yesterday (Sept 18th) and since then, pistons that I have used for several years to start and stop ceiling fans based on my HVAC System Blower are not working. From review of the Piston and Trace, it appears that the Webcore Command to Stop the GE/Jasco Celing Fan (switch) does not get sent out.

Any others have this issue?

Thanks,

John


#2

Just FYI… I’m using local Boolean variables If the Ceiling Fan is automatically started with Webcore, I set a variable to true. When the blower stops (sensed by a zwave sensor), I change the variable to false. I have a statement that if the ceiling fan auto start variable changes to false, the ceiling fan is sent a command to turn off.

So the issue could be related to local variables.

I have confirmed that the Boolean variable are changing from false to true and true to false as programmed. The ceiling fans just don’t get the off command.


#3

Posting a green snapshot of the piston, and full piston logs will help others help you.


#4

Below is a Log that includes the Blower Turning On and Turning on the Ceiling Fan along with the Blower Turning off but not Turning Off the Ceiling Fan. This worked up until I update the WebCore Version yesterday.

/19/2022, 5:11:13 PM +973ms
+3ms ╔Received event [HVAC Blower HE (Closed = On)].contact = open with a delay of 23ms, canQueue: true, calledMyself: false
+15ms ║RunTime initialize > 14 LockT > 0ms > r9T > 2ms > pistonT > 0ms (first state access 12 4 10)
+19ms ║Runtime (12686 bytes) initialized in 2ms (v0.3.114.20220917_HE)
+21ms ║╔Execution stage started
+25ms ║║Comparison (enum) open changes_to (string) closed = false (0ms)
+26ms ║║Condition #2 evaluated false (3ms)
+27ms ║║Condition group #1 evaluated false (condition did not change) (5ms)
+31ms ║║Comparison (enum) open changes_to (string) open = true (0ms)
+33ms ║║Condition #20 evaluated true (4ms)
+36ms ║║Comparison (boolean) true is (boolean) true = true (1ms)
+38ms ║║Condition #21 evaluated true (4ms)
+41ms ║║Comparison (boolean) false is (boolean) false = true (1ms)
+42ms ║║Condition #22 evaluated true (3ms)
+44ms ║║Condition group #19 evaluated true (condition changed) (15ms)
+49ms ║║Executed virtual command [Ceiling Fan Master Bedroom].setVariable (1ms)
+73ms ║║Condition #26 evaluated false (23ms)
+74ms ║║Condition group #25 evaluated false (condition did not change) (23ms)
+82ms ║║Condition #33 evaluated false (4ms)
+83ms ║║Condition group #32 evaluated false (condition did not change) (7ms)
+87ms ║║Condition #39 evaluated false (3ms)
+100ms ║║Condition group #38 evaluated false (condition changed) (4ms)
+104ms ║║Comparison (boolean) false stays (boolean) true = false (1ms)
+106ms ║║Canceling any timed trigger schedule stays result false cancel any timers for condition 43
+108ms ║║Condition #43 evaluated false (7ms)
+109ms ║║Condition group #42 evaluated false (condition did not change) (8ms)
+120ms ║║Comparison (time) 61874000 happens_daily_at (time) 32100000 = false (1ms)
+131ms ║║Condition #47 evaluated false (12ms)
+134ms ║║Canceling statement #47’s schedules…47 (st:0)
+141ms ║║Requesting time schedule wake up at Tue, Sep 20 2022 @ 8:55:00 AM MDT (in 56625888ms) for 47 (st:0)
+142ms ║║Condition group #46 evaluated false (condition did not change) (24ms)
+146ms ║║Comparison (boolean) false changes_to (boolean) false = false (0ms)
+148ms ║║Condition #51 evaluated false (4ms)
+149ms ║║Condition group #50 evaluated false (condition did not change) (5ms)
+157ms ║║Condition #58 evaluated false (5ms)
+159ms ║║Condition group #57 evaluated false (condition did not change) (8ms)
+160ms ║║Condition group #56 evaluated false (condition did not change) (10ms)
+215ms ║╚Execution stage complete. (195ms)
+259ms ║Setting up scheduled job for Tue, Sep 20 2022 @ 8:55:00 AM MDT (in 56625836ms)
+261ms ╚Event processed successfully (259ms)
9/19/2022, 5:10:43 PM +372ms
+4ms ╔Received event [Ceiling Fan Master Bedroom].switch = on with a delay of 27ms, canQueue: true, calledMyself: false
+20ms ║RunTime initialize > 19 LockT > 1ms > r9T > 2ms > pistonT > 0ms (first state access 16 5 14)
+24ms ║Runtime (12671 bytes) initialized in 2ms (v0.3.114.20220917_HE)
+26ms ║╔Execution stage started
+33ms ║║Condition #2 evaluated false (5ms)
+36ms ║║Canceling condition #1’s schedules…15 (st:18)
+37ms ║║Condition group #1 evaluated false (condition changed) (8ms)
+42ms ║║Condition #20 evaluated false (4ms)
+43ms ║║Condition group #19 evaluated false (condition did not change) (5ms)
+47ms ║║Comparison (enum) on changes_to (string) off = false (0ms)
+48ms ║║Condition #26 evaluated false (3ms)
+49ms ║║Condition group #25 evaluated false (condition did not change) (5ms)
+53ms ║║Comparison (enum) on changes_to (string) off = false (0ms)
+54ms ║║Condition #33 evaluated false (4ms)
+55ms ║║Condition group #32 evaluated false (condition did not change) (5ms)
+59ms ║║Comparison (enum) on changes_to (string) on = true (0ms)
+61ms ║║Condition #39 evaluated true (4ms)
+63ms ║║Condition group #38 evaluated true (condition changed) (7ms)
+70ms ║║Executed virtual command [Ceiling Fan Master Bedroom].setVariable (1ms)
+75ms ║║Comparison (boolean) false stays (boolean) true = false (1ms)
+78ms ║║Canceling any timed trigger schedule stays result false cancel any timers for condition 43
+81ms ║║Condition #43 evaluated false (9ms)
+82ms ║║Condition group #42 evaluated false (condition did not change) (10ms)
+86ms ║║Comparison (time) 61843000 happens_daily_at (time) 32100000 = false (0ms)
+87ms ║║Condition #47 evaluated false (3ms)
+91ms ║║Canceling statement #47’s schedules…47 (st:0)
+95ms ║║Requesting time schedule wake up at Tue, Sep 20 2022 @ 8:55:00 AM MDT (in 56656534ms) for 47 (st:0)
+96ms ║║Condition group #46 evaluated false (condition did not change) (12ms)
+100ms ║║Comparison (boolean) true changes_to (boolean) false = false (0ms)
+102ms ║║Condition #51 evaluated false (4ms)
+103ms ║║Condition group #50 evaluated false (condition did not change) (5ms)
+107ms ║║Comparison (enum) on changes_to (string) on = true (0ms)
+109ms ║║Condition #58 evaluated true (4ms)
+113ms ║║Comparison (boolean) true is (boolean) false = false (1ms)
+115ms ║║Condition #59 evaluated false (5ms)
+116ms ║║Condition group #57 evaluated false (condition did not change) (11ms)
+117ms ║║Condition group #56 evaluated false (condition did not change) (13ms)
+140ms ║╚Execution stage complete. (115ms)
+165ms ║Setting up scheduled job for Tue, Sep 20 2022 @ 8:55:00 AM MDT (in 56656515ms)
+167ms ╚Event processed successfully (165ms)
9/19/2022, 5:10:42 PM +674ms
+5ms ╔Received event [Anderson Home].time = 1663629042625 with a delay of 49ms, canQueue: true, calledMyself: false
+15ms ║RunTime initialize > 14 LockT > 1ms > r9T > 2ms > pistonT > 1ms (first state access 11 6 8)
+19ms ║Runtime (12663 bytes) initialized in 2ms (v0.3.114.20220917_HE)
+25ms ║╔Execution stage started
+100ms ║║Executed physical command [Ceiling Fan Master Bedroom].setSpeed(medium) (66ms)
+118ms ║║Executed physical command [Ceiling Fan Master Bedroom].on() (15ms)
+124ms ║║Executed virtual command [Ceiling Fan Master Bedroom].setVariable (2ms)
+130ms ║║Comparison (enum) off is_not (dynamic) medium = true (1ms)
+132ms ║║Condition #14 evaluated true (6ms)
+133ms ║║Condition group #13 evaluated true (condition changed) (9ms)
+147ms ║║Executed physical command [Ceiling Fan Master Bedroom].setSpeed(medium) (9ms)
+153ms ║║Executed virtual command [Ceiling Fan Master Bedroom].setVariable (2ms)
+157ms ║║Executed virtual command [Ceiling Fan Master Bedroom].wait (0ms)
+160ms ║║Requesting wake up at Mon, Sep 19 2022 @ 5:10:45 PM MDT (in 2998ms) for 15 (st:18)
+167ms ║╚Execution stage complete. (141ms)
+204ms ║Setting up scheduled job for Mon, Sep 19 2022 @ 5:10:45 PM MDT (in 3018ms),with 1 more job pending
+206ms ╚Event processed successfully (201ms)
9/19/2022, 5:10:37 PM +523ms
+12ms ╔Received event [HVAC Blower HE (Closed = On)].contact = closed with a delay of 21ms, canQueue: true, calledMyself: false
+39ms ║RunTime initialize > 38 LockT > 0ms > r9T > 1ms > pistonT > 0ms (first state access 37 12 26)
+43ms ║Runtime (12615 bytes) initialized in 1ms (v0.3.114.20220917_HE)
+45ms ║╔Execution stage started
+50ms ║║Comparison (enum) closed changes_to (string) closed = true (1ms)
+52ms ║║Condition #2 evaluated true (4ms)
+55ms ║║Comparison (boolean) false is (boolean) false = true (1ms)
+56ms ║║Condition #3 evaluated true (3ms)
+59ms ║║Comparison (boolean) false is (boolean) false = true (0ms)
+61ms ║║Condition #4 evaluated true (4ms)
+64ms ║║Comparison (boolean) false is (boolean) false = true (1ms)
+65ms ║║Condition #5 evaluated true (4ms)
+87ms ║║Comparison (time) 61837000 is_between (time) 32400000 … (time) 75600000 = true (19ms)
+88ms ║║Time restriction check passed
+89ms ║║Condition #6 evaluated true (22ms)
+91ms ║║Condition group #1 evaluated true (condition changed) (43ms)
+97ms ║║Executed virtual command [Ceiling Fan Master Bedroom].setVariable (1ms)
+101ms ║║Executed virtual command [Ceiling Fan Master Bedroom].wait (0ms)
+104ms ║║Requesting wake up at Mon, Sep 19 2022 @ 5:10:42 PM MDT (in 4999ms) for 7 (st:9)
+147ms ║╚Execution stage complete. (103ms)
+206ms ║Setting up scheduled job for Mon, Sep 19 2022 @ 5:10:42 PM MDT (in 4982ms),with 1 more job pending
+209ms ╚Event processed successfully (198ms)


#5

Can you point out where you think webCoRE is doing a comparison or operation incorrectly?

I don’t see one at first pass in this.

I do see you using trigger comparisons (line 103 is now and stays) for a local boolean variable. trigger comparisons need trigger able device which a local boolean variable is not. I will check if there should be more warnings generated by the piston analyser.

I also see you expecting in line 121 (changes to) is another trigger comparison without a trigger able device event.

I don’t see an incorrect comparison in your logs, but if I’m missing it please point it out.

I do see:

  • triggers are contact on/off and switch on/off
  • a timer for 8:55 AM

I see you are trying to trigger the off based on a boolean as a trigger, which will never happen.


#6

Hi @E_Sch… I just went ahead and modified the WebCore code to what is posted below. Rather than having the Ceiling Fan Turn off based on a True/False variable changing to False, I just based it turning off from the Contact (HVAC Blower) being changed to Open. It seems to work fine now.

I do think that with the Code update, something related to Local Variables being an acceptable trigger effect has changed.


#7

Local variables (boolean) have never been a trigger. If it was a device variable with devices in it it could be. This has always been this way in webcore.