Integrazione dei gateway Somfy Tahoma e Connexoon in HomeKit
Somfy è un’azienda francese che dalla fine degli anni ’60 produce motori ed attuatori per serrande, tende e persiane. I prodotti sono noti per la comprovata solidità ed affidabilità. La mia tenda da sole motorizzata Somfy è li fuori da chissà quanti anni alle intemperie, forse 20 o anche più, lavora tutti i giorni e non ha mai perso un colpo.
L’azienda, forte della sua esperienza è entrata nell’ambito della domotica, evoluzione naturale del settore, mantenendo i tratti che caratterizzano le sue realizzazioni. Da qualche anno ha sviluppato in collaborazione con Velux, altra azienda d’oltralpe appartenente al gruppo Legrand /Bticino/Netatmo un protocollo radio sui 900 mhz, l’IO Homecontrol.
Questo sistema non solo è affidabile, solido, privo di latenza e resistente alle interferenze ma non necessita di programmazione, basta l’abbinamento tra comandi ed attuatori, fornisce il feedback sulla posizione del motore e gestisce eventuali ostruzioni. Offre innumerevoli vantaggi pur mantenendo l’immediatezza e la solidità dei comandi filari tradizionali. Coi dispositivi IO Homecontrol non servono connessioni fisiche tra dispositivi, il che si traduce in un risparmio in cablaggi e opere di muratura, e funziona anche in modo “ignorante”, cioè senza bisogno di gateway e programmazioni che possono comunque essere aggiunti in un secondo momento.
Infatti per un paio d’anni dall’installazione ho gestito i motori Altus IO delle mie persiane solo tramite dei radiocomandi Smoove senza alcun problema. I fastidi sono incominciati quando ho deciso di inserire tutto nel mio sistema domotico.
Somfy aveva promesso, nel lontano 2017, che i suoi gateway sarebbero stati aggiornati con l’aggiunta della compatibilità ad HomeKit, promessa prima procrastinata e poi mantenuta solo in parte. Non si tratta di rumors ma di annunci ufficiali rilasciati tramite i suoi canali commerciali, molti utenti inoltre chiedevano informazioni direttamente ai tecnici sul forum ufficiale, domandando se i gateway avrebbero ricevuto un aggiornamento software o se sarebbe stato necessario ricomprarli. Alle vaghe rassicurazioni spacciate tramite risposte preconfezionate in cui si diceva che che Tahoma e Connexoon avrebbero ricevuto automaticamente l’upgrade a tempo debito, non solo non c’è stato seguito ma si è aggiunta la delusione quando il supporto non è stato integrato nemmeno nei nuovi prodotti. Quindi neanche lo scenario peggiore, il riacquisto, sarebbe possibile.
Evidentemente per miopia manageriale Somfy non è interessata a questo mercato, ora lo sappiamo, ma chi ha già comprato tutto con la promessa di poterlo usare nel proprio sistema domotico? Beh, se si ha una vaga idea di come funziona HomeKit la faccenda dell’aggiornamento puzzava da un po’ quindi niente illusioni, magari ricomprare il gateway sarebbe stata una rottura di scatole ma vedersi scaricati in questo modo dopo tante promesse ha fatto girare i chitarrini a parecchia gente. Probabilmente al di la delle Alpi funziona così, viste anche le vicissitudini con Netatmo che una ne pensa e 100 ne fa (a cazzo).
Bene, quando avremo finito di lamentarci, c’è del lavoro da fare…
Soluzione facile
Non so bene da quanto tempo sia disponibile ma io l’ho scoperto solo di recente: il gateway Velux Active gestisce parecchi dispositivi IO Homecontrol di Somfy ed è compatibile HomeKit. Certo, a chi ha già speso 300€ per un Tahoma non piacerà molto, anche perchè Velux gestisce principalmente motori di persiane e tende, non tutti i dispositivi come antifurto, termostati, sensori vari e componenti che si appoggiano al vecchio protocollo RTS. Però se non avete ancora un gateway e non dovete gestire altri dispositivi al di fuori di quelli citati, la soluzione è semplice ed indolore. Qui trovate il tutorial.
Soluzione nerd
Se i motori di Somfy sono una bomba, silenziosi e dai bassi consumi, non si può dire granchè dei loro HUB… Tahoma, al di la del design gradevole, è compatibile con Google, Alexa ed IFTTT ma non con HomeKit. Ha una app che gira su iOS (male) ma non è integrabile al sistema domotico di Apple. Alcuni insider dicono che non abbiano raggiunto lo standard qualitativo imposto dalla mela. Ed era chiaro da subito che la promessa di compatibilità non sarebbe stata possibile con un semplice aggiornamento, HomeKit richiede una chiave crittografata hardware (che deve essere installata in fase di produzione) o di una chiave univoca rilasciata tramite Qr code. Difficilmente sarebbero passati casa per casa a distribuire etichette coi Qr (anche se la soluzione ci sarebbe tramite un generatore lato server che crea i codici partendo dal numero di serie. Probabilmente l’hanno mandata in vacca prima di pensarci seriamente).
La seconda tipologia di gateway IO Homecontrol è il Connexoon, limitato via software a gestire solo determinati dispositivi (il Windows solo persiane, il Terrace solo tende) tramite un’app che definire imbarazzante è poco, per lo meno su iOS. Funziona solo con Google e IFTTT. Però si trova a buon mercato. Dovendo comandare persiane e tende e utilizzando il gateway della casa madre solo come ponte radio, il Connexoon Window edition è stata la mia scelta definitiva. Per la vecchia tenda già motorizzata ho optato per una ricevente IO Izymo che trasforma in IO un normale motore a gabbia metallica. A Connexoon ovviamente devo far credere essere una persiana ma poi si corregge in un passaggio successivo.
In questo delirio però Somfy ne ha azzeccata una: le API pubbliche per il cloud. E non è una cosa da poco, sembra quasi un’ammissione “noi non siamo capaci, fate voi”. Potenzialmente possiamo crearci una app su misura come vogliamo noi. Un po’ complicato da fare per l’uomo della strada e sembra che nessuno si sia ancora preso la briga di provare, in compenso una buonanima le ha usate per sviluppare un plugin per Home Bridge che sarà il sistema che andremo ad usare.
Come per il tutorial su Netatmo, non userò Home Bridge standard ma Hoobs, una sua incarnazione con interfaccia web, distribuita in una ISO che basta clonare in una SD.
Partiamo con la spiegazione a server avviato, come arrivare è semplicissimo e sul sito di Hoobs trovere tutte le istruzioni.
Anche per quanto riguarda Somfy diamo per scontato che tutti i motori e le riceventi siano già state abbinate al loro gateway e ai loro comandi radio. Quello che interessa in questo tutorial è l’integrazione con HomeKit.
Per prima cosa installiamo in HOOBS il plugin per Somfy, ce ne sono diversi in circolazione ma sicuramente il più completo e costantemente aggiornato è Homebridge-Tahoma di Duboc. Lo sviluppatore risponde anche alle domande su GitHub in caso di problemi.
Una volta installato ci troviamo come di consueto davanti ad un file di configurazione testuale che dovremo editare. Questo è il mio, al quale ho aggiunto alcuni parametri
{
"name": "Awning",
"refreshPeriod": "60",
"exposeScenarios": "true",
"user": "XXXXXX",
"password": "XXXXXX",
"platform": "Tahoma",
"service": "Connexoon"
}
“Name” è il nome del servizio (“Awning” l’ho trovato già compilato ma credo si possa mettere qualsiasi cosa)
“User” e “password” sono lo username e la password del vostro account Somfy, quello che avete creato quando avete configurato il gateway e che vi fa accedere al cloud.
“Platform” qui va indicato Tahoma.
“Service” va indicato se state usando Connexoon o Tahoma come ponte radio
I due parametri extra sono “expose scenarios” che permette di esporre ad HomeKit gli scenari del gateway sotto forma di switch. Nel caso del Connexoon dovrebbero essere 4 ma in Casa ho trovato solo “presente” e “assente”, probabilmente perchè “Vacanza” e “Non disturbare” non li ho ancora configurati. Non che siano fondamentali, potrebbero tornare utili nel caso voleste utilizzarli con uno shortcut di Siri o con un trigger per aprire o chiudere tutto con una sola azione. Se collegati al geofencing o con l’allarme, si può abbinare a questi scenari direttamente del Connexoon per sfruttare la simulazione di presenza.
“refreshPeriod” è utile se si utilizzano, oltre ai comando software, anche dei pulsanti fisici. Trattandosi si un sistema cloud polling, muovendo manualmente i motori lo stato non si aggiorna immediatamente in HomeKit, questo è l’intervallo di tempo espresso in secondi in base al quale Hoobs chiede al cloud di Somfy di essere aggiornato sullo stato dei motori. Di default sono 1800″, praticamente mezz’ora, troppi secondo me. 60 è il giusto compromesso senza fondere il Raspberry.
Ci sono molti altri parametri extra specifici per doversi tipi di dispositivi, come allarmi, saracinesche e tapparelle con alette orientabili, trovate tutto nella documentazione del plugin. Interessante la funzione “forcetype” in cui si può forzare il tipo di dispositivo, se ad esempio utilizziamo una presa comandata per controllare un ventilatore, potremmo esporlo ad Hoobs e di conseguenza ad HomeKit come ventilatore.
A questo punto, configurato e riavviato, in Hoobs saranno comparsi tutti i dispositivi connessi al gateway Somfy, possiamo organizzarli in stanze ma non è questo lo scopo (le stanze di Hoobs non vengono passate ad HomeKit, per cui faremmo il lavoro due volte).
Passiamo direttamente a Casa e troveremo tutti i dispositivi nella stanza di default, adesso si dobbiamo assegnargli un posto. Ora è fatto, tutto è pronto per essere intgrato alle automazioni di HomeKit. A differenza dell’app Connexoon, da Casa è tutto più veloce nonostante ci sia un doppio passaggio, gli slider sono più precisi e viene espressa tanto di percentuale.
Ma…
Il cloud polling può essere un problema…
Il sistema funziona col cloud polling, ovvero, voi premete il pulsante fisico per alzare la tapparella, il motore si muove e comunica il suo stato al gateway. Potete verificarlo con l’app Connexoon o Tahoma, appena la tapparella si ferma, lo stato viene aggiornato. A livello di cloud però la situazione è diversa, l’aggiornamento per i dispositivi di terze parti non è di tipo “push” (cioè inviato) ma “poll” (richiesto) e il plugin si interfaccia a Somfy solo via cloud API, non in LAN. Se da una parte abbiamo la possibilità di delocalizzare il server dove vogliamo, dall’altra lo scambio di informazioni non sarà immediato. Se i comandi sono passati tramite il plugin allora il sistema sa a priori lo stato prima che il cloud lo comunichi. Ma se il comando è partito da un pulsante fisico il plugin lo verrà a sapere solo quando lo richiederà al cloud. A questo serve il parametro “refreshperiod”. Normalmente lo setto a 60 secondi per non stressare eccessivamente il raspberry, in alcuni casi però non basta. Ad esempio, se vogliamo associare via HomeKit un sensore di vibrazioni ad una tenda da sole per farla retrarre col vento, questo si attiverà ogni qual volta la tenda si muove. Va impostato un condizionale per dirgli di considerare solo i movimenti acquisiti con la tenda in stato “bloccata”. Ora, se spostiamo noi la tenda con un comando manuale (non da HomeKit) il tempo in cui il sistema si rende conto che la tenda non è più bloccata e deve ignorare la vibrazione è troppo lungo. Quindi esegue il comando e la retrae.
È un aspetto di cui tener conto quando si programma. Tuttavia sto cercando una soluzione elegante alla cosa…
L’incoerenza delle tende da sole…
Ho integrato una vecchia tenda da sole motorizzata (di cui sopra) tramite una ricevente Izymo. Connexoon crede sia una persiana perchè in quanto “Windows Edition” vede tutto come roller shutter. Ora, sembra un problema da poco ma non lo è perchè quando ci riferiamo ad una tenda da sole, lo facciamo all’inverso rispetto ad una persiana. Se diciamo “chiudi” la persiana si abbassa chiudendo il foro. La tenda da sole chiusa significa “retratta” ma il sistema ragione in termini di foro da chiudere, per cui la abbassa, viceversa se gli si ordina di aprirla.
Ne ho parlato con lo sviluppatore del plugin che mi ha spiegato che anche se con un forcetype la inseriamo in Hoobs come tenda da sole, è una limitazione di HomeKit gestirla in questo modo. Infatti si può spiegare direttamente ad HomeKit che tipo di accessorio stiamo utilizzando, il risultato non cambia, anche forzando tipo di dispositivo direttamente da Casa, l’incoerenza resta. Lo slider indica la percentuale giusta ma la tenda viene definita “aperta” quando è chiusa e “chiusa” quando è aperta. Se si è fuori casa e si vuole controllare i propri dispositivi, a colpo d’occhio la tenda viene vista al contrario.
Per questo a Siri bisognerebbe dare il comando invertito ma si può risolvere creando uno shortcut in cui al comando “apri la tenda” la si setta in chiusura.
La procedura di seguito è valida per tutti i motori IO Homecontrol ma nel caso specifico, si applica alla ricevente Izymo che uso per la tenda da sole
Modifica comando per tende da sole
Tutto l’hardware Somfy utilizzato per questo tutorial è stato acquistato dal rivenditore ufficiale L’Alternativa srl