community italiana di domotica personale
 
Integrare le gesture di Aeotec Wallmote Quad a Home Assistant via Z-Wave JS

Integrare le gesture di Aeotec Wallmote Quad a Home Assistant via Z-Wave JS

SCOPI DELLA GUIDA
CONCETTI AFFRONTATI:
  • Utilizzo e configurazione software
COMPONENTI SOFTWARE UTILIZZATE:
PREREQUISITI
DISPOSITIVI FISICI UTILIZZATI:
GUIDA INDICATA A UTENTI CON ISTALLAZIONE:
Ambienti Home Assistant HassOS-Supervised-Core
NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e 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;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
Revisione guida: 1.0

Abstract

L’adozione di pulsanti touch wireless nella propria domotica personale può essere particolarmente comoda al fine di controllarne le diverse funzioni con il semplice tocco di un dito, senza tra l’altro la necessità di spaccare muri, garantire alimentazioni di rete o altro.

Il WallMote della Aeotec è proprio uno di questi pratici attuatori: una volta fissata la sua base magnetica tramite un sottile biadesivo al muro di destinazione, è sufficiente avvicinarvi l’unità per far sì che essa si áncori ad essa e diventi in tutto e per tutto una superficie tattile tramite la quale comandare la propria domotica. L’alimentazione a batteria – ricaricabile – garantisce il funzionamento per mesi e mesi.Aeotec WallMote - In mano

Il modello “Quad” dell’immagine a destra non solo prevede la presenza di quattro diversi pulsanti, ma prevede anche la gestione dell’hold, ovvero della pressione prolungata, il che porta a otto le gesture complessive utilizzabili in domotica.

Ora, trattandosi di un dispositivo Z-Wave è naturale immaginarlo integrato ad Home Assistant al fine di utilizzarlo per controllarne le entità e le azioni in esso definiti; invece, a differenza di altri componenti basati su questo protocollo l’Aeotec WallMote si differenzia per una diversa configurazione strettamente necessaria al fine di riuscire ad utilizzarne le funzioni.

Questa guida spiega quindi come utilizzare un WallMote con Home Assistant via Z-Wave JS, uno dei BRIDGE/Gateway più adottati in questo momento.

Si parte

Assunti

Si assume che, ovviamente, Home Assistant sia già operativo.

Si assume altresì che anche Z-Wave JS sia già operativo; qualora non lo sia, si rimanda all’elenco di modalità di installazioni disponibili sulla nostra scheda ad esso dedicata. In pratica, questa guida dà per assunto che si sia quindi già provveduto a installare l’elementare Z-Wave JS “server base” (sconsigliato) o Z-WaveJS2MQTT (consigliato).

Infine si assume che l’attuatore Aeotec (o “gli” attuatori) sia già connesso a Z-Wave JS e che quest’ultimo sia integrato a Home Assistant via API, come spiegato nella nostra apposita guida.

Spiegazione

In buona sostanza, integrare Z-Wave JS a Home Assistant significa in pratica far sì che, ogni qual volta un nuovo componente Z-Wave compatibile con tale BRIDGE/Gateway software gli viene associato, il “digital twin” di tale elemento appaia conseguentemente sotto forma di entità presso Home Assistant.

Facciamo l’esempio di Aeotec Indoor Siren, una sirena a batterie basata su Z-Wave: una volta connessa a Z-Wave JS, su Home Assistant appare un’entità di tipo “Siren” oltre ad altre entità accessorie come quelle per la regolazione del volume, quelle per innescare la riproduzione di alcuni effetti ed altro.

Aeotec WallMote / WallMote Quad come detto non dà origine, invece, ad alcuna entità.

Per far sì che le gesture comandate tramite l’unità (eg. la pressione di uno dei quattro tasti, oppure la pressione prolungata) possano essere utilizzata su Home Assistant “per innescare qualcosa” (per esempio l’accensione/spegnimento di un gruppo di luci, una regolazione, l’attivazione di uno script o di un’automazione – molto altro) è necessario intercettare gli eventi ad esse associati che transitano sul “bus event” di dell’HUB. In pratica, quando si comanda il WallMote un evento viene generato sul “bus event” e, se intercettato, può essere utilizzato come trigger in automazione.

Questo faremo.

Mettersi in ascolto

Con la certezza di aver rispettato gli assunti di cui sopra, recarsi presso l’interfaccia di Home Assistant alla voce “Strumenti per gli sviluppatori” > “Eventi“.

N.b. Naturalmente, le tecniche a seguire descritte sono valide anche per eventuali altri componenti Z-Wave con le caratteristiche del Wallmote, ovvero che vadano necessariamente gestiti tramite eventi e non tramite entità.

