Sommario:

Umidità nel cloud: 5 passaggi
Umidità nel cloud: 5 passaggi

Video: Umidità nel cloud: 5 passaggi

Video: Umidità nel cloud: 5 passaggi
Video: Guida a iCloud: foto, gestione spazio e domande frequenti 2024, Luglio
Anonim
Umidità nella nuvola
Umidità nella nuvola

L'estate sta arrivando e chi non ha un condizionatore d'aria dovrebbe essere pronto a controllare manualmente l'atmosfera all'interno. In questo post descrivo il modo moderno di misurare i parametri più importanti per il comfort umano: temperatura e umidità. Questi dati raccolti vengono inviati al cloud e lì elaborati.

Forniture

Sto usando una scheda Raspberry Pi e il sensore DHT22. Puoi fare lo stesso su qualsiasi computer dotato di Internet, GPIO e Python. Anche il sensore DHT11 più economico funziona bene.

Passaggio 1: preparazione dell'hardware

Preparazione dell'hardware
Preparazione dell'hardware
Preparazione dell'hardware
Preparazione dell'hardware
Preparazione dell'hardware
Preparazione dell'hardware
Preparazione dell'hardware
Preparazione dell'hardware

Cominciamo dall'inizio, dato che non usavo il mio Raspberry Pi da molto tempo.

