The server part of DimolSmart consists of the following main parts:
1. Server – Business logic program (where all rules for interaction between different parts of the program are written, processing of input data, receiving information from the database).
2. Web Admin is a browser program that consists of two parts:
- For system administrator – full control over objects in the system, monitoring server resources, activating / deactivating users, etc.
- For the user of the system – the creation and editing of projects, rooms, panels, modes, changing the operating modes of the room, monitoring the status of panels in the rooms, displaying statistics, etc.
3. Messaging – system processing and scheduling messages between mobile applications, servers and panels (sending push-notifications to mobile phones after the panel has updated data, etc.).
4. HTTP API – an interface for HTTP data exchange, allows you to synchronize data and manage panels with firmware of the first version.
5. SQL – MariaDB relational database, used to store information about all objects in the system.
6. RabbitMQ – high-performance message broker (queue), used as message manager, implements the subscription / publishing process, and also serves as a buffer role for storing messages at peak times on the server.
- MQTT – lightweight messaging protocol that allows subscribing / posting data to IoT devices.
- STOMP – an easy text message exchange protocol that allows you to subscribe / publish data to mobile applications and Web Admin.
The general principle of work
The user authorizes the system (using a mobile application or Web Admin), creates a project / floor / room, adds a panel to the room and selects the mode for the room. After saving the selected mode, the panel receives data and starts to work according to the current time and the temperature set in the mode.
Each time when the panel publishes the current temperature, the user receives a message on a mobile application with average room temperature data.
This architecture took into account the data collected from the previous version of the server, minimized the amount of data and requests to the server, implemented the initiation of the actions of the panel or mobile application from the server part. This allows you to increase the number of simultaneously connected applications and panels to the server without increasing its capacity, as well as significantly accelerate the response of the panels to changes (modes).