Daftar Isi:

Pool Pi Guy - Sistem Alarm Berbasis AI dan Pemantauan Kolam Menggunakan Raspberry Pi: 12 Langkah (dengan Gambar)
Pool Pi Guy - Sistem Alarm Berbasis AI dan Pemantauan Kolam Menggunakan Raspberry Pi: 12 Langkah (dengan Gambar)

Video: Pool Pi Guy - Sistem Alarm Berbasis AI dan Pemantauan Kolam Menggunakan Raspberry Pi: 12 Langkah (dengan Gambar)

Video: Pool Pi Guy - Sistem Alarm Berbasis AI dan Pemantauan Kolam Menggunakan Raspberry Pi: 12 Langkah (dengan Gambar)
Video: deep web video!!!#deepweb #serem #ngeringerisedap #lucu #experiment #aneh #keajaibandunia 2024, Juni
Anonim
Pool Pi Guy - Sistem Alarm Berbasis AI dan Pemantauan Kolam Menggunakan Raspberry Pi
Pool Pi Guy - Sistem Alarm Berbasis AI dan Pemantauan Kolam Menggunakan Raspberry Pi

Memiliki kolam renang di rumah memang menyenangkan, namun disertai dengan tanggung jawab yang besar. Kekhawatiran terbesar saya adalah memantau jika ada orang yang berada di dekat kolam tanpa pengawasan (terutama anak-anak yang lebih muda). Gangguan terbesar saya adalah memastikan saluran air kolam tidak pernah turun di bawah entri pompa, yang akan membuat pompa kering dan menghancurkannya dengan biaya $$$ dalam perbaikan.

Saya baru-baru ini menemukan cara menggunakan Raspberry Pi dengan OpenCV dan TensorFlow, bersama dengan sensor ketinggian air dan katup solenoid untuk menyelesaikan kedua masalah - dan bersenang-senang melakukannya!

Ternyata juga merupakan sistem alarm yang hebat - gerakan diaktifkan, dikendalikan AI, dapat disesuaikan tanpa batas.

Mari selami.

Langkah 1: Rencana Besar

Dalam instruksi ini kami akan menunjukkan cara:

  1. Siapkan Raspberry Pi dengan OpenCV dan TensorFlow
  2. Hubungkan Webcam melalui kabel USB yang panjang
  3. Tulis algoritma OpenCV untuk mendeteksi gerakan
  4. Gunakan TensorFlow untuk deteksi objek
  5. Siapkan server web di Raspberry Pi untuk menampilkan gambar yang menarik
  6. Integrasikan dengan IFTTT untuk memicu peringatan seluler jika seseorang terdeteksi
  7. Pasang HAT relay ke Raspberry Pi dan hubungkan ke katup solenoid yang akan menambahkan air ke kolam
  8. Pasang sensor ketinggian air ke Raspberry Pi dan antarmuka dengannya menggunakan GPIO Pi
  9. Tulis beberapa kode untuk merekatkan semuanya

Langkah 2: Daftar Belanja

Daftar belanja
Daftar belanja

Semua komponen sudah tersedia dari Amazon. Jangan ragu untuk bereksperimen dan bertukar komponen - itu setengah kesenangan!

  1. Raspberry Pi
  2. Catu Daya Raspberry Pi (jangan berhemat di sini)
  3. Kartu Memori (lebih besar lebih baik)
  4. Kasing (yang ini cukup besar untuk menampung Pi dan HAT)
  5. Webcam USB (webcam apa pun bisa digunakan, tetapi Anda menginginkan yang mendapatkan gambar bagus dan menyeimbangkan pencahayaan dengan baik)
  6. Kabel ekstensi USB (jika diperlukan - ukur jarak antara Pi dan di mana Anda akan meletakkan kamera)
  7. Papan estafet HAT (yang ini memiliki 3 relai dan kami hanya membutuhkan satu, tetapi Anda akan segera menggunakan yang lain!)
  8. solenoida
  9. Pemasangan solenoid 1 dan Pemasangan 2 (itu benar-benar tergantung pada apa Anda memasang solenoid, tetapi ini berhasil untuk saya)
  10. Catu Daya Solenoid (AC 24V apa pun bisa digunakan)
  11. Kabel (sekali lagi, hampir semua kabel 2 untai dapat digunakan - arusnya minimal)
  12. Water Level Float Switch (ini hanya contoh, periksa apa yang dapat dengan mudah dihubungkan ke kolam Anda)
  13. Beberapa kabel Jumper dan konektor Kawat

