First module done - TagSocket

Hey guys, just wanted to share that after many many tries of making a module I finally did it and I’m feeling very accomplished about it. Don’t let that stop you from critiquing my efforts though haha.

Module exposes opcua tag groups over a websocket connection at /system/ws and features typical web app credential management (API client and secret) with individual read/write config for them. This allows a websocket connection from outside of Ignition to read, write and subscribe to Ignition managed tags. Named it TagSocket because I thought that describes what it does pretty well. Also created status and config pages that I think are pretty similar to the OEM style of IA modules. I even added a doc webpage at system/ws so the module is self documented (which I thought was nice idea instead of trying to find relevant documentation online, which is the usual 3rd party module approach).

Reason for making it was I wanted a more native way to integrate (what I would consider) the main SCADA data source in Ignition back to a more web native protocol for use in “live state” JavaScript Webdev creations (I find it’s easy to get data into Webdev, but back out is a bit harder without workarounds) and external web apps like Grafana (works with Grafana’s websocket API plugin).

In all honesty the parts that I had struggled with module development in the past I finally solved with AI - Wicket was something I needed help with to create gateway pages for config and current connection monitoring.

I thought I’d post this here because I’ve seen a few topics in other forum sections before about using websockets in Ignition before without any definitive solutions… so I thought if nothing else it’d make a good reference for someone else’s ideas.

Anyway, any feedback or interest is appreciated. I built for and tested on 8.1.45 and 8.1.53 because those are gateway versions I work with.