Any direct API for subscribing to alarms and Acknowledging alarms?

Hello, I am building a custom C# application that will communicate with Ignition, get the Alarms from it, and process it and user can acknowledge those alarms from our application.

I was playing with Ignition for a day now and it seems like Ignition does not provide any direct API where I can just hook in to get all the alarms. And I don't think it exposes any direct API where I can call to acknowledge alarms. Is my understanding correct?

So, I see that Ignition SCADA is modular architecture and it supports other modules. So, for my use case I think, I need to build a custom module. If I need to build a custom module, can I host some service (like some gRPC service) from a custom module. So, my C# application can subscribe, get the alarm information, and send acknowledgement request to that service. Saying that are there any restrictions on what custom modules can do?

There isn't something directly, however you could use the webdev module to create endpoints that do both of these things for you. This would be significantly simpler than creating your own module, as it would allow you to just use the built in python scripting and functions provided under system.alarm

1 Like

Thank you very much. I will look into it.

1 Like

You might take some inspiration from this magical post:

Out of curiosity.. does the AlarmListener class even exist without the alarm notification module?

If so.... a bit of a direct circumvention of the module lol

sounds like using tag change events to write into a database to circumvent the SQL bridge module :slight_smile:

1 Like

I do think though a difference with this one, is that SQL bridge isn't intended to be the only way to store data, its just the easiest way for new users to store data.

I got the impression that Alarm Notification was intended to be the only way since it was the only thing with Pipelines. I guess you could always write a tag event script on the alarm states though

Meh. Alarm notification is different from "alarming". If you want to do something that hacky (and maintain it indefinitely) yourself, by all means.


I'd beg to differ actually. I still haven't used the SQL bridge module as every time I've looked at it I've been lost and unsure how to do the things I want :man_shrugging:


This is a whole thing, and trust me, I get it. I have never released SQL bridge into a production application, but I think in this case you and I are the exception and not the rule. I think the general rule of thumb is if your forum title is Regular than you probably don't daily drive transaction groups :slightly_smiling_face: lol

1 Like

The stored procedure groups actually work quite well as a "replacement" for FactoryTalk transaction manager. Back when we started we purchased it, thinking (due to it's name) that it was something different than it actually is. I have now completely removed our FTTM servers.

Outside of that, though, I would agree that I tend to navigate to just using scripts.


I often need more robust handshaking than offered by transaction groups. But for things that don't need confirmation (or a missed row is ok), transaction groups are way easier for clients to maintain.


Ahhh, the classic “wait… I don’t need SQL bridge to connect to a SQL database??”

We’ve all been through it


Thank you for all the responses. Another quick question looks like Ignition has its own OPC UA server does that OPC UA exposes anyway of Acknowledging of Alarms, or it is only data?

You could configure tags in Ignition to do what you need and connect to them through OPC UA.

Yes, I could configure a tag on OPC UA and communicate with it. But I was wondering what type of OPC UA Server Ignition exposes. is it OPC UA data only or OPC UA A&C. I think if it is OPC UA A&C then I think I can acknowledge alarms.


One final question out of curiosity, Can I extend the Ignition OPC UA data server and add acknowledgement capability to it. Does Ignition allow something like that?

No. You can only extend it by adding custom drivers.

You could technically do something like this with adding a tag change script to an "acknowledgment" tag, that will use system.alarm.acknowledge to acknowledge a specific alarm.

Then when you set the "acknowledgement" tag to True it would run the script, and acknowledge the alarm.