Sistema di notifiche visive LED basato su NodeMCU, Tasmota e MQTT

10 minuti di lettura
Scopi del progetto:
  • assemblare un dispositivo da applicare a muro (o altre modalità) atto a segnalare stati della propria domotica tramite diodi LED colorati
  • Livello di difficoltàmedio
  • Costo: intorno ai 60 euro (in base ai materiali scelti)
Concetti affrontati:
  • costruzione prototipo
  • configurazione software
Componenti software utilizzate:
Materiali NECESSARI:

(lista dettagliata nel corpo del progetto)

GUIDA maggiormente indicatA 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.

Tavoletta LED - Spenta

Abstract

La domotica ci dota di sistemi estremamente moderni atti a perfezionale l’esperienza del vivere, quotidianamente, i nostri spazi domestici.

Chi già da tempo si è imbarcato in tale avventura saprà quanto, in senso pratico, tali sistemi siano davvero utili nel quotidiano: riscaldamenti che si auto-regolano in base alla nostra presenza, sistemi di allarme che si armano da soli in nostra assenza, luci che offrono la possibilità di configurare scenari legati all’orario e molto, molto, molto altro ancora.

Spesso capita che si abbia bisogno di un’informazione puntuale su determinati stati della propria domotica.
Ad esempio:

  • Il riscaldamento è attivo?
  • È notte. L’allarme è armato in modalità notturna ?
  • La luce in garage è spenta?
  • L’erogazione di acqua e gas è aperta?
  • Il cancello è aperto?

e così via.
Questo genere di domande trova risposta, solitamente, presso il nostro/i strumento/i di gestione finale, i quali dispongono di tutti gli stati della domotica in tempo reale.

Le domande (esemplificative) di cui sopra condividono però una caratteristiche: prevedono tutte delle risposte binarie, ovvero “sì/no”, “vero/falso”. “1/0”. Qual è l’oggetto fisico che, per definizione, dispone di due soli stati? La lampadina, la quale prevede lo stato “acceso” e lo stato “spento”.

Questo progetto si propone di realizzare un prototipo e poi un sistema a incasso murale (che ovviamente si presta a innumerevoli modifiche e declinazioni diverse) il quale presenti una serie di “lampadine” (n realtà useremo dei piccoli LED colorati) le quali, una volta attestate sulla domotica, si accendano/spengano in modo sincrono agli stati di determinate entità presenti in domotica, permettendo agli utenti di dedurne lo stato con un solo colpo d’occhio, senza il bisogno di accedere alla propria dashboard di controllo.

Un po’ HAL9000, un po’ USS Enterprise.

Si parte

Filosofia e scopi del progetto

NodeMCU è una piccola board basata sul system-on-a-chip (SOC) ESP8266 perfetta per realizzare prototipi. Una sua grande caratteristica – oltre alla flessibilità e al basso costo – è quella di essere programmabile con firmware Sonoff-Tasmota, il che la abilita a una facile e rapida integrazione con le domotiche personali basate su HUB personali (Home Assistant, Homebridge, openHAB eccetera) tramite protocollo MQTT.

NodeMCU è fornito di una serie di contatti chiamati GPIO (General Purpose Input/Output, contatti input/output ad uso generico) sui quali è possibile attestare i più diversi componenti: piccoli motori elettrici, attuatori, sensori e… diodi LED.

NodeMCU - Schema connessione - Pin utilizzabili da Sonoff-Tasmota
i contatti GPIO di NodeMCU.

Tali contatti GPIO presenti sui moduli NodeMCU hanno un corrispettivo logico presso la configurazione del firmware Sonoff-Tasmota: ad ognuno è possibile attribuire una funzione specifica in base a tipo di componente ad esso collegato, per permettere poi ai comandi del firmware stesso di poterli controllare correttamente.

Sonoff-Tasmosta - Generic
la schermata Tasmota dove configurare i “ruoli” assegnati ai vari GPIO

Quindi, ricapitolando:

  • NodeMCU è un dispositivo Wi-FI a basso consumo e può essere programmato con firmware Sonoff-Tasmota;
  • il firmware Sonoff-Tasmota di permette di controllare i suoi GPIO;
  • i suoi GPIO così controllati possono essere “mappati” e controllati come “interruttori virtuali” (una delle tante funzioni attribuibili dal firmware Sonoff-Tasmota ai vari GPIO) presso la nostra domotica, tramite MQTT.

Pertanto, se su quei GPIO attesteremo dei diodi LED e li configureremo come “switch” potremo dunque controllarli come fossero “lampadine” presso la nostra domotica sfruttando il protocollo MQTT.

