Ciao a tutti,
vorrei presentare la soluzione a un problema che ho avuto sin da quando ho preso la mia prima telecamera IP (una HiKam S5) e che ho risolto, anni dopo, con home assistant (hassio).
Problema:
- quando sono in casa, voglio che le telecamere IP - specie se assistite dai loro servizi in cloud - siano spente; al contrario voglio che siano accese, e in particolare che sia attivata anche la motion detection e le relative notifiche, quando nessuno dei componenti della mia famiglia è in casa.
Soluzione:
- automazioni che spengono la motion detection (e/o l'eventuale alimentazione USB) delle telecamere quando almeno uno dei device_tracker delle persone della famiglia è in casa, e la accendono quando nessuno è in casa, ottenendo così anche l'invio di notifiche (via Telegram) quando viene rilevato un movimento.
La soluzione che ho messo in piedi sfrutta il sistema hassio configurato su un Raspberry Pi 3 Model A+ con la configurazione di un addon hassio (motionEye) e di alcuni componenti home assistant, in particolare:
ADDON HASSIO
- motionEye, che controlla le telecamere (diverse fra loro), le espone tutte a home assistant come mjpeg camera, espone la web api di configurazione ("motion_webcontrol"), e può innescare le automazioni per avere le notifiche via hassio**
COMPONENTI HOME ASSISTANT
- command line switch (per avere degli "switch" virtuali per spegnere/accendere la motion detection)
- mjpeg camera (per vedere le immagini / stream anche su home assistant)
- device_tracker (di tipo bluetooth, molto affidabili, facoltativamente uniti a quelli del sistema tado per aumentare l'affidabilità anche negli angoli di casa lontani dal Raspberry)
- telegram (per le notifiche + bot di controllo remoto)
- automazione per attivare telecamere e motion detection quando non in casa
- gruppi (per supportare più device_tracker per persona e più persone per casa)
- automazione per ciascuna notifica di rilevazione movimento
- script per l'invio delle notifiche di rilevazione movimento con foto e pulsante per spegnere/accendere la relativa motion detection
La configurazione completa (configuration.yaml, automations.yaml, groups.yaml, scripts.yaml) è su:
https://github.com/apolselli/home-assistant-config
** l'innesco delle notifiche hassio dall'addon motionEye avviene tramite comandi come
/usr/bin/curl -X POST -H "Authorization: Bearer xxx" -H "Content-Type: application/json" -d '{"entity_id":"automation.notifica_rilevazione_movimento_camera_1"}' http://hassio.local:8123/api/services/automation/trigger
Estratti salienti:
Gli "switch" virtuali per spegnere/accendere la motion detection
[font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,]switch:[/font]
[font=SFMono-Regular, Consolas,] - platform: command_line[/font]
[font=SFMono-Regular, Consolas,] switches:[/font]
[font=SFMono-Regular, Consolas,] camera_1_motion_detection:[/font]
[font=SFMono-Regular, Consolas,] command_on: "/usr/bin/curl http://zero:7999/1/detection/start"[/font]
[font=SFMono-Regular, Consolas,] command_off: "/usr/bin/curl http://zero:7999/1/detection/pause"[/font]
[font=SFMono-Regular, Consolas,] command_state: "/usr/bin/curl http://zero:7999/1/detection/status"[/font]
[font=SFMono-Regular, Consolas,] value_template: '{{ "ACTIVE" in value }}'[/font]
[font=SFMono-Regular, Consolas,] friendly_name: Pi Zero W Motion Detection[/font]
[font=SFMono-Regular, Consolas,] camera_2_motion_detection:[/font]
[font=SFMono-Regular, Consolas,] command_on: "/usr/bin/curl http://localhost:7999/1/detection/start"[/font]
[font=SFMono-Regular, Consolas,] command_off: "/usr/bin/curl http://localhost:7999/1/detection/pause"[/font]
[font=SFMono-Regular, Consolas,] command_state: "/usr/bin/curl http://localhost:7999/1/detection/status"[/font]
[font=SFMono-Regular, Consolas,] value_template: '{{ "ACTIVE" in value }}'[/font]
[font=SFMono-Regular, Consolas,] friendly_name: HiKam S5 Motion Detection[/font][/font]
[font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,]Le mjpeg camera (per vedere le immagini / stream anche su home assistant)
[/font][/font]
[font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,]camera:[/font]
[font=SFMono-Regular, Consolas,] - platform: mjpeg # camera1 setup with motion[/font]
[font=SFMono-Regular, Consolas,] name: Pi Zero W[/font]
[font=SFMono-Regular, Consolas,] mjpeg_url: http://zero:8081[/font]
[font=SFMono-Regular, Consolas,] still_image_url: http://localhost:8765/picture/1/current/?_username=admin&_signature=43bd6fff55a26b9b87b09bc5900f368d29d111d3[/font]
[font=SFMono-Regular, Consolas,] - platform: mjpeg # camera2 setup with motion[/font]
[font=SFMono-Regular, Consolas,] name: HiKam S5[/font]
[font=SFMono-Regular, Consolas,] mjpeg_url: http://hassio:8082[/font]
[font=SFMono-Regular, Consolas,] still_image_url: http://localhost:8765/picture/2/current/?_username=admin&_signature=7e7d0aafa6be0bf591f7deea547e24e9f90f0bc1[/font][/font][/font][/font]
[font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,]I device tracker[/font][/font][/font][/font]
[font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,]device_tracker:[/font]
[font=SFMono-Regular, Consolas,] - platform: bluetooth_tracker[/font]
[font=SFMono-Regular, Consolas,] - platform: tado[/font]
[font=SFMono-Regular, Consolas,] username: !secret tado_username[/font]
[font=SFMono-Regular, Consolas,] password: !secret tado_password[/font]
[font=SFMono-Regular, Consolas,] home_id: !secret tado_home_id[/font][/font][/font][/font][/font][/font]
[font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,]Telegram (bot + notifiche)[/font][/font][/font][/font]
[font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,]telegram_bot:[/font]
[font=SFMono-Regular, Consolas,] - platform: polling[/font]
[font=SFMono-Regular, Consolas,] api_key: !secret telegram_api_key[/font]
[font=SFMono-Regular, Consolas,] allowed_chat_ids:[/font]
[font=SFMono-Regular, Consolas,] - !secret telegram_chat_id_alex[/font]
[/font][/font][/font][/font][/font]
[font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,]notify:[/font]
[font=SFMono-Regular, Consolas,] - platform: telegram[/font]
[font=SFMono-Regular, Consolas,] chat_id: !secret telegram_chat_id_alex[/font][/font][/font][/font][/font][/font]
[font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,]Automazioni[/font][/font][/font][/font][/font][/font]
[font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,]- id: '3000'[/font]
[font=SFMono-Regular, Consolas,] alias: Accendi TVCC e motion detection quando non rimane nessuno[/font]
[font=SFMono-Regular, Consolas,] initial_state: 'on'[/font]
[font=SFMono-Regular, Consolas,] trigger:[/font]
[font=SFMono-Regular, Consolas,] - platform: state[/font]
[font=SFMono-Regular, Consolas,] entity_id: group.people[/font]
[font=SFMono-Regular, Consolas,] from: 'home'[/font]
[font=SFMono-Regular, Consolas,] to: 'not_home'[/font]
[font=SFMono-Regular, Consolas,] action:[/font]
[font=SFMono-Regular, Consolas,] - service: switch.turn_on[/font]
[font=SFMono-Regular, Consolas,] entity_id: switch.smart_usb[/font]
[font=SFMono-Regular, Consolas,] - service: switch.turn_on[/font]
[font=SFMono-Regular, Consolas,] entity_id: switch.camera_1_motion_detection[/font]
[font=SFMono-Regular, Consolas,] - service: switch.turn_on[/font]
[font=SFMono-Regular, Consolas,] entity_id: switch.camera_2_motion_detection[/font]
[font=SFMono-Regular, Consolas,]- id: '4000'[/font]
[font=SFMono-Regular, Consolas,] alias: Spegni TVCC e motion detection quando rientra qualcuno[/font]
[font=SFMono-Regular, Consolas,] initial_state: 'on'[/font]
[font=SFMono-Regular, Consolas,] trigger:[/font]
[font=SFMono-Regular, Consolas,] - platform: state[/font]
[font=SFMono-Regular, Consolas,] entity_id: group.people[/font]
[font=SFMono-Regular, Consolas,] from: 'not_home'[/font]
[font=SFMono-Regular, Consolas,] to: 'home'[/font]
[font=SFMono-Regular, Consolas,] action:[/font]
[font=SFMono-Regular, Consolas,] - service: switch.turn_off[/font]
[font=SFMono-Regular, Consolas,] entity_id: switch.smart_usb[/font]
[font=SFMono-Regular, Consolas,] - service: switch.turn_off[/font]
[font=SFMono-Regular, Consolas,] entity_id: switch.camera_1_motion_detection[/font]
[font=SFMono-Regular, Consolas,] - service: switch.turn_off[/font]
[font=SFMono-Regular, Consolas,] entity_id: switch.camera_2_motion_detection[/font]
[font=SFMono-Regular, Consolas,]- id: '7000'[/font]
[font=SFMono-Regular, Consolas,] alias: Notifica rilevazione movimento Camera 1[/font]
[font=SFMono-Regular, Consolas,] initial_state: 'on'[/font]
[font=SFMono-Regular, Consolas,] trigger:[/font]
[font=SFMono-Regular, Consolas,] - payload: camera1[/font]
[font=SFMono-Regular, Consolas,] platform: mqtt[/font]
[font=SFMono-Regular, Consolas,] topic: motion_detection[/font]
[font=SFMono-Regular, Consolas,] action:[/font]
[font=SFMono-Regular, Consolas,] - service: notify.notify[/font]
[font=SFMono-Regular, Consolas,] data:[/font]
[font=SFMono-Regular, Consolas,] message: Camera 1 motion detection (Pi Zero W)[/font]
[font=SFMono-Regular, Consolas,] - service: script.turn_on[/font]
[font=SFMono-Regular, Consolas,] entity_id: script.notify_camera1[/font]
[font=SFMono-Regular, Consolas,]- id: '8000'[/font]
[font=SFMono-Regular, Consolas,] alias: Notifica rilevazione movimento Camera 2[/font]
[font=SFMono-Regular, Consolas,] initial_state: 'on'[/font]
[font=SFMono-Regular, Consolas,] trigger:[/font]
[font=SFMono-Regular, Consolas,] - payload: camera2[/font]
[font=SFMono-Regular, Consolas,] platform: mqtt[/font]
[font=SFMono-Regular, Consolas,] topic: motion_detection[/font]
[font=SFMono-Regular, Consolas,] action:[/font]
[font=SFMono-Regular, Consolas,] - service: notify.notify[/font]
[font=SFMono-Regular, Consolas,] data:[/font]
[font=SFMono-Regular, Consolas,] message: Camera 2 motion detection (HiKam S5)[/font]
[font=SFMono-Regular, Consolas,] - service: script.turn_on[/font]
[font=SFMono-Regular, Consolas,] entity_id: script.notify_camera2[/font][/font][/font][/font][/font][/font][/font][/font]
[font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,][font=-apple-system, BlinkMacSystemFont,][font=SFMono-Regular, Consolas,]Script[/font][/font][/font][/font][/font][/font][/font][/font]
notify_camera1:
alias: Notifica Camera 1
sequence:
- service: notify.notify
data:
message: Camera 1
data:
photo:
- url: http://localhost:8765/picture/1/current/?_username=admin&_signature=43bd6fff55a26b9b87b09bc5900f368d29d111d3
caption: Camera 1
inline_keyboard: 'Toggle motion detection:/toggle_camera1_motion_detection'
notify_camera2:
alias: Notifica Camera 2
sequence:
- service: notify.notify
data:
message: Camera 2
data:
photo:
- url: http://localhost:8765/picture/2/current/?_username=admin&_signature=7e7d0aafa6be0bf591f7deea547e24e9f90f0bc1
caption: Camera 2
inline_keyboard: 'Toggle motion detection:/toggle_camera2_motion_detection'