Inhoudsopgave:

Raspberry Pi binnenklimaat monitoring- en regelsysteem - Ajarnpa
Raspberry Pi binnenklimaat monitoring- en regelsysteem - Ajarnpa

Video: Raspberry Pi binnenklimaat monitoring- en regelsysteem - Ajarnpa

Video: Raspberry Pi binnenklimaat monitoring- en regelsysteem - Ajarnpa
Video: ⚡ Energie besparen? Stel je Raspberry pi in als P1 Meter! 2024, November
Anonim
Raspberry Pi binnenklimaat monitoring- en regelsysteem
Raspberry Pi binnenklimaat monitoring- en regelsysteem
Raspberry Pi binnenklimaat monitoring- en regelsysteem
Raspberry Pi binnenklimaat monitoring- en regelsysteem

Mensen willen comfortabel zijn in hun huis. Omdat het klimaat in ons gebied misschien niet bij ons past, gebruiken we veel apparaten om een gezond binnenmilieu te behouden: verwarming, luchtkoeler, luchtbevochtiger, ontvochtiger, luchtreiniger, enz. Tegenwoordig is het gebruikelijk om sommige apparaten te vinden die zijn uitgerust met auto- modus om de omgeving te voelen en zichzelf te beheersen. Echter:

  • Velen van hen zijn te duur / het geld niet waard.
  • Hun elektrische circuits zijn gemakkelijker te doorbreken en moeilijker te vervangen dan conventionele mechanische onderdelen
  • De apparaten moeten worden beheerd door de app van de fabrikant. Het is gebruikelijk om een paar slimme apparaten in huis te hebben en elk heeft zijn eigen app. Hun oplossing is om de app te integreren in platforms zoals Alexa, Google Assistant en IFTTT, zodat we een "gecentraliseerde" controller hebben
  • Het belangrijkste is dat de fabrikanten onze gegevens hebben en Google/Amazon/IFTTT/etc hebben onze gegevens. Wij niet. Je geeft misschien niet om privacy, maar soms willen we allemaal kijken naar het vochtigheidspatroon van je slaapkamer, bijvoorbeeld om te beslissen wanneer we de ramen moeten openen.

In deze tutorial bouw ik een prototype van een relatief goedkope Raspberry Pi-gebaseerde binnenklimaatcontroller. De RPi communiceert met de randapparatuur via SPI/I2C/USB-interfaces:

  • Een atmosferische sensor wordt gebruikt om temperatuur, vochtigheid en luchtdruk te verzamelen.
  • Een uiterst nauwkeurige luchtkwaliteitssensor levert gegevens over atmosferische deeltjes (PM2.5 en PM10) die worden gebruikt om de luchtkwaliteitsindex (AQI) te berekenen

De controller verwerkt verkregen gegevens en activeert apparaatacties door verzoeken te verzenden naar de IFTTT Webhook-automatiseringsservice die ondersteunde WiFi Smart-stekkers bestuurt.

Het prototype is zo gebouwd dat men gemakkelijk andere sensoren, apparaten en automatiseringsdiensten kan toevoegen.

Stap 1: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

De aanbevolen hardware om dit te bouwen:

  1. Een Raspberry Pi (elke versie) met wifi. Ik bouw dit met RPi B+. RPi ZeroW zou het prima doen en kost ~15$
  2. Een BME280 sensor voor temperatuur, vochtigheid, luchtdruk ~5$
  3. Een Nova SDS011 Hoge Precisie Laser PM2.5/PM10 Luchtkwaliteit Detectie Sensor Module ~ 25 $
  4. Een LED/LCD-display. Ik gebruikte het SSD1305 2,23 inch OLED-scherm ~ 15 $
  5. Sommige WiFi/ZigBee/Z-Wave Smart Sockets. 10-20 $ per stuk
  6. Luchtreiniger, luchtbevochtiger, ontvochtiger, verwarming, koeler, etc. met mechanische schakelaars. Ik heb bijvoorbeeld een goedkope luchtreiniger gebruikt om deze tutorial te maken