Una volta ottenuto il risultato di riuscire a controllare i LED attraverso il nostro HUB personale, dovremo solo scrivere le automazioni necessarie a far sì che essi si accendano/spengano in base agli stati di altre entità domotiche già presenti nella configurazione in base alle nostre esigenze.

Lo scopo primario di questo progetto è quello di assemblare un prototipo composto da LED controllabili tramite NodeMCU+Tasmota – e quindi automaticamente dalla nostra domotica; secondariamente, assembleremo il prototipo su una basetta in legno tale da essere montata a muro e alimentata da un trasformatore 230v/12v.

Lista materiali

PROTOTIPO

Per quanto riguarda il prototipo, concepito per prendere dimestichezza con le funzionalità, è sufficiente un NodeMCU, un cavo Micro-USB per alimentarlo, una basetta Breadboard sul quale attestarlo, dei diodi LED, infine dei cavetti Dupont con cui collegarli.

Noi abbiamo usato:

Esistono anche degli economici kit completi contenenti basetta(e) Breadboard, cavi Dupont e diodi LED multicolore più tutta una serie di altri componenti utilizzabili per altri progetti.

BASETTA PER MURO

Se, dopo la prototipazione si decidesse di montare a muro il sistema visivo di notifiche realizzato, sarebbe necessario dotarsi di una base sulla quale montare i LED e dalla quale far partire il fascio di cavi destinati al NodeMCU, posizionato in una scatola murale (o altro tipo) assieme al trasformatore 230v/12v.

Noi abbiamo usato:

La scelta della scatola murale è legata alla realtà in cui verrà calato il modulo. Dato che nella scatola confluiranno i cavi provenienti dalla basetta e dai relativi LED e ospiterà il trasformatore e il NodeMCU, dev’essere sufficientemente ampia; se sia da incasso o pensile, è una scelta di chi implementa il tutto.

Nel nostro caso, dato che il modulo è stato montato su un muro sottile che affaccia da un lato nell’ambiente vivibile e dall’altro in una cantina, si è scelto di far passare il fascio di cavi attraverso il muro e montare una scatola pensile dal lato cantina.

Assunzioni

Il presente progetto dà per scontato che:

Realizzazione prototipo

Cominceremo dalla cosa più semplice, ovvero la connessione del/dei LED al NodeMCU.
Per chi fosse completamente a digiuno di elettronica, qui è disponibile un’interessante pagina dedicata all’anatomia di un diodo ad emittenza luminosa, o LED.

Alimentiamo ora il NodeMCU col cavo USB/Micro-USB e colleghiamo (utilizzando la basetta Breadboard e i cavi Dupont) un LED al GPIO15 “D8” (scelta arbitraria, non obbligata – si sarebbe potuto scegliere uno qualunque degli altri), come da schema:

NodeMCU - Schema connessione LED

Un esempio di assemblaggio del prototipo tramite basetta millefori è questo:

NodeMCU su basetta Breadboard

FINE!
Non c’è molto altro da fare.
Ovviamente, qualora i LED siano più di uno (in questo progetto ne collocheremo otto) basterà collegarne gli anodi (polo +) ai vari GPIO liberi, e gli anodi (-) tutti quanti a “GND” (terra).

Configurazione modulo

A questo punto è necessario “istruire” NodeMCU rispetto al fatto che sul GPIO “D8” sia ora attestato un LED.
Da interfaccia web del NodeMCU (disponibile grazie al firmware Tasmota) entrare nella configurazione MQTT (“Configuration” > “Configure Module”) e impostare, per ognuno dei GPIO sul quale si sia attestato l’anodo di LED impostare la modalità “Relay”, utilizzandone la numerazione crescente.

Nell’esempio che segue ipotizziamo la presenza di due LED, uno su GPIO15 (D8) e uno su GPIO5 (D1)

Sonoff Tasmosta -Generic - 2 relè

Cliccato su “Save”, anche questa configurazione sarà completata!
A questo punto sulla Home Page dell’interfaccia web appariranno due interruttori virtuali: se azionati, i LED si accenderanno/spegneranno.

COMANDARE I LED TRAMITE MQTT

Ora è necessario capire la “logica” di comando MQTT per i vari LED configurati; prima, però, accertarsi che il protocollo MQTT sia correttamente configurato lato broker, lato Home Assistant e Sonoff. A tal proposito si consiglia la lettura attenta della guida dedicata alla configurazione dei componenti MQTT nella propria domotica.

