Wallmote Quad Piston - Working Sporatically


#1

1) Give a description of the problem
I’m not sure if this a webCore issue, a DTH issue or a ST issue, but I’m hoping that those of you that are more proficient than I in reading logs may be able to identify my problem.

I am using an Aon WallMote to turn smart bulbs on and off (i.e. toggled). The piston generally works as intended to toggle the targeted bulb, but there are times when a press (held in WallMote speak) does not work. I’m posting four log entries made starting with the light on.

I did four touches, each of which are reflected in the logs. The first touch properly resulted in the light turning off. The remaining three touches which should have turned the light on or off did nothing.

Maybe the issue is with the “toggle”. I’ve thought of using IF it’s on turn it off and vice versa, but haven’t tried that yet.

Here is the DTH I’m using: https://community.smartthings.com/t/release-aeon-wallmote-dual-quad-2-4-button/74834

Keypad1 is the WallMote; Dimmer 1 is a Cree connected bulb

2) What is the expected behavior?
I expect each touch to toggle the bulb, turning it on if it’s off or off if it’s on.

3) What is happening/not happening?
There are times this works as intended, and other times touching the WallMote does nothing.

**4) Post a Green Snapshot of the piston!


5) Attach any logs (From ST IDE and by turning logging level to Full)

5/22/2018, 9:01:58 PM +353ms
+1ms ╔Received event [LR Aeon WallMote].button = pushed with a delay of 61ms
+64ms ║RunTime Analysis CS > 12ms > PS > 29ms > PE > 23ms > CE
+66ms ║Runtime (36038 bytes) successfully initialized in 29ms (v0.3.000.20180224) (65ms)
+67ms ║╔Execution stage started
+76ms ║║Comparison (enum) pushed gets (string) pushed = true (1ms)
+77ms ║║Condition #2 evaluated true (5ms)
+78ms ║║Condition group #1 evaluated true (state did not change) (6ms)
+81ms ║║Cancelling statement #3’s schedules…
+120ms ║║Executed physical command [LR End Table Lamp].off() (23ms)
+121ms ║║Executed virtual command [LR End Table Lamp].toggle (38ms)
+124ms ║╚Execution stage complete. (58ms)
+125ms ╚Event processed successfully (125ms)
5/22/2018, 9:00:26 PM +534ms
+1ms ╔Received event [LR Aeon WallMote].button = pushed with a delay of 78ms
+86ms ║RunTime Analysis CS > 16ms > PS > 44ms > PE > 26ms > CE
+88ms ║Runtime (36038 bytes) successfully initialized in 44ms (v0.3.000.20180224) (86ms)
+89ms ║╔Execution stage started
+98ms ║║Comparison (enum) pushed gets (string) pushed = true (1ms)
+100ms ║║Condition #2 evaluated true (5ms)
+101ms ║║Condition group #1 evaluated true (state did not change) (6ms)
+104ms ║║Cancelling statement #3’s schedules…
+129ms ║║Executed physical command [LR End Table Lamp].off() (18ms)
+130ms ║║Executed virtual command [LR End Table Lamp].toggle (22ms)
+132ms ║╚Execution stage complete. (43ms)
+134ms ╚Event processed successfully (134ms)
5/22/2018, 8:59:19 PM +555ms
+2ms ╔Received event [LR Aeon WallMote].button = pushed with a delay of 214ms
+83ms ║RunTime Analysis CS > 15ms > PS > 42ms > PE > 25ms > CE
+85ms ║Runtime (36039 bytes) successfully initialized in 42ms (v0.3.000.20180224) (82ms)
+86ms ║╔Execution stage started
+117ms ║║Comparison (enum) pushed gets (string) pushed = true (23ms)
+119ms ║║Condition #2 evaluated true (27ms)
+120ms ║║Condition group #1 evaluated true (state did not change) (28ms)
+122ms ║║Cancelling statement #3’s schedules…
+155ms ║║Executed physical command [LR End Table Lamp].off() (18ms)
+156ms ║║Executed virtual command [LR End Table Lamp].toggle (31ms)
+158ms ║╚Execution stage complete. (73ms)
+159ms ╚Event processed successfully (159ms)
5/22/2018, 8:59:16 PM +366ms
+1ms ╔Received event [LR Aeon WallMote].button = pushed with a delay of 179ms
+94ms ║RunTime Analysis CS > 27ms > PS > 42ms > PE > 24ms > CE
+97ms ║Runtime (36039 bytes) successfully initialized in 42ms (v0.3.000.20180224) (95ms)
+98ms ║╔Execution stage started
+131ms ║║Comparison (enum) pushed gets (string) pushed = true (24ms)
+132ms ║║Cancelling condition #2’s schedules…
+133ms ║║Condition #2 evaluated true (30ms)
+134ms ║║Cancelling condition #1’s schedules…
+135ms ║║Condition group #1 evaluated true (state changed) (32ms)
+137ms ║║Cancelling statement #3’s schedules…
+173ms ║║Executed physical command [LR End Table Lamp].off() (19ms)
+174ms ║║Executed virtual command [LR End Table Lamp].toggle (34ms)
+177ms ║╚Execution stage complete. (79ms)
+178ms ╚Event processed successfully (178ms)


