Sicurezza: controllo apertura varchi tramite Sonoff RF Bridge e Home Assistant

6 minuti di lettura
SCOPI DEL PROGETTO:
  • Monitorare l’apertura dei varchi (porte, finestre, bascule ecc.) tramite contatti magnetici radio 433mhz, Sonoff Bridge RF e Home Assistant
  • Livello di difficoltà: medio
  • Costo: ridotto (<30 €)
CONCETTI AFFRONTATI:
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
PROGETTO MAGGIORMENTE INDICATO PER:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi modifica all'impianto elettrico dev'essere effettuata da personale qualificato
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (la presente guida ha puro scopo didattico)
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere la garanzia.

Sonoff RF BridgeAbstract

Il Sonoff RF Bridge è un componente domotico in grado di ricevere e inviare codici esadecimali tramite segnali radio in radiofrequenza a 433mhz. Tramite l’adozione del firmware Sonoff-Tasmota è anche in grado di effettuare tali funzioni tramite protocollo MQTT. In questo progetto ci soffermeremo sulle funzionalità di pubblicazione di telemetrie MQTT a fronte di ricezione di segnali radio (e relativi codici) da parte di sensori.

Tramite l’uso combinato di:

andremo ad configurare presso la domotica uno o più sensori (binari) di apertura utili a conoscere l’evento di apertura di uno o più varchi di casa. L’evento di chiusura del sensore è disponibile a fronte di un sensore che offra tale funzionalità – in alternativa, vedremo come sopperire a questa eventuale assenza.

Il funzionamento è semplice. Dato che il sensore magnetico è in grado di inviare un codice specifico (diverso per ogni sensore) tramite radiofrequenza 433mhz e dato che il Sonoff RF Bridge è in grado di ricevere tale codice per poi ripubblicarlo (tramite l’adozione del protocollo MQTT) sulla rete come telemetria MQTT, allora tramite una corretta configurazione di un sensore binario MQTT saremo in grado di intercettare tale telemetria e farla interpretare alla domotica come “apertura varco”.

Nb. Il presente progetto illustra come domotizzare dei sensori magnetici tramite Sonoff RF Bridge; va da sé che una volta introdotti tali sensori in domotica, sarà possibile utilizzarli in scenari di automazione quali l’attivazione di luci, sirene, ecc.  a loro volta già inclusi in domotica.

La tecnica qui descritta, va da sé, è comunque mutuabile anche con altre piattaforme della famiglia “Binary Sensor”, quindi con altri sensori non necessariamente radio/magnetici.

ATTENZIONE: questo progetto ha puro scopo didattico e non sostituisce un sistema d’allarme/antifurto vero e proprio.

Si parte

Installazione dei sensori

I sensori vanno solitamente applicati al varco da monitorare (ma va?) in modo che all’apertura dello stesso si inneschi l’impulso radio ricevuto poi dall’RF Bridge e quindi la domotica interpreti la cosa come “apertura varco”. Sul tema relativo al funzionamento del sensore, rimandiamo alla pagina dedicata al Sonoff DW1, ovvero il sensore utilizzato per il presente progetto.

Configurazione lato Sonoff RF Bridge

A valle dell’implementazione del firmware Sonoff-Tasmota sull’RF Bridge è necessario configurarlo in modo da renderlo ricevitore di radiofrequenza (ed eventualmente emettitore – ma non è tema trattato nel presente progetto).

Per far ciò, è necessario recarsi ala voce di menu “Configurazione > Configurazione modulo” e impostare la configurazione come da figura:

Configurazione Sonoff RF Bridge

Tale configurazione abiliterà le funzioni radiofrequenza dell’unità.

Scoprire il codice del sensore

Come spiegato, ogni sensore presenta un codice esadecimale specifico che lo identifica. Tale codice viene inviato in radiofrequenza 433mhz e viene quindi raccolto dal/dai Sonoff RF Bridge (che dev’essere ovviamente a portata del segnale radio) il quale a sua volta lo ripubblica come telemetria MQTT.

Per scoprire il codice del sensore sarà quindi sufficiente recarsi tramite web presso la “Console” dell’unità e attivare il sensore magnetico.

In console apparirà una stringa analoga a questa:

MQT: tele/BridgeRF/RESULT = {"RfReceived":{"Sync":12610,"Low":400,"High":1250,"Data":"F413AC","RfKey":"None"}}

Ciò che ci interessa è semplicemente il contenuto del codice nel campo “Data”, in questo caso “F413AC“.

Configurazione presso Home Assistant

Una volta scoperto il codice del nostro sensore, aggiungere una controparte alla configurazione sarà sufficiente includere nel file di configurazione di Home Assistant il seguente codice:

binary_sensor
  - platform: mqtt
    name: "Contatto apertura ingresso"
    payload_on: "F413AC"
    payload_off: ""
    device_class: opening
    state_topic: "tele/BridgeRF/RESULT"
    value_template: "{{ value_json.RfReceived.Data }}"

Le variabili disponibili per la personalizzazione della configurazione sono le seguenti:

