Data sharing using mqtt and zigbee-based dds on resource-constrained contiki-based devices


Thesis Type: Postgraduate

Institution Of The Thesis: Middle East Technical University, Faculty of Engineering, Department of Computer Engineering, Turkey

Approval Date: 2020

Student: Tunahan Yıldırım

Supervisor: MEHMET HALİT S. OĞUZTÜZÜN

Abstract:

This thesis describes the implementation of data sharing among resource-constrained IoT devices using two different middleware: MQTT(Message Queuing Telemetry Transport) and DDS (Data Distribution Services) for Real-Time Systems. In our setting, all IoT devices run under the Contiki operating system. In the configuration for DDS, a pair of Texas Instruments’ MSP430 processor-based ZigBee powered Advanticsys XM1000 device is used to realize data sharing between wireless sensor network devices without a server node. In order to install and run the proposed application, Ubuntu 64-bit operating system is used since it provides all the dependencies for Contiki and wireless sensor nodes. In the DDS middleware, an example interface definition is given in the XML file which contains the temperature, humidity, light values and the data to be shared is determined by the interface definition. For sharing data, DDS components ( DataWriter, DataReader, Publisher, Subscriber, Topics) are used. Two XM1000 wireless sensor nodes are used for sharing sensor data with each other every 10 seconds. These experiments are performed between 2 and more devices using the simulator and in different periods. In the second part of the work, the data structure that contains temperature, humidity and light values is shared via both MQTT and MQTT-SN (MQTT for Sensor Networks) middleware. The configuration of the MQTT middleware application works with the TCP protocol, the following components are used: The Ubuntu-based host computer, the mosquitto (Local MQTT server) application running on the host computer, MSP430 processor-based ZigBee powered wireless sensor node (CM5000 produced by Advanticsys company). In addition, the Python client applications for both publisher and subscriber are run on the host computer. These components above are used for sharing the sensor data structure between wireless sensor nodes which are connected to the host computer. Publisher and subscriber applications share the sensor data structure in every 10 seconds over the mosquitto server and received data is sent to the wireless sensor node by using python subscriber application. The received sensor data structure is sent to wireless sensor node by using the serial interface. In this implementation, ZigBee radio is not used because the ZigBee module could not be activated due to the large memory footprint of the MQTT application. Since the Zigbee module cannot be used in MQTT application, it is not included in the comparison. In order to run and share the data structure that contains temperature, humidity and light values by using the MQTT-SN middleware, RSMB (Really Small Mosquitto Broker) is installed and run on a Linux based host computer. The devices must obtain the IP address from the host computer to communicate with the Mosquitto server running on the host computer. Therefore, the border-router application used to obtain an IP address on the computer is running on wireless sensor node named CM5000 . Another CM5000 wireless sensor node gets the IP address by using border-router application installed CM5000 wireless sensor node and can write sensor data on RSMB by using MQTT-SN middleware installed on the CM5000 wireless sensor node. The sensor data structure is shared in different period of times(5,10,20,30,60 seconds) and 2 and more sensor devices. In addition, sensor data sent from CM5000 wireless sensor node is shared with the RSMB server running on the host computer. The shared sensor data can be viewed on the host computer by using the Mosquitto client which reads data from RSMB. These three configurations are compared in terms of memory usage, power consumption, and bandwidth utilization. With respect to memory usage, DDS middleware software is the least memory consuming software. In addition, the effects of the changes made to fit the image of the operating system on the memory usage are calculated. Similarly, it was seen that the DDS application consumed the least power among all the applications. For MQTT-SN, power consumption could not be calculated, due to power estimation module which could not be activated because of the lack of memory.With the application developed using calculated raw values, the calculation is made for MQTT-SN and the energest module of Contiki is used for power estimation.