# IoT-Aware Architecture to Guarantee Safety of Maintenance Operators in Industrial Plants
## 6 Implementation Details
[36], one of the protocols most frequently used by Industrial machineries for communicating with each other and with other systems or components is the MODBUS TCP/IP protocol [37], both machinery prototypes use the Modbus TCP/IP Protocol and, act as \"Client\" devices. Nonetheless, in the master/client architecture of MODBUS TCP/IP protocol, the other fundamental role is the master. In the proposed implementation, this role is played by the Backend Server that was therefore designed and implemented as a modular component made by different modules. One of the modules is dedicated to the Modbus protocol itself: it is responsible for accepting requests and status Information from the machinery. Then, there is a module dedicated to each duty presented in the previous section such as (a) allow and monitor the de-energization procedures by supporting operators, supervisors and administrators in performing all the de-energizing operations in the right way, (b) support the system during the re-energization process and during test phases, (c) guarantee, through a dedicated innovative separate mode selector, workers safety during maintenance. Figure 4 reports a screenshot of the dashboard, one of the most important components of the MwISM that provides support to supervisors and administrators in the execution of their duties during the de-energizing and re-energizing operations. Another important element of the system is the Backend Server component. For the purpose of this paper, it was realized by using different programming languages and tools: (a) the Java programming language and, specifically, the Spring Boot framework [38], was used for the development of the whole Backend infrastructure, (b) the MySQL Database Service was used to implement the database for collecting all the data arriving from the machineries, (c) the WebSocket and MQTT protocols used for all the communications among the Backend and the other components of the architecture, (d) the Docker ecosystem used to simply the deployment tasks, (e) the ReactJS framework used for exposing the dashboards and (f) the Nginx reverse proxy used to support all the communications with specific services (e.g., first security barrier). Figure 3: Part of the machinery in which a mechanical lock can be used to lock relevant energy sources. Finally, the last important component of the architecture that was implemented is the Mobile App. As already mentioned, it is a really important part of the system mainly because of its important role in guiding the operator through all the steps foreseen in the maintenance procedures. In fact, while, usually, the maintenance procedures are reported in printed manuals or books, in our system, all the procedures and their steps are inserted in the database by the administrators, through the Dashboard provided by the Backend Server and, when an operator has to start a maintenance, he/she has only to open the mobile application, accept the assigned maintenance and then, all the steps are shown, after the verification of all the defined pre-requirements (e.g., the machinery is on maintenance with all the safety system working properly) on the screen step by step. Therefore, the Mobile App was realized for smartphones equipped with the Android Operating System (so, by using the Java Programming language) and it is responsible for all the operations reported in the previous section. In addition, the Mobile App provides a controlled sub-system that safely cooperates with the other system components, to allow maintainers to execute a limited set of interactions with the machinery (e.g., axes movements) to test the effective outcome of the maintenance operations without waiting for the intervention of a dedicated team with the right expertise to operate on the machinery itself (as done since now in the state of the art.