SCOPI DEL PROGETTO:
CONCETTI AFFRONTATI:
|
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSTIVI FISICI UTILIZZATI: |
PROGETTO MAGGIORMENTE INDICATO PER: |
|
NOTE E DISCLAIMER
|
|
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 dei nostri esempi, 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. 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
- 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
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:
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 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 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:
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.
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. Se ti sei perso, a tua disposizione c'è la mappa. |