Recarsi dunque presso la “Console” disponibile presso l’interfaccia web del NodeMCU. Il comando per accendere un LED è il seguente (si assume che in configurazione MQTT il modulo si chiami “NodeMCU”):

cmnd/NodeMCU/POWERX ON

mentre quello per spegnerlo

cmnd/NodeMCU/POWERX OFF

dove X sarà il numero di “Relay” configurato precedentemente.

Va da sé che, sulla base della configurazione d’esempio di cui sopra, il comando di accensione (per esempio) del LED numero 2 (ovvero quello attestato sul GPIO5), sarà:

cmnd/NodeMCU/POWER2 ON

e così via.
Capire bene questo passaggio è estremamente importante per riuscire poi a configurare gli elementi presso la nostra domotica personale.

N.b. Nessuno vieta l’uso di modalità diverse dalla modalità tradizionale di accensione/spegnimento: dato l’uso del firmware Tasmota, è possibile pensare all’implementazione di lampeggii e flash tramite l’uso dei comandi “BLINK” e “PULSETIME“.

Configurazione in domotica

Ultimo step relativo al prototipo è quello di configurare tanti “switch” (“interruttori”) quanti sono i nostri LED presso la nostra domotica. Di seguito riporteremo le strategie di configurazione relative a due HUB personali tra i più noti: Home Assistant e Homebridge.

Home Assistant

Per quanto riguarda Home Assistant è necessario configurare tanti interruttori quanti sono i LED configurati su NodeMCU. Per fare questo si faccia riferimento alla guida inDomus “Aggiungere un interruttore MQTT alla configurazione Home Assistant“.

Un rapido esempio di configurazione (legato alla configurazione d’esempio di cui sopra) tramite è il seguente:

switch:
  - platform: mqtt
    name: "LED1"
    state_topic: "stat/NodeMCU/POWER1"
    command_topic: "cmnd/NodeMCU/POWER1"
    availability_topic: "tele/NodeMCU/LWT"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
    retain: false
AUTOMAZIONE

A questo punto è necessario collegare il comportamento del LED (o dei LED) ai cambi di stato di altre entità.
Ipotizziamo di voler “visualizzare” tramite l’accensione del LED1 lo stato di un’entità chiamata “switch.pompa” e di LED2 quello di un’entità chiamata “switch.termoventilatore“.

L’automazione, semplicissima, sarà la seguente:

automation:
- alias: "Notifiche LED"
  hide_entity: true
  trigger:
    platform: state
    entity_id: switch.pompa, switch.termoventilatore
  condition:
    condition: template
    value_template: "{{ trigger.to_state.state != trigger.from_state.state }}"
  action:
    service_template: >
      {% if trigger.to_state.state == 'on' %}
      switch.turn_on
      {% else %}
      switch.turn_off
      {% endif %}
    data_template:
      entity_id: >
        {% if trigger.entity_id == 'switch.pompa' %}
        switch.LED1
        {% elif trigger.entity_id == 'switch.termoventilatore' %}
        switch.LED2
        {% endif %}

Il trigger è il cambio di stato di una qualsiasi delle due entità. La condition per l’esecuzione dell’action è che il cambio di stato sia diverso dal precedente (da ‘on’ a ‘off’ o viceversa). Infine, l’action definisce se applicare “.turn_on” o “.turn_off“, e a quale delle due entità sulla base di quale sia stata oggetto del trigger.

Homebridge

Analogamente a Home Assistant, anche per Homebridge è necessario configurare tanti interruttori quanti sono i LED configurati su NodeMCU. Per fare questo si faccia riferimento alla guida inDomus “Aggiungere un interruttore Sonoff a Homebridge usando Tasmota e MQTT“.

Un rapido esempio di configurazione (legato alla configurazione d’esempio di cui sopra) tramite l’uso del plugin “homebridge-mqtt-switch-tasmota” è il seguente:

{
  "accessory": "mqtt-switch-tasmota",
  "switchType": "light",
  "name": "LED1",

  "url": "mqtt://MQTT–BROKER-ADDRESS",
  "username": "MQTT USER NAME",
  "password": "MQTT PASSWORD",

 "topics": {
    "statusGet": "stat/NodeMCU/RESULT",
    "statusSet": "cmnd/NodeMCU/POWER1",
    "stateGet": "tele/NodeMCU/STATE"
  },
  "onValue": "ON",
  "offValue": "OFF",
	
  "activityTopic": "tele/NodeMCU/LWT",
  "activityParameter": "Online",
    
  "startCmd": "cmnd/NodeMCU/TelePeriod",
  "startParameter": "60"
}
AUTOMAZIONE