state_topic(stringa, richiesta) – Il topic MQTT al quale iscriversi per ricevere le telemetrie
name(stringa, opzionale) – Nome del sensore MQTT. Default: “MQTT Binary Sensor”
qos(intero, opzionale) – Il livello di QoS per lo state_topic. Default: 0 (Cos’è QoS?)
payload_on(stringa, opzionale) – Il payload che, se ricevuto, imposta a “on” il sensore binario
payload_off(stringa, opzionale) – Il payload che, se ricevuto, imposta a “off” il sensore binario
value_template(template, opzionale) – Definisce il template per l’estrazione (parsing) del dato.
force_update(booleano, opzionale) – Invia al motore di automazione di Home Assistant l’aggiornamento del valore anche se non è accaduto realmente. Utile per rendere cotinui i grafici degli storici. Default: false
availability_topic(stringa, opzionale) – Topic MQTT al quale iscriversi per ottenere lo stato online/offline da parte del dispositivo.
payload_available(stringa, opzionale) – Il payload che rappresenta lo stato “disponibile”. Esempio: “online”. Viene usato in abbinamento alla variabile “availability_topic”.
payload_not_available(stringa, opzionale) – Il payload che rappresenta lo stato “non disponibile”. Esempio: “offline”. Viene usato in abbinamento alla variabile “availability_topic”.
unique_id(stringa, opzionale) – Un ID che identifica univocamente il sensore in termini di configurazione. Se due sensori presentano il medesimo ID, Home Assistant solleva un eccezione d’errore.
device_class(device_class, opzionale) – Il tipo/classe di sensore utile per impostare la corretta, relativa icona sul frontend di Home Assistant.

Nb. L’esempio è effettuato su un sensore magnetico (il Sonoff DW1) che NON comunica l’evento di richiusura del varco.
Pertanto, il campo “payload_off” viene lasciato intenzionalmente vuoto. Vedremo a seguire come configurarlo.

N.b. Per utilizzare questa piattaforma è necessario che il componente “MQTT” di Home Assistant sia stato preventivamente configurato (vedi prima parte della scheda dedicata al componente “MQTT”). Si consiglia inoltre di leggere con attenzione la guida dedicata al tema della configurazione dei componenti MQTT nella propria domotica.

Automazione

A questo punto è necessario indicare alla configurazione di Home Assistant cosa fare a fronte del rilevamento dell’apertura del varco.

Fermo restando che tramite l’automazione sarà possibile utilizzare l’entity binary_sensor per i più disparati usi (dall’accesione di un punto luce piuttosto che l’attivazione di un allarme), nell’esempio portato in questo progetto si rende necessario gestire l’incapacità del sensore portato ad esempio (il Sonoff DW1) di riportare lo stato di richiusura del varco.

Utilizzeremo quindi un’automazione che, a fronte del cambio di stato del binary_sensor a “on” – aperto – provveda dopo tre secondi (tempo arbitario) a inviare un topic MQTT (uguale a quello solitamente inviato dall’RF Bridge) il quale contenga una chiave di reset, in questo caso “key_clean“:

automation:
  alias: Apertura CONTATTO e reset
  trigger:
    platform: state
    entity_id: binary_sensor.contatto_apertura_ingresso
    to: 'on'
    for:
      seconds: 3
  condition: []
  action:
    service: mqtt.publish
    data:
      topic: tele/BridgeRF/RESULT
      payload: "key_clean"
      retain: false

A questo punto, per completare l’opera andrà modificato il sensore precedentemente configurato, aggiungendo al campo “payload_off” la chiave “key_reset“:

binary_sensor
  - platform: mqtt
    name: "Contatto apertura ingresso"
    payload_on: "F413AC"
    payload_off: "key_clean"
    device_class: opening
    state_topic: "tele/BridgeRF/RESULT"
    value_template: "{{ value_json.RfReceived.Data }}"

Configurazione con più sensori

In caso siano presenti più sensori, la procedura prevede la creazione di tanti binary_sensor quanti siano i sensori e relativi codici; ovviamente, ogni entity avrà il proprio “payload_on“, mentre il “payload_off” rimarrà “key_reset“. Vedremo infatti a seguire come configurare una sola automazione che si inneschi a fronte dell’apertura anche di un solo sensore e che resetti lo stato di chiusura condiviso da tutti tramite la pubblicazione della chiave “key_reset“.

Per far ciò è necessario innanzitutto creare un gruppo che contenga tutti i binary_sensor relativi ai sensori di apertura. Ipotizzeremo nell’esempio che segue la presenza in domotica di tre sensori:

group:
    contatti_magnetici:
    name: Contatti magnetici
    entities:
      - binary_sensor.contatto_apertura_ingresso
      - binary_sensor.contatto_apertura_finestra
      - binary_sensor.contatto_apertura_porta_finestra

Avremo così definito un gruppo “contatti_magnetici”.
Modificheremo ora l’automazione precedentemente definita affinché si attivi all’apertura di un qualsiasi sensore: dato che l’apertura anche di un singolo sensore causerà il cambio di stato del gruppo in “on” – aperto – (essendo composto di elementi omogenei), utilizzeremo proprio questo stato di gruppo per innescare l’automazione:

automation:
  alias: Apertura CONTATTI e reset
  trigger:
    platform: state
    entity_id: group.contatti_magnetici
    to: 'on'
      for:
      seconds: 3
  condition: []
  action:
    service: mqtt.publish
    data:
      topic: tele/BridgeRF/RESULT
      payload: "key_clean"
      retain: false

Come azione pubblicheremo via MQTT il messaggio “key_clean“, il quale riporterà in stato di “off” – chiuso – tutti i sensori (e quindi il gruppo stesso).

Ovviamente potremo aggiungere anche una o più azioni aggiuntive, come l’attivazione di un allarme, l’accensione di un punto luce e via dicendo.


Home Assistant Official LogoATTENZIONE: 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.

🔻 Clicca QUI per commentare l'articolo. 🔻