Langkah 3: Siapkan Raspberry Pi Anda

Siapkan Pi Raspberry Anda
Siapkan Pi Raspberry Anda

Raspberry Pi adalah komputer kecil yang hebat. Biayanya hanya $35, berjalan secara konsisten, dan memiliki banyak perangkat lunak dan perangkat keras yang kompatibel. Menyiapkannya cukup mudah:

  1. Format kartu SD Anda. Ini membutuhkan perawatan khusus - Raspberry Pi hanya dapat boot dari kartu SD berformat FAT. Ikuti petunjuk ini.
  2. Hubungkan Raspberry Pi ke keyboard dan mouse USB, ditambah layar HDMI, dan ikuti instruksi dalam tutorial NOOBS Raspberry Pi. Pastikan untuk mengatur WiFi dan mengaktifkan akses SSH. Jangan lupa untuk mengatur kata sandi untuk akun pi default.
  3. Di jaringan rumah Anda, atur IP statis untuk Raspberry Pi - itu akan membuatnya lebih mudah untuk masuk ke SSH.
  4. Pastikan Anda memiliki klien ssh yang diinstal di desktop/laptop Anda. Untuk PC saya akan merekomendasikan Putty, yang dapat Anda instal dari sini.
  5. Cabut USB dan HDMI dari Raspberry Pi, reboot, dan ssh ke dalamnya - jika semuanya berhasil, Anda akan melihat sesuatu seperti ini:

Linux raspberrypi 4.14.98-v7+ #1200 SMP Sel 12 Feb 20:27:48 GMT 2019 armv7l