Alla voce “Evento a cui iscriversi” impostare “zwave_js_value_notification“, poi cliccare su “Iniziare ad ascoltare“.

A questo punto premere un pulsante qualsiasi del WallMote.

Sul log dell’interfaccia apparirà qualcosa del genere:

{
    "event_type": "zwave_js_value_notification",
    "data": {
        "domain": "zwave_js",
        "node_id": 5,
        "home_id": 3720945980,
        "endpoint": 0,
        "device_id": "e502a0de84eec3c3685e0ef5e8c040f8",
        "command_class": 91,
        "command_class_name": "Central Scene",
        "label": "Scene 001",
        "property": "scene",
        "property_name": "scene",
        "property_key": "003",
        "property_key_name": "003",
        "value": "KeyPressed",
        "value_raw": 0
    },
    "origin": "LOCAL",
    "time_fired": "2022-02-21T08:40:37.682000+00:00",
    "context": {
        "id": "c71a3ef6c10e2c6bbaac6ffffde3d854",
        "parent_id": null,
        "user_id": null
    }
}

Le chiavi che ci interessano di questo payload JSON sono principalmente tre: “device_id“, “label” e “value“. Il primo campo, in realtà, ci serve solo in presenza di più WallMote, altrimenti indipendentemente dal campo di device, l’automazione che andremo a scrivere funzionerebbe a prescindere. Comunque sia, questa tripletta “identifica l’evento”.

In questo caso abbiamo premuto (non “tenuto premuto”, ma solo premuto) il tasto 1 (in primo in alto a sinistra). I valori (al netto di device_id) sono:

  • “label”: “Scene 001”
  • “value”: “KeyPressed”

Se invece avessimo tenuto premuto, avremmo avuto:

  • “label”: “Scene 001”
  • “value”: “KeyHeldDown”

e subito a seguire:

  • “label”: “Scene 001”
  • “value”: “KeyReleased” (evento di rilascio)

Se invece avessimo premuto il tasto 3:

  • “label”: “Scene 003”
  • “value”: “KeyPressed”

E così via.

Va da sé che costruire un’automazione per gestire la pressione e la pressione prolungata dei quattro tasti è ora un gioco da ragazzi.

Automazione

A questo punto, raccolte le otto accoppiate “label” e “value“, siamo pronti a definire un’automazione molto semplice:

  - alias: "SWITCH Wallmote"
    id: "switch_wallmote"
    mode: single
    trigger:
      - platform: event
        event_type: zwave_js_value_notification
    condition: []
    action:
      - choose:
          - conditions: #gestione pressione pulsante 1
              - condition: template
                value_template: "{{ trigger.event.data.device_id == 'e502a0de84eec3c3685e0ef5e8c040f8' and trigger.event.data.label == 'Scene 001' and  trigger.event.data.value == 'KeyPressed' }}"
            sequence:
              - action: QUALCOSA
          - conditions: #gestione pressione prolungata pulsante 1
              - condition: template
                value_template: "{{ trigger.event.data.device_id == 'e502a0de84eec3c3685e0ef5e8c040f8' and trigger.event.data.label == 'Scene 001' and  trigger.event.data.value == 'KeyHeldDown' }}"
            sequence:
              - action: QUALCOSA

nell’automazione d’esempio abbiamo incluso solo i blocchi relativi alle due gesture del pulsante 1: questi andranno ripetuti e opportunamente configurati per ognuno dei restanti tre pulsanti.

Per quanto riguarda le sequence da eseguire a fronte del trigger, abbiamo impostato “QUALCOSA“, ma ovviamente quel qualcosa va valorizzato con delle azioni vere e proprie. Per esempio, ipotizziamo che si voglia accendere/spegnere una luce con la pressione del tasto 1:

          - conditions: #gestione pressione pulsante 1
              - condition: template
                value_template: "{{ trigger.event.data.device_id == 'e502a0de84eec3c3685e0ef5e8c040f8' and trigger.event.data.label == 'Scene 001' and  trigger.event.data.value == 'KeyPressed' }}"
            sequence:
              - action: light.toggle
                entity_id: light.luce_cucina

e così via, come meglio si crede, in base alle proprie esigenze e alle risorse a propria disposizione configurate presso l’HUB.

Conclusioni

Spiegato il meccanismo, dovrebbe essere piuttosto semplice integrare uno o più WallMote. Si precisa che l’automazione a grandi linee dovrebbe essere sempre la stessa, sebbene ovviamente il device_id cambi da esemplare a esemplare.

Come già detto, le tecniche illustrate sono valide anche per eventuali altri componenti Z-Wave con le caratteristiche dell’Wallmote, ovvero che vadano gestiti tramite eventi.

⚠️ 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.