FloridaGary Posted May 3, 2022 Posted May 3, 2022 Hi all, Feedback needed from the pros. I just completed a water leak sensor - heartbeat program in IoP by following a very detailed description posted back in 2019. I provided a pic from the directions and also a pic of what I produced. Please review and confirm I didn’t miss anything. I wasn’t sure I needed the 2 parentheses at the bottom of the “If” section.
MrBill Posted May 3, 2022 Posted May 3, 2022 (edited) Your missing an AND set of parenthesis. You need it.... the "and" button is right next to the "or" button. Actually it looks like you didn't find the OR button either.. it may be off the screen to the right, try maximizing your admin console window. also to paste programs from the admin console, save programs, then right click the program name and choose the bottom entry "Copy to clipboard" and then paste into the forum. It's much easier to give help with pasted programs (this case it doesn't matter, but sometime I cut and paste from users programs to reply.) Edit to add second screenshot: Edited May 3, 2022 by MrBill 1
FloridaGary Posted May 3, 2022 Author Posted May 3, 2022 @MrBillThank you for the feedback. Sorry for the crude screenshots. I was posting from my phone. I'll add the 2 parentheses, but not sure where I missed "Or". I did just notice that "And (" needs to move up one line. This is the first time I have programmed anything, so appreciate the patience. Now I am unable to find the Program to edit for changes. This type of controller is a whole new world for me. 1
Solution MrBill Posted May 3, 2022 Solution Posted May 3, 2022 18 minutes ago, FloridaGary said: @MrBillThank you for the feedback. Sorry for the crude screenshots. I was posting from my phone. I'll add the 2 parentheses, but not sure where I missed "Or". I did just notice that "And (" needs to move up one line. This is the first time I have programmed anything, so appreciate the patience. Now I am unable to find the Program to edit for changes. This type of controller is a whole new world for me. Since you have this line entered as a comment, you're missing part of the logic... maybe that's your goal. The heartbeat program I use is much simpler: hb.BarnOHD - [ID 0063][Parent 0072] If 'Door Switches / Barn OHD / Barn OHD-Heartbeat' is switched On Or 'Door Switches / Barn OHD / Barn OHD-Heartbeat' is switched Off Then Wait 25 hours $iDoor.BarnOHD.HBmissed += 1 $iDoor.BarnOHD.HBmissed Init To $iDoor.BarnOHD.HBmissed Wait 2 seconds Resource 'NotificationNS.DoorTrouble.BarnOHD' Run Program 'hb.BarnOHD' (Then Path) Else - No Actions - (To add one, press 'Action') This one only nags every 25 hours, some people at a repeat every 6 hours just above the notification line (which is the "Resource....." line).... in that case you would drop the last line which just repeats the Then block. There's about 100 differnt ways to do anything with an ISY.... 1
FloridaGary Posted May 3, 2022 Author Posted May 3, 2022 Once again, thank you for the information @MrBill. When you spend hours trying to learn something new, I had to chuckle when you stated "you're missing part of the logic." From a lay perspective (me) there is no logic in programming, much like someone trying to learn the English language with all its nuance etc. However, I'll get there eventually. I just hope my house doesn't flood while learning to program these sensors. haha 1
MrBill Posted May 3, 2022 Posted May 3, 2022 11 minutes ago, FloridaGary said: Once again, thank you for the information @MrBill. When you spend hours trying to learn something new, I had to chuckle when you stated "you're missing part of the logic." From a lay perspective (me) there is no logic in programming, much like someone trying to learn the English language with all its nuance etc. However, I'll get there eventually. I just hope my house doesn't flood while learning to program these sensors. haha lol.... just ask when you need help... we've all been there. ISY/Event style programming is also a bit different than most programing languages. 3 1
FloridaGary Posted May 3, 2022 Author Posted May 3, 2022 (edited) @MrBillOk, I finally got my to-do list completed and now back to programming. You previously suggested I should maximize my screen in the program, which it already was. Please review this when you have a chance and let me know if I am the Bill Gates of ISY programming yet. lol Edited May 4, 2022 by FloridaGary
larryllix Posted May 3, 2022 Posted May 3, 2022 (edited) 45 minutes ago, FloridaGary said: @MrBillOk, I finally got my to-do list completed and now back to programming. You previously suggested I should maximize my screen in the program, which it already was. Please review this when you have a chance and let me know if I am the Bill Gates of ISY programming yet. lol Much easier to read if you right click on the program in the program tree and select "copy to clipboard" then paste it into your post using the '<>' tool. BTW: I dissembled some of Bill Gates code back in the 70s. He was not a good code writer. Edited May 3, 2022 by larryllix
FloridaGary Posted May 3, 2022 Author Posted May 3, 2022 Thank you @larryllix . MrBill suggested the same re: copy/paste, but I thought this looked better. Interesting info re: you and Bill Gates. So, what I am hearing is that I am as good as he was before you had to disassemble his code? Lol. 1
MrBill Posted May 4, 2022 Posted May 4, 2022 @FloridaGary Keep in mind the Green Statements as you've entered them are comments. The ISY doesn't do anything with a comment, the statement is not executed as code, it's just a note that appears on the screen. Effectively your program does nothing, because the only thing in Then is a comment.
FloridaGary Posted May 4, 2022 Author Posted May 4, 2022 (edited) Ok. This screen is difficult to navigate and it seemed like the only way to match the format from the publication I am using. Back to the drawing board. Thanks again for the feedback. Edited May 4, 2022 by FloridaGary
MrBill Posted May 4, 2022 Posted May 4, 2022 16 minutes ago, FloridaGary said: Ok. This screen is difficult to navigate and it seemed like the only way to match the format from the publication I am using. Back to the drawing board. Thanks again for the feedback. Add all the lines in order. Then add the Or and And parenthesis from the top down. It is difficult to work with multiple levels of parenthesis in your example, which is one reason i mentioned there is more than one way to skin the cat.
FloridaGary Posted May 4, 2022 Author Posted May 4, 2022 7 minutes ago, MrBill said: Add all the lines in order. Then add the Or and And parenthesis from the top down. It is difficult to work with multiple levels of parenthesis in your example, which is one reason i mentioned there is more than one way to skin the cat. I’ll give that a try or reconsider the example you provided. #ChallengeAccepted ? 1
FloridaGary Posted May 4, 2022 Author Posted May 4, 2022 @MrBillI went to the Program Details page to address the following “Comment” I added…… // $sLeakPoolBathSink is not 3 The only options I have to maintain the format it’s in is to use “Comment”. I looked at Status, Control, Program, X10, Variable and Module. None will give me the option to enter this command. So, I looked back at the Program Summary page and it shows the Pool Bath Sink-Heartbeat program ran today at 12:15. Isn’t this proof that it’s working and I am indeed the next Bill Gates?
MrBill Posted May 4, 2022 Posted May 4, 2022 It's Variable. Note that you need to have a line in the IF block selected. Variable if a line in the THEN or ELSE block is selected will be differnt. 7 minutes ago, FloridaGary said: So, I looked back at the Program Summary page and it shows the Pool Bath Sink-Heartbeat program ran today at 12:15. The program ran indeed, but if this is your Then block: it didn't actually do anything.
FloridaGary Posted May 4, 2022 Author Posted May 4, 2022 13 minutes ago, MrBill said: It's Variable. Note that you need to have a line in the IF block selected. Variable if a line in the THEN or ELSE block is selected will be differnt. The program ran indeed, but if this is your Then block: it didn't actually do anything. Ok. If it’s running as expected with 1 less line of code, I can’t complain. At least now I feel like I’m headed in the right direction. I’ll take the win! Thanks again. Some day I may actually understand what I did. ?
MrBill Posted May 4, 2022 Posted May 4, 2022 1 minute ago, FloridaGary said: Ok. If it’s running as expected with 1 less line of code, I can’t complain. It's running but not as expected for the suite of programs that you're trying to replicate. Honestly I scrolled thru that article when you linked it in another thread a few days ago... it's good, and it's advanced. You should start with beginner stuff tho.... You've moved straight to the Diamond slopes without going to Ski School. Start with some more basic programs and learn how the ISY Programming language works.. then build on that until you reach this advanced state that you're trying to replicate and not having luck with because you don't understand what it's doing, or for that matter what it means when a program "runs". 1
FloridaGary Posted May 4, 2022 Author Posted May 4, 2022 8 minutes ago, MrBill said: It's running but not as expected for the suite of programs that you're trying to replicate. Honestly I scrolled thru that article when you linked it in another thread a few days ago... it's good, and it's advanced. You should start with beginner stuff tho.... You've moved straight to the Diamond slopes without going to Ski School. Start with some more basic programs and learn how the ISY Programming language works.. then build on that until you reach this advanced state that you're trying to replicate and not having luck with because you don't understand what it's doing, or for that matter what it means when a program "runs". Great advice and much appreciated. By the way, I see what you mean about using “Variable”. That made the difference. You are right, I was not aware this was not the bunny slopes. I was trying to blindly follow directions that were laid out well. Up until now, it has not been difficult to get all devices up and running on IoP except for the 2450 module that I couldn’t read with glasses on. However, the rubber hits the road when it comes to programming. Clearly out of my league.
FloridaGary Posted May 4, 2022 Author Posted May 4, 2022 @MrBillTo close out this thread, I'll leave you with the result of your guidance and patience. Also, your suggestion about starting with basic programming is a good one and I plan to follow through. I have been very fortunate to retire early 4 years ago and although I stay busy with personal interests, learning how to program will be something I pursue locally. As they say, you're never too old to learn something new. ? 2
MrBill Posted May 4, 2022 Posted May 4, 2022 6 minutes ago, FloridaGary said: @MrBillTo close out this thread, I'll leave you with the result of your guidance and patience. Also, your suggestion about starting with basic programming is a good one and I plan to follow through. I have been very fortunate to retire early 4 years ago and although I stay busy with personal interests, learning how to program will be something I pursue locally. As they say, you're never too old to learn something new. ? Keep in mind.... That program by itself isn't notifying you of anything.. it's just setting a variable to 1 under certain conditions.
FloridaGary Posted May 4, 2022 Author Posted May 4, 2022 1 hour ago, MrBill said: Keep in mind.... That program by itself isn't notifying you of anything.. it's just setting a variable to 1 under certain conditions. I have also completed the programming for “Timeout” and “Wet” in addition to “Heartbeat”. I am currently reviewing all 27 programs and will review again tomorrow with a fresh set of eyes. I haven’t spent this much time on a laptop in 4 years.
shunsader Posted May 20, 2022 Posted May 20, 2022 I'm also having issues with Leak Sensors. Now that Insteon product has hit a dead end, I've stockpiled all sorts of sensors and product. What's different about this product though is that much of it has probably been sitting on shelves for quite some time. Batteries might be suspect, and older versions may be dusted off and sold to those who still want to use Insteon product. Yes, I've read the "Leak Sensor and Heartbeat Messaging", and although this software probably works great once one confirms that everything works, it's not very good at seeing and testing the signaling that's supposed to be happening. Thus, Instead of going that route, I created 3 simple programs, each triggered by an On OR Off for each of the 3 'outputs'. I DID NOT create State Variables since I'm not doing any triggering off of those variables. Instead, I'm just using Integer variables to keep track of how many times a trigger has occurred. Installation should be as simple as any other RF sensor, holding the set button until if flashes, and then adding the device with the Address and providing a name. I always turn on the Event Viewer on Level 3 to ensure communication flows regularly. The typical test for each of these signals is shown here: For this 'test', I'm just looking for anything that happens with the heartbeat. From this thread: It was mentioned that I should be able to get things to trigger by pressing the SET button. But when doing so, ONLY the DRY sensor program triggers. When I look and read the data coming through on the Event Viewer, I only see the DRY being sent across the line. Thinking something might be wrong with that sensor, I installed a second...and this one does NOTHING, when pressing the button, even though the light flashes when I press the SET. I DID change batteries between the 2, thinking it might be a battery issue. Still, NOTHING from the Newer one, and ONLY a DRY trigger when using the first, regardless of which battery is used. Unsure of what to try next. It's probably something stupid, which is typically the issue for me. I HAVE also upgraded firmware to V5.3.4, and do not have any Z-Wave hardware installed. It's an old, but reliable box....but now have 3 spares in case something should fail. Has anyone interrogated the device like this before assuming that all signals are firing the way they should be? Steve
MrBill Posted May 20, 2022 Posted May 20, 2022 A better Heartbeat Program: This is a door sensor, but the same applies for any of the Insteon Battery Devices that generate heartbeats. The advantage here over what you've posted above is that you're only notified when the heartbeat is missed, your program is sending you a barrage of heartbeat notifications everyday. First I create 3 integer variables for the device: Missed Heartbeats, Battery Days, and Total transmissions. (Total Transmissions in fact isn't as useful as I thought it would be, but nonetheless it does help somewhat in deciding if the battery needs to be replaced or the sensor just needs a reboot (i.e. remove and re-install battery). hb.BarnOHD - [ID 0063][Parent 0072] If 'Door Switches / Barn OHD / Barn OHD-Heartbeat' is switched On Or 'Door Switches / Barn OHD / Barn OHD-Heartbeat' is switched Off Then Wait 25 hours $iDoor.BarnOHD.HBmissed += 1 $iDoor.BarnOHD.HBmissed Init To $iDoor.BarnOHD.HBmissed Wait 2 seconds Resource 'NotificationNS.DoorTrouble.BarnOHD' Run Program 'hb.BarnOHD' (Then Path) Else - No Actions - (To add one, press 'Action') Note: all the heartbeat programs are also run-then by a program that runs at startup, That program waits 10 minutes to start these... (my ISY struggles at startup due to the size of the insteon network and the query all that runs) What happens here, is that when the heartbeat is received we jump right into a 25 hour loop to wait for the next heartbeat. If the next heartbeat is received within that window the rest of the program never complete.... instead the wait starts over. If the next heartbeat is missed, the integer variable is incremented, and a notification is sent in this case via a Network Resource and Pushover. (that line could also be changed to "Notify") Finally the last line of the program starts the loop over again waiting for the next heartbeat. (If that line was skipped, the program would end and we would never be reminded.) It should be noted that some of the battery sensors are better about sending heartbeat than others. Some need only need 24 hour waits (like the hidden door sensor) while some even need 26 hour, you just need to fine tune that. It should also be noted that when heartbeats stop coming in the battery isn't actually dead yet, the sensor will still work for a number of days afterward. Bottom line, failed heartbeat isn't an emergency, check the sensor at your convenience of the next day or so. Sometimes the next heartbeat will just arrive, and sometimes you just need to pop the battery out and back in. High battery day counts, and high transmission counts tell you when it's time to actually replace the battery. For total transmission counts: BarnOHD - [ID 0042][Parent 0033] If 'Door Switches / Barn OHD' is switched On Or 'Door Switches / Barn OHD' is switched Off Or 'Door Switches / Barn OHD / Barn OHD-Heartbeat' is switched On Or 'Door Switches / Barn OHD / Barn OHD-Heartbeat' is switched Off Then $iDoor.BarnOHD.TransCount += 1 $iDoor.BarnOHD.TransCount Init To $iDoor.BarnOHD.TransCount Else - No Actions - (To add one, press 'Action') For the battery days counts: AddAge - [ID 003D][Parent 0034] If Time is 12:12:12AM Then $iDoor.BarnOHD.BatteryDays += 1 $iDoor.BarnOHD.BatteryDays Init To $iDoor.BarnOHD.BatteryDays [Redacted about 30 other battery day variables that follow] Else - No Actions - (To add one, press 'Action') Then there's also a quick way to reset the 3 counters when a battery gets changed. I run this program manually from a Home Assistant dashboard button, but it could be also run manually from the admin console. The program actually does send 4 notifications so that I have the final counts in case I reset the wrong one (which has happened), I also used to keep the totals in a spreadsheet but the bottom line is I've got the feel of the system now and don't record them anymore. BarnOHD.reset - [ID 01A1][Parent 01B5] If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Resource 'NotificationNS.DoorTrouble._resetCountersBegin' Wait 1 second Resource 'NotificationNS.DoorTrouble.BarnOHD' Wait 2 seconds $iDoor.BarnOHD.HBmissed = 0 $iDoor.BarnOHD.HBmissed Init To $iDoor.BarnOHD.HBmissed $iDoor.BarnOHD.BatteryDays = 1 $iDoor.BarnOHD.BatteryDays Init To $iDoor.BarnOHD.BatteryDays $iDoor.BarnOHD.TransCount = 1 $iDoor.BarnOHD.TransCount Init To $iDoor.BarnOHD.TransCount Wait 2 seconds Resource 'NotificationNS.DoorTrouble.BarnOHD' Wait 1 second Resource 'NotificationNS.DoorTrouble._resetCountersComplete' Run Program 'hb.BarnOHD' (Then Path) Else Resource 'NotificationNS.DoorTrouble.BarnOHD'
shunsader Posted May 20, 2022 Posted May 20, 2022 Mr Bill, I'm hoping that the post above was intended for me. I'm pretty code savvy, and was only trying to get some feedback on what I might be doing wrong in regards to installation.... First sensor: ONLY get DRY trigger when pressing SET button. Second sensor installed: NO HEARTBEAT, NO WET, NO DRY triggers when pushing the SET button. I currently have 20 motion sensors installed at home, and initially spent a considerable time understanding its functions before installing at the home. Wanting to do the same for the Leak Sensor, but having mixed results when trying to test signals. Just looking for a way to CONFIRM that all 3 outputs of the sensors work (DRY, WET, HEARTBEAT), and data comes back uniformly (I've read that when pressing SET, all 3 outputs should be triggered, but can't even make that work). Yes, I agree that I'd get a barrage of email messages, but that's what I was counting on. I configured the sensor a day before a 1 week trip, and didn't get anything for the whole week I was gone....no heartbeat at all. In addition, I wanted to understand how the alarm system worked, and whether it alerts just once, or repeated times. ANSWER: 9 or 10 alarms when the Wet sensor is triggered, approx. 15 seconds apart. After that, it goes silent. I'm just a geeky engineer who wants to thoroughly understand how a product works before installing a large deployment. Can any of you think of a reason why pressing the SET button gives mixed results OR why I haven't seen a single heartbeat from either unit? - Steve
larryllix Posted May 20, 2022 Posted May 20, 2022 8 minutes ago, shunsader said: Mr Bill, I'm hoping that the post above was intended for me. I'm pretty code savvy, and was only trying to get some feedback on what I might be doing wrong in regards to installation.... First sensor: ONLY get DRY trigger when pressing SET button. Second sensor installed: NO HEARTBEAT, NO WET, NO DRY triggers when pushing the SET button. I currently have 20 motion sensors installed at home, and initially spent a considerable time understanding its functions before installing at the home. Wanting to do the same for the Leak Sensor, but having mixed results when trying to test signals. Just looking for a way to CONFIRM that all 3 outputs of the sensors work (DRY, WET, HEARTBEAT), and data comes back uniformly (I've read that when pressing SET, all 3 outputs should be triggered, but can't even make that work). Yes, I agree that I'd get a barrage of email messages, but that's what I was counting on. I configured the sensor a day before a 1 week trip, and didn't get anything for the whole week I was gone....no heartbeat at all. In addition, I wanted to understand how the alarm system worked, and whether it alerts just once, or repeated times. ANSWER: 9 or 10 alarms when the Wet sensor is triggered, approx. 15 seconds apart. After that, it goes silent. I'm just a geeky engineer who wants to thoroughly understand how a product works before installing a large deployment. Can any of you think of a reason why pressing the SET button gives mixed results OR why I haven't seen a single heartbeat from either unit? - Steve Heartbeats only come every 24 hours. You will just have to wait.
Recommended Posts