Scottmichaelj Posted August 6, 2015 Posted August 6, 2015 Seems like I am always forgetting to turn on the alarm at night for some reason so I put a simple timeframe program to have the Elk Speaker "remind me" the alarm is disarmed. However if I have friends over past the timeframe its annoying to hear it tell me every 30 mins its not armed. Then I get harassed that about my "automated house". I tried the below program but its wrong. Can someone look at it and help me fix it? Do I need two programs, or variables? One for the "timer" and one for the "reminder"? Basically all I want is if the motion detectors on my Elk in certain rooms have been "violated" (aka motion sensed) starting at 11pm then don't "remind me" but set motion as a timer from the last 30m it was motion was sensed. This way if it doesn't sense anything in those areas 30 minutes after the last motion is sensed on any of the detectors then I get reminded. If it does then wait 30mins from the last time motion was detected from the most recent motion sensor and if it doesn't then finally remind me. Does this make sense? Thanks in advance for the help. If From 11:00:00PM To 5:00:00AM (next day) And Elk Area '1' 'Armed State' is Disarmed And Elk Zone 'Family-Motion' is not Violated Then Repeat Every 30 minutes Set Elk Speak Word 'Alarm' Set Elk Speak Word 'Is_disarmed' Else Wait 30 minute
LeeG Posted August 6, 2015 Posted August 6, 2015 A few points to consider when rewriting Program into likely two or more Programs. The Wait in the Else has no purpose. It does not Wait when the only statement in the clause or last statement (no logic after Wait). The Else clause is driven when the Program is triggered and any part of the If is False. This means that the Else clause executes under various conditions, usually more than the Program was designed to handle. This is usually why multiple Programs are needed. The multiple If clause conditions must all be True to drive the Then clause. The more complex the If the more need to put the True logic in the Then and nothing in the Else which is why multiple Programs are required.
larryllix Posted August 6, 2015 Posted August 6, 2015 (edited) Seems like I am always forgetting to turn on the alarm at night for some reason so I put a simple timeframe program to have the Elk Speaker "remind me" the alarm is disarmed. However if I have friends over past the timeframe its annoying to hear it tell me every 30 mins its not armed. Then I get harassed that about my "automated house". I tried the below program but its wrong. Can someone look at it and help me fix it? Do I need two programs, or variables? One for the "timer" and one for the "reminder"? Basically all I want is if the motion detectors on my Elk in certain rooms have been "violated" (aka motion sensed) starting at 11pm then don't "remind me" but set motion as a timer from the last 30m it was motion was sensed. This way if it doesn't sense anything in those areas 30 minutes after the last motion is sensed on any of the detectors then I get reminded. If it does then wait 30mins from the last time motion was detected from the most recent motion sensor and if it doesn't then finally remind me. Does this make sense? Thanks in advance for the help. If From 11:00:00PM To 5:00:00AM (next day) And Elk Area '1' 'Armed State' is Disarmed And Elk Zone 'Family-Motion' is not Violated Then Repeat Every 30 minutes Set Elk Speak Word 'Alarm' Set Elk Speak Word 'Is_disarmed' Else Wait 30 minute I am not sure how the Elk event triggers work in ISY but give this a try. If From 10:30:00PM To 5:00:00AM (next day) AND { Elk Zone 'Family-Motion' is Violated OR other zone is Violated } AND { <----Elk triggers may not require this section. Elk Zone 'Family-Motion' is not Violated <----disables 'reminder' if motion starts again. AND other zone is not Violated } Then Wait 30 minutes Enable program 'reminder' Else Disable program 'reminder' Program 'Reminder' (disabled) If Elk Area '1' 'Armed State' is Disarmed Then Repeat Every 30 minutes Set Elk Speak Word 'Alarm' Set Elk Speak Word 'Is_disarmed' Else -- Edited August 6, 2015 by larryllix
Scottmichaelj Posted August 14, 2015 Author Posted August 14, 2015 I am not sure how the Elk event triggers work in ISY but give this a try. If From 10:30:00PM To 5:00:00AM (next day) AND { Elk Zone 'Family-Motion' is Violated OR other zone is Violated } AND { <----Elk triggers may not require this section. Elk Zone 'Family-Motion' is not Violated <----disables 'reminder' if motion starts again. AND other zone is not Violated } Then Wait 30 minutes Enable program 'reminder' Else Disable program 'reminder' Program 'Reminder' (disabled) If Elk Area '1' 'Armed State' is Disarmed Then Repeat Every 30 minutes Set Elk Speak Word 'Alarm' Set Elk Speak Word 'Is_disarmed' Else -- Larynx, sorry I haven't responded in a couple days to say thank you and let you know how things turned out. I added/change the programs as you suggested however the "reminder" program wouldn't run on its own after being enabled. It took me a while to figure out what was going on. Needless to say I had to change the time/speed up the reminder so I wasn't waiting forever to test. It appears I had to add "Run If" line on the first program (see below). I am still testing it to make sure all is good but I think this has me on the right track. LeeG that was a very helpful explanation of the "else" command. I always get confused how it works in the programs and I think its clearer to me now that you explained it. Thank you Larryllix and LeeG for both of your help. If From 10:30:00PM To 5:00:00AM (next day) AND { Elk Zone 'Family-Motion' is Violated OR other zone is Violated } AND { <----Elk triggers may not require this section. Elk Zone 'Family-Motion' is not Violated <----disables 'reminder' if motion starts again. AND other zone is not Violated } Then Wait 30 minutes Enable program 'reminder' Run Program 'reminder' (If) Else Disable program 'reminder'
larryllix Posted August 16, 2015 Posted August 16, 2015 (edited) Looking again I realised I also got my logic backwards. This may work better. Multiple time frames for weekdays vs weekends could be added. Careful with your parenthesis to group conditions. If From 10:30:00PM To 5:00:00AM (next day) AND Elk Area '1' 'Armed State' is Disarmed AND Elk Area '1' 'Armed State' is NOT Disarmed <---runs else if armed again. Then Enable program 'Reminder' Run 'Reminder' (then) <-----starts timing Else Disable program 'Reminder' Program 'Reminder' (disabled) If Elk Zone 'Family-Motion' is Violated OR other zone is Violated Then Repeat Every 30 minutes Set Elk Speak Word 'Alarm' Set Elk Speak Word 'Is_disarmed' Else -- Edited August 16, 2015 by larryllix
Recommended Posts