Remote Temperature Monitor

Monitor temperature over the internet

Similar projects worth following

The goal of this project is to provide a means of remotely monitoring the temperature of a room over the internet.

Additionally, I wanted to follow good security practices during the design of the project. I did this not because the information is particularly sensitive, but because I wanted to learn these practices myself, as well as provide an example for how they can be done.

At this time, I have completed the following:

  • Write firmware for the WEMOS D1 Mini which does the following:
    • Blink an LED once a second
    • Measure the temperature and humidity once a minute
    • Establish a secure connection to an MQTT broker over SSL/TLS
    • Package the temperature and humidity in JSON form, encrypt the result, and publish it to the MQTT broker on the 'monitor' topic
  • Write a small python program which performs the following:
    • Establish a secure connection over SSL/TLS to the MQTT broker
    • Subscribe to the 'monitor' topic
    • When a message is received, decrypt and unpack the data and display it on standard out

The following list of items still needs to be completed:

  • Replace the DHT with a more accurate temperature sensor
  • Design, order, and populate a custom circuit board
  • Further develop the python program to:
    • Log readings to a database
  • Write a web application to read from the logged database and supply visualizations via graphs/charts

  • 1 × ESP8266 Dev Board i.e. WeMos D1 Mini
  • 1 × DHT11 Used in prototype
  • 1 × BME280 Will replace DHT11

  • Considerations for Middleware and Web Application

    Casey Smith09/02/2017 at 20:12 0 comments

    My background is more in firmware and embedded systems than on higher level software, so the primary learning curve for me on this project is the code running off the ESP. I've separated it out into two programs: the middleware, and the web application.


    The middleware is responsible for subscribing to the MQTT broker, receiving messages, decrypting them, and logging them in the database. At the moment I'm choosing to use Python 3 for the following reason:

    • It's prolific. It runs pretty much everywhere, and there are tons of examples online.
    • There are libraries (many of them standard) to do pretty much everything I need.
    • It's high level, performant enough, and allows me to focus on what I want to do without having to worry about too many of the details

    Right now I still have to integrate a database into the program. I was initially going to go with something like PostgreSQL, but then I came accross time series databases, specifically InfluxDB. I'm probably going to go with this, since it seems appropriate for the application, and will give me a chance to learn something new. Also, it apparently has a Python API, which is a bonus.

    Web Application

    This will be responsible for serving web requests. I haven't thought much through this yet. I want to be able to generate graphs and charts of data. The only thing I've looked at so far is Grafana

View project log

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates