community italiana di domotica personale
 
Integrare telecamere come sensori di movimento su Home Assistant via motionEye

Integrare telecamere come sensori di movimento su Home Assistant via motionEye

Amazon - Promozioni del giorno  
Scopi della guida:
  • Integrare alla domotica Home Assistant le telecamera integrate su motioneye come sensori di movimento virtuali
  • Livello di difficoltà: medio/bassa
  • Categoria d’integrazione: Local Push
Concetti affrontati:
  • Configurazione software
Componenti software utilizzate:
Prerequisiti:
Dispositivi fisici utilizzati:
Guida indicata per utenti con installazione:
Ambiente Home Assistant HassOS-Supervised-Core
NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In presenza di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat.
Revisione guida: 2.2

motioneye - home-assistant

Abstract

IP Cam

motionEye è un software in grado di fungere da Network Video Recorder (NVR) per la videosorveglianza di ambienti domestici e non. Distribuito gratuitamente in licenza Open Source, consente all’utente di integrare ad esso telecamere basate su diverse tecnologie (prevalentemente IP Cam, ma anche telecamere locali ed altro) e di configurare facilmente il suo motore di rilevazione movimento al fine di intercettare eventuali effrazioni o altre situazioni specifiche basandosi, appunto, sul flusso di immagini proveniente dalle telecamere.

All’installazione e alla configurazione di tale software abbiamo dedicato un progetto in due puntate.

Home Assistant, dal canto suo, è attualmente l’HUB personale software per domotica più apprezzato: anch’esso Open Source, consente di definire un ambiente omogeneo e altamente configurabile per la propria domotica personale a partire dai più disparati componenti e servizi disponibili sul mercato e su Internet.


Dato che motionEye è in grado di rilevare movimenti come fosse “un sensore virtuale” (leggi approfondimento), l’idea è quella di esportare questi stati verso la domotica Home Assistant, così da dotarsi di sensori utilizzabili nelle proprie automazioni, nelle notifiche e in molti altri ambiti operativi.

N.b. Questa guida non è adatta agli utilizzatori di montionEyeOS, i quali sono costretti ad usare “Call a WebHook” anziché “Run a Command” (il comando di pubblicazione MQTT che utilizzeremo in questa guida non è disponibile). In tal caso la soluzione è quella di utilizzare il componente “Push” tramite il quale configurare il sensore, invocandolo appunto tramite la chiamata WebHook.

Si parte

Approccio

Come forse sapremo, motionEye è in grado, tramite una sezione apposita della sua configurazione, di eseguire comandi all’inizio di un evento di rilevazione movimento e un altro al termine. In piena logica “black box”, faremo sì che tale sistema venga visto da Home Assistant come un sensore MQTT, ovvero un sensore virtuale che per essere innescato attende la ricezione di un messaggio MQTT d’innesco e per disinnescarsi uno di disinnesco (spiegato meglio a seguire). Ciò che faremo, quindi, è semplicemente configurare motionEye in modo di farlo “pubblicare” un dato topic MQTT quando rileva movimento e un altro quando l’evento termina, mentre lato Home Assistant configureremo un “MQTT Binary Sensor” basato appunto sui due topic di innesco e disinnesco.

Assunti

Per l’esecuzione di questa guida si darà per assunto che:

Si assume inoltre che il computer sul quale è in esecuzione motionEye disponga dei tool da riga di comando per Eclipse Mosquitto MQTT Broker (o analoghi), condizione verificata se:

Ipotizzeremo di avere una singola telecamera integrata a motionEye chiamata “Sala“: creeremo dunque un sensore di presenza relativo a questa telecamera presso Home Assistant. La configurazione può esser replicata per qualsiasi altra telecamera presente in configurazione.

Infine, si assume un minimo di competenza sullo standard MQTT.

Home Assistant

Iniziamo dalla configurazione Home Assistant, aggiungendo al file di configurazione un blocco sotto la sezione “binary_sensor” (o aggiungendola, se assente):

mqtt:
  binary_sensor:
  - name: Movimento Sala
    payload_on: "on"
    payload_off: "off"
    device_class: motion
    state_topic: "stat/motionEye/motion"
    value_template: >
      {% if value_json.ipcam == 'sala_on' %}
        on
      {% elif value_json.ipcam == 'sala_off' %}
        off
      {% else %}
        {{ states('binary_sensor.movimento_sala') }}
      {% endif %}