Program yang disertakan dengan sistem GNU/Linux Debian adalah perangkat lunak bebas; istilah distribusi yang tepat untuk setiap program dijelaskan dalam file individual di /usr/share/doc/*/copyright. Debian GNU/Linux BENAR-BENAR TIDAK ADA JAMINAN, sejauh diizinkan oleh hukum yang berlaku. Login terakhir: Sen 13 Mei 10:41:40 2019 dari 104.36.248.13 pi@raspberrypi:~ $

Langkah 4: Siapkan OpenCV

Siapkan OpenCV
Siapkan OpenCV

OpenCV adalah kumpulan fungsi manipulasi gambar yang menakjubkan untuk visi komputer. Ini akan memungkinkan kita membaca gambar dari Webcam, memanipulasinya untuk menemukan area gerak, menyimpannya, dan banyak lagi. Setup pada Raspberry Pi tidak sulit tetapi membutuhkan perawatan.

Mulailah dengan menginstal virtaulenvwrapper: kita akan menggunakan python untuk melakukan semua pemrograman kita, dan virtualenv akan membantu kita memisahkan dependensi untuk OpenCV dan TensorFlow vs. Flask atau GPIO:

pi@raspberrypi:~ $ sudo pip install virtualenvwrapper

Sekarang Anda dapat menjalankan "mkvirtualenv" untuk membuat lingkungan baru, "bekerja" untuk mengerjakannya, dan banyak lagi.

Jadi, mari kita buat lingkungan untuk manipulasi gambar kita, dengan python 3 sebagai penerjemah default (ini tahun 2019, tidak ada alasan untuk tetap menggunakan python 2) yang lebih lama:

pi@raspberrypi:~ $ mkvirtualenv cv -p python3

… (cv) pi@raspberrypi:~

Kami sekarang siap untuk menginstal OpenCV. Kami sebagian besar akan mengikuti tutorial yang sangat baik di Learn OpenCV. Secara khusus ikuti langkah 1 dan 2: mereka

sudo apt -y updateudo apt -y upgrade ## Instal dependensi Sudo apt-get -y install build-essential checkinstall cmake pkg-config yasm Sudo apt-get -y install git gfortran Sudo apt-get -y install libjpeg8-dev libjasper- dev libpng12-dev Sudo apt-get -y install libtiff5-dev Sudo apt-get -y install libtiff-dev Sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev Sudo apt-get - y install libxine2-dev libv4l-dev cd /usr/include/linux sudo ln -s -f../libv4l1-videodev.h videodev.h sudo apt-get -y install libgstreamer0.10-dev libgstreamer-plugins-base0. 10-dev Sudo apt-get -y install libgtk2.0-dev libtbb-dev qt5-default Sudo apt-get -y install libatlas-base-dev Sudo apt-get -y install libmp3lame-dev libtheora-dev Sudo apt-get -y instal libvorbis-dev libxvidcore-dev libx264-dev Sudo apt-get -y instal libopencore-amrnb-dev libopencore-amrwb-dev Sudo apt-get -y instal libavresample-dev Sudo apt-get -y instal x264 v4l-utils sudo apt-get -y install libprotobuf -dev protobuf-compiler Sudo apt-get -y install libgoogle-glog-dev libgflags-dev Sudo apt-get -y install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen Sudo apt-get install libqtgui4 Sudo apt-get install libqt4- tes

Sekarang kita bisa menginstal OpenCV dengan python binding di dalam cv virtualenv (Anda masih di dalamnya, kan?)

pip instal opencv-contrib-python

Dan itu saja! Kami telah menginstal OpenCV di Raspberry Pi kami, siap untuk mengambil foto dan video, memanipulasinya dan menjadi keren.

Periksa itu dengan membuka juru bahasa python dan mengimpor opencv dan periksa apakah tidak ada kesalahan:

(cv) pi@raspberrypi:~ $ python

Python 3.5.3 (default, 27 Sep 2018, 17:25:39) [GCC 6.3.0 20170516] di linux Ketik "bantuan", "hak cipta", "kredit" atau "lisensi" untuk informasi lebih lanjut. >>> impor cv2 >>>

Langkah 5: Siapkan TensorFlow

Siapkan TensorFlow
Siapkan TensorFlow

TensorFlow adalah framework machine learning/AI yang dikembangkan dan dikelola oleh Google. Ini memiliki dukungan luas untuk model pembelajaran mendalam untuk berbagai tugas termasuk deteksi objek dalam gambar, dan sekarang cukup mudah dipasang di Raspberry Pi. Performa modelnya yang ringan pada Pi mungil ini sekitar 1 frame per detik, yang sangat memadai untuk aplikasi seperti milik kita.

Kami pada dasarnya akan mengikuti tutorial luar biasa dari Edje Electronics, dengan modifikasi yang dimungkinkan oleh distribusi TensorFlow yang lebih baru:

pi@raspberrypi:~ $ mengerjakan cv

(cv) pi@raspberrypi:~ $ pip install tensorflow (cv) pi@raspberrypi:~ $ sudo apt-get install libxml2-dev libxslt-dev (cv) pi@raspberrypi:~ $ pip install bantal lxml jupyter matplotlib cython (cv) pi@raspberrypi:~ $ sudo apt-get install python-tk

Sekarang kita perlu mengkompilasi protobuf Google. Cukup ikuti instruksi di langkah 4 dari tutorial luar biasa yang sama

Terakhir, klon dan atur definisi model TensorFlow - ikuti langkah 5 dalam tutorial Edje Electronics

Jangan ragu untuk mengikuti contoh mereka di langkah 6 juga, ini adalah pengantar yang bagus untuk deteksi objek di Raspberry Pi.

Langkah 6: Deteksi Gerakan Menggunakan OpenCV

Mari kita mulai dengan menguji bahwa OpenCV dapat berinteraksi dengan webcam kita: ssh ke Raspberry Pi, pindah ke cv virtualenv (workon cv), buka interpreter python (ketik saja python), dan masukkan perintah python berikut:

impor cv2

cap = cv2. VideoCapture(0) cap.set(cv2. CAP_PROP_FRAME_WIDTH, 1920) cap.set(cv2. CAP_PROP_FRAME_HEIGHT, 1080) ret, frame = cap.read() print('Baca ukuran bingkai: {}x{}'.format(frame.shape[1], frame.shape[0])

Jika beruntung, Anda akan melihat bahwa OpenCV dapat membaca bingkai HD dari kamera.

Anda dapat menggunakan cv2.imwrite(path, frame) untuk menulis frame tersebut ke disk dan sftp kembali untuk melihat sebenarnya.

Strategi untuk mendeteksi gerakan cukup lurus ke depan:

  1. Bekerja pada frame resolusi lebih rendah - tidak perlu beroperasi pada full HD di sini
  2. Selanjutnya, buramkan gambar untuk memastikan noise sesedikit mungkin.
  3. Pertahankan rata-rata berjalan dari N frame terakhir. Untuk aplikasi ini, di mana kecepatan bingkai sekitar 1 FPS (hanya karena TensorFlow membutuhkan waktu per bingkai), saya menemukan bahwa N=60 mengembalikan hasil yang baik. Dan karena implementasi yang hati-hati tidak membutuhkan lebih banyak CPU dengan lebih banyak bingkai, itu tidak masalah (ini membutuhkan lebih banyak memori - tetapi itu dapat diabaikan ketika kami bekerja dengan bingkai beresolusi lebih rendah)
  4. Kurangi gambar saat ini dari rata-rata berjalan (hati-hati dengan mengetik - Anda harus mengizinkan nilai positif dan negatif [-255.. 255], sehingga bingkai perlu dikonversi ke int)
  5. Anda dapat melakukan pengurangan pada konversi skala abu-abu dari bingkai (dan rata-rata), atau melakukannya secara terpisah untuk setiap saluran RGB dan kemudian menggabungkan hasilnya (yang merupakan strategi yang saya pilih, membuatnya sensitif terhadap perubahan warna)
  6. Gunakan ambang batas pada delta dan hilangkan kebisingan dengan erosi dan pelebaran
  7. Terakhir cari kontur area dengan delta - area ini adalah tempat terjadinya gerakan dan gambar saat ini berbeda dari rata-rata gambar sebelumnya. Kami selanjutnya dapat menemukan kotak pembatas untuk kontur ini jika diperlukan.

Saya telah merangkum kode untuk melakukan ini di kelas python DeltaFinder yang dapat Anda temukan di github saya di sini

Langkah 7: Deteksi Objek Menggunakan TensorFlow

Jika Anda telah mengikuti prosedur penginstalan TensorFlow, Anda telah menguji apakah TensorFlow telah terinstal dan berfungsi.

Untuk tujuan mendeteksi orang di pemandangan luar ruangan umum, model yang telah dilatih sebelumnya pada kumpulan data COCO berkinerja cukup baik - persis model yang telah kami unduh di akhir penginstalan TensorFlow. Kita hanya perlu menggunakannya untuk inferensi!

Sekali lagi, saya telah merangkum pemuatan model dan inferensi di kelas python TFClassify untuk mempermudah, yang dapat Anda temukan di sini.

Langkah 8: Siapkan Server Web di Raspberry Pi

Siapkan Server Web di Raspberry Pi
Siapkan Server Web di Raspberry Pi

Cara termudah untuk mengakses hasil deteksi objek adalah browser web, jadi mari kita siapkan server web di Raspberry Pi. Kami kemudian dapat mengaturnya untuk menyajikan gambar dari direktori tertentu.

Ada beberapa opsi untuk kerangka kerja server web. Saya memilih Flask. Ini sangat dapat dikonfigurasi dan mudah diperluas dengan Python. Karena "skala" yang kita butuhkan itu sepele, itu sudah lebih dari cukup.

Saya sarankan menginstalnya di virtualenv baru, jadi:

pi@raspberrypi:~ $ mkvirtualenv webserv

(webserv)pi@raspberrypi: ~ $pip install Flask

Perhatikan bahwa dengan pengaturan jaringan normal, itu hanya akan dapat dijangkau ketika browser Anda berada di LAN nirkabel yang sama dengan Raspberry Pi Anda. Anda dapat membuat pemetaan port / konfigurasi NAT pada router Internet Anda untuk memungkinkan akses eksternal - tetapi saya menyarankan untuk tidak melakukannya. Kode yang saya tulis tidak berusaha memberikan keamanan yang Anda perlukan saat mengizinkan akses Internet umum ke Raspberry Pi Anda.

Uji instalasi Anda dengan mengikuti panduan memulai cepat Flask

Langkah 9: Notifikasi Seluler Dari Raspberry Pi Menggunakan IFTTT

Notifikasi Seluler Dari Raspberry Pi Menggunakan IFTTT
Notifikasi Seluler Dari Raspberry Pi Menggunakan IFTTT

Saya sangat ingin mendapatkan notifikasi seluler saat ada acara. Dalam hal ini, ketika seseorang terdeteksi dan ketika level air turun. Cara paling sederhana yang saya temukan untuk melakukannya, tanpa harus menulis aplikasi seluler khusus, adalah menggunakan IFTTT. IFTTT adalah singkatan dari "If This Then That" dan memungkinkan banyak jenis peristiwa untuk memicu banyak jenis tindakan. Dalam kasus kami, kami tertarik dengan pemicu Webhook Pembuat IFTTT. Ini memungkinkan kami untuk memicu tindakan IFTTT dengan membuat permintaan HTTP POST ke server IFTTT dengan kunci khusus yang ditetapkan ke akun kami, bersama dengan data yang menentukan apa yang terjadi. Tindakan yang kami lakukan dapat sesederhana membuat pemberitahuan di perangkat seluler kami menggunakan aplikasi seluler IFTTT, atau apa pun yang lebih kompleks dari itu.

Berikut adalah cara melakukannya:

  1. Buat akun IFTTT di ifttt.com
  2. Saat masuk, buka halaman pengaturan layanan Webhook dan masukkan URL di browser Anda (seperti https://maker.ifttt.com/use/. Halaman web itu akan menunjukkan kunci Anda dan URL yang akan digunakan untuk memicu tindakan.
  3. Buat applet IFTTT yang akan menghasilkan notifikasi seluler saat Webhook dipicu dengan detail acara:

    1. Klik "Applet Saya" dan kemudian "Applet Baru".
    2. Klik "+ini" dan pilih "webhooks". Klik "Terima permintaan web" untuk melanjutkan ke detailnya
    3. Beri nama acara Anda, mis. "PoolEvent" dan klik "Buat pemicu"
    4. Klik "+ itu" dan pilih "pemberitahuan". Kemudian pilih "Kirim pemberitahuan kaya dari aplikasi IFTTT"
    5. Untuk "judul" pilih sesuatu seperti "PoolPi"
    6. Untuk "pesan" tulis "Pool Pi terdeteksi: " dan klik "tambahkan bahan"."Nilai1".
    7. Kembali ke URL yang Anda salin di langkah 2. Ini akan menampilkan URL yang digunakan untuk memanggil applet yang baru Anda buat. Salin URL itu, ganti placeholder {event} dengan nama acara (di luar contoh PoolEvent)
  4. Unduh, instal, dan masuk ke aplikasi IFTTT untuk perangkat seluler Anda
  5. Jalankan skrip python ini di Raspberry Pi Anda untuk melihatnya berfungsi (perhatikan mungkin perlu beberapa detik atau menit untuk memicu di perangkat seluler Anda):

permintaan impor

request.post('https://maker.ifttt.com/trigger/PoolEvent/with/key/', json={"value1":"Hello Notifications"})

Langkah 10: Tambahkan Relay HAT ke Raspberry Pi dan Hubungkan ke Solenoid Valve

Tambahkan HAT Relay ke Raspberry Pi dan Hubungkan ke Katup Solenoid
Tambahkan HAT Relay ke Raspberry Pi dan Hubungkan ke Katup Solenoid
Tambahkan HAT Relay ke Raspberry Pi dan Hubungkan ke Katup Solenoid
Tambahkan HAT Relay ke Raspberry Pi dan Hubungkan ke Katup Solenoid
Tambahkan HAT Relay ke Raspberry Pi dan Hubungkan ke Katup Solenoid
Tambahkan HAT Relay ke Raspberry Pi dan Hubungkan ke Katup Solenoid

Sebelum melanjutkan dengan langkah ini MATIKAN Raspberry Pi Anda: ssh ke sana dan ketik "Sudo shutdown now", lalu lepaskan dari daya

Tujuan kami adalah untuk menghidupkan dan mematikan catu daya ke katup solenoida - katup yang dapat membuka atau menutup pasokan air berdasarkan daya AC 24V yang didapat dari catu daya. Relay adalah komponen kelistrikan yang dapat membuka atau menutup suatu rangkaian berdasarkan sinyal digital yang dapat diberikan oleh Raspberry Pi kita. Apa yang kami lakukan di sini adalah menghubungkan relai ke pin sinyal digital Raspberry Pi ini, dan menutup sirkuit antara catu daya 24V AC dan katup solenoid.

Pin pada Raspberry Pi yang dapat bertindak sebagai input atau output digital disebut GPIO - General Purpose Input/Output dan merupakan deretan 40 pin di sisi Pi. Dengan Pi dimatikan dan masukkan HAT relay dengan kuat ke dalamnya. HAT yang saya pilih memiliki 3 relay di dalamnya, dan kami hanya akan menggunakan salah satunya. Bayangkan semua yang dapat Anda lakukan dengan dua lainnya:)

Sekarang nyalakan kembali Raspberry Pi. LED "daya" merah pada HAT relai harus menyala, menunjukkan bahwa ia mendapatkan daya dari Pi melalui GPIO. Mari kita uji apakah kita dapat mengontrolnya: ssh ke Pi lagi, masukkan python dan ketik:

impor gpiozero

dev = gpiozero. DigitalOutputDevice(26, initial_value = True) dev.off()

Anda akan mendengar bunyi "klik", yang menunjukkan bahwa relai diaktifkan, dan melihat LED menyala yang menunjukkan bahwa relai pertama dalam posisi terhubung. Anda sekarang dapat mengetik

dev.on()

Yang akan mengubah relai ke posisi "mati" (aneh, saya tahu …) dan exit() dari python.

Sekarang menggunakan kabel jumper dan kabel yang lebih panjang menghubungkan relai antara catu daya 24V dan katup solenoid. Lihat diagramnya. Terakhir, sambungkan katup solenoid ke keran menggunakan adaptor dan bersiaplah untuk menguji semuanya dengan mengulangi perintah di atas - mereka harus menghidupkan dan mematikan air.

Pasang selang ke katup solenoida dan masukkan ujung lainnya jauh ke dalam kolam. Anda sekarang memiliki sistem top-off kolam yang dikendalikan komputer, dan inilah saatnya untuk menghubungkan sensor untuk memberi tahu kapan harus dijalankan.

Langkah 11: Hubungkan Sensor Ketinggian Air

Hubungkan Sensor Ketinggian Air
Hubungkan Sensor Ketinggian Air
Hubungkan Sensor Ketinggian Air
Hubungkan Sensor Ketinggian Air
Hubungkan Sensor Ketinggian Air
Hubungkan Sensor Ketinggian Air
Hubungkan Sensor Ketinggian Air
Hubungkan Sensor Ketinggian Air

Sensor ketinggian air hanyalah pelampung yang menghubungkan sirkuit listrik saat pelampung turun, dan memecahnya saat pelampung naik. Jika Anda memasukkannya ke dalam kolam pada ketinggian yang tepat, pelampung akan naik saat ketinggian air cukup, tetapi jatuh saat tidak cukup air.

Agar Raspberry Pi mengetahui status sensor ketinggian air, kita memerlukan Pi untuk merasakan sirkuit terbuka atau tertutup. Untungnya itu sangat sederhana: konektor GPIO yang sama yang kita gunakan sebagai output digital untuk mengontrol relai dapat bertindak sebagai input (karenanya I di GPIO). Secara khusus, jika kita menghubungkan satu kabel sensor ke +3,3V pada konektor GPIO dan kabel sensor lainnya ke pin yang kita konfigurasikan sebagai input pull-down (artinya akan normal pada level tegangan GND), pin itu akan mengukur tegangan "tinggi" atau "aktif" digital hanya ketika sensor ketinggian air menutup sirkuit - ketika ketinggian air rendah. Saya menggunakan GPIO pin 16 sebagai input, yang saya tandai pada gambar di atas.

Kode python untuk mengonfigurasi pin sebagai input dan menguji statusnya saat ini adalah:

impor gpiozero

level_input = gpozero. Button(16) water_low = level_input.is_pressed

Salah satu tantangan potensial adalah ketika sensor hanya mengubah statusnya, sensor akan berosilasi cepat antara status aktif dan nonaktif. Solusi untuk itu dikenal sebagai "debouncing" dan mencari perubahan status yang konsisten sebelum mengambil tindakan. Pustaka GPIOZERO memiliki kode untuk melakukan itu, tetapi untuk beberapa alasan kode itu tidak berfungsi dengan baik untuk saya. Saya menulis loop sederhana untuk memicu peringatan IFTTT ketika perubahan status yang konsisten terdeteksi, yang dapat Anda temukan di repositori saya di sini.

Langkah 12: Tulis Kode untuk Mengikat Semuanya Bersama

Tulis Kode untuk Mengikat Semuanya Bersama
Tulis Kode untuk Mengikat Semuanya Bersama

Itu dia. Pengaturan kami selesai. Anda dapat menulis kode Anda sendiri untuk mengikat semuanya menjadi satu sistem penuh, atau menggunakan kode yang saya berikan. Untuk melakukan itu cukup buat struktur direktori dan klon repositori, seperti:

mkdir poolpi

cd poolpi git clone

Selanjutnya, edit file bernama ifttt_url.txt di direktori motion_alert dan water_level agar memiliki URL untuk kait web IFTTT Anda sendiri dengan kunci rahasia Anda. Anda dapat menggunakan dua kait web yang berbeda untuk tindakan yang berbeda.

Terakhir, kami ingin kode ini berjalan secara otomatis. Cara termudah untuk melakukannya adalah melalui layanan crontab Linux. Kita dapat menambahkan beberapa baris crontab untuk dua tugas utama:

  1. Jalankan tiga program kami: pendeteksi objek, sensor ketinggian air, dan server web di setiap reboot
  2. Bersihkan direktori keluaran, hapus gambar lama dan file video lama (saya memilih untuk menghapus file yang lebih lama dari 1 hari dan gambar yang lebih lama dari 7 hari - silakan bereksperimen)

Untuk melakukan itu ketik crontab -e yang akan membuka editor teks nano Anda. Tambahkan baris berikut ke bagian bawah file:

0 1 * * * temukan /home/pi/poolpi/output -type f -name "*.avi" -mtime +1 -delete

0 2 * * * temukan /home/pi/poolpi/output -type f -name "*.jpg" -mtime +7 -delete @reboot python3 /home/pi/poolpi/motion_alert/webserv/webserv.py @reboot python3 /home/pi/poolpi/motion_alert/motion_obj_alert.py @reboot python3 /home/pi/poolpi/water_level/test_water_level.py

Terakhir, reboot Raspberry Pi Anda. Sekarang siap untuk menjaga kolam Anda tetap penuh dan aman.

Lakukan pengaturan, kode, dan jangan lupa untuk memberi bintang pada repositori github saya dan mengomentari instruksinya jika Anda merasa berguna. Saya selalu mencari untuk belajar lebih banyak.

Selamat membuat!

Tantangan IoT
Tantangan IoT
Tantangan IoT
Tantangan IoT

Runner Up dalam Tantangan IoT

Direkomendasikan: