I made my Air Monitor with 3D printing in mind.
Because I do use ABS and ASA monitoring, Formaldehyde seems a must.
Some code is sensor-specific but easily changed
With "reboot_timeout: 0s" ,( no "s ) in both the api: and wifi: sections, it will stop rebooting and work in both stand-alone and logging modes
My sensors used:
SHT-40 Temperature and Humidity
SGP-30 CO2 and VOC
PMS5003S Particles 1, 2.5, 10 ug/m3 AND CH2O(Formaldehyde)
ZE08-ch2o Formaldehyde
PMS5003S and ZE08-CH2O read Formaldehyde slightly differently. PMS5003S is known for cross-sensitivity to some VOCs, such as alcohol, acetone, and acetaldehyde...SO the ZE08-HC2O makes a perfect relative comparison.
If you want, I added code for 1 WS2812 addressable LED on ALED pins to "Breathe" when any measured levels are exceeded.
If all sensors are in the normal range, the LED is off.
If any sensor changes threshold levels and "Beathe" in the color of the highest threshold level.
ie: Off. Yellow, Orange, Red, Purple
DO NOTE: If it turns PURPLE, you should likely vent the room and get out.
I borrowed changes in the top button operation and changed some button timing.
https://www.printables.com/model/1436008-3d-printer-emission-sensor-array-sensorbox-v2-code
Fast Press, 1 - 800mS dims the display by increments and resets alarms for 3 minutes, when on.
Long Press, 850 - 2200mS Changes Display Pages (4), Main, 1h and 24h graphs, and WiFi Connect pages
Very Long, 2400 - 6000mS Save SGP30 baseline
Ultra Long 6000 - 10,000mS Enable/Disable WiFi
I added a speaker on GPIO17 with onboot, and alarms as in some Professional Units, if level 3 chirp warning and siren if level 4
Both warnings have a 3-minute reset with a fast tap of the top button.
I also added the ability for a temporary button on GPIO40 to test the alarms for debugging (courtesy of Google Gemini). Connect the button from GPIO40 to GND. 1st press repeating CHIRP, 2nd press - SIREN, 3rd press off.
The clock is Internet NTC and currently set for Denver; you will likely need to look up your TimeZone code to change it.
change line 105, timezone: "MST7MDT,M3.2.0/2:00,M11.1.0/2:00" #Denver with DST and DST rules
ref MST7MDT = MST=MountainStandardTime, 7 = -7 tz, MDT= MountainDaylightTime
M3.2.0/2:00; Month 3, week 2, 0 first day of week/2:00 am
M11.1.0/2:00; Month 11, week 1, 0 first day of week/2:00 am
NOTE: I used the Proleptic Format to add Daylight Saving Time rules
The NTC timezone spec is in TZ_rules.txt if needed.
As in all my posts, the SketchUp CAD files(SKP) are included
Etiquetas
Fuente del modelo
