Integrare telecamere come sensori di movimento su Home Assistant via motionEye

5 minuti di lettura
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 maggiormente indicatA per:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione guida: 2.0

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):

binary_sensor:
  - platform: mqtt
    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.

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.


Home Assistant Official Logo ATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.


Telegram News Channel