Regn
Status
In Dev
RES
DES
DEV
DOC
TST
15.3.227
DES :: 1h13m
14.3.227
DES :: 1h6m
Regn is a WiFi enabled weather station and visualisation dashboard.

56h27m (55 logs) from 12 Sǽd 226 to 15 Forst 227.

This project consists of 2 main components - a custom weather station and a data ingestion, API and dashboard server.

The weather station is a WiFi enabled IoT device built with an Adafruit HUZZAH ESP8266, a DHT22 temperature + humidity sensor, a BMP180 barometric pressure sensor and a TSL2561 luminosity/lux/light sensor to read various environmental properties.

Upon start-up, the weather station exposes a WiFi access point with the name Regn and a predefined password. Connecting to this AP and navigating to 192.168.4.1 lets me set various internal settings, such as the MQTT endpoint and sensor read frequency, after which the station will reboot, connect to the defined WiFi point and begin to submit sensor data. It does this by connecting to an MQTT endpoint with it's Client ID being the station's name and publishing it's sensor values to a Regn topic.

Regn's first time boot configuration

As part of the hardware side of this project, I also used EAGLE to design a PCB which was then fabricated by OSH Park. At the moment it is only a basic PCB that links together the various prototype boards, but future versions will embed the sensors, voltage regulators, LEDs and other things directly.

Version 0.1 PCB of Regn

The server side is relatively independent of the station. It serves a dashboard and an API for querying weather station data. It is a Flask service, and subscribes to the aforementioned Regn MQTT topic and stores the sensor data in a database.

The dashboard serves a real time graph of temperature, humidity, pressure and luminosity values over a chosen timespan of day, week, month or year.

Temperature over day dashboard

On 6 Hát 226 I gave a talk at the Kafka, KSQL & IoT meetup in Berlin on this project and my speculative work with multiple sensors, scalable ingestion frameworks, CrateDB and Apache Kafka.