This is an IoT based device that was constructed for a module taken in my third year at the University of Kent, this project scored 80%. The goal of this device was to read temperature, humidity and gas data from the environment and then display that to the user. This was successful even though there are some parts that could've used longer to finish implementing.
You will need to construct the device according to each parts power and ground needs. The DHT11 pin is D2 and the MQ-2 pin is A0.
Or there is a python script called MockDevice which will mimic a real device sending data on the topics that the device would.
The device itself was an arduino FireBeatle with a DHT11 temperature sensor and an MQ-2 gas sensor. The sensors themselves could've been better, the ones selected were not necessarily the most appropriate for the task at hand. The DHT11 too slow to update and not accurate enough. The MQ-2 sensor was not as precise as would've been required and needed a full 24-48 hours of warming up before "accurate" readings could be taken.
This is constructed using Tkinter in python for ease at the time. Multiple devices can be registered to the software at any given time. Launching the dashbaord will give an idea as to how the device would function. Take a look at the help tab for explanations on what everything does.
This was also constructed in Python and deals with more long term storage of the data. It is intended to perform complex analysis on the data. However currently just tracks the device and can respond to basic communication with the dashboard.
This was not overall a major consideration during the projects timeframe (2 months) but was thought about to be implemented in the future. Password protected MQTT topics would be the first.
Some way to lock a device to a "user account" would be nice. So that historical data couldn't be wiped by unauthorised users.