Taula de continguts:
- Pas 1: control de la temperatura
- Pas 2: Configuració de Cloud4Rpi.io
- Pas 3: supervisió del SAI
- Pas 4: Preparació per a la "producció"
- Pas 5: Configuració d'un tauler de control
Vídeo: Monitorització de casa DIY amb RaspberryPi i Cloud4Rpi: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
Un cap de setmana d’hivern vaig anar a la meva casa de camp i em vaig assabentar que allà feia molt de fred. Alguna cosa havia passat amb l’electricitat i l’interruptor RCD l’havia apagat i la calefacció també es va apagar. Vaig tenir la sort d'arribar-hi, en cas contrari en diversos dies tot hauria estat congelat, cosa que és molt dolent per a les canonades i els radiadors.
Tenia diversos Raspberry Pi al voltant i un sensor tèrmic, així que vaig pensar: per què no faig un simple dispositiu de control? Les instruccions següents suposen que teniu configurat un Raspberry Pi amb Raspbian i una connexió de xarxa. En el meu cas, es tracta de Raspberry Pi B + amb Raspbian (2018-06-27-raspbian-stretch-lite).
Pas 1: control de la temperatura
Com connectar un sensor de temperatura DS18B20? Només cal que feu google com fer-ho i veureu moltes imatges com aquesta:
En el meu cas tenia cables negres, grocs i vermells. El negre està connectat a terra, passa al pin de terra, el vermell és alimentat (passa a pin de 3,3 v i el groc és dades) hauria d’anar al pin GPIO4, amb una resistència de 4,7 kOm connectada entre dades i alimentació. Tingueu en compte que podeu connectar diversos sensors en paral·lel (són digitals i tenen adreces diferents), només necessiteu una resistència. Després de connectar el sensor, heu d’habilitar 1Wire al raspi-config:
sudo raspi-config
Aneu a 5 opcions d’interfície, activeu P7 1-Wire i reinicieu.
A continuació, podeu provar si podeu veure el sensor:
sudo modprobe w1-gpiosudo modprobe w1-thermls / sys / bus / w1 / devices /
Hauríeu de veure alguna cosa així:
pi @ vcontrol: ~ $ ls / sys / bus / w1 / devices / 28–00044eae2dff w1_bus_master1
28–00044eae2dff és el nostre sensor de temperatura.
El maquinari està a punt. Ara he de configurar la part de supervisió. Necessito alguna cosa que em mostri les dades i em notifiqui si el dispositiu està desconnectat durant un temps o si no hi ha alimentació o la temperatura és baixa. Viouslybviament, això no pot ser el mateix raspberry pi, hi hauria d’haver algun servidor o servei a Internet que supervisi el meu dispositiu.
Puc crear un servidor senzill, obtenir un allotjament i configurar-ho tot, però de veritat, no vull. Per sort, algú ja hi ha pensat i ha creat cloud4rpi.io, un tauler de control del núvol per al vostre dispositiu.
Pas 2: Configuració de Cloud4Rpi.io
Cloud4Rpi proporciona un servei que permet al vostre dispositiu enviar i rebre dades mitjançant protocols MQTT o HTTP. Tenen una biblioteca client per a Python, així que faré servir Python.
Els exemples de Python que inclou el servei Cloud4Rpi ja contenen codi per al sensor de temperatura DS18B20.
Així que vaig anar a https://cloud4rpi.io, vaig crear un compte i hi vaig afegir un dispositiu nou. La pàgina del dispositiu té un testimoni: una cadena que identifica el dispositiu i que s’hauria d’especificar al programa que envia dades.
Per començar, sempre és una bona idea actualitzar un gestor de paquets i actualitzar els paquets (nota: pot trigar hores si no l’heu actualitzat durant un temps):
sudo apt-get update && sudo apt-get upgrade
A continuació, instal·leu git, Python i el seu gestor de paquets Pip:
sudo apt-get install git python python-pip
A continuació, instal·leu la biblioteca Python cloud4rpi:
sudo pip instal·la cloud4rpi
Finalment, estic preparat per escriure el meu programa de control. Començo de l'exemple disponible a
git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
El fitxer principal del programa és control.py: he de modificar-lo segons les meves necessitats. Primer, editeu el programa i enganxeu un testimoni:
sudo nano control.py
Cerqueu una línia DEVICE_TOKEN = '…'] i especifiqueu-hi un testimoni de dispositiu. Després, simplement puc executar el programa: Funciona i informa de la temperatura de la variable RoomTemp:
sudo python control.py
Funciona i informa d'una temperatura a la variable RoomTemp.
Tingueu en compte que descobreix tots els sensors onewire ds18b20
ds_sensors = ds18b20. DS18B20.find_all ()
i utilitza el primer sensor trobat:
RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] if ds_sensors else None}
D’acord, va ser fàcil, perquè el programa d’exemple té tot el necessari per treballar amb el sensor ds18b20 a Raspberry Pi. Ara he de trobar la manera d'informar de l'estat de la potència.
Pas 3: supervisió del SAI
El següent que vull controlar és l'estat del SAI, de manera que si hi ha un tall de corrent, ho sabré abans que tot es desconnecti.
Tinc un SAI APC amb control USB, així que vaig buscar ràpidament a Google i vaig trobar que necessitava apcupsd. https://www.anites.com/2013/09/monitoring-ups.html… Vaig provar diverses vegades d'instal·lar-lo mitjançant apt-get i no funcionava per a mi per diversos motius. Mostraré com instal·lar-lo des de les fonts.
wget https://sourceforge.net/projects/apcupsd/files/ap…tar xvf apcupsd-3.14.14.tar.gz cd apcupsd-3.14.14./configure --enable-usb sudo make sudo make install
Després edito apcupsd.conf per connectar-me al meu SAI mitjançant usb.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb # #UPSTYPE apcsmart #DEVICE / dev / ttyS0 UPSTYPE usb DEVICE
Ara puc connectar el cable USB de l'UPS a RaspberryPi i provar si es trobaria l'UPS.
sudo apctest
No us ha de donar cap missatge d'error.
Ara s'hauria d'iniciar sevice apcupsd:
sudo systemctl iniciar apcupsd
Per consultar l'estat del SAI, puc utilitzar una ordre d'estat:
estat sudo /etc/init.d/apcupsd
I sortiria alguna cosa així:
APC: 001, 035, 0855 DATA: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSIÓ: 3.14.14 (31 de maig de 2016) debian UPSNAME: vcontrol CABLE: Cable USB DRIVER: USB UPS Driver UPSMODE: Stand Alone HORA D'INICI: 2018-10-14 16:54:28 +0300 MODEL: Còpia de seguretat UPS XS 650CI ESTAT: LINEV EN LÍNIA: 238,0 volts LOADPCT: 0,0 Percent BCHARGE: 100,0 Percentatge TIMELEFT: 293,3 Minuts MBATTCHG: 5 Percentatge MINTIMEL: 3 Minuts MÀXIMA: 0 segons SENSE: Mitjà LOTRANS: 140,0 volts HITRANS: 300,0 volts ALARMDEL: 30 segons BATTV: 14,2 volts LASTXFER: No hi ha transferències des del turnó NUMXFERS: 0 TONBATT: 0 segons CUMONBATT: 0 segons XOFFBATT: N / A STATFLAG: 0x0500: 0x0500: 0x0500: 2014-06-10 NOMINV: 230 volts NOMBATTV: 12,0 volts NOMPOWER: 390 watts FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Necessito un estat, que és la línia "ESTAT:".
La biblioteca Cloud4rpi conté un mòdul ‘rpy.py’ que retorna paràmetres del sistema Raspberry Pi, com ara el nom d’amfitrió o la temperatura de la CPU. Com que tots aquests paràmetres són el resultat d’executar algunes ordres i analitzar la sortida, també conté una pràctica funció ‘parse_output’ que fa exactament el que necessito. Aquesta és la manera d'obtenir l'estat del meu SAI:
def ups_status (): result = rpi.parse_output (r'STATUS / s +: / s + (S +) ', [' /etc/init.d/apcupsd ',' status ']) if result: return result else: return "DESCONEGUT"
Per enviar aquest estat a cloud4rpi, he de declarar una variable UPSStatus i vincular-la a la meva funció ups_status: Ara puc executar el meu programa:
variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
I immediatament puc veure la meva variable a la pàgina del dispositiu cloud4rpi.
Pas 4: Preparació per a la "producció"
Tot està funcionant i ara he de preparar el dispositiu al mode sense vigilància.
Per començar, ajustaré els intervals de temps. L’interval d’enquesta defineix la freqüència amb què el programa comprova la temperatura i l’estat del SAI; establiu-lo a un segon.
Els resultats s’envien al núvol cada 5 minuts i la informació de diagnòstic cada hora.
# ConstantsDATA_SENDING_INTERVAL = 300 # s DIAG_SENDING_INTERVAL = 3600 # s POLL_INTERVAL = 1 # s
Quan canvia l’estat del SAI, no vull que el meu dispositiu esperi 5 minuts i enviï dades immediatament. Així que he modificat lleugerament el bucle principal i té el següent aspecte:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' mentre és True: newUPS = ups_status () if (data_timer <= 0) or (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS if diag_timer <= 0: device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL sleep (POLL_INTERVAL) diag_timer - = POLL_INTERVAL data_timer - = POLL_INTERVAL
Prova: executeu l'script:
sudo python control.py
I puc veure l’estat del SAI a la pàgina del meu dispositiu.
Si apago l’alimentació del SAI, l’estat canvia en un parell de segons, de manera que tot funciona. Ara he de començar apcupsd i el meu control.py a l’arrencada del sistema. El servei Apcupsd és antic i per iniciar-lo en raspbian modern, hauria de modificar el fitxer /etc/init.d/apcupsd, afegint aquestes línies en algun lloc de la part superior:
### BEGIN INIT INFO # Proporciona: apcupsd # Required-Start: $ all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short Description: APC UPS daemon … ### END INIT INFO #
A continuació, activeu el servei:
sudo systemctl habilita apcupsd
A continuació, inicieu el servei:
sudo systemctl iniciar apcupsd
Ara apcupsd s'iniciarà a l'inici del sistema.
Per instal·lar control.py com a servei, he utilitzat l'script service_install.sh subministrat:
sudo bash service_install.sh ~ / cloud4rpi / control.py
Ara s’inicia el servei i sobreviu a un reinici.
Pas 5: Configuració d'un tauler de control
Cloud4rpi em permet configurar un tauler de control per al meu dispositiu. Podeu afegir "ginys" i enllaçar-los a les variables del dispositiu.
El meu dispositiu proporciona dues variables de només lectura: RoomTemp i UPSStatus:
variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
He afegit 3 ginys: número per RoomTemp, text per UPSStatus i un gràfic per RoomTemp.
Puc configurar alertes, de manera que rebo un missatge de correu electrònic quan la temperatura està fora del rang especificat, el SAI es desconnecta o el dispositiu en si no envia dades quan cal. Ara puc estar segur que la meva casa de camp està bé i puc rebre notificacions quan alguna cosa no funciona, així que puc trucar als veïns i demanar-los que comprovin què passa. Aquí teniu el codi real de control.py.
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
Monitorització de la humitat i la temperatura de la casa: 11 passos
Monitorització de la temperatura i la humitat de la casa: Hola nois! Per començar de la millor manera, una petita història sobre el projecte. Recentment em vaig graduar i em vaig traslladar a Àustria per ocupar el meu primer lloc com a enginyer. El país és bonic, però molt fred & humit a la temporada d'hivern. Vaig començar ràpidament
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