Avremo bisogno:

  • Scheda Raspberry Pi (o altra piattaforma orientata all'IoT).
  • Scheda SD o microSD (a seconda della piattaforma).
  • 5V/1A tramite cavo micro-USB. LAN, che fornisce la connessione Internet.
  • Display HDMI, display RCA o porta UART (per abilitare SSH).

Il primo passo è scaricare Raspbian. Ho scelto la versione Lite, poiché utilizzerò SSH invece del display.

Le cose sono cambiate dall'ultima volta che l'ho fatto: ora c'è un ottimo software di masterizzazione chiamato Etcher, che funziona perfettamente e ha un design straordinario.

Dopo che la masterizzazione dell'immagine è stata completata, ho inserito la scheda SD nel mio Pi, collegato la LAN e i cavi di alimentazione e, dopo un po', il mio router ha registrato il nuovo dispositivo.

Grande! Andiamo avanti e SSH dentro.

La sicurezza è OK, mi piace, ma questo rende le cose un po' più difficili. Userò l'adattatore UART-USB per accedere alla shell e abilitare SSH…

L'uso di un display al posto di UART lo rende molto più semplice.

Dopo il riavvio, sono finalmente entrato.

Per prima cosa, aggiorniamo:

sudo apt update && sudo apt upgrade -y

Ora colleghiamo questo nuovo dispositivo al Cloud.

Passaggio 2: installazione di Cloud4RPi

Installazione di Cloud4RPi
Installazione di Cloud4RPi

Ho deciso di provare la piattaforma cloud chiamata Cloud4RPi, progettata per IoT.

Secondo i documenti, abbiamo bisogno dei seguenti pacchetti per farlo funzionare:

sudo apt install git python3 python3-pip -y

La libreria client può essere installata con un unico comando:

sudo pip3 install cloud4rpi

Ora abbiamo bisogno di un codice di esempio.

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

Lo script eseguibile è control.py.

Abbiamo bisogno di un token, che permetta a Cloud4RPi di collegare i dispositivi con gli account. Per ottenerne uno, crea un account su cloud4rpi.io e premi il pulsante Nuovo dispositivo in questa pagina. Sostituisci la stringa _YOUR_DEVICE_TOKEN_ nel file control.py con il token del tuo dispositivo e salva il file. Ora siamo pronti per il primo lancio.

sudo python3 control.py

Apri la pagina del dispositivo e verifica che i dati siano presenti.

Passiamo ora ai dati del mondo reale.

Passaggio 3: collegamento del sensore

Collegamento del sensore
Collegamento del sensore

Avremo bisogno:

  • Sensore di umidità DHT22 o DHT11
  • Resistenza di pull-up (5-10 KΩ)
  • FiliIl

Il sensore DHT22 misura contemporaneamente temperatura e umidità. Il protocollo di comunicazione non è standardizzato, quindi non è necessario abilitarlo in raspi-config: un semplice pin GPIO è più che sufficiente.

Per acquisire i dati, utilizzerò la fantastica libreria di Adafruit per i sensori DHT, ma potrebbe non funzionare così com'è. Una volta ho riscontrato uno strano ritardo costante nel codice, che non funzionava per il mio hardware, e dopo due anni la mia richiesta di pull è ancora in sospeso. Ho anche cambiato le costanti di rilevamento della scheda perché il mio Raspberry Pi 1 con BCM2835 è stato sorprendentemente rilevato come Raspberry Pi 3. Vorrei che fosse vero… Pertanto, consiglio di utilizzare il fork. Se riscontri problemi con esso, prova il repository originale, forse funziona per qualcuno, ma io non sono uno di loro.

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

Poiché la libreria è scritta in C, richiede la compilazione, quindi sono necessari i pacchetti build-essential e python-dev.

sudo apt install build-essential python-dev -ysudo python setup.py install

Durante l'installazione dei pacchetti, collegare il DHT22 come mostrato nell'immagine.

E prova:

cd ~python -c "importa Adafruit_DHT come d; stampa d.read_retry(d. DHT22, 4)"

Se vedi qualcosa come (39.2000076293945, 22.600000381469727), dovresti sapere che questa è l'umidità in percentuale e la temperatura in Celsius.

Ora, assembliamo tutto insieme!

Passaggio 4: invio delle letture del sensore al cloud

Invio delle letture del sensore al cloud
Invio delle letture del sensore al cloud
Invio delle letture del sensore al cloud
Invio delle letture del sensore al cloud

Userò control.py come base e aggiungerò l'interazione DHT22 al suo interno.

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

Rimuovi il codice di esempio come nell'immagine sopra.

Poiché DHT22 restituisce sia la temperatura che l'umidità in una singola chiamata, li memorizzerò globalmente e li aggiornerò solo una volta in una richiesta, supponendo che il ritardo tra di loro sia superiore a 10 secondi. Considera il seguente codice, che acquisisce i dati DHT22:

import Adafruit_DHT

temperatura, ronzio = nessuno, nessuno

last_update = time.time() - 20

def update_data():

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

def get_t():

update_data() return round(temp, 2) se temp non è Nessuno else Nessuno def get_h(): update_data() return round(hum, 2) se hum non è Nessuno else Nessuno

Inserisci questo codice dopo le importazioni esistenti e modifica la sezione delle variabili in modo che utilizzi le nuove funzioni:

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

Se trovi che le manipolazioni confondono, prendi la versione finale di questo file. Premi il pulsante rosso per avviare il trasferimento dei dati:

Quindi puoi controllare la pagina del dispositivo.

python3 cloud_dht22.py

Quindi puoi controllare la pagina del dispositivo.

Puoi lasciarlo così com'è, ma preferisco avere un servizio per tutto. Ciò garantisce che lo script sia sempre in esecuzione. Creazione di un servizio con lo script completamente automatizzato che hai già nella directory cloud4rpi-raspberrypi-python:

service_install.sh cloud_dht22.py

Avvio del servizio:

sudo service cloud4rpi start

E controllandolo:

pi@raspberrypi:~ $ sudo service cloud4rpi status -l● cloud4rpi.service - demone Cloud4RPi Caricato: caricato (/lib/systemd/system/cloud4rpi.service; abilitato) Attivo: attivo (in esecuzione) da Mer 2017-05-17 20:22:48 UTC; 1min fa PID principale: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 /usr/bin/python /home/pi/cloud_dht22.py

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

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

Se tutto funziona come previsto, possiamo andare avanti e utilizzare le capacità della piattaforma Cloud4RPi per manipolare i dati.

Passaggio 5: grafici e allarmi

Grafici e allarmi
Grafici e allarmi
Grafici e allarmi
Grafici e allarmi
Grafici e allarmi
Grafici e allarmi

Prima di tutto, tracciamo le variabili per vedere come cambiano. Questo può essere fatto aggiungendo un nuovo pannello di controllo e inserendo i grafici richiesti al suo interno.

Un'altra cosa che possiamo fare qui è impostare un avviso. Questa funzione consente di configurare l'intervallo di sicurezza per una variabile. Non appena l'intervallo viene superato, invia una notifica e-mail. Nella pagina di modifica del Pannello di controllo, puoi passare ad Avvisi e configurarne uno.

Subito dopo, l'umidità nella mia stanza ha iniziato a diminuire rapidamente senza alcun motivo evidente e l'allarme è arrivato presto.

Puoi utilizzare Cloud4RPi gratuitamente con qualsiasi hardware in grado di eseguire Python. Per quanto mi riguarda, ora so sempre quando accendere l'umidificatore e posso persino collegarlo a un relè per il controllo remoto tramite Cloud4RPi. Sono pronto per il caldo! Benvenuta estate!

Con Cloud4RPi, puoi controllare il tuo Raspberry Pi e altri dispositivi IoT da remoto in tempo reale. Visita il nostro sito e connetti un numero illimitato di dispositivi gratuitamente.

Consigliato: