Taula de continguts:
- Pas 1: configureu el maquinari
- Pas 2: configureu Dropbox
- Pas 3: preparació de la carpeta de l'aplicació Dropbox
- Pas 4: Introducció al codi
- Pas 5: aprofundir en el codi
- Pas 6: utilitzar els fitxers de paràmetres de Dropbox
- Pas 7: Conclusió
Vídeo: Monitorització domèstica de Raspberry Pi amb Dropbox: 7 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Aquest tutorial us mostrarà com crear un sistema de control de casa senzill i ampliable mitjançant un Raspberry Pi, una càmera web, uns quants components elèctrics i el vostre compte de Dropbox. El sistema acabat us permetrà sol·licitar i visualitzar imatges de la vostra càmera web de manera remota, mentre que també utilitzeu un sensor de temperatura digital disponible per controlar la temperatura de la vostra llar per Internet, tot mitjançant Dropbox.
Aquest va ser el primer projecte que vaig pensar després de rebre un model B. Raspberry Pi 2. El meu objectiu era crear un sistema de monitorització basat en Python que pogués controlar i rebre dades des d'Internet. Tot i que hi ha moltes maneres diferents de fer-ho, he decidit utilitzar Dropbox com a interfície entre el Pi i Internet, ja que tenen una API Python senzilla que us permet carregar, modificar i cercar fitxers en carpetes específiques amb algunes línies de codi.
També volia que la meva solució fos lleugera i senzilla i que evités embrutar el meu Pi amb biblioteques i programes innecessaris. El component de programari d’aquest projecte consisteix en un únic script Python, el que significa que podeu continuar utilitzant el vostre Pi amb normalitat, fins i tot quan el sistema de monitorització s’executa.
Per a aquest projecte necessitareu:
Un Raspberry Pi. Qualsevol model hauria de funcionar, he utilitzat un kit d’inici tot en un, però potser només necessiteu la unitat central
Una càmera web USB. Vaig comprar un ADVENT AWC72015 barat, que va funcionar bé. Pot ser una bona idea consultar aquesta llista de càmeres web que es confirma que funcionen amb el Pi. Tingueu en compte que alguns requereixen un concentrador USB alimentat (el meu funciona bé sense)
Un compte de Dropbox. Faig servir el meu compte gratuït estàndard, ja que aquest projecte no requereix gaire espai d'emmagatzematge
Un sensor de temperatura digital DS18B20 i una resistència de 4,7 k. Podeu comprar el sensor aquí i també val la pena agafar un paquet de diverses resistències
Alguns accessoris per a la construcció de circuits. Recomanaria utilitzar una placa de connexió i alguns cables de pont per facilitar el procés de construcció del circuit
[Si decidiu comprar algun d'aquests productes, us agrairia molt que accedís a les fitxes mitjançant els enllaços anteriors; d'aquesta manera obtindré una petita part dels beneficis sense cap cost addicional per a vosaltres.]
Pas 1: configureu el maquinari
El primer pas és assegurar-vos que el Pi i els perifèrics associats estiguin configurats.
En primer lloc, connecteu el vostre Pi a Internet. Això és necessari per garantir que el programa de monitorització pugui rebre les vostres sol·licituds i carregar dades a Dropbox. Utilitzo una connexió ethernet per garantir la fiabilitat, però una connexió Wi-Fi també hauria de funcionar bé, alhora que tindria l’avantatge de millorar la portabilitat. Si trieu Wi-Fi, us recomanaria aquest dongle USB per al Pi.
A continuació, connecteu la vostra càmera web al Pi connectant-la a un dels ports USB. Tot i que les instruccions de la meva càmera web d’Advent no deien explícitament que funcionaria amb Linux, tot el que havia de fer era endollar-lo i arrencar el Pi. No calia més instal·lació. La resta de càmeres web poden variar. Podeu comprovar si Linux ha detectat la vostra càmera web mitjançant l'ordre següent:
lsusb
A la imatge anterior, la meva càmera web apareix com a "0c45: 6340 Microdia"
Finalment, podeu connectar el sensor de temperatura DS18B20 a la capçalera GPIO del Pi. Utilitzo la meva taula de treball per facilitar el procés de creació de circuits i us recomanaria que feu el mateix, sobretot perquè el DS18B20 requereix que es col·loqui una resistència de 4,7 k entre dos dels seus tres pins. Aquest enllaç proporciona un bon diagrama de cablejat que mostra com es pot utilitzar una placa de connexió per connectar-se a aquest sensor de temperatura.
La següent pàgina del tutorial anterior també inclou els passos necessaris per llegir les dades del DS18B20 i us mostra com comprovar que funciona. És important realitzar aquests passos de configuració abans de poder utilitzar el DS18B20 per a aquest projecte. També integrarem el script d’exemple de Python del tutorial al nostre programa de supervisió, de manera que és possible que vulgueu fer una revisió ràpida d’aquest codi.
Tingueu en compte també el número únic del vostre DS18B20. És el número que comença amb '28 - 'que us trobeu durant el tutorial de configuració. Haureu d’introduir-lo al proper programa Python per permetre-li llegir la temperatura.
Pas 2: configureu Dropbox
Per tal que el vostre Pi interfaci amb Dropbox, heu de configurar una nova aplicació de Dropbox. Això us proporcionarà els detalls necessaris perquè el vostre Pi faci una gestió de fitxers en línia mitjançant Python. Suposant que heu creat un compte de Dropbox i heu iniciat la sessió, podeu crear una nova aplicació mitjançant l'opció de menú "Desenvolupadors". Consulteu la imatge anterior per obtenir un resum dels passos importants.
Al menú "Desenvolupadors", seleccioneu "Les meves aplicacions" i, a continuació, premeu el botó "Crea aplicació". Per emplenar el formulari resultant, seleccioneu "Dropbox API" seguit de "Carpeta d'aplicacions". Finalment, podeu triar un nom únic per a la vostra aplicació a Dropbox. Feu clic a "Crea aplicació".
A continuació, se us dirigirà a la pàgina de configuració de la vostra aplicació a Dropbox. Aquí només cal fer una altra cosa: generar-se un testimoni d'accés. Per fer-ho, desplaceu-vos cap avall fins a la secció "OAuth 2" i, a sota de "Prova d'accés generada", feu clic al botó "Generar".
Això us presentarà una llarga cadena de caràcters necessaris per accedir al vostre compte de Dropbox mitjançant Python. Anoteu aquest testimoni d’accés, ja que l’haureu d’especificar més endavant al vostre codi. Si perdeu el testimoni, podeu tornar a la configuració de l'aplicació fent clic a "Les meves aplicacions" a la secció "Desenvolupadors" de Dropbox i generar un nou testimoni.
Podeu deixar la resta de configuracions tal com són. Per confirmar que l'aplicació ha creat les carpetes necessàries al vostre compte de Dropbox, aneu a la pàgina d'inici d'emmagatzematge i cerqueu la carpeta "Aplicacions". Dins d'aquesta carpeta hi hauria d'haver una subcarpeta amb el nom que hàgiu triat per a la vostra nova aplicació. Aquí es col·locaran tots els fitxers del vostre sistema de control.
Pas 3: preparació de la carpeta de l'aplicació Dropbox
Un cop hàgiu configurat l'aplicació Dropbox, és hora de pensar com utilitzarà la carpeta resultant al vostre compte de Dropbox per interactuar amb el vostre Pi. Això s’aconsegueix de manera senzilla. L'escriptura Python que s'executarà al Pi utilitzarà un subconjunt d'ordres de l'API Dropbox per cercar i modificar els noms d'alguns fitxers buits sense extensions a la carpeta de l'aplicació. Anomenarem aquests fitxers "fitxers de paràmetres", ja que cadascun us permetrà controlar un aspecte diferent del comportament del sistema de control. La imatge superior mostra els quatre fitxers de paràmetres que han d’estar presents a la carpeta de l’aplicació Dropbox per a aquest projecte. Crear-los és senzill:
Començant per la carpeta d'aplicacions completament buida, obriu un programa d'edició de text a l'ordinador. Tot i que això es podria fer amb el Pi, em va semblar més fàcil utilitzar el portàtil Windows per a aquesta fase de configuració. Un cop obert l’editor de text (he utilitzat el Bloc de notes al Windows 7), tot el que heu de fer és desar un fitxer de text completament buit a qualsevol lloc de l’ordinador. Com a primer exemple, crearem el primer paràmetre a la imatge de capçalera. Anomeneu el fitxer "delay = 10" quan el deseu.
Per resumir, ara hauríeu de tenir un fitxer de text buit emmagatzemat a l'ordinador amb el nom "delay = 10". El fitxer també tindrà una extensió ".txt" que pot ser visible o no.
El següent pas és carregar aquest fitxer a la carpeta de l'aplicació Dropbox. Això és com qualsevol altra càrrega de Dropbox. Només cal que aneu a la carpeta de l'aplicació, feu clic a "Puja" i trieu el fitxer "delay = 10".
Quan s'hagi carregat aquest fitxer, heu d'eliminar l'extensió ".txt" que ara hauria de ser visible al nom del fitxer. Per fer-ho, feu clic dret al fitxer i seleccioneu "Canvia el nom". Elimineu la part ".txt" del nom del fitxer. Ara us hauria de quedar un fitxer anomenat "delay = 10" sense extensió de fitxer, tal com es mostra a la imatge de la capçalera.
El fitxer de paràmetres "delay" és un dels quatre que utilitzarà el programa de supervisió. Per crear els altres, només podeu copiar i canviar el nom del fitxer "endarreriment" fent clic dret sobre ell. Un cop hàgiu creat tres còpies, anomeneu-les com es mostra a la imatge de capçalera de manera que la carpeta de l'aplicació sigui idèntica a la que es mostra al començament d'aquest pas.
Pas 4: Introducció al codi
Com es va comentar, el nucli del nostre sistema de monitorització consistirà en un únic script Python que interactuarà amb Dropbox. Per tal que el programa de monitorització estigui actiu, aquest script haurà d’executar-se en segon pla al vostre Pi. Suposo que es descriu amb més precisió com un script "dimoni", és a dir, només podeu configurar-lo en execució i oblidar-se'n. El guió s’adjunta a aquest pas, de manera que no té sentit repetir el codi aquí. Ara pot ser un bon moment per descarregar-lo i familiaritzar-vos amb ell.
Abans de poder executar l'script, és important assegurar-vos que tingueu instal·lades les biblioteques Python corresponents. Els que necessiteu apareixen a la part superior de l'script adjunt. Ells són:
caixa d'importació d'importació
import pygame.camera importació temps d'importació
La instal·lació de Python al meu Pi ja incloïa pygame, sistema operatiu i temps, de manera que l’únic que havia d’instal·lar era Dropbox. Ho vaig fer amb les seves senzilles instruccions d'instal·lació amb pip.
Un cop configurades les vostres biblioteques, haureu d'editar les dues línies superiors de l'script adjunt perquè coincideixin amb el vostre testimoni d'accés Dropbox i l'identificador únic del sensor de temperatura DS18B20. Aquestes són les dues línies que cal editar:
APP_ACCESS_TOKEN = '**********'
THERMOMETER_FILE = '/ sys / bus / w1 / devices / 28 - ********** / w1_slave'
Simplement substituïu els **** s pels valors correctes. En aquest moment, ja esteu preparats per començar a utilitzar el programa de supervisió. En lloc de saltar, us recomanaria que continueu amb el següent pas per obtenir una visió general del codi.
IMPORTANT: quan executeu aquest script, voleu que s’executi en segon pla de manera que a) pugueu continuar utilitzant el Pi ib) quan tanqueu la sessió SSH, el script continuarà executant-se. Aquesta és l'ordre que faig servir quan executo l'script:
nohup python DropCamTherm.py &
Això realitza tres coses: executarà l'script ('python DropCamTherm.py'), retornarà el control a la línia d'ordres immediatament perquè pugui continuar utilitzant el Pi ('&') i enviarà sortides Python que normalment es mostra a la línia d'ordres en un fitxer anomenat 'nohup.out'. Es pot llegir mitjançant un editor de text de Linux (el que més m’agrada és nano) i es crearà automàticament al directori des d’on s’executa el script.
Pas 5: aprofundir en el codi
Quan obriu l'script, notareu que consta de tres funcions juntament amb un bloc de codi que implementa aquestes funcions quan s'executa l'script. Les funcions utilitzen l'API Dropbox i accedeixen al fitxer de registre de temperatura del DS18B20 per escoltar les ordres de Dropbox i penjar la lectura de temperatura més recent. A continuació es presenta una visió general de què fan les funcions i de com s’utilitzen per fer funcionar el sistema de control:
- poll_parameter ():
Aquesta funció mostra l'objectiu dels fitxers de paràmetres Dropbox que hem creat al pas 3. Cerca a la carpeta de l'aplicació Dropbox un fitxer que contingui el text "param =". A continuació, extreu el text després del símbol '=' i intenta convertir-lo en un enter. Podeu veure que això ens permet controlar el programa afegint manualment els números rellevants al final dels fitxers de paràmetres. El següent pas contindrà un breu manual d'instruccions que us mostrarà com utilitzar cadascun dels fitxers de paràmetres per controlar un aspecte del programa.
- set_parameter ():
Aquesta funció permet al programa canviar el nom d'un fitxer de paràmetres des de Python. Ho fa en algunes ocasions, principalment per reduir la necessitat d’un canvi de nom manual excessiu dels fitxers.
- set_latest_temp ():
Aquesta funció fa servir set_parameter () per carregar la temperatura més recent a la carpeta de l'aplicació Dropbox afegint-la al fitxer de paràmetres "temperatura". La funció llegeix la temperatura més recent del fitxer de registre del DS18B20 (que està disponible a Linux al camí indicat per la variable THERMOMETER_FILE).
La part final del programa conté el codi que s'executarà quan s'executi l'script. Després d’alguns passos de configuració necessaris per al sensor DS18B20, obre una sessió de Dropbox mitjançant el vostre testimoni d’accés i utilitza pygame per cercar la vostra càmera web. Si es troba una càmera web, entrarà en un bucle on utilitza poll_parameter () per extreure informació de Dropbox i actuar-hi.
IMPORTANT: notareu la següent línia de codi:
cam = pygame.camera. Camera (cam_list [0], (864, 480))
… això intenta crear una interfície de càmera utilitzable des de la primera càmera web que detecta pygame. És possible que hagueu de canviar la resolució perquè coincideixi amb la vostra càmera web. Experimenteu amb diversos valors per trobar el que funciona millor.
Pas 6: utilitzar els fitxers de paràmetres de Dropbox
Per tant, ara hauríeu de tenir un script de treball que, quan s’executi seguint les instruccions del pas 4, permeti al vostre Pi començar a supervisar la carpeta de l’aplicació de les vostres entrades. Durant la primera execució, la carpeta de l'aplicació ha de contenir els fitxers de paràmetres següents:
retard = 10
exitprogram = 0 imagerequest = 0 temperature = 0
La interacció amb el programa s’aconsegueix canviant manualment els fitxers de paràmetres mitjançant Dropbox. Per fer-ho, feu clic amb el botó dret en un dels fitxers i seleccioneu "canvia el nom". Cada fitxer de paràmetres té una funció diferent:
- retard:
Aquest fitxer indica al programa de monitorització quants segons cal esperar entre cada iteració del bucle de monitorització. Quan sé que no interactuaré gaire amb el programa, el defineixo a 60 o 120. Quan sé que vull sol·licitar dades del Pi sovint, el defineixo a 10.
- programa de sortida:
S'ha d'establir a 1 o 0. Si el programa detecta que està establert a 1, acabarà l'script. Si l'establiu a 1 i l'script surt, haureu d'iniciar sessió de nou al Pi per iniciar la còpia de seguretat. Aquest paràmetre existeix perquè pugueu finalitzar amb gràcia el programa de monitorització quan ja no necessiteu que s'executi (per exemple, si heu tornat a casa i ja no voleu controlar la càmera web de forma remota).
- sol·licitud d'imatge:
Aquest és potser el paràmetre més important. S'hauria d'establir a 1 o 0. Si el programa detecta que està establert a 1, sol·licitarà una imatge de la càmera web i la penjarà a la carpeta de l'aplicació (amb el títol "imatge.jpg"). Si existeix una altra imatge.jpg, la sobreescriurà.
- temperatura:
Aquesta és la lectura de temperatura DS18B20 establerta per la funció set_latest_temp (). Mai no haureu d’editar aquest fitxer de paràmetres: el programa el defineix automàticament.
Tingueu en compte que si configureu "exitprogram" o "imagerequest" a 1, el programa els tornarà automàticament a 0 abans d'executar el codi corresponent. Això és per comoditat. També podeu notar que el codi conté molts blocs 'try' i 'exceptuant' que envolten moltes de les funcions crítiques. Això és per garantir que l'script no generi excepcions (i, per tant, deixi d'executar-se) si alguna cosa surt malament (com ara un problema de connectivitat a Internet que impedeix l'accés a Dropbox).
Pas 7: Conclusió
Aquest projecte ha presentat una manera de controlar un Raspberry Pi mitjançant Python i Dropbox. Tot i que el maquinari utilitzat en aquest projecte és un sensor de temperatura i una càmera web USB, hi ha moltes altres aplicacions per a aquest mètode de control del Pi. De fet, qualsevol component de maquinari accessible mitjançant GPIO es pot controlar mitjançant una estructura de programa similar, cosa que fa que el sistema sigui molt fàcil d’ampliar.
Com a pas següent, també podeu utilitzar una biblioteca GUI com Tkinter juntament amb l’API Dropbox per crear un programa client que us permeti modificar els fitxers de paràmetres sense necessitat d’iniciar sessió a Dropbox.
Espero que aquest tutorial hagi estat clar i, si teniu alguna pregunta o voleu que us aclareixi alguna cosa, envieu un comentari.
Recomanat:
Monitorització GPS amb projecte de pantalla OLED: 5 passos (amb imatges)
Supervisió GPS amb projecte de pantalla OLED: Hola a tothom, en aquest ràpid article compartiré amb vosaltres el meu projecte: mòdul GPS ATGM332D amb microcontrolador SAMD21J18 i pantalla SSD1306 OLED 128 * 64, he construït un PCB especial a Eagle Autodesk i el programa utilitzant Atmel studio 7.0 i ASF
Rellotge independent Arduino 3,3 V amb relleu extern de 8 MHz programat des d’Arduino Uno mitjançant ICSP / ISP (amb monitorització en sèrie!): 4 passos
Arduino autònom de 3,3 V amb rellotge extern de 8 MHz programat des d’Arduino Uno a través d’ICSP / ISP (amb supervisió en sèrie!): Objectius: Construir un Arduino autònom que funcioni a 3,3 V des d’un rellotge extern de 8 MHz. Programar-lo mitjançant ISP (també conegut com ICSP, programació sèrie en circuit) des d’un Arduino Uno (que funciona a 5 V). Editeu el fitxer del carregador d’arrencada i graveu
Monitorització de la qualitat de l'aire amb DSM501A amb Nokia LCD: 7 passos
Supervisió de la qualitat de l'aire amb DSM501A amb Nokia LCD: Hola amics! En aquest breu instructiu us mostraré com controlar la qualitat de l'aire a casa vostra o a qualsevol lloc. És molt fàcil muntar aquesta estació de control de qualitat de l'aire de preu
Seguretat domèstica amb Raspberry Pi: 6 passos (amb imatges)
Seguretat domèstica amb Raspberry Pi: aquesta és una solució senzilla que us pot fer sentir més relaxat quan sortiu del vostre apartament: rebreu correus electrònics amb imatges de la vostra propietat visitades per hostes no desitjats, armeu i desactiveu el sistema de seguretat de la manera més fàcil i fiable ( premeu
Sistema de monitorització de plantes IoT (amb plataforma IBM IoT): 11 passos (amb imatges)
Sistema de monitorització de plantes IoT (amb la plataforma IBM IoT): visió general El sistema de monitorització de plantes (PMS) és una aplicació creada per a persones que pertanyen a la classe treballadora amb un polze verd en ment. Avui en dia, les persones que treballen estan més ocupades que mai; avançar en la seva carrera professional i gestionar les seves finances