Domotizzare con semplicità l’irrigazione di piante e giardini con Home Assistant (parte 2)

4 minuti di lettura
SCOPI DEL PROGETTO:
  • Domotizzare un impianto d’irrigazione con Home Assistant
  • Livello di difficoltà: medio
  • Costo: n.a.
CONCETTI AFFRONTATI:
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
  • Un sistema d’irrigazione tradizionale domotizzato tramite le tecniche spiegate nella “parte 1” di questo progetto (oppure un sistema d’irrigazione domotico dotato di interfaccia MQTT nativa).
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.
Revisione progetto: 1.0

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, 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. Sonoff-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

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 Sonoff-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 irrigazionecmnd/Sonoff/POWER1 ONcmnd/Sonoff/POWER ON
Interruzione irrigazionecmnd/Sonoff/POWER2 ONcmnd/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 Sonoff-Tasmota (o altri, abilitanti al protocolo MQTT) è quanto di più banale:

switch:
  - platform: mqtt
    name: "Avvio irrigazione"
    icon: mdi:water
    state_topic: "stat/Sonoff/RESULT1"
    command_topic: "cmnd/Sonoff/POWER1"
    availability_topic: "tele/Sonoff/LWT"
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
  - platform: mqtt
    name: "Stop irrigazione"
    icon: mdi:water-off
    state_topic: "stat/Sonoff/RESULT2"
    command_topic: "cmnd/Sonoff/POWER2"
    availability_topic: "tele/Sonoff/LWT"
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"

Tale configurazione genera entità di questo tipo:

Home Assistant - Due interruttori irrigazione

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 ONda convertire in
cmnd/Sonoff/POWER1 ON
cmnd/sprinkler OFFcmnd/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/POWER1da convertire in
stat/sprinkler ON

inuse/sprinkler ON

stat/Sonoff/POWER2stat/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:

Node-RED - convertire topic MQTT per virtualizzare irrigatore

 

Arrivati a questo punto sarà sufficiente cliccare su “Deploy” e passare ad occuparsi della configurazione di Home Assistant:

switch:
  - platform: mqtt
    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“:

Home Assistant - Un interruttore 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:

switch:
  - platform: mqtt
    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.


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.


Please comment below