SCOPI DEL PROGETTO:
CONCETTI AFFRONTATI:
|
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI: |
PROGETTO INDICATO a UTENTI CON ISTALLAZIONE: |
|
NOTE E DISCLAIMER
|
|
Revisione progetto: 1.2 |
Abstract
Nella “parte 1” del presente progetto abbiamo modificato un’elettrovalvola da irrigazione al fine di controllarla (oltre che a mano) tramite comandi impartiti a un attuatore a contatti puliti multipli (nello specifico dei nostri esempi, un Sonoff 4CH PRO).
In questa seconda parte vedremo come integrare l’attuatore utilizzato a Home Assistant al fine di rendere controllabile il tutto tramite la nostra domotica personale, automazioni incluse. Vedremo inoltre come integrare allo stesso scopo anche l’alternativa più semplice di attestare un attuatore a singolo canale a un’elettrovalvola comune. In entrambi questi casi si darà per scontata la presenza di un firmware custom (eg. Tasmota) che abiliti la disponibilità del protocollo MQTT.
N.b. Prima di affrontare questa seconda parte di progetto si consiglia un ripasso (o uno studio mediamente approfondito) del tema MQTT.
Si parte
- Analisi
- Prima strada (attuatore multicanale)
- Definire due interruttori
- Definire un dispositivo virtuale
- Seconda strada (attuatore singolo canale)
- Uso
Analisi
Come abbiamo detto, le strade che portano a questo punto del progetto sono due:
- la prima: domotizzare un’elettrovalvola da irrigazione tramite un attuatore a doppio contatto pulito, come spiegato nella “parte 1” del progetto;
- la seconda: domotizzare un’elettrovalvola generica tramite un attuatore a singolo canale, come spiegato qui.
Ovviamente le configurazioni degli attuatori variano in base a modello, firmware e configurazioni utente. Ipotizzando la presenza del firmware Tasmota (ma potrebbe essere anche un altro) in configurazione standard e di utilizzare i canali 1 e 2 di un Sonoff 4Ch PRO (prima strada) o il canale singolo di un Sonoff Basic (seconda strada), i comandi MQTT a disposizione sarebbero:
Sonoff 4Ch PRO (prima strada) | Sonoff Basic (seconda strada) | |
Avvio irrigazione | cmnd/Sonoff/POWER1 ON | cmnd/Sonoff/POWER ON |
Interruzione irrigazione | cmnd/Sonoff/POWER2 ON | cmnd/Sonoff/POWER OFF |
Per la prima strada, i casi sono due:
- senza bisogno di chiamare in causa la definizione di un dispositivo virtuale MQTT tramite Node-RED, ci limitiamo a definire due interruttori che inviino i due diversi comandi di avvio e interruzione;
- vogliamo definire un’unico, elegante accessorio “irrigatore” che provveda a inviare il giusto comando in base a come lo si aziona.
Per la seconda strada è tutto più facile: è infatti possibile definire direttamente un unico accessorio “irrigatore”, dato che il topic di comando MQTT è già uno solo (“cmnd/Sonoff/POWER“) e a cambiare è solo il payload (“ON” od “OFF“).
Prima strada
Definire due interruttori
Implementare in configurazione due interruttori a partire da un Sonoff a due canali dotato di firmware Tasmota (o altri, abilitanti al protocollo MQTT) è quanto di più banale:
mqtt: switch: - name: "Avvio irrigazione" icon: mdi:water state_topic: "stat/Sonoff/RESULT1" value_template: "{{ value_json.POWER }}" command_topic: "cmnd/Sonoff/POWER1" availability_topic: "tele/Sonoff/LWT1" qos: 1 payload_on: "ON" payload_off: "OFF" payload_available: "Online" payload_not_available: "Offline" retain: false - name: "Stop irrigazione" icon: mdi:water-off state_topic: "stat/Sonoff/RESULT2" value_template: "{{ value_json.POWER }}" command_topic: "cmnd/Sonoff/POWER2" availability_topic: "tele/Sonoff/LWT2" qos: 1 payload_on: "ON" payload_off: "OFF" payload_available: "Online" payload_not_available: "Offline" retain: false
Tale configurazione genera entità di questo tipo:
Le due entità si chiameranno “switch.avvio_irrigazione” e “switch.stop_irrigazione” e potranno ora essere attivati per comandare l’elettrovalvola sia in modo manuale sia tramite automazioni.
Definire un dispositivo virtuale
L’approccio più elegante, invece, prevede la definizione, tramite Node-RED, di un dispositivo virtuale MQTT il quale consenta di ottenere un unico interruttore presso Home Assistant.
Quello che faremo tramite Node-RED (applicando le logiche spiegate in questa guida) è definire un flusso logico il quale faccia convergere i due comandi MQTT in uno unico, così da permetterci la configurazione di un’unica entità tramite la piattaforma “MQTT Switch”. Creeremo un topic virtuale di comando da “convertire” in due diversi topic di comando MQTT (in base alla condizione) e un topic virtuale di telemetria verso il quale “canalizzare” le telemetrie dei due canali del Sonoff.
Ecco la mappatura da realizzare per quanto riguarda il comando virtuale “cmnd/sprinkler”
cmnd/sprinkler ON | da convertire in |
cmnd/Sonoff/POWER1 ON |
cmnd/sprinkler OFF | cmnd/Sonoff/POWER2 ON |
Ecco invece la mappatura delle telemetrie provenienti dai due canali del Sonoff (“stat/Sonoff/RESULTx“) verso due telemetrie virtuali (perché siano due lo spieghiamo dopo – “stat/sprinkler“, “inuse/sprinkler“):
stat/Sonoff/POWER1 | da convertire in |
stat/sprinkler ON
inuse/sprinkler ON |
stat/Sonoff/POWER2 | stat/sprinkler OFF
inuse/sprinkler OFF |
Realizzare i flussi è particolarmente semplice (se ben compresa la guida su questo tipo di attività): si tratta di intercettare i vari topic e “girarli” in diversi topic di uscita:
Arrivati a questo punto sarà sufficiente cliccare su “Deploy” e passare ad occuparsi della configurazione di Home Assistant:
mqtt: switch: - name: "Irrigazione" icon: mdi:water state_topic: "stat/sprinkler" command_topic: "cmnd/sprinkler" availability_topic: "inuse/sprinker" payload_on: "ON" payload_off: "OFF" payload_available: "ON" payload_not_available: "OFF"
N.b. il topic “inuse/sprinkler” viene configurato solo per questioni “estetiche”. In assenza, l’accessorio irrigatore funziona comunque, ma riporta uno stato “Idle” anziché “Running”, quando sta operando.
La configurazione genera la definizione di un’unica entità interruttore, come da attese, chiamata “switch.irrigazione“:
Seconda strada
In questo caso è tutto molto più semplice. Trattandosi di un singolo attuatore Sonoff il quale, in stato ON attiva l’elettrovalvola scelta, e in stato OFF la chiude (o viceversa, in base allo stato normale dell’elettrovalvola scelta), non abbiamo bisogno di usare Node-RED per “trasformare” i topic: sarà infatti sufficiente utilizzare direttamente quelli a disposizione:
mqtt:
switch:
- name: "Irrigazione"
icon: mdi:water
state_topic: "stat/Sonoff/RESULT"
command_topic: "cmnd/Sonoff/POWER"
availability_topic: "tele/Sonoff/LWT"
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
Uso
A questo punto non bisogna far altro che controllare l’accessorio così domotizzato in modo manuale, agendo direttamente tramite il frontend Home Assistant (web o tramite app) oppure configurando un’automazione e/o degli script che provvedano all’ingaggio automatico dell’irrigazione delle vostre piante.
Un consiglio è quello di adottare singoli sensori meteo-previsionali e/o dei sensori di umidità del terreno al fine di utilizzarli in automazione: questo consente, per esempio, di evitare di irrigare laddove il terreno sia già umido, oppure laddove sia prevista, nel giro di poche ore, pioggia naturale.
⚠️ 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. |