Hi, I'm working on a project to transition an existing alarm system into Ignition.
My idea was to have an alarm UDT to for each data point I want to alarm on. Each alarm could be configured to either play audio, email folks, email a pager-server, or hit a specific output.
Specifically, I have boolean 'email enabled', 'radio enabled' memory tags in my Alarm UDT. I also have a 'test mode' boolean to allow for alarm testing, but to bypass all notifications. Is there a simple way to pass this info in to perform this logic?
I'm not sure if there is a better way to do it or not. But what I did with my alarms in my project was made UDT's for the alarms that held certain values kind of like you have described and used an expression block to check the value of the tag using the tag() function and dynamic properties to check the active alarms values. Something kind of like this,
tag("[Alarm Notifications]Paging System/" + {AlarmName} + "/Tag Value")
Where that will pull the Actual Value of the current active alarm in the pipeline in my tag provider. You can of course use that function in the same way with your respective tag provider and link it dynamically to your alarm UDT's and use whichever value you want under the tag path. Such as tag("[Example Provider]Root Path/" + {AlarmName} + "/Email Enabled").
That's just an example of how the formatting I used with the tag function. But it seems to work pretty well without issues and pulls the values I need.
Like I said, there may be a better way but that's what I had found so far that works for me.
That sounds like a fine way to do it. I'll toy around some of the namespace stuff and see if I can't get a consistent way to make the checks. Much appreciated!