İçindekiler:
- Adım 1: Sıcaklık İzleme
- 2. Adım: Cloud4Rpi.io'yu Kurma
- Adım 3: UPS İzleme
- Adım 4: “Üretime” hazırlanmak
- Adım 5: Bir Kontrol Paneli Kurma
Video: RaspberryPi ve Cloud4Rpi ile Kendin Yap Ev İzleme: 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Bir kış hafta sonu kır evime gittim ve orasının çok soğuk olduğunu öğrendim. Elektrikle ilgili bir şey oldu ve RCD kesici onu kapattı ve ısıtma da gitti. Oraya geldiğim için şanslıydım, aksi takdirde birkaç gün içinde her şey donmuş olurdu, bu da borular ve radyatörler için çok kötüydü.
Etrafımda birkaç Raspberry Pi ve bir termal sensör vardı, bu yüzden düşündüm - neden basit bir izleme cihazı yapmıyorum? Aşağıdaki talimatlar, Raspbian ve ağ bağlantısı kurulumuna sahip bir Raspberry Pi'niz olduğunu varsayar. Benim durumumda Raspbian ile Raspberry Pi B+ (2018–06–27-raspbian-stretch-lite).
Adım 1: Sıcaklık İzleme
DS18B20 sıcaklık sensörü nasıl bağlanır? Bunu nasıl yapacağınızı google'a yazın ve bunun gibi birçok resim göreceksiniz:
Benim durumumda Siyah, Sarı ve Kırmızı teller vardı. Siyah topraktır, Topraklama pimine gider, kırmızı güçtür - 3.3v pime gider ve sarı veridir - veri ve güç arasında bağlı 4.7 kOm dirençle GPIO4 pimine gitmelidir. Not, birkaç sensör bağlayabilirsiniz paralel olarak (dijitaldirler ve farklı adresleri vardır), yalnızca bir dirence ihtiyacınız vardır. Sensörünüzü bağladıktan sonra, raspi-config'de 1Wire'ı etkinleştirmelisiniz:
sudo raspi yapılandırması
5 Arayüz seçeneğine gidin, P7 1-Wire'ı etkinleştirin ve yeniden başlatın.
Ardından sensörü görüp görmediğinizi test edebilirsiniz:
sudo modprobe w1-gpiosudo modprobe w1-thermls /sys/bus/w1/devices/
Bunun gibi bir şey görmelisiniz:
pi@vcontrol:~ $ ls /sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff, sıcaklık sensörümüzdür.
Donanım hazır. Şimdi izleme bölümünü kurmam gerekiyor. Bana verileri gösterecek ve cihazın bağlantısı bir süreliğine kesilirse veya güç yoksa veya sıcaklık düşükse beni bilgilendirecek bir şeye ihtiyacım var. Açıkçası bu ahududu pi'nin kendisi olamaz, internette cihazımı izleyen bir sunucu veya servis olmalı.
Basit bir sunucu oluşturabilir, bir barındırma alabilir ve her şeyi kurabilirim, ama dürüst olmak gerekirse, istemiyorum. Neyse ki, birileri bunu zaten düşünmüş ve cihazınız için bir bulut kontrol paneli olan cloud4rpi.io'yu oluşturmuştur.
2. Adım: Cloud4Rpi.io'yu Kurma
Cloud4Rpi, cihazınızın MQTT veya HTTP protokollerini kullanarak veri gönderip almasına izin veren bir hizmet sağlar. Python için bir istemci kitaplıkları var, bu yüzden Python kullanacağım.
Cloud4Rpi hizmetiyle birlikte gelen Python örnekleri zaten DS18B20 sıcaklık sensörü için kod içeriyor.
Bu yüzden https://cloud4rpi.io'ya gittim, bir hesap oluşturdum ve oraya yeni bir cihaz ekledim. Aygıt sayfasında bir belirteç vardır - aygıtı tanımlayan ve veri gönderen programda belirtilmesi gereken bir dize.
Başlangıç olarak, bir paket yöneticisini güncellemek ve paketleri yükseltmek her zaman iyi bir fikirdir (not: bir süredir yükseltme yapmadıysanız saatler sürebilir):
sudo apt-get güncelleme && sudo apt-get yükseltme
Ardından git, Python ve paket yöneticisi Pip'i kurun:
sudo apt-get kurulumu git python python-pip
Ardından cloud4rpi Python kitaplığını kurun:
sudo pip cloud4rpi yükleyin
Sonunda kontrol programımı yazmaya hazırım. https://github.com/cloud4rpi/cloud4rpi-raspberrypi… adresinde bulunan örnekten başlıyorum.
git klon https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
Ana program dosyası control.py'dir - ihtiyaçlarım için değiştirmem gerekiyor. İlk önce programı düzenleyin ve bir jeton yapıştırın:
sudo nano kontrol.py
DEVICE_TOKEN='…'] satırını bulun ve orada bir cihaz belirteci belirtin. Bundan sonra programı çalıştırabilirim: Çalışır ve RoomTemp değişkeninde bir sıcaklık bildirir:
sudo python kontrolü.py
Çalışır ve RoomTemp değişkeninde bir sıcaklık bildirir.
Tüm onewire ds18b20 sensörlerini keşfettiğini unutmayın
ds_sensors = ds18b20. DS18B20.find_all()
ve bulunan ilk sensörü kullanır:
RoomTemp': { 'type': 'numeric', 'bind': ds_sensors[0] if ds_sensors else Yok }
Tamam, bu kolaydı çünkü örnek program Raspberry Pi'de ds18b20 sensörü ile çalışmak için gereken her şeye sahip. Şimdi güç durumunu bildirmenin yolunu bulmam gerekiyor.
Adım 3: UPS İzleme
İzlemek istediğim bir sonraki şey UPS durumu, bu yüzden elektrik kesintisi olursa, her şeyin bağlantısı kesilmeden önce bunu öğreneceğim.
USB kontrollü bir APC UPS'im var, bu yüzden hızlıca google'a baktım ve apcupsd'ye ihtiyacım olduğunu buldum. https://www.anites.com/2013/09/monitoring-ups.html… Birkaç kez apt-get aracılığıyla yüklemeyi denedim ve çeşitli nedenlerle benim için çalışmadı. Kaynaklardan nasıl yükleneceğini göstereceğim.
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
Sonra apcupsd.conf'u UPS'ime usb ile bağlanmak için düzenlerim.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb # #UPSTYPE apcsmart #DEVICE /dev/ttyS0 UPSTYPE usb DEVICE
Artık UPS'ten RaspberryPi'ye USB kablosunu takabilir ve UPS'in bulunup bulunmadığını test edebilirim.
sudo apctest
Size hiçbir hata mesajı vermemelidir.
Şimdi sevice apcupsd başlatılmalıdır:
sudo systemctl apcupsd'yi başlat
UPS durumunu sorgulamak için bir durum komutu kullanabilirim:
sudo /etc/init.d/apcupsd durumu
Ve şöyle bir çıktı verirdi:
APC: 001, 035, 0855TARİH: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSİYON: 3.14.14 (31 Mayıs 2016) debian UPSNAME: vcontrol KABLO: USB Kablo SÜRÜCÜ: USB UPS Sürücü UPSMODE: Stand Alone BAŞLANGIÇ ZAMANI: 2018-10-14 16:54:28 +0300 MODEL: Back-UPS XS 650CI DURUM: ÇEVRİMİÇİ HAT: 238,0 Volt YÜK: 0,0 Yüzde BŞARJ: 100,0 Yüzde TIMELEFT: 293.3 Dakika MBATTCH: 5 Yüzde MINTIMEL: 3 Dakika MAX 0 Saniye SENSE: Orta LOTRANS: 140.0 Volt HITRANS: 300.0 Volt ALARMDEL: 30 Saniye BATTV: 14,2 Volt LASTXFER: Açıldığından beri transfer yok NUMXFERS: 0 TONBATT: 0 Saniye CUMONBATT: 0 Saniye XOFFBATTX: AG N/A STAT05TD02: 2014-06-10 NOMINV: 230 Volt NOMBATTV: 12,0 Volt NOMPOWER: 390 Watt YAZILIM: 892. R3. I USB FW:R3 END APC: 2018-10-14 16:55:38 +0300
"DURUM:" satırı olan bir duruma ihtiyacım var.
Cloud4rpi kitaplığı, ana bilgisayar adı veya işlemci sıcaklığı gibi Raspberry Pi sistem parametrelerini döndüren bir 'rpy.py' modülü içerir. Tüm bu parametreler, bazı komutları çalıştırmanın ve çıktıları ayrıştırmanın sonuçları olduğundan, tam olarak ihtiyacım olanı yapan kullanışlı bir 'parse_output' işlevi de içeriyor. UPS durumumu şu şekilde alabilirim:
def ups_status(): sonuç = rpi.parse_output(r'STATUS\s+:\s+(S+)', ['/etc/init.d/apcupsd', 'status']) if sonuç: dönüş sonucu başka: dönüş 'BİLİNMEYEN'
Bu durumu cloud4rpi'ye göndermek için bir değişken UPSStatus bildirmem ve bunu ups_status işlevime bağlamam gerekiyor: Artık programımı çalıştırabilirim:
değişkenler = { 'RoomTemp': { 'type': 'numeric', 'bind': ds_sensors[0] }, 'UPSStatus': { 'type': 'string', 'bind': ups_status } }
Ve değişkenimi cloud4rpi cihaz sayfasında hemen görebiliyorum.
Adım 4: “Üretime” hazırlanmak
Her şey çalışıyor ve şimdi cihazımı katılımsız moda hazırlamam gerekiyor.
Başlangıç olarak, zaman aralıklarını ayarlayacağım. Yoklama aralığı, programın sıcaklığı ve KGK durumunu ne sıklıkla kontrol edeceğini tanımlar - bunu bir saniyeye ayarlayın.
Sonuçlar her 5 dakikada bir buluta, teşhis bilgileri ise saatte bir gönderilir.
# SabitlerDATA_SENDING_INTERVAL = 300 # sn DIAG_SENDING_INTERVAL = 3600 # sn POLL_INTERVAL = 1 # sn
UPS durumu değiştiğinde - cihazımın 5 dakika beklemesini istemiyorum ve hemen veri gönderiyorum. Bu yüzden ana döngüyü biraz değiştirdim ve şöyle görünüyor:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' iken True: newUPS = ups_status() if (data_timer <= 0) veya (newUPS != prevUPS): device.publish_data() data_timer = DATA_SENDING_INTERVAL öncekiUPS = diag_timer ise newUPS <= diag_timer: device.publish_diag() diag_timer = DIAG_SENDING_INTERVAL uyku(POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
Test: komut dosyasını çalıştırın:
sudo python kontrolü.py
Ve cihaz sayfamda UPS durumunu izleyebilirim.
UPS gücünü kapatırsam, durum birkaç saniye içinde değişir, bu nedenle her şey çalışıyor. Şimdi sistem başlangıcında apcupsd'yi ve control.py'yi başlatmam gerekiyor. Apcupsd hizmeti eski ve onu modern raspbian'da başlatmak için /etc/init.d/apcupsd dosyasını en üstte bir yere şu satırları ekleyerek değiştirmeliyim:
### BEGIN INIT INFO# Şunları sağlar: apcupsd # Gerekli-Başlangıç: $all # Gerekli-Durdur: # Varsayılan-Başlangıç: 2 3 4 5 # Varsayılan-Durdur: # Kısa Açıklama: APC UPS arka plan programı… ### BAŞLANGIÇI BİTİR BİLGİ#
Ardından hizmeti etkinleştirin:
sudo systemctl apcupsd'yi etkinleştir
Ardından hizmeti başlatın:
sudo systemctl apcupsd'yi başlat
Şimdi sistem başlangıcında apcupsd başlatılacak.
Control.py'yi hizmet olarak yüklemek için sağlanan service_install.sh komut dosyasını kullandım:
sudo bash service_install.sh ~/cloud4rpi/control.py
Şimdi hizmet başlatıldı ve yeniden başlatmadan kurtulmalıdır.
Adım 5: Bir Kontrol Paneli Kurma
Cloud4rpi, cihazım için bir kontrol paneli kurmama izin veriyor. “Widget'lar” ekleyebilir ve bunları cihaz değişkenlerine bağlayabilirsiniz.
Cihazım iki salt okunur değişken sağlar - RoomTemp ve UPSStatus:
değişkenler = { 'RoomTemp': { 'type': 'numeric', 'bind': ds_sensors[0] }, 'UPSStatus': { 'type': 'string', 'bind': ups_status } }
3 widget ekledim - RoomTemp için Sayı, UPSStatus için Metin ve RoomTemp için bir Grafik.
Uyarılar ayarlayabilirim, böylece sıcaklık belirtilen aralığın dışında olduğunda, UPS çevrimdışı olduğunda veya gerektiği zaman cihazın kendisi veri göndermediğinde bir e-posta alırım. Artık kır evimin iyi olduğundan emin olabilirim ve bilgilendirilebilirim Bir şeyler ters gittiğinde, komşuları arayıp neler olup bittiğini kontrol etmelerini isteyebilirim. İşte control.py'nin gerçek kodu.
Önerilen:
MikroPython ile COVID-19 için Kızılötesi Termometre Kendin Yap: 8 Adım
MikroPython ile COVID-19 için Kızılötesi Termometre DIY Yapın: Coronavirüs Hastalığı (COVID-19) salgını nedeniyle, şirketin İK'sının her çalışanın sıcaklığını ölçmesi ve kaydetmesi gerekir. Bu, İK için sıkıcı ve zaman alıcı bir görevdir. Ben de bu projeyi yaptım: işçi düğmeye bastı, bu
WiFi Uyarıları ile Mini Kendin Yap Hidroponik Sistemler ve Kendin Yap Hidroponik Bitki Bahçesi İnşa Et: 18 Adım
WiFi Uyarıları ile bir Mini Kendin Yap Hidroponik Sistemler ve Kendin Yap Hidroponik Bitki Bahçesi İnşa Et: Bu derste size bir #Kendin Yap #hidroponik sistemini nasıl kuracağınızı göstereceğiz. Bu DIY hidroponik sistem, 2 dakika açık ve 4 dakika kapalı olan özel bir hidroponik sulama döngüsünde sulayacaktır. Ayrıca rezervuar su seviyesini de izleyecektir. Bu sistem
Bluetooth LE ve RaspberryPi ile Sıcaklığı İzleme ve Kaydetme: 9 Adım (Resimlerle)
Bluetooth LE ve RaspberryPi ile Sıcaklığı İzleme ve Kaydetme: Bu talimat, Blue Radios (BLEHome) ve RaspberryPi 3B'den Bluetooth LE sensör hatası ile çok düğümlü bir sıcaklık izleme sisteminin nasıl bir araya getirileceği hakkındadır.Bluetooth LE standardının geliştirilmesi sayesinde, şimdi kolayca ulaşılabilir
B&O H5 6.5mm Sürücüler ile Sennheiser IE800 Shell ile Süper Hi-Fi Kulak İçi Kulaklık Kendin Yap: 6 Adım
B&O H5 6.5mm Sürücülü Sennheiser IE800 Kabuklu Süper Hi-Fi Kulak İçi Kulaklık Kendin Yap: "Sennheiser'ın orijinal IE800 kulak içi kulaklığı beş yıl önce piyasaya sürüldü, bu süper rahat, son derece açık, doğal sesli bir telefondu.. Almanya'da tasarlanmış ve el yapımı… Yeni IE800 S, her birine monte edilmiş tek bir 7 mm sürücüye sahiptir
ESP8266 ve Google Home Mini Kullanarak Kendin Yap Ses/İnternet Kontrollü Ev Otomasyonu ve İzleme: 6 Adım
ESP8266 ve Google Home Mini Kullanarak Kendin Yap Ses/İnternet Kontrollü Ev Otomasyonu ve İzleme: Hey!! Uzun bir aradan sonra, hepimizin kazanmak için sıkıcı(iş) bir şeyler yapması gerektiği için buradayım.BLUETOOTH,IR,Lokal WIFI,Bulut yani zor olanlardan yazdığım tüm EV OTOMASYON yazılarından sonra *ŞİMDİ* geliyor. en kolayı ama en etkilisi