Pemantaman Rumah Aman dengan Home Assistant di Raspberry Pi: Gerakan, Alarm, dan Pengambilan Video
Men-deploy sistem keamanan rumah yang dapat diandalkan pada Raspberry Pi dengan Home Assistant (HA) mudah sekali setelah Anda memahami komponen utama: sensor gerak, panel alarm, dan pengambilan video berbasis kamera. Panduan ini memandu Anda melalui pengaturan lengkap—dari penangkalan sensor PIR HC‑SR501 hingga konfigurasi HA, peluncuran mjpg‑streamer, dan pengiriman peringatan email instan dengan foto.
Prasyarat
- Raspberry Pi yang menjalankan Home Assistant (disarankan 0.101.3 atau lebih baru)
- Sensor gerak PIR HC‑SR501
- Kamera USB atau CSI (kamera apa pun yang bekerja dengan mjpg‑streamer)
- Akun email yang terhubung internet (misalnya, Gmail) untuk notifikasi
- Keakraban dasar dengan YAML dan Docker (jika menjalankan HA dalam container)
1. Menghubungkan HC‑SR501 ke Pi
Sensor memiliki tiga pin: VCC (+), GND (–), dan OUT. Sambungkan sebagai berikut:
- VCC → Pin 5 (3,3 V)
- GND → Pin 6 (Ground)
- OUT → Pin 7 (GPIO 4)
Koneksi ini memungkinkan HA untuk membaca status biner sensor melalui platform rpi_gpio.
2. Menginstal mjpg‑Streamer
Gunakan panduan ini untuk menyiapkan mjpg‑streamer dan pengaman FFMpeg opsional. Skrip dalam repositori meluncurkan stream dan memulai/menghentikan perekaman sesuai permintaan.
3. Mengonfigurasi Home Assistant
Buka /usr/share/hassio/homeassistant/configuration.yaml (atau folder konfigurasi HA Anda). Tambahkan bagian berikut:
# Binary sensor untuk PIR
binary_sensor:
- platform: rpi_gpio
ports:
7: Sensor HC‑SR501
invert_logic: false
# Panel alarm manual
alarm_control_panel:
- platform: manual
name: Home Alarm
pending_time: 60
delay_time: 40
code: 1234
# Switch baris perintah untuk mengontrol mjpg‑streamer
switch:
- platform: command_line
switches:
start_stop_motion_rec_timelapse:
friendly_name: 'Record motion timelapse'
command_on: "curl https://localhost/start_mjpgstrm.php && curl https://localhost/rec-motion-mjpg.php"
command_off: "curl https://localhost/stop_mjpgstrm.php && curl https://localhost/rec-motion-mjpg-stop.php"
# Perintah shell untuk skrip kustom
shell_command:
take_snapshot_webcam: '/config/scripts/takeSnapshotWebcam.sh'
start_mgpg_streamer: 'curl https://localhost/start_mjpgstrm.php'
stop_mgpg_streamer: 'curl https://localhost/stop_mjpgstrm.php'
start_motion_rec: 'curl https://localhost/rec-motion-mjpg.php'
stop_motion_rec: 'curl https://localhost/rec-motion-mjpg-stop.php'
# Notifier email (contoh Gmail)
notify:
- name: ha_sendmail
platform: smtp
server: smtp.gmail.com
port: 587
timeout: 15
sender: <your‑email>
encryption: starttls
username: <your‑email>
password: <app‑password>
recipient:
- <your‑email>
sender_name: My Home Assistant
Setelah mengedit, validasi konfigurasi melalui Configuration → Server Controls → Check Config, lalu muat ulang otomatisasi dan skrip.
4. Logika Otomatisasi
Buat otomatisasi berikut di automation.yaml untuk menghubungkan sensor, alarm, dan kamera.
# 1. Memicu saat armed away dan gerakan terdeteksi
- alias: 'Trigger alarm while armed away'
trigger:
- platform: state
entity_id: binary_sensor.sensor_hc_sr501
to: 'on'
condition:
- condition: state
entity_id: alarm_control_panel.home_alarm
state: armed_away
action:
- service: shell_command.start_mgpg_streamer
- service: shell_command.start_motion_rec
- service: alarm_control_panel.alarm_trigger
target:
entity_id: alarm_control_panel.home_alarm
# 2. Menghentikan perekaman saat alarm dimatikan
- alias: 'Stop recording when alarm 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'') }}'
# 3. Mengirim foto saat alarm terpicu
- alias: 'Email alert on alarm trigger'
trigger:
- platform: state
entity_id: alarm_control_panel.home_alarm
to: 'triggered'
action:
- service: persistent_notification.create
data:
message: 'Alarm triggered by motion sensor.'
- delay: { seconds: 4 }
- service: script.webcam_snapshot
- service: notify.ha_sendmail
data:
title: 'Intruder alert'
message: '{{now().strftime("%H:%M %Y-%m-%d")}}: Alarm triggered by motion sensor.'
data:
images:
- /config/camera/snapshot.jpg
script.webcam_snapshot harus memanggil takeSnapshotWebcam.sh, yang menangkap satu frame dan menyimpannya sebagai /config/camera/snapshot.jpg untuk lampiran email.
5. Catatan Volume Docker
Jika HA berjalan di dalam Docker, ingatlah bahwa folder /config container memetakan ke /usr/share/hassio/homeassistant di host. Gunakan docker inspect homeassistant | less untuk mengonfirmasi binding volume.
6. Menguji Sistem
- Setel alarm ke
armed_away melalui UI HA. - Picu sensor PIR (misalnya, dengan berjalan di depannya).
- Verifikasi bahwa mjpg‑streamer mulai, perekam gerak menangkap klip pendek, dan email dengan foto diterima.
- Matikan alarm dan konfirmasi bahwa perekaman berhenti dan notifikasi pematikan muncul.
Kesimpulan
Dengan langkah-langkah ini Anda memiliki solusi keamanan rumah yang mandiri dan hemat biaya yang menggabungkan deteksi gerak, kontrol alarm, dan peringatan foto instan—semua diatur oleh Home Assistant di Raspberry Pi.
Jangan ragu untuk menyesuaikan skrip dan pengaturan notifikasi ke lingkungan Anda. Happy automating!