Mündəricat:
- Addım 1: Temperaturun monitorinqi
- Addım 2: Cloud4Rpi.io qurmaq
- Addım 3: UPS Monitorinqi
- Addım 4: "İstehsalata" hazırlıq
- Addım 5: İdarəetmə Paneli qurun
Video: RaspberryPi və Cloud4Rpi ilə DIY Ev Monitorinqi: 5 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Bir qış həftə sonu bağ evimə getdim və orada çox soyuq olduğunu öyrəndim. Elektriklə bir şey oldu və RCD açarı onu söndürdü və istilik də söndü. Oraya gəldiyim üçün şanslıydım, əks halda bir neçə gün ərzində borular və radiatorlar üçün çox pis olan hər şey donacaqdı.
Ətrafımda bir neçə Raspberry Pi və istilik sensoru var idi, buna görə düşündüm - niyə sadə bir izləmə cihazı hazırlamıram? Aşağıdakı təlimatlar, Raspbian və şəbəkə bağlantısı qurulmuş bir Raspberry Pi olduğunuzu güman edir. Mənim vəziyyətimdə Raspbian ilə Raspberry Pi B+ (2018-06-27-raspbian-stretch-lite).
Addım 1: Temperaturun monitorinqi
Bir DS18B20 temperatur sensörünü necə bağlamaq olar? Bunu necə edəcəyinizi google -a yazın və buna bənzər bir çox şəkil görəcəksiniz:
Mənim vəziyyətimdə Qara, Sarı və Qırmızı tellərim var idi. Qara torpaqdır, Ground pininə gedir, qırmızı gücə - 3.3v pinə, sarı isə məlumatdır - məlumat və güc arasında 4,7 kOm rezistor bağlı GPIO4 pininə keçməlidir. paralel olaraq (rəqəmsaldır və fərqli ünvanlara malikdir) yalnız bir rezistora ehtiyacınız var. Sensorunuzu bağladıqdan sonra raspi-config-də 1Wire-i aktiv etməlisiniz:
sudo raspi-config
5 Interfacing seçiminə gedin, P7 1-Wire-i aktiv edin və yenidən başladın.
Sensoru görə biləcəyinizi yoxlaya bilərsiniz:
sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/cihazlar/
Bənzər bir şey görməlisiniz:
pi@vcontrol: ~ $ ls/sys/bus/w1/cihazlar/28–00044eae2dff w1_bus_master1
28–00044eae2dff bizim temperatur sensorumuzdur.
Avadanlıq hazırdır. İndi monitorinq hissəsini qurmalıyam. Cihazın bir müddət kəsildiyi və ya elektrik enerjisinin olmaması və ya temperaturun aşağı olması halında mənə məlumatları göstərən və mənə xəbər verəcək bir şeyə ehtiyacım var. Aydındır ki, bu moruq pi özü ola bilməz, İnternetdə cihazımı izləyən bir server və ya xidmət olmalıdır.
Sadə bir server yarada bilərəm, ev sahibi ola bilərəm və hər şeyi qura bilərəm, amma səmimi olaraq istəmirəm. Xoşbəxtlikdən, kimsə bu barədə düşündü və cihazınız üçün bulud idarəetmə paneli olan cloud4rpi.io yaratdı.
Addım 2: Cloud4Rpi.io qurmaq
Cloud4Rpi, cihazınızın MQTT və ya HTTP protokollarından istifadə edərək məlumat göndərməsinə və almasına imkan verən bir xidmət təqdim edir. Python üçün müştəri kitabxanası var, buna görə Python istifadə edəcəyəm.
Cloud4Rpi xidməti ilə gələn Python nümunələrində artıq DS18B20 temp sensoru üçün kod var.
Beləliklə, https://cloud4rpi.io saytına daxil oldum, hesab yaratdım və ora yeni bir cihaz əlavə etdim. Cihaz səhifəsində bir nişan var - cihazı tanıyan və məlumat göndərən proqramda göstərilməlidir.
Başlamaq üçün bir paket menecerini yeniləmək və paketləri təkmilləşdirmək həmişə yaxşı bir fikirdir (qeyd: bir müddət təkmilləşdirməsəniz saatlar çəkə bilər):
sudo apt-get update && sudo apt-get upgrade
Sonra git, Python və paket meneceri Pip -i quraşdırın:
sudo apt-get install python python-pip yükləyin
Sonra, cloud4rpi Python kitabxanasını quraşdırın:
sudo pip cloud4rpi quraşdırın
Nəhayət, nəzarət proqramımı yazmağa hazıram. Https://github.com/cloud4rpi/cloud4rpi-raspberrypi ünvanındakı nümunədən başlayıram.
git klonu https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
Əsas proqram faylı control.py -dir - ehtiyaclarım üçün onu dəyişdirməliyəm. Əvvəlcə proqramı düzəldin və bir mö'cüzə yapışdırın:
sudo nano nəzarət.py
DEVICE_TOKEN = '…'] bir xətt tapın və orada bir cihaz nişanı göstərin. Bundan sonra proqramı sadəcə işlədə bilərəm: RoomTemp dəyişənində bir temperatur işləyir və bildirir:
sudo python control.py
RoomTemp dəyişənində bir temperatur işləyir və bildirir.
Qeyd edək ki, bütün onewire ds18b20 sensorlarını kəşf edir
ds_sensors = ds18b20. DS18B20.find_all ()
və ilk tapılan sensordan istifadə edir:
RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] if ds_sensors no No}
Yaxşı, bu asan idi, çünki nümunə proqramında Raspberry Pi -də ds18b20 sensoru ilə işləmək üçün lazım olan hər şey var. İndi gücün vəziyyətini bildirməyin yolunu tapmalıyam.
Addım 3: UPS Monitorinqi
Nəzarət etmək istədiyim növbəti şey UPS vəziyyətidir, buna görə elektrik kəsilsə, hər şey kəsilməzdən əvvəl bunu biləcəyəm.
USB nəzarətli bir APC UPS -ə sahibəm, buna görə tez bir zamanda googled və apcupsd -ə ehtiyacım olduğunu gördüm. https://www.anites.com/2013/09/monitoring-ups.html… Bir neçə dəfə apt-get vasitəsilə qurmağa çalışdım və müxtəlif səbəblərdən mənim üçün işləmədi. Mənbələrdən necə qurulacağını göstərəcəyəm.
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 sudo make install olun
Sonra usc vasitəsilə UPS -ə qoşulmaq üçün apcupsd.conf sənədini düzəldirəm.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb ##UPSTYPE apcsmart #DEVICE/dev/ttyS0 usb DEVICE
İndi USB kabelini UPS -dən RaspberryPi -yə qoşa və UPS -in tapılıb -tapılmayacağını yoxlaya bilərəm.
sudo apctest
Sizə heç bir səhv mesajı verməməlidir.
İndi sevice apcupsd başlamalıdır:
sudo systemctl apcupsd başladın
UPS vəziyyətini soruşmaq üçün bir status əmrindən istifadə edə bilərəm:
sudo /etc/init.d/apcupsd statusu
Və belə bir şey çıxaracaq:
APC: 001, 035, 0855DATE: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSİYA: 3.14.14 (31 May 2016) debian UPSNAME: vcontrol KABEL: USB Kabel Sürücüsü: USB UPS Sürücü UPSMODE: Tək STARTTIME: 2018-10-14 16:54:28 +0300 MODEL: Back-UPS XS 650CI STATUS: ONLINE LINEV: 238.0 Volt LOADPCT: 0.0 Yüzdə BCHARGE: 100.0 Yüzdə TIMELEFT: 293.3 Dəqiqə MBATTCHG: 5 faiz MINTIMEL: 3 dəqiqə MAXTIME: 0 Saniyə SENSE: Orta LOTRANLAR: 140.0 Volt HITRANS: 300.0 Volt ALARMDEL: 30 Saniyə BATTV: 14.2 Volt LASTXFER: Turnondan sonra transfer yoxdur NUMXFERS: 0 TONBATT: 0 Saniyə CUMONBATT: 0 Saniyə XOFFBATF02: N2: 2014-06-10 NOMINV: 230 Volt NOMBATTV: 12.0 Volt NOMPOWER: 390 Watt FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
"STATUS:" xətti olan bir statusa ehtiyacım var.
Cloud4rpi kitabxanasında, host adı və ya cpu istiliyi kimi Raspberry Pi sistem parametrlərini qaytaran 'rpy.py' modulu var. Bütün bu parametrlər bəzi əmrlərin işlədilməsinin və çıxışı təhlil etməyin nəticəsi olduğu üçün, ehtiyacım olanı yerinə yetirən lazımlı bir 'parse_output' funksiyasını da ehtiva edir. UPS statusumu necə əldə edə bilərəm:
def ups_status (): nəticə = rpi.parse_output (r'STATUS / s+: / s+(S+) ', [' /etc/init.d/apcupsd ',' status ']) əgər nəticə: nəticəni başqa yerə qaytar: qaytar 'NAMƏLUM'
Bu vəziyyəti cloud4rpi -yə göndərmək üçün bir dəyişən UPSStatus elan etməliyəm və ups_status funksiyama bağlamalıyam: İndi proqramımı işlədə bilərəm:
dəyişənlər = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Və dəyişənimi dərhal cloud4rpi cihaz səhifəsində görə bilərəm.
Addım 4: "İstehsalata" hazırlıq
Hər şey işləyir və indi cihazımı nəzarətsiz rejimə hazırlamalıyam.
Başlamaq üçün vaxt aralığını tənzimləyəcəyəm. Anket aralığı, proqramın temperaturu və UPS vəziyyətini nə qədər tez -tez yoxladığını müəyyən edir - bir saniyəyə təyin edin.
Nəticələr hər 5 dəqiqədə buluda, diaqnostik məlumatlar isə hər saat göndərilir.
# SabitDATA_SENDING_INTERVAL = 300 # san DIAG_SENDING_INTERVAL = 3600 # san POLL_INTERVAL = 1 # san
UPS vəziyyəti dəyişəndə - cihazımın 5 dəqiqə gözləməsini istəmirəm və dərhal məlumat göndərirəm. Beləliklə, əsas döngəni bir qədər dəyişdirdim və belə görünür:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' Doğru olarkən: newUPS = ups_status () if (data_timer <= 0) və ya (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS = diag_ əgər device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL yuxu (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
Test: run skript:
sudo python control.py
Və cihaz səhifəmdə UPS vəziyyətini izləyə bilərəm.
UPS gücünü söndürsəm, vəziyyət bir neçə saniyə ərzində dəyişir, buna görə də hər şey işləyir. İndi apcupsd və control.py sistemini işə salmalıyam. Apcupsd xidməti köhnədir və onu müasir raspbian -da başlatmaq üçün yuxarıdakı bir yerə bu sətirləri əlavə edərək /etc/init.d/apcupsd faylını dəyişdirməliyəm:
### INIT MƏLUMATINA BAŞLAYIN # Təmin edir: apcupsd # Zorunlu-Başlanğıc: $ all # Lazım-Dur: # Varsayılan-Başlat: 2 3 4 5 # Varsayılan-Dur: # Qısa Təsvir: APC UPS daemon… ### SON İNİT MƏLUMAT#
Sonra xidməti aktiv edin:
sudo systemctl apcupsd imkan verir
Sonra xidmətə başlayın:
sudo systemctl apcupsd başladın
İndi apcupsd sistemin başlanğıcında başlayacaq.
Control.py -ni bir xidmət olaraq qurmaq üçün verilən service_install.sh skriptindən istifadə etdim:
sudo bash service_install.sh ~/cloud4rpi/control.py
İndi xidmət başladı və yenidən başladıqdan sonra sağ qalacaq.
Addım 5: İdarəetmə Paneli qurun
Cloud4rpi, cihazım üçün bir idarəetmə paneli qurmağa imkan verir. "Vidjetlər" əlavə edə və onları cihaz dəyişənlərinə bağlaya bilərsiniz.
Cihazım iki oxunan dəyişəni təmin edir - RoomTemp və UPSStatus:
dəyişənlər = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
3 widget əlavə etdim - RoomTemp üçün nömrə, UPSStatus üçün mətn və RoomTemp üçün bir cədvəl.
Xəbərdarlıqlar qura bilərəm, buna görə də temperatur müəyyən edilmiş diapazondan kənara çıxdıqda bir e -poçt alıram, UPS oflayn rejimə keçdi və ya cihaz özü lazım olduqda məlumat göndərmir. Bir şey səhv olanda qonşularımla telefon əlaqəsi saxlaya və onlardan baş verənləri yoxlamalarını istəyə bilərəm. Burada control.py -nin həqiqi kodu verilmişdir.
Tövsiyə:
Intel Edison: 4 addım ilə Cardíacos -un monitorinqi
Card Edition: Intel Edison: IoT Roadshow 2015 və 2015 -ci il tarixləri arasında Gedeane Kenshima, Rodrigo Bittenbinder, Gilvan Nunes, Ant & Folkran və Jefferson Farias tərəfindən təqdim olunan sistemlərin monitorinqini həyata keçirir. ac
Sigfox vasitəsi ilə elektrik istehlakı və ətraf mühitin monitorinqi: 8 addım
Sigfox vasitəsi ilə elektrik istehlakı və ətraf mühitin monitorinqi: Təsvir Bu layihə, üç fazalı bir enerji paylamasında bir otağın elektrik istehlakını necə əldə edəcəyinizi və sonra hər 10 dəqiqədə Sigfox şəbəkəsini istifadə edərək bir serverə göndərməyi sizə göstərəcək. Gücü necə ölçmək olar?
IOT ilə Yaşıl Evin Monitorinqi: 5 addım
IOT ilə Green House Monitorinqi: Kənd təsərrüfatına gəldikdə, temperaturun & Bitkilərin rütubəti onların yaşaması üçün vacib amildir. Hal -hazırda, insanlar bir istixana bağlanan termometrlərdən istifadə edirlər ki, fermerlər temperaturu ölçə bilsinlər. Bununla birlikdə, bu əl tətbiq
Nokia LCD ilə DSM501A ilə hava keyfiyyətinin monitorinqi: 7 addım
Nokia LCD ilə DSM501A ilə Hava Keyfiyyətinin Monitorinqi: Salam dostlar! Bu qısa təlimatda sizə evinizdə və ya hər yerdə hava qulluğunu necə izləyə biləcəyinizi göstərəcəyəm
ThingsBoard ilə IoT Pool Monitorinqi: 8 Addım
ThingsBoard ilə IoT Pool Monitorinqi: Bu təlimat, bir hovuzun və ya spanın pH, ORP və temperaturunun necə izləniləcəyini və məlumatları ThingsBoard.io vizualizasiya və saxlama xidmətinə yükləməyi göstərəcək