Inhoudsopgave:

Vochtigheid in de cloud: 5 stappen
Vochtigheid in de cloud: 5 stappen

Video: Vochtigheid in de cloud: 5 stappen

Video: Vochtigheid in de cloud: 5 stappen
Video: Zouten en hygroscopische vochtigheid 2024, November
Anonim
Vochtigheid in de cloud
Vochtigheid in de cloud

De zomer komt eraan en mensen zonder airconditioning moeten erop voorbereid zijn om de atmosfeer binnenshuis handmatig te regelen. In deze post beschrijf ik de moderne manier om de belangrijkste parameters voor menselijk comfort te meten: temperatuur en vochtigheid. Deze verzamelde data wordt naar de cloud gestuurd en daar verwerkt.

Benodigdheden

Ik gebruik een Raspberry Pi-bord en de DHT22-sensor. U kunt hetzelfde doen op elke computer met internet, GPIO en Python. De goedkopere DHT11-sensor werkt ook prima.

Stap 1: Hardware voorbereiden

Hardware voorbereiden
Hardware voorbereiden
Hardware voorbereiden
Hardware voorbereiden
Hardware voorbereiden
Hardware voorbereiden
Hardware voorbereiden
Hardware voorbereiden

Laten we bij het begin beginnen, want ik heb mijn Raspberry Pi al heel lang niet meer gebruikt.

Wij hebben nodig:

  • Raspberry Pi-bord (of ander IoT-georiënteerd platform).
  • SD- of microSD-kaart (afhankelijk van het platform).
  • 5V/1A via micro-USB. LAN-kabel, die voor de internetverbinding zorgt.
  • HDMI-scherm, RCA-scherm of UART-poort (om SSH in te schakelen).

De allereerste stap is het downloaden van Raspbian. Ik heb de Lite-versie gekozen, omdat ik SSH ga gebruiken in plaats van display.

Dingen zijn veranderd sinds de laatste keer dat ik het deed: nu is er een geweldige brandsoftware genaamd Etcher, die perfect werkt en een verbluffend ontwerp heeft.

Nadat het branden van de afbeelding was voltooid, heb ik de SD-kaart in mijn Pi gestoken, de LAN- en stroomkabels aangesloten en na een tijdje registreerde mijn router het nieuwe apparaat.

Super goed! Laten we doorgaan en SSH erin opnemen.

Beveiliging is OK, ik vind het leuk, maar dit maakt het een beetje moeilijker. Ik gebruik de UART-USB-adapter om toegang te krijgen tot de shell en SSH in te schakelen …

Het gebruik van een display in plaats van UART maakt het veel gemakkelijker.

Na opnieuw opstarten ben ik eindelijk binnen.

Laten we eerst eens updaten:

sudo apt update && sudo apt upgrade -y

Laten we dit nieuwe apparaat nu verbinden met de cloud.

Stap 2: Cloud4RPi installeren

Cloud4RPi installeren
Cloud4RPi installeren

Ik besloot het cloudplatform Cloud4RPi te proberen, dat is ontworpen voor IoT.

Volgens de documenten hebben we de volgende pakketten nodig om het te laten werken:

sudo apt install git python3 python3-pip -y

De clientbibliotheek kan in één opdracht worden geïnstalleerd:

sudo pip3 installeer cloud4rpi

Nu hebben we wat voorbeeldcode nodig.

git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python && cd cloud4rpi-raspberrypi-python

Het uitvoerbare script is control.py.

We hebben een token nodig, waarmee Cloud4RPi de apparaten aan de accounts kan koppelen. Om er een te krijgen, maakt u een account aan op cloud4rpi.io en klikt u op de knop Nieuw apparaat op deze pagina. Vervang de tekenreeks _YOUR_DEVICE_TOKEN_ in het control.py-bestand door de token van uw apparaat en sla het bestand op. Nu zijn we klaar voor de eerste lancering.

sudo python3 control.py

Open de apparaatpagina en controleer of de gegevens aanwezig zijn.

Laten we nu overgaan op gegevens uit de echte wereld.

Stap 3: De sensor aansluiten

De sensor aansluiten
De sensor aansluiten

Wij hebben nodig:

  • DHT22 of DHT11 vochtigheidssensor
  • Optrekweerstand (5-10 KΩ)
  • DradenDe

DHT22-sensor meet tegelijkertijd temperatuur en vochtigheid. Het communicatieprotocol is niet gestandaardiseerd, dus we hoeven het niet in raspi-config in te schakelen - een simpele GPIO-pin is meer dan genoeg.

Om de gegevens te verkrijgen, zal ik de geweldige bibliotheek van Adafruit voor DHT-sensoren gebruiken, maar het kan zijn dat het niet werkt zoals het is. Ik heb ooit een vreemde constante vertraging in de code gevonden, die niet werkte voor mijn hardware, en na twee jaar is mijn pull-verzoek nog steeds in behandeling. Ik heb ook de detectieconstanten van het bord gewijzigd omdat mijn Raspberry Pi 1 met BCM2835 verrassend genoeg werd gedetecteerd als Raspberry Pi 3. Ik wou dat het waar was … Daarom raad ik aan om mijn vork te gebruiken. Als je er problemen mee hebt, probeer dan de originele repository, misschien werkt het voor iemand, maar ik ben niet een van hen.

git kloon https://github.com/Himura2la/Adafruit_Python_DHT.gitcd Adafruit_Python_DHT

Omdat de bibliotheek in C is geschreven, moet deze worden gecompileerd, dus je hebt de build-essentiële en python-dev-pakketten nodig.