Questa configurazione creerà un’entità di tipo “Binary Sensor” (data l’uso della piattaforma “MQTT Binary Sensor, sua figlia) chiamata binary_sensor.movimento_sala la quale assumerà stato “ON” quando sul broker MQTT verrà pubblicato il topic:

stat/motionEye/motion  {“ipcam”:”sala_on”}

e valore “OFF” quando verrà pubblicato il topic:

stat/motionEye/motion  {“ipcam”:”sala_off”}

Ovviamente a distinguere quale sia la telecamera oggetto delle rilevazione e il suo stato è il payload (“sala_off” o “sala_on“): il prefisso del payload (“sala“) indica la telecamera, mentre la lo stato è dato dal suffisso (on oppure off). Questo ci consentirà di configurare quante telecamere vorremo semplicemente agendo sul prefisso del payload.

Una volta riavviato Home Assistant, l’entità sarà dunque disponibile.

Home Assistant - Sensore binario di movimento

VERIFICA

Prima di passare a motionEye bisogna essere sicuri che il sensore virtuale appena creato su Home Assistant funzioni in modo corretto. Farlo è piuttosto facile: sarà sufficiente pubblicare manualmente il topic che ci interessa per scatenare l’evento atteso. In pratica “ci fingeremo” motionEye e pubblicheremo al posto suo i due topic di cui sopra: se tutto va bene, il sensore di Home Assistant dovrebbe cambiare stato coerentemente.

Segnamoci da parte di due comandi di pubblicazione che useremo per pubblicare manualmente i due topic: ci serviranno a breve. Dovrebbero assomigliare a qualcosa del genere:

mosquitto_pub -h IP_DEL_BROKER -u USERNAME -P PASSWORD -t stat/motionEye/motion -m '{"ipcam":"sala_on"}'
mosquitto_pub -h IP_DEL_BROKER -u USERNAME -P PASSWORD -t stat/motionEye/motion -m '{"ipcam":"sala_off"}'

motionEye

A questo punto istruire motionEye è estremamente banale. Utilizzando la sezione di configurazione “Motion Notification (relativa alla telecamera della quale esportare gli eventi verso Home Assistant):

motionEye - Motion Notification

sarà sufficiente attivare “Run a Command” e “Run An End Command” e, nelle due caselle relative ai rispettivi comandi, inserire i due comandi di pubblicazione determinati nella precedente fase di verifica.

Fine!

Una configurazione estremamente semplice ma, al contempo, estremamente utile, la quale a fronte di una rilevazione movimento innesca (tramite comandi) la pubblicazione del topic che attiva il sensore su Home Assistant, e viceversa pubblica quello di fine evento che disattiva il sensore.

ATTENZIONE: ovviamente è necessario che la publish MQTT debba poter raggiungere il broker MQTT indicato nel comando. Laddove motionEye sia in esecuzione presso container Docker, add-on Home Assistant OS e similari, appurare che non sussistano problemi di rete tra motionEye e il broker MQTT.
NOTIFICA

Vogliamo farci notificare a fronte della rilevazione movimento? Niente di più facile. Torniamo su Home Assistant, assumendo di avere una qualche entità di tipo “Notification” chiamata notify.marco, magari quella dello smartphone generata tramite l’uso dell’app mobile di Home Assistant, Companion.

Alla configurazione aggiungiamo:

automation:
  - alias: Notifica su movimento sala
    trigger:
      platform: state
      entity_id: binary_sensor.movimento_sala
      to: 'on'
    condition: []
    action:
    - service: notify.marco
      data:
        data:
          push:
            badge: 1
        title: Domotica
        message: "Rilevato movimento dalle telecamera della sala."

Un’ulteriore affinamento può venire dall’aggiunta, nel blocco condition, della verifica della presenza in casa o meno (tramite le entità “Notification” dei vari inquilini raggruppati tramite gruppi), così da essere magari notificati solo quando si è fuori casa.

⚠️ Se di Home Assistant ne sai poco ma sei interessato a capirne di più, ti suggeriamo di partire da qui.

Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Se ti sei perso, a tua disposizione c'è la mappa.
Telegram News Channel