Sistem keamanan buatan rumah yang didasarkan pada produk untuk rumah pintar dari Nootekhnika

Selamat siang, komunitas tersayang. Saya ingin berbagi dengan Anda percobaan dalam penerapan sistem keamanan untuk rumah berbasis pada perangkat rumah pintar dari Nootehnika. Saya ingin segera memesan bahwa ini adalah salah satu eksperimen pertama, dan tujuan saya bukan untuk "membangun benteng yang tidak dapat ditembus", tetapi untuk menunjukkan kemungkinan menggunakan perangkat yang telah saya pilih, bereksperimen dan belajar pelajaran, serta menerima umpan balik dari Anda.

Singkatnya, sistem yang saya rancang harus memotret setiap orang yang mendekati pintu depan dalam mode mempersenjatai dan mengirim foto ke alamat email, serta mengirim pesan email jika ada pendaftaran gerakan di lorong (mis. Ada pergerakan di dalam apartemen) . Jadi, untuk pernyataan masalah.

1. Pernyataan masalah


Sistem yang saya desain harus:

  • dalam mode mempersenjatai, potretlah setiap orang yang mendekati pintu depan dan kirim foto ke alamat email;
  • dalam mode pelangsingan, kirim pesan email jika ada pendaftaran gerakan di lorong (tanpa foto karena saya tidak punya kamera IP di sana);
  • menyediakan berbagai antarmuka untuk mempersenjatai dan melucuti senjata.

Maksud saya dengan berbagai antarmuka mempersenjatai:

  • Mempersenjatai dan melucuti senjata dengan bantuan sakelar radio Nootehnika;
  • Mempersenjatai dan melucuti senjata melalui antarmuka web untuk mengelola rumah pintar.

2. Deskripsi solusinya


Untuk mengatasi masalah ini, saya menggunakan perangkat keras berikut:

  • dua sensor gerak 112;
  • penerima sinyal dari sensor dan sakelar RX2164;
  • Saklar PU311-2;
  • 3VI nettop (berdasarkan prosesor Atom D525);
  • Kamera IP noname Cina.

Saya sudah memberikan deskripsi singkat tentang perangkat untuk membangun rumah pintar perusahaan Nootehnika di bagian "pengantar" dari artikel ini , jadi saya tidak akan berkonsentrasi pada masalah ini di sini. Selain itu, dalam semua detail tentang perangkat dapat ditemukan di situs off.the Perusahaan .

Jadi, untuk uraian sistem. Pada nettop 3VI, Debian Linux 7, perangkat lunak Simple Event Correlation (SEC) dan satu set utilitas linux untuk mengelola perangkat Nootechnics dari Oleg Artamonov diinstal.

Sensor gerak (PM112) dipasang di ruang depan di depan pintu depan dan di koridor (di dalam apartemen). Penerima USB RX2164 terhubung ke nettop. Penerima menerima sinyal dari sensor dan sakelar, dan utilitas manajemen perangkat Nootehnics (selanjutnya disebut sebagai utilitas Noolite) yang dipasang pada nettop mengirimkan sinyal yang diterima ke syslog. SEC membaca file yang mana data syslog ditulis dan memprosesnya sesuai dengan aturan yang dikonfigurasi. Sebagai hasil dari pemrosesan, tindakan seperti menerima foto dari kamera IP dan mengirim pesan email dilakukan.

Ada dua cara untuk mengaktifkan (dan menonaktifkan) mode keamanan:

  1. dengan menekan tombol pada sakelar PU311-2;
  2. dengan menekan tombol di antarmuka web sistem kontrol rumah pintar.

Diagram blok yang menggambarkan operasi sistem ditunjukkan pada Gambar 1.



Gambar 1 - Blok diagram yang menggambarkan operasi sistem

3. Menginstal perangkat keras sistem


Untuk sistem ini, saya menggunakan sensor gerak 2 yang sama, instalasi yang saya jelaskan di bagian 4 artikel .

Singkatnya, salah satu sensor dipasang di dekat pintu depan di ruang depan (di luar apartemen). Sensitivitas sensor ini diatur pada tingkat tertentu untuk mendeteksi gerakan di sekitar pintu. Sensor kedua dipasang langsung di dekat pintu depan, tetapi sudah di dalam apartemen. Sensitivitas disesuaikan sedemikian rupa untuk memperbaiki gerakan di sekitar pintu.

Sebuah kamera IP dipasang di luar apartemen di ruang depan di bawah langit-langit. Pintu depan dan sekitar 1,5 meter ruang di depannya jatuh ke bidang penglihatannya.

Sakelar PU311-2 dipasang di dalam kabinet agar tidak menarik perhatian dan tidak sengaja ditekan.

3VI nettop dengan penerima sinyal RX2164 terletak di dekat mezzanine untuk memberikan penerimaan sinyal yang stabil dari sensor dan sakelar.

Diagram instalasi peralatan ditunjukkan pada Gambar 2.



Gambar 2 - Diagram instalasi peralatan

4. Pengaturan perangkat lunak


Pengaturan perangkat lunak meliputi:

  • mengatur utilitas Noolite untuk menerima sinyal dari sensor dan sakelar;
  • mengatur aturan SEC untuk menanggapi sinyal yang berasal dari sensor dan sakelar;
  • membuat skrip yang akan menerima foto dari kamera dan mengirim email;
  • membuat tombol untuk menghidupkan dan mematikan sistem di antarmuka web.

Mengkonfigurasi utilitas Noolite untuk menerima sinyal dari sensor dan sakelar


Agar penerima RX2164 mulai menerima sinyal dari sensor atau sakelar, perlu untuk "mengikatnya". Untuk melakukan ini, kita tekan tombol "bind" pada sensor itu sendiri (di sisi belakang), dan jalankan di komputer yang terhubung dengan penerima perintah: nooliterxcfg –bind <nomor saluran dari 1 hingga 64>. Demikian pula, sakelar terikat ke penerima.

Dalam kasus saya, sensor di ruang depan dihubungkan ke saluran 3, sensor di apartemen untuk saluran 2 dan dua tombol beralih ke saluran 1 dan 4, masing-masing.

Untuk menerima sinyal dari sensor secara real time, Anda perlu menjalankan utilitas nooliterx dalam mode daemon. Proses menginstal utilitas dan pengaturannya dijelaskan oleh pengembang sendiri (Oleg Artamonov dalam dokumentasi untuk utilitas) dan juga oleh saya di bagian 4 artikel (LINK). Hasilnya, kami mendapatkan catatan sinyal dari sensor dan sakelar di syslog. Tetap hanya di syslog untuk mengkonfigurasi rekaman pesan-pesan ini ke file dan hasilnya adalah sebagai berikut (sampel pesan dari sensor):

Jan 7 15:47:39 vmon nooliterx[23022]: Received: status 133, channel 3, command 25, format 1, data 2 0 0 0 Jan 7 18:43:58 vmon nooliterx[23022]: Received: status 135, channel 2, command 25, format 1, data 1 0 0 0 

Sampel pesan dari sakelar (saat tombol ditekan) tampak sedikit berbeda:

 Jan 5 22:29:43 vmon nooliterx[23022]: Received: status 26, channel 1, command 4, format 0, data 1 0 0 0 Jan 5 22:27:55 vmon nooliterx[23022]: Received: status 145, channel 4, command 4, format 0, data 1 0 0 0 

Konfigurasikan aturan SEC untuk memicu sinyal yang berasal dari sensor dan sakelar.


SEC adalah utilitas untuk memproses log peristiwa. Singkatnya, ia menerima aliran peristiwa di input, yang masing-masing memeriksa kepatuhan dengan pola aturan yang dikonfigurasi. Dalam hal menemukan kecocokan, meluncurkan tindakan yang ditentukan dalam aturan terkait. Masalahnya sangat fleksibel untuk digunakan. Ada halaman manual terperinci di web.

SEC digunakan dalam sistem saya untuk mencari pesan waktu-nyata dari sensor dan sakelar di arus peristiwa dan menjalankan skrip yang mengambil foto dan mengirim email, atau cukup menerjemahkan seluruh sistem hidup dan mati.

Di SEC, saya mengkonfigurasi 4 aturan. 2 - untuk memproses peristiwa dari sensor gerak dan dua - untuk memproses sinyal dari dua tombol sakelar. Aturan ada di /etc/sec.conf

Aturan 1: Memproses sinyal dari sensor gerak di ruang depan (sensor terpasang ke saluran 3)

 type=SingleWithSuppress ptype=RegExp pattern=\w+\s+\d+\s+\d+\:\d+\:\d+\s+\w+\s+nooliterx\S+\s+Received\:\s+status\s+\d+,\s+channel\s+(3),\s+command\s+25.* desc=Motion sensor frontdoor $1 triggered action=shellcmd (/usr/local/smarthome/security/send_photo_alert.sh $1); event %s window=60 

Jenis aturan ini - "SingleWithSurpress" - dirancang untuk merespons hanya peristiwa yang direkam pertama kali selama interval waktu yang ditentukan oleh parameter "jendela" dalam hitungan detik. Yaitu pengaturan ini berarti bahwa aturan akan bekerja tidak lebih dari sekali per menit dan tindakan yang ditentukan dalam parameter "aksi" akan diluncurkan tidak lebih dari 1 kali per menit. Hal ini dilakukan agar seandainya seseorang menginjak-injak pintu selama beberapa menit untuk tidak meng-spam surat mereka dengan banyak surat. Dalam parameter "pola", ekspresi reguler ditulis, yang menurutnya peristiwa dari sensor yang terkait dengan saluran 3. Dua tindakan ditentukan dalam parameter "action" - shellcmd, yang menjalankan skrip dan meneruskan ke parameter yang diekstraksi dari ekspresi reguler (dalam hal ini case mewakili angka "3"), dan aksi kedua "event% s" berfungsi untuk mentransfer ekspresi yang direkam dalam parameter "desc" ke aturan lain, yang tidak diperlukan untuk pengoperasian sistem ini dan dapat dihilangkan. Parameter "desc" menunjukkan informasi layanan tambahan yang digunakan oleh aturan lain. Untuk sistem ini, tidak perlu dan data sewenang-wenang dapat dimasukkan di sana.

Aturan 2: Pemrosesan sinyal dari sensor gerak di koridor (sensor terpasang ke saluran 2)

 type=SingleWithSuppress ptype=RegExp pattern=\w+\s+\d+\s+\d+\:\d+\:\d+\s+\w+\s+nooliterx\S+\s+Received\:\s+status\s+\d+,\s+channel\s+(2),\s+command\s+25.* desc=Motion sensor lobby $1 triggered action=shellcmd (/usr/local/smarthome/security/send_photo_alert.sh $1); event %s window=60 

Di sini, semuanya mirip dengan aturan 1. Perlu dicatat bahwa angka "2" yang diperoleh dari ekspresi reguler dilewatkan ke skrip.

Aturan 3: Pemrosesan sinyal dari tombol sakelar yang terkait dengan saluran 1

 type=single ptype=regexp pattern=\w+\s+\d+\s+\d+\:\d+\:\d+\s+\w+\s+nooliterx\S+\s+Received\:\s+status\s+\d+,\s+channel\s+(1),\s+command\s+4.* desc=switch guard mode online action=shellcmd (/bin/echo "online" > /usr/local/smarthome/security/status) 

Aturan ini bahkan lebih sederhana - aturan ini diaktifkan untuk setiap peristiwa yang cocok dengan ekspresi reguler yang ditentukan dalam parameter "pola". Sebagai tindakan, ia menulis ke file status sistem. File ini dianalisis oleh skrip yang diluncurkan oleh aturan 1 dan 2. Jika statusnya "online", skrip akan terpicu, jika nilainya "offline", skrip tidak berfungsi. Lebih jauh tentang ini lebih jauh.

Aturan 4: Pemrosesan sinyal dari tombol sakelar yang terkait dengan saluran 4

 type=single ptype=regexp pattern=\w+\s+\d+\s+\d+\:\d+\:\d+\s+\w+\s+nooliterx\S+\s+Received\:\s+status\s+\d+,\s+channel\s+(4),\s+command\s+4.* desc=switch guard mode offline action=shellcmd (/bin/echo "offline" > /usr/local/smarthome/security/status) 

Semuanya mirip dengan aturan 3, hanya statusnya yang diatur ke "offline".

Sebuah skrip yang mengambil foto dari kamera dan mengirim email


Skrip yang diluncurkan oleh aturan 1 dan 2 memeriksa status sistem dalam file status dan, tergantung pada nilainya ("online" atau "offline"), melakukan atau tidak melakukan tindakan berikut:

  • menerima foto dari kamera IP di ruang depan dan mengirim email jika sensor di ruang depan;
  • mengirim pesan alarm jika sensor di koridor.

Berikut ini adalah isi naskah. Pada inputnya, ia menerima (dari SEC) nomor saluran tempat sensor terpasang dan, tergantung pada nomor ini dan status sistem, melakukan tindakan tertentu.

 #!/bin/sh dir="/usr/local/smarthome/security" MAIL=$dir/mail.letter stat_file="$dir/status" dt=`date` if [ "$1" -eq 2 ] then if grep "online" $stat_file then cd $dir rm -f $dir/snapshot.cgi wget http://<IP  >/snapshot.cgi --user=<username> --password=<password> mpack -s "Someone at the door at $dt" $dir/snapshot.cgi d.shulinin@gmail.com fi elif [ "$1" -eq 3 ] then if grep "online" $stat_file then printf "Subject: Motion in the lobby spotted at $dt\n" > $MAIL /usr/sbin/ssmtp email@gmail.com < $MAIL fi else echo "no legitimate input detected" fi 

Untuk mendapatkan foto dari kamera IP saya, saya menggunakan wget dan garis seperti ini:

 wget http://<IP  >/snapshot.cgi --user=<username> --password=<password> 

Untuk kamera IP lainnya, Anda mungkin perlu mencari opsi lain, tidak ada solusi tunggal. RTFM ke kamera, seperti yang mereka katakan.

Tombol-tombol menghidupkan dan mematikan sistem di antarmuka web. Untuk mengaktifkan dan menonaktifkan mode keamanan, saya juga menambahkan beberapa tombol ke antarmuka web yang saya tulis sendiri untuk mengendalikan sumber cahaya rumah pintar.

Mereka terlihat sebagai berikut:

 <?php if (isset($_POST['button9_on'])) { exec('/bin/echo "online" > /usr/local/smarthome/security/status'); } ?> <?php if (isset($_POST['button9_off'])) { exec('/bin/echo "offline" > /usr/local/smarthome/security/status'); } ?> <p><h2>Guard mode</h2></p> <form method="post"> <p> <button name="button9_on">ON</button> <button name="button9_off">OFF</button> </p> 

Semuanya sederhana di sini - ketika Anda mengklik tombol "ON", "online" ditulis dalam file status, ketika Anda mengklik "OFF" - "offline".

5. Kesimpulan


Akibatnya, saya mendapatkan sistem yang, ketika diaktifkan, mengambil gambar siapa saja yang telah mendekati pintu dan mengirim foto melalui email. Dan jika ada pergerakan di dalam apartemen, itu hanya mengirimkan peringatan melalui email.

Contoh pesan email terlihat seperti ini (lihat Gambar 3). Gambar-gambar itu sendiri, tentu saja, lebih besar dan berkembang ketika Anda mengkliknya dengan mouse.


Gambar 3 - Contoh email dengan foto

Sistem ini dapat diaktifkan dan dinonaktifkan dengan menekan tombol pada sakelar dan juga melalui tombol-tombol pada antarmuka web sistem kendali rumah pintar.

Dalam jangka pendek, saya juga ingin menampilkan status sistem saat ini (aktif / tidak aktif) di antarmuka web.

Source: https://habr.com/ru/post/id401909/


All Articles