Scopi della guida:
Concetti affrontati:
|
Componenti software utilizzate:
Prerequisiti:
Dispositivi fisici utilizzati:
|
GUIDA INDICATA A UTENTI CON ISTALLAZIONE: |
|
NOTE E DISCLAIMER
|
|
Revisione guida: 2.3 |
Abstract
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:
- motionEye sia già installato e configurato;
- motionEye abbia già almeno una telecamera integrata con relativa configurazione (funzionante) di rilevazione movimento;
- Home Assistant abbia già correttamente configurati i servizi client MQTT.
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:
- motionEye è in esecuzione su un sistema operativo sul quale sia installato anche Eclipse Mosquitto MQTT Broker (eg. Raspberry con Raspberry Pi OS e installazione di Mosquitto) o quantomeno i suoi tool;
- motionEye è in esecuzione su Home Assistant OS/Supervised come add-on e sia anche installato il broker Mosquitto.
Ipotizzeremo di avere una singola telecamera integrata a motionEye chiamata “Sala“: creeremo dunque un sensore di movimento 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.
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):
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.edoardo, 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: - action: notify.edoardo 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. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa. |