This is something I'm working on and about to take a break because it's making my head hurt. If there are other suggestions or how to do this better, I welcome it.
Now that everything I own (and things I don't) are all controlled by my indigo server, I'm trying to figure out the best approach for prioritizing alerts. Here is my example case:
Mr.X walks up to the front door (Motion detector triggers fire, camera snapshot, control pages updated.)
Mr.X rings the doorbell (camera snapshot, pushover messages sent, control pages updated.)
Kids/Dogs/Etc stirred up and start running amuck through the house (Indoor motion sensors, snapshots taken, control pages updated.)
Near freezing temp predicted (weather alert image called and used to update control pages.)
It's about at this time (with all the commotion, I look up from my beverage at my domopad to see a Weather notification as the highest priority alert has been replaced several times over by lower priority notifications.)
I've begun adding priorities to the different events. Now an event (if triggered) will set a variable "priority" to whatever level it is:
1) Alarm
2) Access Control (doors, windows, doorbell, etc.) / Special Alerts (my office, smoke detectors, indoor motion when in away mode, etc.)
3) Perimeter (outdoor motion sensors, camera video motion.
4) Interior (Indoor motion sensors, cameras, energy monitors, interior doors.
5) Severe Weather alerts
Now when Mr. X rings the door bell, A trigger fires and the condition is priority variable is greater than 1, then
Sets variable priority to 2
Restarts the priority timer for 5 minutes.
(over the next 5 minutes, only another priority 2 or priority 1 will pass conditions to run.)
Trigger - Priority Timer Expired - always execute - set variable Priority to 5
(Now back to normal and any priority event will trigger)
The downside is I will have to make a complete second set of triggers because I don't want pushover/email/ text message to be silenced. (right now the script are combined... an image is called, a alert message variable is populated and that data is then used to populate a control page and go out in a text message/pushover/email.)