L’automazione in ambito HomeKit, come sempre, è (purtroppo) legata ai limiti dell’app Apple “Casa”. Sarà comunque sufficiente seguire la guida “Gestire e automatizzare un interruttore su Apple HomeKit” e impostare, come trigger, “Un accessorio viene controllato” mentre, come azione finale, l’accensione/spegnimento dell’interruttore LEDx precedentemente configurato.


Una volta completate le configurazioni relative all’automazione – indipendentemente dal tipo di domotica personale che si utilizza – avremo dei LED che, autonomamente, si accenderanno/spegeranno in base agli stati delle entità indicate in configurazione.

Realizzazione opera muraria

Vogliamo ora traslare il prototipo in una realtà muraria. Da scienziati pazzi della domotica diventiamo artigiani e muratori!

N.b. I passi che andiamo ora ad illustrare sono solo una delle tantissime possibilità e varianti applicabili al progetto. È tutta una questione di budget, fantasia, capacità manuali.

Ricordiamo che:

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.


Le unità da realizzare sono due:

  • la tavoletta dotata di LED;
  • la scatola di alimentazione e controllo.

Tavoletta

È il momento della tavoletta.
Predisporremo su di essa un determinato numero di fori in base ai LED che collocheremo (adeguati alla dimensione del LED stessi – noi abbiamo usato una punta da legno da 5), rifiniremo i contorni dei fori, stuccheremo in modo il più possibile uniforme, carteggeremo delicatamente e verniceremo (un paio di mani) dello stesso colore della parete sulla quale collocheremo l’unità.

Questo slideshow richiede JavaScript.

Una volta ben asciugata la vernice, cominceremo a smontare il nostro prototipo rimontando all’interno dei fori i LED, fissandoli con una goccia di colla a caldo sul retro.

A questo punto si inizierà a cablare le connessioni dei contatti LED, avendo cura di tagliare i terminali troppo lunghi. Una volta verificata l’accensione, fissare progressivamente i vari cavi e connettori tramite colla a caldo. Al termine del cablaggio si dovranno avere tanti cavi connessi agli anodi (+) quanti sono i LED, e un unico cavo da collegare alla terra del NodeMCU (“GND”) connesso con tutti i catodi dei LED (-). Per quest’ultimo si consiglia utilizzare un cavo nero per maggior riconoscibilità.

Terminato tutto il cablaggio si provvederà a coprire l’intera superficie posteriore (dove si trovano i cavi connessi ai LED) tramite nastro telato.

Questo slideshow richiede JavaScript.

Fissare infine i cavi in un unico fascio utilizzando la guaina termorestringente.

A questo punto provvedere alla produzione della nicchia nel muro nella quale murare la tavoletta. Il fascio di cavi, in base alla soluzione scelta, passerà in una traccia in direzione della scatola di alimentazione e controllo. Nel nostro caso, il fascio di cavi attraversa il muro e arriva alla scatola posta dall’altro lato.

Tavoletta LED - Muro

Sarà cura di chi effettua il lavoro completarlo con una buona stuccatura, rifinitura, verniciatura, per far sì che la tavoletta visivamente sparisca completamente nel muro, lasciando solo le sue luci ad apparire come, dal nulla, nel proprio minimalismo funzionale.

Scatola di alimentazione e controllo

La scatola è un dispositivo semplice: contiene l’alimentatore (al quale portare i 230v di linea) un interruttore generale (che interrompe la fase in ingresso al trasformatore), il nostro NodeMCU e, ovviamente, i cavi in arrivo dalla tavoletta.

Lo schema elettrico (ricordiamo sempre di far realizzare tale schema a un professionista) è semplice: la fase entra ed esce dall’interruttore generale, va assieme al polo neutro all’ingresso di linea del trasformatore (“AC 230v”), mentre dall’uscita del trasformatore (“DC 12v”) i due poli (+ e -) andranno rispettivamente ai pin “VIN” e “GND” del NodeMCU. “VIN” è infatti l’entrata di alimentazione del NodeMCU che accetta tensioni variabili dai 3 ai 20 volt.

Tavoletta LED - Schema alimentazione 220v-12v

Trasformatore 220v:12v

Terminato il cablaggio dell’alimentazione sarà il momento di ricollegare i pin dei vari LED ai vari GPIO, come da configurazione precedentemente definita.

Scatola alimentazione
una possibile realizzazione della scatola di alimentazione e controllo

Il lavoro sarà così stato terminato.
Una volta attivato l’interruttore, la tavoletta LED sarà operativa.

Esempio di funzionamento

Ecco un nostro video che dimostra il funzionamento a lavoro completato:


Please comment below