De bovenstaande totale kosten zijn < 100 $, veel minder dan bijvoorbeeld een slimme luchtreiniger die gemakkelijk 200 $ zou kunnen kosten.

Stap 2: Bedrading van de Raspbery Pi

Bedrading van de Raspberry Pi
Bedrading van de Raspberry Pi

Het schakelschema laat zien hoe de RPi moet worden aangesloten op de BME280-sensor met behulp van de I2C-interface en de OLED-display HAT met behulp van de SPI-interface.

De Waveshare OLED HAT kan bovenop de GPIO worden bevestigd, maar je hebt een GPIO-splitter nodig om deze te delen met andere randapparatuur. Het kan worden geconfigureerd om I2C te gebruiken door de weerstanden aan de achterkant te solderen.

Meer informatie over de SSD1305 OLED HAT vind je hier.

Zowel I2C- als SPI-interfaces moeten in RPi worden ingeschakeld met:

sudo raspi-config

De Nova SDS011 Stofsensor wordt via een USB-poort (met een Serial-USB-adapter) op RPi aangesloten.

Stap 3: Gegevens verzamelen van de sensoren

De atmosferische gegevens, die er vrij eenvoudig uitzien, worden verzameld van de BME280-sensor uit het python-script.

21-nov-20 19:19:25 - INFO - gecompenseerde_reading(id=6e2e8de5-6bc2-4929-82ab-0c0e3ef6f2d2, tijdstempel=2020-11-21 19:19:25.604317, temp=20,956 °C, druk=1019,08 hPa, vochtigheid=49,23 % rH)

De gegevens van de stofsensor hebben wat meer verwerking nodig. De sensormodule zuigt wat luchtmonsters aan om fijnstof te detecteren, dus het moet een tijdje (30s) draaien om betrouwbare resultaten te hebben. Uit mijn observatie kijk ik alleen naar het gemiddelde van de laatste 3 monsters. Het proces is beschikbaar in dit script.

21-nov-20 19:21:07 - DEBUG - 0. PM2.5: 2.8, PM10: 5.9

21-nov-20 19:21:09 - DEBUG - 1. PM2.5: 2.9, PM10: 6.0 21-nov-20 19:21:11 - DEBUG - 2. PM2.5: 2.9, PM10: 6.0 21- nov-20 19:21:13 - DEBUG - 3. PM2.5: 2.9, PM10: 6.3 21-nov-20 19:21:15 - DEBUG - 4. PM2.5: 3.0, PM10: 6.2 21-nov- 20 19:21:17 - DEBUG - 5. PM2.5: 2.9, PM10: 6.4 21-nov-20 19:21:19 - DEBUG - 6. PM2.5: 3.0, PM10: 6.6 21-nov-20 19:21:21 - DEBUG - 7. PM2.5: 3.0, PM10: 6.8 21-nov-20 19:21:23 - DEBUG - 8. PM2.5: 3.1, PM10: 7.0 21-nov-20 19:21:25 - DEBUG - 9. PM2.5: 3.2, PM10: 7.0 21-nov-20 19:21:28 - DEBUG - 10. PM2.5: 3.2, PM10: 7.1 21-nov-20 19:21:30 - DEBUG - 11. PM2.5: 3.2, PM10: 6.9 21-Nov-20 19:21:32 - DEBUG - 12. PM2.5: 3.3, PM10: 7.0 21-Nov-20 19:21:34 - DEBUG - 13. PM2.5: 3.3, PM10: 7.1 21-nov-20 19:21:36 - DEBUG - 14. PM2.5: 3.3, PM10: 7.1

De stofsensor geeft alleen de PM2.5- en PM10-index. Om AQI te berekenen, hebben we de python-aqi-module nodig:

aqi_index = aqi.to_aqi([(aqi. POLLUTANT_PM25, dust_data[0]), (aqi. POLLUTANT_PM10, dust_data[1])])