#2

I would say that WebCoRE isn’t seeing the device as off, every time the piston gets to “Toggle” it actually ends up issuing the off command. Have you tested the smart bulb to see if it is possible to tell if the device is currently on or off?


#3

I agree with @StevenJonSmith. Toggle is an emulated command, and so it depends on WebCoRE knowing what its actual status is. Personally, I avoid all emulated commands.


#4

@StevenJonSmith and @slam525i
I believe you are both correct in that the bulb is not always reporting it’s proper state. This particular bulb is a GE Link (yeah . . I know).

In an attempt to get around the improper reported state issue, I re-wrote the piston to use two buttons, one for on and the other for off, eliminating the IF regarding the bulb’s state. I also added a 2nd bulb, a Cree Connected, and that bulb performed as expected with this piston.

I was thinking that simply sending an on or off without evaluating the state would solve the issue, but it seems that webCore (?) skips execution if it thinks it’s not needed. See the log entry with the <----.

Is there a way to force the execution? The “LR End Table Lamp” is the problematic one.

5/23/2018, 6:45:57 PM +301ms
+1ms ╔Received event [LR Aeon WallMote].button = pushed with a delay of 75ms
+60ms ║RunTime Analysis CS > 13ms > PS > 29ms > PE > 18ms > CE
+62ms ║Runtime (37065 bytes) successfully initialized in 29ms (v0.3.000.20180224) (60ms)
+63ms ║╔Execution stage started
+74ms ║║Comparison (enum) pushed gets (string) pushed = true (1ms)
+75ms ║║Cancelling condition #4’s schedules…
+76ms ║║Condition #4 evaluated true (7ms)
+77ms ║║Cancelling condition #1’s schedules…
+78ms ║║Condition group #1 evaluated true (state changed) (9ms)
+82ms ║║Cancelling statement #2’s schedules…
+101ms ║║Executed physical command [LR Corner Floor Lamp].on() (15ms)
+102ms ║║Executed [LR Corner Floor Lamp].on (17ms)
+107ms ║║Skipped execution of physical command [LR End Table Lamp].on([]) because it would make no change to the device. (3ms) <---------------------------------------------- !!!
+108ms ║║Executed [LR End Table Lamp].on (5ms)
+116ms ║║Comparison (enum) pushed gets (string) pushed = false (1ms)
+117ms ║║Cancelling condition #9’s schedules…
+118ms ║║Condition #9 evaluated false (6ms)
+119ms ║║Cancelling condition #6’s schedules…
+120ms ║║Condition group #6 evaluated false (state changed) (9ms)
+123ms ║╚Execution stage complete. (60ms)
+124ms ╚Event processed successfully (124ms)


#5

You can change it by disabling “Command Optimization” in your piston settings.

While in Edit mode, click on Settings at the top of your piston. Then click the gear cog to expand options (I think only Piston State shows when you initially click settings).

If you can’t see settings at the top of your piston, click Options in the upper right corner and then choose Show Piston Settings.


#6

Thanks! I was thinking that’s was that option did but wasn’t sure. That solved the problem with the command being sent, but the bulb is still erratic. I’m going to chalk this one up to the fact it’s a GE Link and swap it out. The other bulb, a Cree Connected, works perfectly.