sudo apt install build-essentiële python-dev -ysudo python setup.py install

Terwijl de pakketten worden geïnstalleerd, sluit u de DHT22 aan zoals weergegeven in de afbeelding.

En test het:

cd ~python -c "importeer Adafruit_DHT als d; print d.read_retry(d. DHT22, 4)"

Als je iets ziet als (39.20000076293945, 22.600000381469727), moet je weten dat dit de vochtigheid in procenten en de temperatuur in Celsius is.

Laten we nu alles samenvoegen!

Stap 4: Sensormetingen naar de cloud verzenden

Sensormetingen naar de cloud verzenden
Sensormetingen naar de cloud verzenden
Sensormetingen naar de cloud verzenden
Sensormetingen naar de cloud verzenden

Ik gebruik de control.py als basis en voeg de DHT22-interactie eraan toe.

cp cloud4rpi-raspberrypi-python/control.py./cloud_dht22.pycp cloud4rpi-raspberrypi-python/rpi.py./rpi.pyvi cloud_dht22.py

Verwijder de voorbeeldcode zoals in de afbeelding hierboven.

Omdat DHT22 zowel de temperatuur als de vochtigheid in een enkele oproep retourneert, ga ik ze wereldwijd opslaan en slechts één keer bijwerken in een verzoek, ervan uitgaande dat de vertraging ertussen meer dan 10 seconden is. Overweeg de volgende code, die de DHT22-gegevens verwerft:

importeer Adafruit_DHT

temp, brom = Geen, Geen

last_update = tijd.tijd() - 20

def update_data():

global last_update, brom, temp if time.time() - last_update > 10: brom, temp = Adafruit_DHT.read_retry(Adafruit_DHT. DHT22, 4) last_update = time.time()

def get_t():

update_data() return round(temp, 2) als temp niet Geen anders is Geen def get_h(): update_data() return round(hum, 2) als brom niet is Geen anders Geen

Voeg deze code in na de bestaande import en bewerk de variabelensectie zodat deze de nieuwe functies gebruikt:

variabelen = { 'DHT22 Temp': { 'type': 'numeric', 'bind': get_t }, 'DHT22 Humidity': { 'type': 'numeric', 'bind': get_h }, 'CPU Temp': { 'type': 'numeriek', 'bind': cpu_temp } }

Als je die manipulaties verwarrend vindt, pak dan de definitieve versie van dit bestand. Druk op de rode knop om de gegevensoverdracht te starten:

Dan kun je kijken op de apparaatpagina.

python3 cloud_dht22.py

Dan kunt u de apparaatpagina bekijken.

Je kunt het laten zoals het is, maar ik heb liever een service voor alles. Dit zorgt ervoor dat het script altijd actief is. Een service maken met het volledig geautomatiseerde script dat u al in de directory cloud4rpi-raspberrypi-python heeft:

service_install.sh cloud_dht22.py

De dienst starten:

sudo-service cloud4rpi start

En het controleren:

pi@raspberrypi:~ $ sudo-service cloud4rpi-status -l● cloud4rpi.service - Cloud4RPi-daemon Geladen: geladen (/lib/systemd/system/cloud4rpi.service; ingeschakeld) Actief: actief (actief) sinds wo 17-05-2017 20:22:48 GMT; 1min geleden Hoofd-PID: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 /usr/bin/python /home/pi/cloud_dht22.py

17 mei 20:22:51 raspberrypi python[560]: iot-hub/messages publiceren: {'type': 'config', 'ts': '2017-05-17T20…y'}]}

17 mei 20:22:53 raspberrypi python[560]: iot-hub/messages publiceren: {'type': 'data', 'ts': '2017-05-17T20:2…40'}} 17 mei 20: 22:53 raspberrypi python[560]: iot-hub/messages publiceren: {'type': 'system', 'ts': '2017-05-17T20….4'}}

Als alles werkt zoals verwacht, kunnen we doorgaan en de mogelijkheden van het Cloud4RPi-platform gebruiken om met de gegevens te manipuleren.

Stap 5: Grafieken en alarmen

Grafieken en alarmen
Grafieken en alarmen
Grafieken en alarmen
Grafieken en alarmen
Grafieken en alarmen
Grafieken en alarmen

Laten we eerst de variabelen plotten om te zien hoe ze veranderen. Dit kan door een nieuw Control Panel toe te voegen en de benodigde grafieken erin te plaatsen.

Een ander ding dat we hier kunnen doen, is een waarschuwing instellen. Met deze functie kunt u het veilige bereik voor een variabele configureren. Zodra het bereik wordt overschreden, stuurt het een e-mailmelding. Op de bewerkingspagina van het Configuratiescherm kunt u overschakelen naar Waarschuwingen en er een instellen.

Meteen daarna begon de luchtvochtigheid in mijn kamer snel te dalen zonder merkbare reden, en al snel volgde het alarm.

Je kunt Cloud4RPi gratis gebruiken met alle hardware die Python kan uitvoeren. Wat mij betreft, ik weet nu altijd wanneer ik de luchtbevochtiger moet inschakelen en ik kan hem zelfs aansluiten op een relais voor afstandsbediening via Cloud4RPi. Ik ben voorbereid op de hitte! Welkom zomer!

Met Cloud4RPi kunt u uw Raspberry Pi en andere IoT-apparaten in realtime op afstand bedienen. Bezoek onze site en sluit gratis onbeperkt apparaten aan.

Aanbevolen: