Sensor gerak dan koneksi registrasi video dan alarm di Home Assistant on Raspberry pi

Saya ingin berbicara tentang pengalaman kecil saya bekerja dengan Home Assistant (selanjutnya disebut HA) pada Raspberry pi dan tentang menghubungkan fungsi registrasi video, sensor gerak dan, dengan demikian, fungsi keamanan rumah untuk menerima gambar melalui pos jika terjadi operasi "keamanan".

Tentu saja, salah satu alasannya adalah keinginan untuk memahami dari umpan balik Anda bahwa apa yang saya lakukan "salah" setelah semua, menerapkan skenario ini.

Ada tiga cara untuk mengonfigurasi fungsi di atas: "tanpa masalah", "pendek" dan "independen". Dalam kasus pertama, Anda, telah mengunduh gambar yang sudah selesai dari situs https://ViaMyBox.com/downloadpageuntuk pi Raspberry Anda, Anda dapat melihat bagaimana semuanya terlihat dalam formulir yang sudah dikonfigurasi. Dalam kasus kedua, Anda dapat mengunduh zip dari situs web atau dari proyek github, menginstal dan menginstal gambar buruh pelabuhan HA melalui utilitas (sudo via-setup.sh) untuk melihat bagaimana semuanya dikonfigurasi. Dan akhirnya, cara ketiga adalah mengatur "semuanya dengan cara Anda sendiri": ambil sesuatu yang berguna dari situs atau githab proyek, atau dari tutorial ini. Tautan ke semuanya di akhir artikel.

Misalkan Anda sudah memiliki Home Assistant (HA) yang berfungsi. Pada artikel ini, kami hanya akan mempertimbangkan aspek pembentukan konfigurasi yaml dan deskripsi urutan aturan dan kondisi yang mengarah pada tindakan tertentu, dalam kasus kami, koneksi "keamanan rumah" dan skrip yang mulai mengambil gambar dalam waktu 5 detik setelah sensor gerak dipicu. Dan sebagai hasilnya, Home Assistant mengirim gambar yang diambil melalui pos. Saya bukan spesialis dalam yaml atau dalam membuat konfigurasi untuk Home Assistant, tetapi, mengikuti contoh yang berfungsi, saya mendapat konfigurasi yang berfungsi, yang ingin saya bagikan.

Semua file yang akan kita rujuk, saya akan paparkan di akhir artikel untuk ulasan yang lebih nyaman. Saya tidak akan membahas karya skrip untuk merekam video menggunakan bash atau python dalam contoh ini. Hanya Asisten Rumah. Tetapi jika Anda memiliki pertanyaan - Selamat Datang!

Pada akhirnya, semuanya terlihat seperti ini untuk saya (disorot dengan warna merah yang akan kita bahas dalam artikel):





Saya menggunakan Raspberry pi sebagai platform. Dan jalur saya ke file konfigurasi adalah / usr / share / hassio / homeassistant /. Jalur ke file konfigurasi Anda mungkin berbeda dari jalur saya. Pada waktu itu, saya memiliki Asisten Rumah 0.101.3. Kami akan tertarik dengan file konfigurasi di direktori ini: configuration.yaml dan automation.yaml.

Setelah setiap perubahan pada file-file ini, penting untuk diingat bahwa akan perlu untuk memeriksa konfigurasi setelah perubahan kami untuk setiap kesalahan yang dibuat di dalamnya. Ini dilakukan pada tab Beranda Asisten dasbor -> Konfigurasi -> Kontrol Server -> Periksa Konfigurasi. Dan kemudian, di tempat yang sama kami melakukan Reload Automations dan Reload Script, jika verifikasi berhasil. Dan, jika ragu, - Manajemen Server restart di tab yang sama secara akurat memperbarui konfigurasi.

Sensor gerak HC-SR501 terhubung ke bus Raspberry pi GPIO. Kita perlu menghubungkan ketiga kabel kontak dengan benar ke GPIO, dan kita dapat menggunakan sensor kita dalam aksi. Sensor memiliki tiga kontak: power gcc (+), zero gnd (-), control contact (data). Setelah membaca deskripsi GPIO, saya menghubungkannya ke raspberry saya sebagai berikut. Saya menghubungkan hc-sr501 ke konektor GPIO: pin # 2 - 5.5vvcc; pin # 26 (baris ke-13) - kontak data dan pin # 6 - gnd (-) dari sensor.

Saya menggunakan kamera usb atau kamera csi bersamaan dengan mjpg-streamer sebagai sumber foto. Cara menginstal dan mengkonfigurasi mjpg-streamer di Raspberry pi, kami tidak akan mempertimbangkannya di sini. Contoh instalasi cepat di Internet banyak. Namun, saya ingin mengatakan bahwa saya menggunakan data dari proyek iniPemasangan modul ini juga dijelaskan secara rinci di sana. Atau gunakan metode apa pun yang nyaman bagi Anda untuk mengambil foto dan video. Setelah semua, apa script bash untuk mengikat ke HA, pada akhirnya, terserah Anda.

Kami sekarang akan menjelaskan sensor kami di configuration.yaml, katakanlah, melalui baris perintah:

sudo nano /usr/share/hassio/homeassistant/configuration.yaml

meskipun menggunakan notepad ++ dengan winscp mungkin lebih nyaman ...

Kami menggambarkan urutan pengaturan untuk HC-SR501 seperti ini:

binary_sensor:
  - platform: rpi_gpio
    #name: HC-SR501
    ports:
      7: Sensor HC-SR501
    invert_logic: false

Perlu dicatat bahwa di sini yang penting adalah pengaturan di garis yang menggambarkan koneksi ke kontak kontrol (data) dari sensor: pin

port # 7 :

7: Sensor HC-SR501

Home Assistant memiliki alat bawaan untuk mengaktifkan fungsi keamanan rumah. Kami akan menjelaskannya di konfigurasi kami.yaml , menggunakan deskripsi: www.home-assistant.io/integrations/manual

alarm_control_panel:
  - platform: manual
    name: Home Alarm
    pending_time: 60
     delay time 40
     triggered:
    pending_time: 0
    code: 1234

Pengaturan ini berarti bahwa kita memiliki 60 detik untuk meninggalkan rumah (setelah waktu ini alarm akan menyala), dan 40 detik untuk mematikannya (dengan kata sandi 1234) setelah kembali ke rumah. Untuk beberapa alasan, Anda selalu pergi lebih lama dari yang Anda datangi.)

Sekarang kita akan menjelaskan mekanisme untuk menghidupkan dan mematikan foto dengan pengoperasian sensor gerak dalam konfigurasi kami.yaml (lebih lanjut tentang platform switch - command_line dapat ditemukan di sini ):

 - platform: command_line
   switches:
      start_stop_motion_rec_timelapse:
        friendly_name: 'Record motion timelapse video'
        command_on: 'curl http://localhost/start_mjpgstrm.php  && curl http://localhost//rec-motion-mjpg.php'
        command_off: 'curl http://localhost/stop_mjpgstrm.php && curl http://localhost/rec-motion-mjpg-stop.php'


Di sini kami menautkan perintah aktifkan perintah command_on dan command_off dari skrip kami yang mengontrol perekaman kamera. Dalam hal ini, ketika command_on dieksekusi, 2 skrip dieksekusi secara berurutan. Ini meluncurkan mjpg-streamer dan memicu perekaman sensor gerak. Akses ke skrip bash melalui file php dari situs yang berfungsi di Raspberry pi. Untuk melakukan ini, saya mengkonfigurasi nginx dan akses web, dan ketika mengakses melalui browser dalam bentuk http: // <alamat ip Raspberry pi Anda> /st__mjpgstrm.php, skrip php kami harus dieksekusi. Script ini mengeksekusi mjpg-streamer dalam situasi ini.

Kami tidak mempertimbangkan konfigurasi akses web dalam artikel ini. Jelas, ini bukan keamanan, tetapi karena saya memiliki HA di buruh pelabuhan, saya dihadapkan pada kenyataan bahwa saya memiliki lingkungan buruh pelabuhan yang terisolasi dan "dunia luar" dari OS yang dapat saya lihat dengan menghubungi situs saya melalui php. Mungkin ada banyak solusi yang baik dari buruh pelabuhan atau guru HA. Menulis, akan menarik untuk diketahui!

Saya akan meninggalkan daftar skrip ini di bawah artikel, kami tidak akan memikirkannya. Pada artikel ini saya hanya ingin melacak pembentukan urutan tindakan di Home Assistant.

Semua ini ditempatkan di objek start_stop_motion_rec_timelapse.Ini akan menjadi saklar visual kami, yang dengannya kami akan mengontrol perekaman foto ketika sensor gerak dipicu.



Kita dapat memvisualisasikan objek-objek ini yang dibuat oleh kita di tab Home Assistant -> Overwiew, mengalihkan aktivasi mode konfigurasi UI di sudut kanan atas.



Mulai ulang HA di browser di tab "Konfigurasi -> Kontrol Server" untuk mengambil konfigurasi kita.yaml.

Selanjutnya, pilih tanda tambah kuning di bagian bawah jendela browser, klik pada kartu Entitas dan lampirkan objek yang kami buat ke peta.



Untuk sensor kami, pilih kartu sensor. Ini akan terlihat seperti ini:



Seperti yang Anda lihat dalam gambar, di bidang kedua entitas, saklar di atas adalah: switch.start_stop_motion_rec_timelapse.

Hal ini memungkinkan kita untuk menghidupkan dan mematikan rekaman kita pada sensor gerak, terlepas dari masuknya fungsi "keamanan rumah". Dan, secara umum, seharusnya sudah berfungsi setelah semua tindakan di atas.

Nah, dan karenanya, peta panel alarm:



Ada hal menarik lainnya. Saya menggunakan Home Assistant sebagai wadah buruh pelabuhan. Dalam hal ini, path ke skrip kami akan berbeda dari path asli ke file skrip. Setelah semua, struktur file di dalam wadah divirtualisasikan dan terhubung dengan struktur file nyata melalui volume docker yang dipasang. Ini terlihat seperti ini: Path di dalam wadah: / config / scripts / Path di dalam OS: / usr / share / hassio / homeassiatnt / scripts. Jadi lihat pengaturan wadah Anda, bagaimana volume ini dikonfigurasi di bidang Binds. Jika Anda memiliki HA di sana.

sudo docker inspect homeassistant|less

Ketika sensor gerak dipicu, pada saat alarm dinyalakan: Saya ingin, selain fakta bahwa kita memulai fotografi cepat (foto timelapse), saya akan menerima peringatan melalui pos dan foto. Saya memparalelkan proses. Di foto pertama, logging (snapshot timelapse) terjadi dalam beberapa detik setelah sensor dipicu. Untuk melakukan ini, saya menjalankan mjpg-streamer curl localhost / start_mjpgstrm.php , mulai php: surl http: //localhost/rec-motion-mjpg.php . Dia, pada gilirannya, menjalankan skrip python mov.py. Semua file dan tautan yang dijelaskan ada di akhir artikel dengan referensi. Dan skrip takeSnapshotWebcam.sh lainnya mengambil snapshot, yang saya kirim email. Saya jelaskan skrip-skrip ini dalam konfigurasi kita.

shell_command:
#      
  take_snapshot_webcam: '/config/scripts/takeSnapshotWebcam.sh'
#  mjpg-streamer 
  start_mgpg_streamer: 'curl http://localhost/start_mjpgstrm.php'
# mjpg-streamer
  stop_mgpg_streamer: 'curl http://localhost/stop_mjpgstrm.php'
#      5 
  start_motion_rec: 'curl http://localhost/rec-motion-mjpg.php'
# 
  stop_motion_rec: 'curl http://localhost/rec-motion-mjpg-stop.php'

Di sana, di configuration.yaml, kami menjelaskan objek kami untuk mengirim surat:

notify:
  - name: ha_sendmail
    platform: smtp
#    gmail
    server: smtp.gmail.com
    port: 587
    timeout: 15
#  
    sender: user@gmail.com
    encryption: starttls
    username: user@gmail.com
    password: passwd
#  (       ,    )
    recipient:
      - user@gmail.com
    sender_name: My Home Assistant

Poin penting! Agar HA kami dapat terhubung dan mengirim surat (bidang pengirim), kami harus mengaktifkan gmail untuk menggunakan kotak ini ke layanan HA kami. Cara melakukan ini adalah tautannya di sini: myaccount.google.com/lesssecureapps

Dan kemudian, kami menjelaskan mekanisme otomatisasi itu sendiri ketika alarm home_alarm dihidupkan di automation.yaml:

#   (alias) β€œ  ,   ”
- alias: 'Trigger alarm while armed away'
#alias ,     β€œon”
  trigger: 
    - platform: state
      entity_id: binary_sensor.sensor_hc_sr501
      to: 'on'
# ,         β€œarmed away”
  condition:
    - condition: state
      entity_id: alarm_control_panel.home_alarm
      state: armed_away
#     
  action:
# mjpg-streamer ( )
    - service: shell_command.start_mgpg_streamer
# ,   
    - service: shell_command.start_motion_rec
#    β€œ  ”   HA   β€œ ”
    - service: alarm_control_panel.alarm_trigger
      entity_id: alarm_control_panel.home_alarm

Banyak kondisi dan tindakan berikut adalah untuk mengirim pesan konsol saat menonaktifkan "keamanan" dan mematikan skrip rekaman gerak kami:

- alias: 'Send notification when alarm is Disarmed'
  trigger:
    - platform: state
      entity_id: alarm_control_panel.home_alarm
      to: 'disarmed'
  action:
    - service: shell_command.stop_mgpg_streamer
    - service: shell_command.stop_motion_rec
    - service: persistent_notification.create
      data:
       message: The alarm is Disarmed at {{ states('sensor.date_time') }}"

Dan akhirnya, kelompok ketiga - kami mengirim surat dengan foto:

- alias: 'Send notification when alarm triggered'
  trigger: 
   - platform: state
     entity_id: alarm_control_panel.home_alarm
     to: 'triggered'
  action:
    - service: persistent_notification.create
      data:
       message: Notification when alarm triggered. Motion sensor HC-SR501 detected.
    - delay:
       seconds: 4
#     
    - service: script.webcam_snapshot
#      configuration.yaml: notify.ha_sendmail
    - service: notify.ha_sendmail
      data:
        title: 'Intruder alert'
        message: '{{now().strftime("%H:%M %Y-%m-%d")}}:Notification when alarm triggered. Motion sensor HC-SR501 detected.'
        data:
           images:
#      script.webcam_snapshot  
              - /config/camera/snapshot.jpg

Ingat bahwa tata letak baris penting dalam file yaml, dan karakter spasi sebelum perintah memainkan peran penting dalam pembentukan blok kode, strukturnya. Periksa semua perubahan pada yaml Anda melalui Konfigurasi Home Assistant (HA) -> Kontrol Server -> Periksa Konfigurasi.

Segalanya tampak, dan pi Raspberry Anda berubah menjadi elegan ... jika petir tidak macet!)

Ini dia - otomatisasi HA yang berfungsi, Dibuat khusus! Pastikan untuk menulis kepada saya apa yang Anda pikirkan tentang ini!

Dan, jika Anda masih membaca sampai akhir, saya menawarkan tautan yang dijanjikan:

https://viamybox.com/downloadpage

https://github.com/viatc/viamybox File

konfigurasi yang dijelaskan di sini:
automation.yaml, configuration.yaml, takeSnapshotWebcam. sh, rec-motion-mjpg.php, mov.py

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


All Articles