/leemonaya

A remote temperature and humidity monitoring system for my girlfriend's greenhouse, which houses a small citrus grove.

Primary LanguageTypeScript

leemonaya

A remote temperature and humidity monitoring system for my girlfriend's greenhouse, which houses a small citrus grove.

The idea is that periodically,

  • an IOT board, reads temperature/humidity sensor data
  • the IOT board (over wifi) performs an HTTP POST call to report its status (board id and sensor readings)
  • the http ingestion server authenticates the incoming sensor reading and persists them to a database

Includes:

  • firmware for a ESP8266E Wifi board, to be compiled and flashed via the Arduino IDE
  • http server to ingest sensor readings (over HTTP POST) and store them in database (2 versions! One in python/flask and the other in node/typescript)
  • a minimalistic web single page application ui, made in typescript + webpack + chart.js

Authentication is performed by means of a shared secret key that is used both in client (hardcoded in the ESP8266 firwmare) and server to calculate the HMAC SHA256 hash of the whole post request body. The base64 encoded hash of the request body is passed in the http 'Authorization' header.

IOT Hardware:

IOT Software/Firmware used:

Ingestion web server:

  • made in python3/flask
  • current db is sqlite3 (other databases support is trivial, as long as they have a compliant python3 db api).

Not yet implemented:

  • https, to eliminate vulnerabilities to message replay