IoT (Internet of things) is quite a broad concept. In the most general sense, it is a network that connects different devices for household and industrial use. Such network can be utilized in the Housing and Utilities Sector, for example, to manage energy metering devices, obtain and process their readings, which may result in lower operating costs for energy companies and increase their operational efficiency.
During the whole project JazzTeam was in close cooperation with the R&D department of the customer’s company which is a major data transmission operator in the IoT field on the regional market. This company owns and operates a cloud M2M telecommunication platform (machine-to-machine communication) and a network of base stations. These base stations are located in different regions. Each base station receives packets from multiple metering devices via radio modules connected to them and transfers data to the M2M platform. The communication between the metering devices and the base stations is carried out via wireless connections that use LoRa spread spectrum modulation. LoRa modulation method is used for wireless LPWAN-networks (short for Low Power Wide Area Network), which transmit data through the open energy-efficient network protocol LoRaWAN (short for Long Range Wide Area Networks).
The company is actively increasing its international presence and constantly expanding its network coverage through active cooperation with equipment manufacturers, integrators, and service organizations.
The cooperation between JazzTeam and the customer has resulted in the development of the following components:
The ‘SNMP agent’, which enables connection to the cloud telecommunication platform via the SNMP protocol. We implemented support for obtaining and setting the dynamic parameters of IoT devices obtained via gRPC in accordance with their identifier. All agent commands have been described in a MIB file. Logging to various sources, including syslog, has been added too. The developed agent has been successfully incorporated in the customer’s deployment system as a Docker container.
A ‘Protocol Converter’, which was designed for the standardized exchange of energy metering devices readings’ data (water and electricity) with external applications. The developed component converts messages from the standard used by external systems to the internal standard and vice versa. The M-BUS protocol is used while sending all messages. Parsers for both standards, based on their specifications, were created with the help of Kaitai. During the implementation of parsers, critical bugs were discovered and fixed in the Kaitai fork. Unit tests were created for the Converter’s entire functionality.
The prototype of the ‘Module for re-requesting missing meter readings’. It receives readings requests from external systems and checks the presence of these readings in the database. If they are not in the system, the module forms a request to take readings from the metering devices. When generating requests, the module determines whether to make requests for one-time readings or a request for readings over a period. It is designed to minimize requests to the base stations.
Programming languages: Java 8, SNMP4J, Scala, Kaitai.
Infrastructure: Maven, Docker, Fabric8, TeamCity, Git, IntelliJ IDEA, Jira.
Test libraries: Junit 4.
Other libraries: Lombok.
Protocols: gRPC, SNMP.
- The project had tight deadlines.
- There were frequent changes in the requirements for the minimum viable product (MVP).
- For the SNMP agent implementation, the project team decided to use the existing SNMP4j library, which has insufficient documentation.
- There was parsers’ implementation for binary files and protocols.
- A limitation on the transmitted data packets’ size was also present.
- The team detected and fixed critical bugs in the Kaitai fork, which led to a cost reduction on the customer side without compromising the project’s quality and schedule.
- Despite the frequency of requirements changing, all software components were implemented successfully and timely.
The company’s achievements on the project
- JazzTeam specialists assigned to the project worked closely and actively with the customer at all stages of the software development process. They informed the client about the possible risks on time. Because of this, it was possible to timely detect the negative consequences of the NoSQL database implementation, which would have led to a complete lack of data integrity in the system.
- The customer was satisfied with the result.
"Lartech Telecom expresses its gratitude to JazzTeam for the cooperation and recommends JazzTeam's engineers as highly qualified.
We would like to note that the team took a proactive approach and was results-oriented from the very first days of the project. The team's immersion in a new subject area did not cause any difficulties and was promptly done.
Agile methodologies practices, such as daily Scrum meetings, weekly sprints and the results presentation, were implemented in the project from the very beginning. This allowed us to keep all communications at a high level, to focus on the outcome, to respond timely to challenges and changes in external circumstances, to get over pitfalls and to adjust plans and processes.
All the works were completed in full compliance with the requirements and within the specified timeframe.
We wish JazzTeam success in its professional activities."