INHOUDSOPGAWE:
- Stap 1: Temperatuurmonitering
- Stap 2: Die opstel van Cloud4Rpi.io
- Stap 3: UPS -monitering
- Stap 4: Voorbereiding vir 'produksie'
- Stap 5: Stel 'n bedieningspaneel op
Video: DIY huismonitering met RaspberryPi en Cloud4Rpi: 5 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
Een winternaweek het ek na my landhuis gegaan en uitgevind dat dit baie koud is daar. Iets het gebeur met elektrisiteit en 'n RCD -skakelaar het dit afgeskakel, en die verhitting het ook afgegaan. Ek was gelukkig dat ek daar aangekom het, anders sou alles binne 'n paar dae alles gevries gewees het, wat baie erg is vir die pype en die verkoelers.
Ek het verskeie Raspberry Pi's en 'n termiese sensor gehad, en ek het gedink - waarom maak ek nie 'n eenvoudige moniteringstoestel nie? In die onderstaande instruksies word aanvaar dat u 'n Raspberry Pi met Raspbian en netwerkverbinding opgestel het. In my geval is dit Raspberry Pi B+ met Raspbian (2018-06-27-raspbian-stretch-lite).
Stap 1: Temperatuurmonitering
Hoe om 'n DS18B20 temperatuur sensor aan te sluit? Google net hoe om dit te doen, en u sien baie foto's soos hierdie:
In my geval het ek swart, geel en rooi drade gehad. Die swart is gemaal, gaan na grondpen, die rooi is krag - gaan na 3.3v -pen, en die geel is data - moet na GPIO4 -pen gaan, met 'n weerstand van 4,7 kOm tussen data en krag. parallel (hulle is digitaal en het verskillende adresse), benodig u slegs een weerstand. Nadat u u sensor gekoppel het, moet u 1Wire in die raspi-config aktiveer:
sudo raspi-config
Gaan na 5 koppelvlakopsies, aktiveer P7 1-Wire en herlaai.
Dan kan u toets of u die sensor kan sien:
sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/toestelle/
U behoort so iets te sien:
pi@vcontrol: ~ $ ls/sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff is ons temperatuursensor.
Hardeware is gereed. Nou moet ek die moniteringsdeel instel. Ek het iets nodig wat my die data kan wys en my in kennis stel as die toestel 'n rukkie ontkoppel is, of as daar geen krag is nie, of as die temperatuur laag is. Dit kan duidelik nie framboos pi self wees nie; daar moet 'n bediener of diens op die internet wees wat my toestel monitor.
Ek kan 'n eenvoudige bediener skep, 'n gasheer kry en alles instel, maar ek wil dit nie eerlik nie. Gelukkig het iemand al hieroor gedink en cloud4rpi.io geskep - 'n wolkbeheerpaneel vir u toestel.
Stap 2: Die opstel van Cloud4Rpi.io
Cloud4Rpi bied 'n diens waarmee u toestel data kan stuur en ontvang met behulp van MQTT- of HTTP -protokolle. Hulle het 'n kliëntbiblioteek vir Python, so ek sal Python gebruik.
Python -voorbeelde wat by die Cloud4Rpi -diens kom, bevat reeds kode vir die DS18B20 temp sensor.
Ek het dus na https://cloud4rpi.io gegaan, 'n rekening geskep en 'n nuwe toestel daar bygevoeg. Die apparaatbladsy het 'n teken - 'n string wat die toestel identifiseer en wat gespesifiseer moet word in die program wat data stuur.
Om mee te begin, is dit altyd 'n goeie idee om 'n pakketbestuurder by te werk en pakkette op te gradeer (let op: dit kan ure neem as u nie 'n rukkie opgegradeer het nie):
sudo apt-get update && sudo apt-get upgrade
Installeer dan git, Python en sy pakketbestuurder Pip:
sudo apt-get install git python python-pip
Installeer dan cloud4rpi Python -biblioteek:
sudo pip installeer cloud4rpi
Uiteindelik is ek gereed om my beheerprogram te skryf. Ek begin met 'n voorbeeld wat beskikbaar is op
git-kloon https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
Die hoofprogramlêer is control.py - ek moet dit aanpas vir my behoeftes. Wysig eers die program en plak 'n teken:
sudo nano control.py
Soek 'n reël DEVICE_TOKEN = '…'] en spesifiseer 'n toesteltoken daar. Daarna kan ek die program eenvoudig laat loop: dit werk en meld 'n temperatuur in RoomTemp -veranderlike:
sudo python control.py
Dit werk en rapporteer 'n temperatuur in die RoomTemp -veranderlike.
Let daarop dat dit alle onewire ds18b20 sensors ontdek
ds_sensors = ds18b20. DS18B20.find_all ()
en gebruik die eerste sensor wat gevind is:
RoomTemp ': {' type ':' numeries ',' bind ': ds_sensors [0] as ds_sensors anders Geen}
Dit was maklik, want die voorbeeldprogram bevat alles wat nodig is om met die ds18b20 -sensor op Raspberry Pi te werk. Nou moet ek die manier vind om die kragstatus aan te meld.
Stap 3: UPS -monitering
Die volgende ding wat ek wil monitor, is die UPS -status, so as daar 'n kragonderbreking is, sal ek daarvan weet voordat alles ontkoppel word.
Ek het 'n APC UPS met USB -beheer, so ek het vinnig gegoogle en gevind dat ek apcupsd nodig het. https://www.anites.com/2013/09/monitoring-ups.html… Ek het verskeie kere probeer om dit via apt-get te installeer, en dit het om verskillende redes nie vir my gewerk nie. Ek sal wys hoe om dit uit die bronne te installeer.
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 maak sudo maak installeer
Dan wysig ek apcupsd.conf om via USB aan te sluit by my UPS.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE slim UPSCABLE usb ##UPSTYPE apcsmart #DEVICE/dev/ttyS0 UPSTYPE usb TOESTEL
Nou kan ek 'n USB -kabel van UPS aan RaspberryPi koppel en toets of UPS gevind word.
sudo apctest
Dit behoort u geen foutboodskappe te gee nie.
Nou moet sewe apcupsd begin word:
sudo systemctl begin apcupsd
Om navraag te doen oor UPS -status, kan ek 'n statusopdrag gebruik:
sudo /etc/init.d/apcupsd status
En dit sou iets soos hierdie lewer:
APC: 001, 035, 0855DATUM: 2018-10-14 16:55:30 +0300 GASNAAM: vcontrol VERSIE: 3.14.14 (31 Mei 2016) debian UPSNAME: vcontrol KABEL: USB-kabel DRIVER: USB UPS Driver UPSMODE: Stand Alone BEGINTYD: 2018-10-14 16:54:28 +0300 MODEL: Back-UPS XS 650CI STATUS: ONLINE LINEV: 238.0 Volt LOADPCT: 0.0 persent BCHARGE: 100.0 persent TIMELEFT: 293.3 minute MBATTCHG: 5 persent MINTIMEL: 3 minute MAXTIME: 0 sekondes SIN: Medium LOTRANS: 140.0 volt HITRANS: 300.0 volt ALARMDEL: 30 sekondes BATTV: 14.2 volt LASTXFER: Geen oordragte sedert beurt NUMXFERS: 0 TONBATT: 0 sekondes CUMONBATT: 0 sekondes XOFFBATT: N/A STATFLAG: 0x05T08T05T08: 0x05T08: 2014-06-10 NOMINV: 230 Volt NOMBATTV: 12.0 Volt NOMPOWER: 390 Watts FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Ek het 'n status nodig - dit is die 'STATUS:' - reël.
Cloud4rpi -biblioteek bevat 'n module 'rpy.py' wat Raspberry Pi -stelselparameters teruggee, soos gasheernaam of CPU -temperatuur. Aangesien al die params die gevolg is van die uitvoer van 'n paar opdragte en ontleeduitsette, bevat dit ook 'n handige 'parse_output' -funksie wat presies doen wat ek nodig het. Dit is hoe ek my UPS -status kan kry:
def ups_status (): resultaat = rpi.parse_output (r'STATUS / s+: / s+(S+) ', [' /etc/init.d/apcupsd ',' status ']) as resultaat: terugkeer resultaat anders: terugkeer 'ONKEND'
Om hierdie status na cloud4rpi te stuur, moet ek 'n veranderlike UPSStatus verklaar en dit aan my ups_status -funksie bind: Nou kan ek my program uitvoer:
veranderlikes = {'RoomTemp': {'type': 'numeries', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
En ek kan my veranderlike onmiddellik sien op die cloud4rpi -apparaatbladsy.
Stap 4: Voorbereiding vir 'produksie'
Alles werk, en nou moet ek my toestel voorberei op die modus sonder toesig.
Om mee te begin, gaan ek die tydsintervalle aanpas. Peilingsinterval bepaal hoe gereeld die program na temperatuur en UPS -status kyk - stel dit op een sekonde.
Uitslae word elke 5 minute na die wolk gestuur, en diagnostiese inligting - elke uur.
# KonstanteDATA_SENDING_INTERVAL = 300 # sek DIAG_SENDING_INTERVAL = 3600 # sek POLL_INTERVAL = 1 # sek
As die UPS -status verander - wil ek nie hê my toestel moet 5 minute wag nie, en ek stuur dadelik data. Ek het dus die hooflus effens aangepas en dit lyk so:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' terwyl True: newUPS = ups_status () if (data_timer <= 0) of (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS if 0: device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL slaap (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
Toets: run script:
sudo python control.py
En ek kan UPS -status op my toestelbladsy kyk.
As ek die UPS -krag afskakel, verander die status binne 'n paar sekondes, sodat alles werk. Nou moet ek apcupsd en my control.py begin met die opstart van die stelsel. Apcupsd -diens is oud en om dit op moderne raspbian te begin, moet ek die lêer /etc/init.d/apcupsd verander deur hierdie reëls by te voeg iewers bo:
### BEGIN INIT INFO # Bied: apcupsd # Vereis-begin: $ alles # Vereis-stop: # standaard-begin: 2 3 4 5 # standaard-stop: # kort beskrywing: APC UPS-demoon … ### EINDE INIT INLIGTING#
Aktiveer dan die diens:
sudo systemctl aktiveer apcupsd
Begin dan met die diens:
sudo systemctl begin apcupsd
Nou word apcupsd begin met die opstart van die stelsel.
Om control.py as 'n diens te installeer, het ek die verskafde service_install.sh -script gebruik:
sudo bash service_install.sh ~/cloud4rpi/control.py
Nou word diens begin, en dit moet weer begin as dit herlaai word.
Stap 5: Stel 'n bedieningspaneel op
Met Cloud4rpi kan ek 'n bedieningspaneel vir my toestel instel. U kan 'widgets' byvoeg en dit aan toestelveranderlikes koppel.
My toestel bied twee leesalleen veranderlikes - RoomTemp en UPSStatus:
veranderlikes = {'RoomTemp': {'type': 'numeries', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Ek het 3 widgets bygevoeg - nommer vir RoomTemp, teks vir UPSStatus en 'n grafiek vir RoomTemp.
Ek kan waarskuwings instel, sodat ek 'n e -pos ontvang wanneer die temperatuur buite die gespesifiseerde bereik is, UPS vanlyn is of die toestel self nie data stuur wanneer dit moet nie. as iets verkeerd is, kan ek die bure bel en hulle vra om te kyk wat aangaan. Hier is die werklike kode van die control.py.
Aanbeveel:
IoT -basisplatform met RaspberryPi, WIZ850io: platformapparaatbestuurder: 5 stappe (met foto's)
IoT -basisplatform met RaspberryPi, WIZ850io: platformapparaatbestuurder: ek ken RaspberryPi -platform vir IoT. Onlangs word WIZ850io deur WIZnet aangekondig. Ek het dus 'n RaspberryPi -toepassing geïmplementeer deur middel van Ethernet SW -aanpassing omdat ek 'n bronkode maklik kan hanteer. U kan platform -toesteldrywer toets deur middel van RaspberryPi
Slimme koffiemasjienpomp wat beheer word deur Raspberry Pi en HC-SR04 Ultrasoniese sensor en Cloud4RPi: 6 stappe
Slim koffiemasjienpomp wat beheer word deur Raspberry Pi en HC-SR04 Ultrasoniese sensor en Cloud4RPi: in teorie, elke keer as u na u koffiemasjien gaan vir u oggendbeker, is daar slegs 'n een-uit-twintig kans dat u die water moet vul tenk. In die praktyk blyk dit egter dat die masjien op een of ander manier 'n manier vind om hierdie taak altyd op u te plaas. Die
Monitor en teken temperatuur op met Bluetooth LE en RaspberryPi: 9 stappe (met foto's)
Monitor en teken temperatuur op met Bluetooth LE en RaspberryPi: Hierdie instruksie handel oor hoe om 'n multi-node temperatuurmoniteringstelsel saam te stel met Bluetooth LE-sensorfout van Blue Radios (BLEHome) en RaspberryPi 3B Danksy die ontwikkeling van die Bluetooth LE-standaard, is daar nou geredelik beskikbaar
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino - Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter - Rc Helikopter - Rc -vliegtuig met Arduino: 5 stappe (met foto's)
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino | Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter | Rc Helikopter | Rc -vliegtuig met Arduino: om 'n Rc -motor te bestuur | Quadcopter | Drone | RC -vliegtuig | RC -boot, ons het altyd 'n ontvanger en sender nodig, veronderstel dat ons vir RC QUADCOPTER 'n 6 -kanaals sender en ontvanger nodig het en dat die tipe TX en RX te duur is, so ons maak een op ons
Raspberry Pi -huismonitering met Dropbox: 7 stappe
Raspberry Pi -huismonitering met Dropbox: hierdie tutoriaal sal u wys hoe u 'n eenvoudige en uitbreidbare huismoniteringstelsel kan skep met 'n Raspberry Pi, 'n webcam, 'n paar elektriese komponente en u Dropbox -rekening. Met die voltooide stelsel kan u op afstand foto's aanvra en sien vanaf