Inspiration

I work in Industrial Automation/Industrial Communication and transitioning old systems to the cloud or using modern compute is something that is a great cost saving measure and allows for better and quick ingestion of data. This allows for real time data analytics, machine learning, and much lower costs on things such as PLCs, separate OPC-UA servers, and more. I wanted to create this as a truly easy way of communicating with devices in the field through the cloud.

What it does

There are two parts to this project as follows: Server Side - OPC-UA Server - Converts MQTT stream to OPC-UA devices and variables Client Side - Data Acquisition via Serial, TCP, and GPIO - Publishes Data via MQTT - Caches data during downtime of network signal (it happens)

How I built it

I built this by taking a typical serial stream that I have seen in the field and simulating it through a simple script. I then established a way of processing the data and labeling it with an easy to edit configuration page. If there is a network connection it can send it to the MQTT endpoint and if there is no network connection, it'll cache the data and send it whenever the network connection is established again. On the server side, I setup a opcua server with freeopcua a very much work in progress server that I read the MQTT data from and then wrote those values into variables and objects to be presented to the SCADA environment (I chose Ignition simply because it has a good free trial and I have used it before professionally).

Challenges I ran into

As I mentioned before, the opcua server boilerplate I used is still very much work in progress. I had to implement some features with their core library on the fly to make sure it would do all the things I needed it to do. I spent several hours just trying to get the data to read correctly since it doesn't have support for 4byte addresses.

Accomplishments that I'm proud of

I am proud of how quickly I was able to get this functioning and functioning well. This was by far the smoothest development process out of the 3 projects I did this year and I am so pleased with the result. It is robust, integrates well, and even allows for tag browsing which is just such a nice feature.

What I learned

I learned a lot about opc-ua at a low level. I have used it many times in my professional experience, but I had never really sat down to understand it at a low level, and I feel much enriched to know that. I am pleased to be able to mess with some cool hardware and software and learn a lot about how the data flows and how I can in real time transmit data quite seamlessly even with older hardware standards.

What's next for EZTelemetry

I want to spread the communication platforms for the utility. Allow it to ingest other forms of data such as PLCs and other devices that I didn't have access to. I also want to be able to give it more than one endpoint such as TCP, Serial, OPC, Google PubSub, Azure, and more. There are so many standards nowadays, that a unifying utility is not only extremely powerful but extremely fascinating.

Built With

Share this project:

Updates