Daftar Isi:
- Langkah 1: Pemantauan Suhu
- Langkah 2: Menyiapkan Cloud4Rpi.io
- Langkah 3: Pemantauan UPS
- Langkah 4: Mempersiapkan “produksi”
- Langkah 5: Menyiapkan Panel Kontrol
Video: Pemantauan Rumah DIY Dengan RaspberryPi dan Cloud4Rpi: 5 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
Suatu akhir pekan musim dingin saya pergi ke rumah pedesaan saya, dan menemukan bahwa di sana sangat dingin. Sesuatu telah terjadi dengan listrik dan pemutus RCD telah mematikannya, dan pemanas juga mati. Saya beruntung saya datang ke sana, jika tidak dalam beberapa hari semuanya akan membeku yang sangat buruk untuk pipa dan radiator.
Saya memiliki beberapa Raspberry Pi di sekitar, dan sensor termal, jadi saya pikir - mengapa saya tidak membuat perangkat pemantauan sederhana? Petunjuk di bawah ini mengasumsikan Anda memiliki Raspberry Pi dengan Raspbian dan koneksi jaringan sudah diatur. Dalam kasus saya ini adalah Raspberry Pi B+ dengan Raspbian (2018–06–27-raspbian-stretch-lite).
Langkah 1: Pemantauan Suhu
Bagaimana cara menghubungkan sensor suhu DS18B20? Hanya google bagaimana melakukan ini, dan Anda akan melihat banyak gambar seperti ini:
Dalam kasus saya, saya memiliki kabel Hitam, Kuning dan Merah. Hitam adalah ground, menuju pin Ground, merah adalah power - menuju pin 3.3v, dan kuning adalah data - harus menuju pin GPIO4, dengan resistor 4,7 kOm terhubung antara data dan daya. Catatan, Anda dapat menghubungkan beberapa sensor secara paralel (mereka digital, dan memiliki alamat yang berbeda), Anda hanya perlu satu resistor. Setelah menghubungkan sensor Anda, Anda harus mengaktifkan 1Wire di raspi-config:
sudo raspi-config
Buka 5 opsi Interfacing, aktifkan P7 1-Wire dan reboot.
Kemudian Anda dapat menguji apakah Anda dapat melihat sensornya:
sudo modprobe w1-gpiosudo modprobe w1-thermls /sys/bus/w1/devices/
Anda akan melihat sesuatu seperti ini:
pi@vcontrol:~ $ ls /sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff adalah sensor suhu kami.
Perangkat keras sudah siap. Sekarang saya perlu mengatur bagian pemantauan. Saya memerlukan sesuatu yang akan menunjukkan data dan memberi tahu saya jika perangkat terputus untuk sementara waktu atau tidak ada daya, atau suhu rendah. Jelas ini bukan raspberry pi itu sendiri, harus ada beberapa server atau layanan di internet yang memonitor perangkat saya.
Saya bisa membuat server sederhana, mendapatkan hosting dan mengatur semuanya, tapi jujur, saya tidak mau. Untungnya, seseorang telah memikirkan hal ini dan membuat cloud4rpi.io - panel kontrol cloud untuk perangkat Anda.
Langkah 2: Menyiapkan Cloud4Rpi.io
Cloud4Rpi menyediakan layanan yang memungkinkan perangkat Anda mengirim dan menerima data menggunakan protokol MQTT atau HTTP. Mereka memiliki pustaka klien untuk Python, jadi saya akan menggunakan Python.
Contoh python yang disertakan dengan layanan Cloud4Rpi sudah berisi kode untuk sensor suhu DS18B20.
Jadi saya pergi ke https://cloud4rpi.io, membuat akun dan menambahkan perangkat baru di sana. Halaman perangkat memiliki token - string yang mengidentifikasi perangkat, dan yang harus ditentukan dalam program yang mengirim data.
Untuk memulainya, selalu merupakan ide yang baik untuk memperbarui manajer paket dan meningkatkan paket (catatan: dapat memakan waktu berjam-jam jika Anda belum memutakhirkan untuk sementara waktu):
sudo apt-get update && sudo apt-get upgrade
Kemudian, instal git, Python dan manajer paketnya Pip:
sudo apt-get install git python python-pip
Kemudian, instal pustaka Python cloud4rpi:
sudo pip instal cloud4rpi
Akhirnya, saya siap untuk menulis program kontrol saya. Saya mulai dari contoh yang tersedia di
git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
File program utama adalah control.py - Saya perlu memodifikasinya untuk kebutuhan saya. Pertama, edit program dan tempel token:
sudo nano control.py
Temukan baris DEVICE_TOKEN='…'] dan tentukan token perangkat di sana. Setelah itu saya cukup menjalankan program: Ini berfungsi dan melaporkan suhu dalam variabel RoomTemp:
sudo python control.py
Ia bekerja dan melaporkan suhu dalam variabel RoomTemp.
Perhatikan bahwa ia menemukan semua sensor ds18b20 onewire
ds_sensors = ds18b20. DS18B20.find_all()
dan menggunakan sensor yang pertama kali ditemukan:
RoomTemp': { 'type': 'numeric', 'bind': ds_sensors[0] if ds_sensors else Tidak ada }
Ok, itu mudah, karena contoh program memiliki semua yang diperlukan untuk bekerja dengan sensor ds18b20 pada Raspberry Pi. Sekarang saya perlu menemukan cara untuk melaporkan status daya.
Langkah 3: Pemantauan UPS
Hal berikutnya yang ingin saya pantau adalah status UPS, jadi jika ada pemadaman listrik, saya akan mengetahuinya sebelum semuanya terputus.
Saya memiliki UPS APC dengan kontrol USB, jadi saya segera mencari di Google dan menemukan bahwa saya memerlukan apcupsd. https://www.anites.com/2013/09/monitoring-ups.html… Saya mencoba beberapa kali untuk menginstalnya melalui apt-get, dan itu tidak berhasil untuk saya karena berbagai alasan. Saya akan menunjukkan cara menginstalnya dari sumbernya.
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
Kemudian saya mengedit apcupsd.conf untuk terhubung ke UPS saya melalui usb.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb # #UPSTYPE apcsmart #DEVICE /dev/ttyS0 UPSTYPE usb DEVICE
Sekarang saya dapat mencolokkan kabel USB dari UPS ke RaspberryPi dan menguji apakah UPS akan ditemukan.
sudo apctest
Seharusnya tidak memberi Anda pesan kesalahan.
Sekarang layanan apcupsd harus dimulai:
sudo systemctl start apcupsd
Untuk menanyakan status UPS, saya dapat menggunakan perintah status:
sudo /etc/init.d/apcupsd status
Dan itu akan menghasilkan sesuatu seperti ini:
APC: 001, 035, 0855DATE: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSION: 3.14.14 (31 Mei 2016) debian UPSNAME: vcontrol CABLE: Kabel USB DRIVER: USB UPS Driver UPSMODE: Stand Alone STARTTIME: 2018-10-14 16:54:28 +0300 MODEL: Back-UPS XS 650CI STATUS: LINEV: 238.0 Volts LOADPCT: 0.0 Persen BCHARGE: 100.0 Persen TIMELEFT: 293.3 Menit MBATTCHG: 5 Persen MINTIMEL: 3 Menit MAXTIME: 0 Detik SENSE: Sedang LOTRANS: 140.0 Volt HITRANS: 300.0 Volt ALARMDEL: 30 Detik BATTV: 14.2 Volt LASTXFER: Tidak ada transfer sejak turnon NUMXFERS: 0 TONBATT: 0 Detik CUMONBATT: 0 Detik XOFFBATT: N/A STATFLAGRIAL: 0x050000: 10-06-2014 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
Saya memerlukan status - yang merupakan baris "STATUS:".
Pustaka Cloud4rpi berisi modul 'rpy.py' yang mengembalikan parameter sistem Raspberry Pi seperti nama host atau suhu cpu. Karena semua parameter tersebut adalah hasil dari menjalankan beberapa perintah dan output parsing, ini juga berisi fungsi ' parse_output ' praktis yang melakukan persis seperti yang saya butuhkan. Ini adalah cara mendapatkan status UPS saya:
def ups_status(): result = rpi.parse_output(r'STATUS\s+:\s+(S+)', ['/etc/init.d/apcupsd', 'status']) if result: return result else: return 'TIDAK DIKENAL'
Untuk mengirim status ini ke cloud4rpi, saya perlu mendeklarasikan variabel UPSStatus dan mengikatnya ke fungsi ups_status saya: Sekarang saya dapat menjalankan program saya:
variabel = { 'RoomTemp': { 'type': 'numeric', 'bind': ds_sensors[0] }, 'UPSStatus': { 'type': 'string', 'bind': ups_status } }
Dan saya bisa langsung melihat variabel saya di halaman perangkat cloud4rpi.
Langkah 4: Mempersiapkan “produksi”
Semuanya berfungsi, dan sekarang saya perlu menyiapkan perangkat saya ke mode tanpa pengawasan.
Untuk memulainya, saya akan menyesuaikan interval waktu. Interval polling menentukan seberapa sering program memeriksa suhu dan status UPS - setel ke satu detik.
Hasil dikirim ke cloud setiap 5 menit, dan informasi diagnostik - setiap jam.
# KonstantaDATA_SENDING_INTERVAL = 300 # detik DIAG_SENDING_INTERVAL = 3600 # detik POLL_INTERVAL = 1 # detik
Ketika status UPS berubah - saya tidak ingin perangkat saya menunggu selama 5 menit, dan saya segera mengirim data. Jadi saya telah sedikit memodifikasi loop utama dan terlihat seperti ini:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' while True: newUPS = ups_status() if (data_timer <= 0) atau (newUPS != prevUPS): device.publish_data() data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS jika diag_timer <= 0: device.publish_diag() diag_timer = DIAG_SENDING_INTERVAL sleep(POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
Pengujian: menjalankan skrip:
sudo python control.py
Dan saya dapat melihat status UPS di halaman perangkat saya.
Jika saya mematikan daya UPS, status berubah dalam beberapa detik, jadi semuanya berfungsi. Sekarang saya harus memulai apcupsd dan control.py saya pada startup sistem. Layanan Apcupsd sudah tua dan untuk memulainya pada raspbian modern, saya harus memodifikasi file /etc/init.d/apcupsd, dengan menambahkan baris ini di suatu tempat di atas:
### BEGIN INIT INFO# Menyediakan: apcupsd # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: APC UPS daemon… ### END INIT INFORMASI#
Kemudian aktifkan layanan:
sudo systemctl aktifkan appcupsd
Kemudian mulai layanan:
sudo systemctl start apcupsd
Sekarang apcupsd akan dimulai pada startup sistem.
Untuk menginstal control.py sebagai layanan, saya menggunakan skrip service_install.sh yang disediakan:
sudo bash service_install.sh ~/cloud4rpi/control.py
Sekarang layanan dimulai dan harus selamat dari reboot.
Langkah 5: Menyiapkan Panel Kontrol
Cloud4rpi memungkinkan saya mengatur panel kontrol untuk perangkat saya. Anda dapat menambahkan "widget" dan mengikatnya ke variabel perangkat.
Perangkat saya menyediakan dua variabel read-only - RoomTemp dan UPSStatus:
variabel = { 'RoomTemp': { 'type': 'numeric', 'bind': ds_sensors[0] }, 'UPSStatus': { 'type': 'string', 'bind': ups_status } }
Saya menambahkan 3 widget - Nomor untuk RoomTemp, Teks untuk UPSStatus dan Bagan untuk RoomTemp.
Saya dapat mengatur peringatan, jadi saya menerima email ketika suhu di luar kisaran yang ditentukan, UPS offline atau perangkat itu sendiri tidak mengirim data ketika seharusnya. Sekarang saya dapat memastikan rumah pedesaan saya baik-baik saja, dan saya dapat diberi tahu ketika ada sesuatu yang salah, jadi saya bisa menelepon tetangga dan meminta mereka untuk memeriksa apa yang terjadi. Berikut adalah kode sebenarnya dari control.py.
Direkomendasikan:
Pemantauan Suhu dan Kelembaban Jarak Jauh Dengan ESP8266 dan Aplikasi Blynk: 15 Langkah
Pemantauan Suhu dan Kelembaban Jarak Jauh Dengan ESP8266 dan Aplikasi Blynk: Ini adalah proyek pertama saya dengan chip ESP8266. Saya baru saja membangun rumah kaca baru di dekat rumah saya dan menarik bagi saya apa yang terjadi di sana selama sehari? Maksud saya bagaimana suhu dan kelembaban berubah? Apakah rumah kaca cukup berventilasi? Jadi saya putuskan
Sistem Pemantauan dan Kontrol Rumah Kaca Hidroponik: 5 Langkah (dengan Gambar)
Sistem Pemantauan dan Kontrol Rumah Kaca Hidroponik: Dalam instruksi ini, saya akan menunjukkan kepada Anda bagaimana membangun sistem pemantauan dan kontrol rumah kaca hidroponik. Saya akan menunjukkan kepada Anda komponen yang dipilih, diagram pengkabelan tentang bagaimana sirkuit dibangun, dan sketsa Arduino yang digunakan untuk memprogram Seeed
Pemantauan dan Peringatan Pabrik Dengan ESP8266 dan AskSensors IoT Cloud: 6 Langkah
Pemantauan dan Peringatan Tanaman Dengan ESP8266 dan AskSensors IoT Cloud: Proyek ini bertujuan untuk membangun sistem pemantauan tanaman pintar menggunakan ESP8266 dan AskSensors IoT Platform. Sistem ini dapat digunakan untuk melacak tingkat kelembapan tanah guna memberikan kriteria objektif untuk keputusan irigasi. yang membantu memastikan irigasi
Otomatisasi dan Pemantauan Rumah Terkendali Suara/Internet DIY Menggunakan ESP8266 dan Google Home Mini: 6 Langkah
Otomatisasi dan Pemantauan Rumah Terkendali Suara/Internet DIY Menggunakan ESP8266 dan Google Home Mini: Hei!! Setelah istirahat panjang saya di sini karena kita semua harus melakukan sesuatu yang membosankan (pekerjaan) untuk mendapatkan. Setelah semua artikel HOME AUTOMATION yang saya tulis dari BLUETOOTH, IR, WIFI Lokal, Cloud yaitu yang sulit, *SEKARANG* datang paling mudah tapi paling efisien
Pemantauan Rumah Pintar Menggunakan Alexa dan Arduino: 9 Langkah (dengan Gambar)
Pemantauan Rumah Pintar Menggunakan Alexa dan Arduino: Di dunia saat ini orang menghabiskan lebih banyak waktu di tempat kerja daripada di rumah mereka. Oleh karena itu diperlukan suatu sistem pemantauan rumah dimana masyarakat dapat mengetahui kondisi rumah saat mereka sedang bekerja. Akan lebih baik lagi jika salah satu c