landolfi Posted October 7, 2022 Posted October 7, 2022 I have a door sensor whose status is always empty in the AC after an ISY reboot, even if I query it. I have to physically go to the door, close and open it to get ISY to recognize it's open. The problem I have is that a program with an If condition of status=closed is executing the Then even when the status is empty. Is empty supposed to be the equivalent of closed for programming purposes?
lilyoyo1 Posted October 7, 2022 Posted October 7, 2022 26 minutes ago, landolfi said: I have a door sensor whose status is always empty in the AC after an ISY reboot, even if I query it. I have to physically go to the door, close and open it to get ISY to recognize it's open. The problem I have is that a program with an If condition of status=closed is executing the Then even when the status is empty. Is empty supposed to be the equivalent of closed for programming purposes? That's because it's wireless. It didn't send it's status unless acted upon
landolfi Posted October 7, 2022 Author Posted October 7, 2022 (edited) I started to say that my other wireless door sensors accurately report their state after reboot without intervention, but then I realized those sensors are on Smartthings. But more importantly, is closed the same as empty/no status as far as programming is concerned? My objective is to get the door going from open to closed status to trigger an event, which it won't do without intervention if it needs an open or close inbetween. Which maybe we are saying it does require intervention and that's the nature of an open/close sensor. Edited October 8, 2022 by landolfi
Techman Posted October 8, 2022 Posted October 8, 2022 You can't query a battery-operated device as the device goes to sleep to preserve battery life. The admin console will always show a blank status for battery operated devices after a reboot until the device is activated. It doesn't retain the previous status.
kclenden Posted October 8, 2022 Posted October 8, 2022 6 hours ago, landolfi said: The problem I have is that a program with an If condition of status=closed is executing the Then even when the status is empty. You could use a state variable to track the status of your wireless door sensor. Something like: If 'Door Sensor-Opened' Status is On Then $sDoorSensorOpen = 1 $sDoorSensorOpen Init To $sDoorSensorOpen Else $sDoorSensorOpen = 0 $sDoorSensorOpen Init To $sDoorSensorOpen This program will set the state variable "sDoorSensorOpen" anytime the door sensor status changes and then save it to non-volatile memory which survives an ISY reboot. Then you just use the variable "sDoorSensorOpen" in your programs. 1
MrBill Posted October 8, 2022 Posted October 8, 2022 @landolfi One idea is presented by@kclenden just above, another is to use "Control" rather than "Status" in your program. Control doesn't look at the status as known by the ISY, but instead fires the program based on Events. If 'test door.1 - Door Open' is switched On Then ---- do whatever------------ Else - No Actions - (To add one, press 'Action') In this case Else will never run. A second program could be used for "switched Off" actions. --or-- This construct will make the "switched on" and "switched off" behave similar to "Status", but without the unknown problems you're experiencing: If 'test door.1 - Door Open' is switched On And 'test door.1 - Door Open' is not switched Off Then Set 'LR Lamp 1' On Else Set 'LR Lamp 1' Off In this case Then will run when the door open signal is received and Else will run when the door closed signal is received. 1
landolfi Posted October 8, 2022 Author Posted October 8, 2022 Thanks, Mr. Bill! Your first suggestion sounds ideal, but unfortunately it's an open/close sensor and doesn't appear in the list when I choose "Control".
MrBill Posted October 8, 2022 Posted October 8, 2022 6 minutes ago, landolfi said: Thanks, Mr. Bill! Your first suggestion sounds ideal, but unfortunately it's an open/close sensor and doesn't appear in the list when I choose "Control". it should.... try restarting the admin console. and/or just realize those lists sometimes alphabetize weirdly.
landolfi Posted October 8, 2022 Author Posted October 8, 2022 $sDoorSensorOpen = 1 $sDoorSensorOpen Init To $sDoorSensorOpen Question about this: If i only care whether it's closed, should I flip this to =1 for $sDoorSensorClosed and then 0 means either it's open or unknown. Or is this variable functioning to say to ISY yes, it's really open?
MrBill Posted October 8, 2022 Posted October 8, 2022 5 hours ago, landolfi said: $sDoorSensorOpen = 1 $sDoorSensorOpen Init To $sDoorSensorOpen Question about this: If i only care whether it's closed, should I flip this to =1 for $sDoorSensorClosed and then 0 means either it's open or unknown. Or is this variable functioning to say to ISY yes, it's really open? In a programmers world, 0 typically means the negative... i.e. off, closed, false; on the other hand 1 means on, open, true. The program will only remember the last state. If it was 1 when the ISY restarted it will still be 1 when restart is complete-- even if someone closed the door while the ISY was off. The variable values give you the ability to know the last known state, but if that changed while the ISY wasn't paying attention the ISY won't know it changed. The good news is you eventually reach a point that you don't have to reboot too often, for example mine currently hasn't been rebooted in 184 days, which is about 6 months. Did you find the door sensor under "Control"? it would be there.
landolfi Posted October 9, 2022 Author Posted October 9, 2022 Thanks very much, Mr. Bill! Under Condition, I click Control. I see now that what I have been calling the door sensor device, ZW043_Barrier, is not in the Control list, but the control list includes an overlooked device called Access Control Alarm, which I apparently should have been using all along since it reports Window/Door Is Open in ISY. So I'll go with control from now on. 1
Recommended Posts