Mäta luftkvalite

Pga rådande pandemi så har jag lite mindre att göra på jobbet och därav tillbringar en del tid framför datorn hemma för lite kompetensökning och egna projekt.

Ett av projekten jag tänkte redogöra för är att mäta luftkvaliten hemma med fyra parametrar:

För att kunna genomföra projektet har jag genomfört 2 kurser på www.udemy.com, Python-programmering och Web-ramverket Django.

"Systemet" består av 2 delar:

  1. Extern sensor, från början en "Air quality IoT starter kit" från okdo som innehåller en wio-link ("arduino"), en DHT22 som mäter luftfuktighet och temperatur och en SGP30 som mäte VOC och CO2.
  2. En raspberry Pi 3 som "datasamlare" samt webserver för att presentera resultatet/datat.

Extern sensor

Denna sensor består av 4 delar:

Jag fick aldrig wio-link att fungerar som avsett, dvs mätvärdena skulle skickas till en server och kunna läsas på nätet.
Istället skrev jag ny kod i Arduino IDE, gjorde om den till egen webserver som presenterade resultatet på en enkel sida.
Värdena, som presenteras på sidan, är taggade som "<var id =''>" för att enkelt kunna läsa dessa från Raspberryn.

På den sidan presenteras endast aktuell information och uppdateras var tionde sekund.

Sensor
Sensor
Sensor-sida
Sensor-sida

Efter gjort denna del växte iden fram att samla dessa värden och kunna presentera hur dessa ändras över tiden.

Raspberry Pi

Raspberryn har 3 delar:

Hämtning av data

2 st Python-script triggas av Cron-jobb och hämtar data från den interna och den exterana sensorn.
För den interna sensorn hämtas aktuellt data från sensorn och sparas till en separat textfil.
För den externa sensorn hämtas data genom att läsa html-koden och hämta de 4 taggade varaiablerna, samt spara ner datat med datum och tid i en separat fil.

Cron-jobb
Cron-jobb

Jobben körs inte samtidigt utan är förskjutna 15 min. Finns också en kontroll att fil finns och att den inte är större än 1 GB, annars så skapas en ny fil.

Webserver

Själva webservern är byggd på Django och Python. Den innehåller 3 sidor för att presentera resultat med hjälp av modulen matplotlib. Webservern tar data från de 2 textfilerna och presentera dessa som diagram. Allt sker online och inga bilder skapas på disken. Vid omstart startas ett Python-script som starta webservern igen.

Raspberry Pi
Raspberry Pi
Systembild
Systembild
Sida för Intern sensor
Sida för Intern sensor
Sida för extern sensor per dag
Sida för extern sensor, resultat per dag
Sida för extern sensor, resultat senaste veckan
Sida för extern sensor, resultat senaste veckan

Sammanfattning

Det har varit ett lärorikt projekt med en hel del testande för att få det att fungera som jag vill :)
Nu återstår att testa lite mer utförligt och korrigera ev brister samt rita och skriva ut en låda till den externa sensorn.