Domotizzare con semplicità l’irrigazione di piante e giardini con Apple HomeKit via Homebridge (parte 2)

5 minuti di lettura
SCOPI DEL PROGETTO:
  • Domotizzare un impianto d’irrigazione con Apple HomeKit via Homebridge
  • Livello di difficoltà: medio
  • Costo: n.a.
CONCETTI AFFRONTATI:
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSTIVI 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:

Apple-200x200

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

Il programma Apple HomeKit, come noto, permette di dotarsi di un ambiente operativo per la gestione, organizzazione e automazione della propria domotica personale a partire da componenti di diversi produttori, tecnologie e funzioni presenti sul mercato. Homebridge è un HUB personale che consente all’utente di rendere compatibili con tale standard componenti domotiche anche molto diverse tra loro le quali, nativamente, non lo sarebbero.

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 Homebridge al fine di rendere controllabile il tutto tramite Apple HomeKit. 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.

Quale sia la strada di partenza, Il risultato finale sarà quello di un elemento di tipo “Irrigatore” il quale possa per l’appunto essere gestita tramite Apple HomeKit nelle consuete modalità manuali e automatiche.

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

Abbiamo quindi deciso di “accontentarci” della disponibilità di due “semplici” interruttori che, quando attivati, provvedano a avviare o a disattivare l’irrigazione. Il ritorno allo stato “spento” per due interruttori sarà automatico, dato che – come spiegato nella “parte 1” – è stato attivato per entrambi i canali un comportamento “inching” della durata di un secondo.

Per fare questo utilizzeremo il plugin “homebridge-mqttthing” (che si dà per scontato sia già installato sul sistema) effettuando una configurazione Homebridge analoga alla seguente:

"accessories": [{
		"accessory": "mqttthing",
		"type": "switch",
		"name": "Avvio irrigazione",
		"url": "<indirizzo del proprio broker mqtt>",
		"username": "<username presso il proprio broker mqtt>",
		"password": "<password presso il proprio broker mqtt>",
		"topics": {
			"getOn": "stat/Sonoff/RESULT1",
			"setOn": "cmnd/Sonoff/POWER1"
		},
		"onValue": "ON",
		"offValue": "OFF"
	}, {
		"accessory": "mqttthing",
		"type": "switch",
		"name": "Stop irrigazione",
		"url": "<indirizzo del proprio broker mqtt>",
		"username": "<username presso il proprio broker mqtt>",
		"password": "<password presso il proprio broker mqtt>",
		"topics": {
			"getOn": "stat/Sonoff/RESULT2",
			"setOn": "cmnd/Sonoff/POWER2"
		},
		"onValue": "ON",
		"offValue": "OFF"
	}]

la quale genera la definizione di due accessori switch come atteso:

Homebridge - Due switch

i quali potranno ora essere attivati per comandare l’elettrovalvola sia in modo manuale sia tramite automazioni HomeKit.

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 accessorio di tipo “irrigatore” presso Apple HomeKit.

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 accessorio “irrigatore” tramite il plugin “homebridge-mqttthing“. 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 Homebridge:

	"accessories": [{
		"accessory": "mqttthing",
		"type": "valve",
		"valveType": "sprinkler",
		"name": "Irrigazione",
		"url": "<indirizzo del proprio broker mqtt>",
		"username": "<username presso il proprio broker mqtt>",
		"password": "<password presso il proprio broker mqtt>",
		"topics": {
			"setActive": "cmnd/sprinkler",
			"getActive": "stat/sprinkler",
			"getInUse": "inuse/sprinkler"
		},
		"onValue": "ON",
		"offValue": "OFF",
		"durationTimer": "false"
	}]

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 accessorio “irrigatore” come atteso:

Homebridge - irrigatore

Ovviamente ogni qual volta verrà utilizzato tramite l’app “Casa”, tale accessorio scaturirà, tramite Node-RED, l’innesco dell’attuatore in base a ciò che è stato comandato di fare, come da attese.

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:

	"accessories": [{
		"accessory": "mqttthing",
		"type": "valve",
		"valveType": "sprinkler",
		"name": "Irrigazione",
		"url": "<indirizzo del proprio broker mqtt>",
		"username": "<username presso il proprio broker mqtt>",
		"password": "<password presso il proprio broker mqtt>",
		"topics": {
			"setActive": "cmnd/Sonoff/POWER",
			"getActive": "stat/Sonoff/POWER",
			"getInUse": "stat/Sonoff/POWER"
		},
		"onValue": "ON",
		"offValue": "OFF",
		"durationTimer": "false"
	}]

Il tipo di accessorio generato sarà, come da aspettative, di tipo “Irrigatore”.

Uso

A questo punto non bisogna far altro che controllare l’accessorio così domotizzato in modo manuale, agendo direttamente sull’app “Casa” oppure, sempre tramite quest’app, configurando un’automazione che provveda all’ingaggio automatico dell’irrigazione delle vostre piante.


Logo Apple HomeKitATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica ad Apple Homekit, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.


Please comment below