Northcliff Enviro Monitor

This project uses a Raspberry Pi Zero W, a Pimoroni Enviro+ and a Plantower air quality sensor to monitor, display and report on air particles, gases, temperature, humidity, air pressure, light levels and noise levels. The option to monitor eCO2 and TVOC levels by adding an  SGP Sensor is now available. The code is based on many of the Python examples and libraries by Pimoroni, with the following modifications and enhancements:

A basic weather forecast function, based on air pressure levels and changes.

The light level display in the superb weather and light has been changed to air quality. The background hue now represents the air quality level instead of sun position and the sun position is now provided with a visible sun icon. It also uses the above-mentioned weather forecast information and has some minor changes to the humidity indicator.

The Combined function has been modified to provide a more visible display of each graph, to use graph colours based on level thresholds for each parameter and to only display parameters that have been measured. The display_everything method has also been modified to only show air quality parameters, in order to improve readability of the display.

The All in One function has been modified to allow cycling through the monitor’s functions.

The accuracy of the temperature and humidity measurements has been improved by undertaking extensive testing and regression analysis to develop more effective compensation algorithms. However on their own, even these improved algorithms were not sufficient and it was necessary to use a 3D printed case to separate the Enviro+ from the Raspberry Pi Zero W and connect them together via a ribbon cable. The case needs to be sheltered from the elements and the base is only required if the unit is not mounted on a vertical surface. There is now a variant of the case and cover  for the Indoor Plus model (that monitors eCO2 and TVOC levels) to provide space and airflow for the SGP30 sensor.

There is also an option of adding a weather cover to provided additional protection from the elements. When using this cover, it is necessary to set "enable_display" in the config.json file to "false". That limits the display functionality to just air quality-based hue and serial number, as well as to changing the temperature and humidity compensation variables to mitigate the effect of the cover on the temperature and humidity sensor. Altitude compensation for the air pressure readings is set by the altitude parameter in the config.json file.

Likewise, testing and regression analysis was used to provide time-based drift, temperature, humidity and air pressure compensation for the Enviro+ gas sensors. Algorithms and clean-air calibration is included to provide gas sensor readings in ppm. A data logging function is provided to support the regression analysis. The log file needs to be converted to a valid json format before undertaking the regression analysis.

## Note: Even though the accuracy has been improved, the readings are still not thoroughly and accurately calibrated and should not be relied upon for critical purposes or applications.

Approximate noise levels measurements have been added to Version 6, based on this repository. This feature is not to be used for accurate sound level measurements and only has a limited method of frequency compensation and calibration. This feature requires additional setup and after setup, needs to be enabled in the configuration file.

mqtt support is provided to use external temperature and humidity sensors (for data logging and regression analysis), interworking between the monitor and a home automation system and to support interworking between outdoor and indoor Enviro Monitors. That latter interworking allows the display of an indoor Enviro Monitor to cycle between indoor and outdoor readings....

Read more »