Het verzamelen, weergeven en beheren van gegevens worden gelijktijdig en asynchroon uitgevoerd. Gegevens worden opgeslagen in een lokale database. We hoeven ze niet vaak uit te voeren als de omgeving niet te snel verandert. Voor mij is een interval van 15 minuten voldoende. Bovendien verzamelt de stofsensormodule stof binnenin, dus we moeten hem niet te veel gebruiken om de reinigingstaak te vermijden.

Stap 4: Domotica-service instellen

Domotica-service instellen
Domotica-service instellen
Domotica-service instellen
Domotica-service instellen

Er zijn veel domotica-platforms die het platform moeten installeren dat wordt ondersteund door de slimme socket die je hebt. Als het om privacy gaat, moet u uw eigen systeem opzetten. Anders kunt u de populaire platforms gebruiken die worden ondersteund door de meeste wifi-smart sockets: Google Assistant, Alexa of IFTTT. Probeer het socketplatform te selecteren met een API om mee te communiceren (Webhook is perfect voor dit doel)

Ik gebruik IFTTT in deze tutorial omdat het heel gemakkelijk te gebruiken is, zelfs voor beginners. Maar houd er rekening mee dat: 1. er veel slimme sockets zijn die IFTTT niet ondersteunen, en 2. Op het moment dat ik dit schrijf, staat IFTTT je alleen toe om gratis 3 applets (automatiseringstaken) te maken, wat slechts genoeg is voor 1 apparaat.

Dit zijn de stappen:

1. Maak twee applets in IFTTT, voor het in- en uitschakelen van het apparaat, met behulp van de Webhook-service. De details zijn hier te vinden.

2. Kopieer de API-sleutel en kopieer deze naar het python-script. Ik stel voor om het om veiligheidsredenen in een apart bestand te bewaren.

3. Definieer de besturingslogica/-parameters in het hoofdscript.

Stap 5: Resultaten

Resultaten
Resultaten
Resultaten
Resultaten
Resultaten
Resultaten
Resultaten
Resultaten

Oké, nu testen we het systeem.

Het OLED-display toont de huidige temperatuur, vochtigheid en berekende luchtkwaliteitsindex (AQI). Het geeft ook de minimum- en maximumwaarde van de afgelopen 12 uur weer.

De tijdreeksgegevens van de AQI over een paar dagen laten iets interessants zien. Let op de pieken in het AQI-patroon? Het gebeurde twee keer per dag, de kleine piek rond 12.00 uur en de hoge piek rond 19.00 uur. Nou, je raadt het al, dat was toen we kookten en veel fijnstof verspreidden. Het is interessant om te zien hoe onze dagelijkse activiteit het binnenmilieu beïnvloedt.

Ook duurde de laatste piek in het cijfer veel korter dan de vorige. dan voegen we de luchtreiniger toe aan het systeem. De RPi-klimaatcontroller verzendt PURIFIER_ON-verzoek wanneer AQI>50 en PURIFIER_OFF wanneer AQI<20. U kunt op dat moment de IFTTT Webhook-trigger zien.

Stap 6: Conclusie

Dat is het!

De verzamelde gegevens kunnen ook worden gebruikt om luchtverwarmers, koelers, (ont)bevochtigers, etc. aan te sturen. Je hoeft alleen maar meer slimme stopcontacten aan te schaffen en elk oud apparaat wordt "slim".

Als je veel apparaten wilt bedienen, moet je misschien goed nadenken welke domoticaservice je wilt gebruiken. Ik zou ten zeerste aanbevelen om een open-source domotica-platform op te zetten, maar als het te ingewikkeld is, zijn er eenvoudigere oplossingen zoals Google Assistant en IFTTT Webhook, of het gebruik van Zigbee smart sockets.

De volledige implementatie van dit prototype is te vinden in de Github-repository:

github.com/vuva/IndoorClimateControl

Veel plezier !!!

Aanbevolen: