Controlling Cielo Breez Plus with Window/Door Sensors


1) Give a description of the problem
I am new to WebCoRe and loving it, but I have been struggling a bit as the piston I have written seems to work about 90% of the time, but there are random times where it seems to stop working.

2) What is the expected behaviour?
I have a vacation rental, and my goal is to prevent renters from running the mini split A/C with the windows and/or doors open. Each window/door has an open/close sensor and the mini spit A/C can only be turned on/off using a Cielo Breez Plus controller. I want to cover two scenarios. (1) the windows/doors are open and they turn on the A/C using the Cielo. If they don’t close the windows/doors within 5 minutes, it will turn the A/C back off using the Cielo. Scenario (2) the A/C is currently on via the Cielo and someone opens a window/door and doesn’t close it within 5 minutes, I want the Cielo to turn the A/C off.

3) What is happening/not happening?
I have tested multiple the piston multiple times, and it seems to work 90-95% of the time, but there are occasions where it does not. A recent example is below. At 9:00:22, I closed the sliding door (event captured in log). One minute later at approximately 9:01 am, I turned the A/C on via the Cielo (no event captured in the log). At 9:08:22, I opened the sliding door (event captured) and as expected the piston shut off the A/C via the Cielo at 9:13:22. Without closing the sliding door, I turned the A/C back on via the Cielo a few minutes later. This event was not captured and the piston subsequently did not turn off the A/C.

**4) Post a Green Snapshot of the piston![image|45x37]

5) Attach logs after turning logging level to Full

3/18/2021, 9:13:22 AM +928ms
+0ms ╔Received event [Villa Tranquila].time = 1616080402759 with a delay of 169ms
+86ms ║RunTime Analysis CS > 61ms > PS > 6ms > PE > 18ms > CE
+89ms ║Runtime (38082 bytes) successfully initialized in 6ms (v0.3.113.20210203) (88ms)
+90ms ║╔Execution stage started
+96ms ║║Cancelling condition #12's schedules...
+97ms ║║Condition #12 evaluated true (2ms)
+98ms ║║Cancelling condition #1's schedules...
+99ms ║║Condition group #1 evaluated true (state changed) (5ms)
+101ms ║║Cancelling statement #6's schedules...
+125ms ║║Executed physical command [A/C - Master].off() (20ms)
+126ms ║║Executed [A/C - Master].off (21ms)
+1317ms ║║Executed virtual command [A/C - Master].sendSMSNotification (1184ms)
+1320ms ║╚Execution stage complete. (1230ms)
+1326ms ╚Event processed successfully (1326ms)

3/18/2021, 9:08:22 AM +671ms
+2ms ╔Received event [Master Balcony Slider].contact = open with a delay of 147ms
+55ms ║RunTime Analysis CS > 27ms > PS > 6ms > PE > 21ms > CE
+57ms ║Runtime (38083 bytes) successfully initialized in 6ms (v0.3.113.20210203) (54ms)
+58ms ║╔Execution stage started
+77ms ║║Comparison (enum) on is (string) on = true (1ms)
+78ms ║║Cancelling condition #10’s schedules…
+79ms ║║Condition #10 evaluated true (17ms)
+80ms ║║Cancelling condition #9’s schedules…
+81ms ║║Condition group #9 evaluated true (state changed) (19ms)
+85ms ║║Comparison (enum) open stays (string) open = true (1ms)
+87ms ║║Adding a timed trigger schedule for condition 12
+89ms ║║Cancelling condition #12’s schedules…
+90ms ║║Condition #12 evaluated false (9ms)
+91ms ║║Condition group #1 evaluated false (state did not change) (30ms)
+93ms ║╚Execution stage complete. (36ms)
+94ms ║Setting up scheduled job for Thu, Mar 18 2021 @ 9:13:22 AM CST (in 299s)
+103ms ╚Event processed successfully (103ms)

3/18/2021, 9:00:22 AM +715ms
+1ms ╔Received event [Master Balcony Slider].contact = closed with a delay of 83ms
+56ms ║RunTime Analysis CS > 30ms > PS > 6ms > PE > 21ms > CE
+58ms ║Runtime (38078 bytes) successfully initialized in 6ms (v0.3.113.20210203) (56ms)
+59ms ║╔Execution stage started
+80ms ║║Comparison (enum) off is (string) on = false (1ms)
+82ms ║║Cancelling condition #10's schedules...
+83ms ║║Condition #10 evaluated false (19ms)
+98ms ║║Condition #11 evaluated false (13ms)
+99ms ║║Cancelling condition #9's schedules...
+99ms ║║Condition group #9 evaluated false (state changed) (36ms)
+100ms ║║Cancelling condition #1's schedules...
+101ms ║║Condition group #1 evaluated false (state changed) (38ms)
+103ms ║╚Execution stage complete. (44ms)
+104ms ╚Event processed successfully (105ms)


You might invert that the stays check is first.

Also the check on the AC status could be just the is on.

that would be the first block. You want the stays to always execute so it tracks the status correctly.

You could put at the end an if statement
if ‘a/c master switch changes’, that would cause the piston to react to the ac state change. It does not need any statements in it.

To help understand see:


Your help is greatly appreciated. If I invert the IF statements and change the A/C check to just “is on”, I end up with a different problem as below.

If the window is open for more than the Stay statement (I lowered it to 1 minute for testing), then turn on the A/C and don’t close the window, the piston never activates and allows the A/C to keep running even though the window is open.

My apologies if I am being dense here.


yes, this is why I also suggested adding an if at the end

if a/c guest switch changes

It does not need anything in the blocks, it creates a trigger so if the ac switch changes, things re-evaluate.


Okay, it seems to be working as expected. I assume the if at the end is in the right place?

I am a bit stumped though as to why this last IF works without any statements. I read the link you posted in your first response, but it didn’t seem to explain this for me.

Again, I really appreciate all the help. This was a critical need for me, and I am super happy that it is working now with your help.


The last if is causing a subscription to the switch changes