CALMS system is designed as a cloud web server platform that connects Factories as end-users, Service providers as maintenance and equipment suppliers, and compressed air experts as auditors.
Website: www.calms.com
That was the largest project I have been working on for at least three years. Me and my team we were responsible for maintaining and developing the cloud web server. The underlying technology that we were using was quite diverse, starting from backend services written in Java, frontend view written in Javascript, and additional services for translating the app are written in python, the sensors were using software written in C#.
Using IoT techniques we were able to develop a system where end-users are receiving visual data every five minutes. Our users are experts in the field of compressed air, so they could use the data in their way to make decisions about upgrading the compressor station, changing a compressor, or preventing some critical problems that could appear in the future.
Speaking on a technical level as a Software Engineer I can describe the architecture of the system. In the factories, we have sensors with a PLC controller, where windows embedded compact is running with our C# program. We developed that software to run in two modes, the first mode is creating .csv files out of the current data from the sensors, and the second mode is creating .bin files from the same data. The data can be the electricity of the compressor, pressure, power and etc. Those files are getting sent to our cloud system where they get parsed and stored into non-relational Apache Cassandra with timestamps.
The cloud system is a traditional monolithic MVC application developed with Java Play Framework. The service API is always waiting for the requests from the PLC devices installed in the factories. At the same time, we have a few hundred sensors connected, so our server needs to be responsive and work in parallel. We are using the PostgreSQL database to keep the structure of the application, and Apache Cassandra database to store time series data. We’ve developed services to calculate required output based on the data.
The frontend system is developed using AngularJs framework, and HTML rendering directly from the backend. We used AngularJs when we need to work with single page applications, for example implementing a library for visual representation of the data using javascript libraries. On the other side we were rendering HTML only when we need to create a page where user has to enter sensitive data, create their profile, set an alarm, etc.
To wrap up the article, I would say that it was an interesting experience for me doing all of this work with my colleagues, we had difficulties, we had fun, but in the end all was good. Of, course there were bugs and we had to stay late night, or work on the weekends to repair a critical error, but that’s part of the job also. This project gave me confidence to continue working, and being ready to take on the next challenge.