Vai al contenuto
Home » Domotica Fai da te » IFTTT » Webhooks IFTTT: tutorial completo

Webhooks IFTTT: tutorial completo

    Webhooks IFTTT: tutorial completo

    Se volete integrare un dispositivo o una piattaforma non supportata in modo nativo in IFTTT una soluzione possibile è utilizzare i Webooks: scopri come fare nel mio tutorial completo di esempi con Alexa, Shelly e Sonoff eWeLink.

    Come integrare applicazioni e dispositivi intelligenti

    Il grande successo della domotica fai da te nasce dalla facilità di integrare tra di loro applicazioni e dispositivi intelligenti di produttori del tutto eterogenei tra di loro.

    Vi è sempre maggiore disponibilità di apparecchi per la casa che nascono intelligenti (ad esempio elettrodomestici Bosch Home Connect, sensori e termostati Netatmo, Apple HomeKit, la domotica BTicino per fare qualche nome) ma ci sono innumerevoli soluzioni per renderli smart se non lo sono (come Sonoff, Shelly, Tuya Smart Life, SwitchBot per citarne solo qualcuna).

    Ci sono infiniti esempi pratici di eventi ed azioni di dispositivi ed applicazioni fortemente eterogenei tra di loro che necessitano di cooperare per raggiungere degli obiettivi specifici:

    Evento

    • superamento soglia di temperatura
    • completamento ciclo di lavaggio lavastoviglie
    • discesa sotto limite di energia elettrica immessa
    • inizio pioggia
    • pressione di un pulsante
    • smartphone che esce da un'area predefinita
    • rilevazione di un movimento

    Azione

    • accensione aria condizionata
    • accensione lavatrice
    • spegnimento produzione acqua calda sanitaria
    • disattivazione programmazione irrigazione
    • apertura cancello elettrico
    • attivazione antifurto casa
    • scrittura di un record su un foglio di calcolo

    Ciascun produttore, a modo suo, ha risolto il problema dell'integrazione automatica tra dispositivi compatibili; questo viene fatto tipicamente mediante la configurazione di scene ed automazioni tramite l'app della specifica piattaforma di domotica (ad esempio eWeLink, Shelly Cloud, Tuya Smart, Smart Life, SwtichBot, BTicino Home+Control).

    Ma come fare nel caso in cui volessimo far cooperare tra di loro dispositivi di piattaforme di domotica differenti?

    Sono disponibili innumerevoli applicazioni adatte allo scopo come queste (elenco non esaustivo):

    • IFTTT (leggi la mia guida a IFTTT)
    • Alexa (approfondisci col mio articolo sulle routine Alexa)
    • Google Home (sempre mediante l'uso di routine personalizzate)
    • Apple HomeKit
    • SmartThings
    • Home Assistant
    • MQTT

    Ci sono però innumerevoli punti di attenzione:

    • è necessario che tutti i dispositivi siano supportati dalla specifica piattaforma (Shelly Cloud non è compatibile con IFTTT o SmartThings)
    • potrebbe essere necessario sottoscrivere un servizio a pagamento per un uso estensivo (ad esempio IFTTT ed eWeLink)
    • in alcuni casi occorre essere smanettoni con cintura nera (ad esempio Home Assistant oppure MQTT)

    In alcuni casi di integrazione, apparentemente irrisolvibili, ci vengono incontro i Webhooks che approfondiremo nell'utilizzo con IFTTT che è quello più alla portata di tutti.

    Cosa sono i Webhooks e a cosa servono

    Un Webhook non è altro che una maniera di integrare "a basso livello" dei dispositivi o applicazioni eterogenei sfruttando la loro connessione in rete.

    Se un dispositivo è connesso in rete significa che quasi sicuramente che sarà in grado di inviare o ricevere chiamate mediante il protocollo HTTP (o meglio ancora HTTPS per migliorare il livello di sicurezza): nella maggior parte dei linguaggi di programmazione è possibile farlo mediante una semplice singola riga di codice.

    Un Webhook non è altro che una particolare URL su un determinato indirizzo di rete e porta che, quando invocata, magari mediante dei parametri, esegue un'azione su un sistema restituendo comunque un risultato.

    Quello che segue è un esempio di invocazione ad un Webhook pubblico, messo a disposizione dalla piattaforma Shelly Cloud Control API, per accendere remotamente il canale di un interruttore smart:

    POST /device/relay/control/ HTTP/1.1
    Host: shelly-14-eu.shelly.cloud
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 130
    channel=0&turn=on&id=Ba86f0&auth_key=******

    Un dispositivo intelligente può utilizzare i Webhooks nei modi seguenti:

    • esporre Webhooks per consentire ad altri di svolgere delle azioni sul dispositivo
    • consumare Webhooks esterni per pubblicare un proprio evento oppure eseguire delle azioni su un altro dispositivo

    A seconda del livello di accessibilità, i Webhooks possono essere con:

    • accesso pubblico, ovvero su server in cloud o comunque accessibili da chiunque (come quelle delle piattaforme di domotica)
    • accesso locale possibile solamente a chi è collegato alla medesima rete (come dispositivi con API integrate oppure Home Assistant)

    Ho provato a sintetizzare nello schema seguente i possibili flussi di esposizione / consumo di Webhooks sia in locale che tramite cloud:

    Webhooks - flussi di comunicazione
    Webhooks - flussi di comunicazione

    Ciò che sarà possibile nella pratica dipende dalle opzioni messe a disposizione dalla specifica piattaforma, sia a livello di firmware del dispositivo (per la gestione locale) che di servizi cloud (accesso pubblico).

    Evidenzierei ancora che per abilitare l'accesso a dei Webhooks locali dal di fuori della rete occorrerà effettuare delle aperture sul firewall / router.

    Ma quindi quali sono gli approcci possibili per fare in modo che, all'accadere di un evento su un primo sistema A, venga eseguita un'azione su un secondo sistema B? Abbiamo sostanzialmente due opzioni a disposizione:

    • Callback
    • Publish Subscribe

    Callback

    Quando sul sistema A occorre l'evento previsto, il sistema stesso invoca direttamente un Webhook del sistema B per effettuare l'azione prevista.

    E' un approccio efficiente ma presenta un elevato grado di accoppiamento tra i sistemi coinvolti (soprattutto quando sono più di due).

    Publish Subscribe

    C'è un terzo sistema nel mezzo che fa da broker delle informazioni e configurato in modo tale da conoscere la corrispondenza tra evento del sistema A ed azione sul sistema B.

    Il funzionamento è il seguente:

    • il sistema A pubblica il proprio evento sul broker (invocando una API o Webhook)
    • il broker, quando ricevere l'evento dal sistema A, invoca una API o Webook del sistema B per eseguire l'azione prevista

    Per quanto apparentemente più complesso è la soluzione più flessibile, robusta e scalabile perché risolvere anche il problema dell'accoppiamento diretto tra i sistemi.

    L'approccio Publish Subscribe è utilizzato su qualsiasi piattaforma di domotica e riesce comunque ad assicurare prestazioni quasi in tempo reale.

    Server Webhooks online free

    Prima di entrare nello specifico dell'utilizzo dei Webhooks con IFTTT, vorrei ancora toccare i server Webhooks free disponibili online che potrebbero essere utili in fase di test preliminare.

    In particolare segnalo i seguenti Webhooks server free:

    Per l'invocazione dei servizi consiglio anche il potente servizio online ReqBin.

    Utilizzare i Webhooks con IFTTT

    Webhooks è un servizio di IFTTT che permette di effettuare o ricevere una richiesta HTTP / HTTPS: in questo modo è possibile interagire con applicazioni e servizi che espongono o utilizzano API pubbliche accessibili da internet ma che non sono ancora supportati in modo nativo da IFTTT.

    Rifacendomi al diagramma precedente, ho provato a rappresentarlo in questo schema nel caso di dispositivo con accesso locale:

    Utilizzare i Webhooks con IFTTT
    Utilizzare i Webhooks con IFTTT

    I flussi sono analoghi nel caso di accesso tramite piattaforma cloud del dispositivo.

    Per poter utilizzare questo servizio, la prima operazione da fare è collegare il servizio Webhooks col nostro profilo IFTTT. A questo punto sarà possibile utilizzare Webhooks all'interno di una applet IFTTT come:

    • evento (trigger) IFTTT scatenato mediante una richiesta HTTP / HTTPS, anche con parametri, che proviene dall'esterno
    • azione (action) IFTTT che effettua una richiesta HTTP / HTTPS verso l'esterno

    Abbiamo a disposizione dunque la possibilità di gestire l'interazione, in entrambe le direzione, con API pubbliche esterne al contesto IFTTT:

    • Receive a web request: un'applicazione o servizio esterno invoca una API pubblica (resa disponibile dal servizio Webhooks) per scatenare un evento IFTTT
    • Receive a web request with a JSON payload: la richiesta verso Webhooks contiene anche un parametro che potrà essere utilizzato nell'elaborazione di IFTTT
    • Make a web request: un'azione IFTTT, tramite il servizio Webhooks, invoca una API pubblica esterna

    Scopri anche come ho utilizzato Webhooks con la centralina irrigazione WiFi OpenSprinkler.

    Webhooks IFTTT: evento (trigger) scatenato mediante richiesta web

    Nel caso di un evento IFTTT (trigger) generato dal servizio Webhooks in seguito ad una richiesta HTTP / HTTPS arrivata dall'esterno dobbiamo definire un'etichetta per identificarlo in modo univoco all'interno della richiesta stessa (evento_da_shelly in questo esempio):

    Webhooks IFTTT

    La documentazione relativa al formato delle chiamate HTTP / HTTPS da fare per scatenare l'evento (trigger) lo trovate accedendo alla configurazione del servizio Webhooks sull'app IFTTT:

    Come potete vedere il formato delle richieste web esterne, in POST o GET, da fare per scatenare su IFTTT un evento (trigger) con etichetta {event_name} sul servizio Webhooks con chiave personale {personal_key} è il seguente:

    https://maker.ifttt.com/trigger/{event_name}/with/key/{personal_key}

    Anche se con sicurezza ridotta è anche supportato anche il protocollo HTTP.

    Webhooks in IFTTT: azione (action) che effettua una richiesta web

    Nel caso di un'azione (action) IFTTT, mediante il servizio Webhooks, invochi una API pubblica esterna, possiamo definire tutti i parametri della richiesta web che verrà effettuata:

    Webhooks in IFTTT: azione (action)
    Webhooks in IFTTT: azione (action)

    Questa configurazione dipende ovviamente dal dispositivo o applicazione esterna da invocare.

    Esempi di Webhooks IFTTT

    In questo paragrafo ho voluto riportare l'integrazione tramite Webhooks di popolari piattaforme di domotica fai da te, alcune delle quali che non supportano in modo nativo IFTTT.

    Alexa Webhooks

    La mia necessità è quella di comandare con la voce la mia vecchia centralina di irrigazione WiFi OpenSprinkler che non è supportata né da Alexa né da IFTTT.

    Amazon Alexa, e quindi tutta la famiglia di altoparlanti intelligenti Amazon Echo, è però supportata da IFTTT col servizio omonimo Amazon Alexa:

    Alexa IFTTT

    Il servizio IFTTT Alexa può però essere utilizzato solo come trigger (evento) e non come action (azione):

    Il mio irrigatore intelligente è in grado di ricevere comandi mediante chiamate locali con protocollo HTTP GET: questo vuol dire che dovrò anche aprire il firewall del router WiFi per consentire ai server in cloud di IFTTT / Webhooks di raggiungere la mia centralina.

    Vediamo quindi come primo esempio l'applet IFTTT Alexa di accensione dell'impianto irrigazione smart OpenSprinkler che non fa altro che interpretare il comando vocale col servizio Amazon Alexa ed inviare il il comando via HTTP grazie al servizio nativo Webhooks:

    Siamo riusciti a poter attivare l'irrigatore smart OpenSprinkler semplicemente dicendo "Alexa aziona irrigazione" !

    Se volete approfondire i dettagli del sistema potete leggere l'articolo Impianto irrigazione smart OpenSprinkler.

    Shelly IFTTT Webhooks

    La piattaforma di domotica Shelly è probabilmente quella che offra la maggior gamma di opzioni per l'utilizzo di Webhooks, in particolare:

    • Azioni I/O o Webhook, configurabili mediante Shelly Cloud App, per invocare URL remote
    • Shelly Device API (accesso locale) e Shelly Cloud Control API (accesso pubblico) per esporre un Webhook richiamabile dall'esterno

    Shelly Cloud App - Azioni I/O o Web hook

    Mediante Shelly Cloud App è possibile configurare l'invocazione di una URL esterna per ciascun tipo di evento generato sul dispositivo; l'interfaccia e le opzioni sono leggermente diverse tra dispositivi di prima generazione (come lo Shelly 1) e di seconda generazione (come lo Shelly Plus 1):

    Shelly Cloud App - Azioni I/O (1a gen)

    Shelly Cloud App - Azioni I/O (1a generazione)

    Shelly Cloud App Web Hooks (2a gen)

    Shelly Cloud App - Web hook (2a generazione)

    Unendo un'Azione I/O o Web hook su Shelly Cloud App ad un evento (trigger) Webhooks su IFTTT, avremo la possibilità di comandare mediante un dispositivo Shelly un'applicazione, servizio o dispositivo su IFTTT. Vedremo successivamente qualche esempio.

    Shelly Cloud Control API

    Per poter abilitare l'integrazione con IFTTT tramite Webhooks utilizzeremo le Shelly Cloud Control API per l'accesso via internet (API pubbliche); sono necessari:

    • chiave di autenticazione personale (auth_key) associata al vostro profilo Shelly
    • indirizzo del server in cloud dov'è ospitato il vostro profilo (nel mio caso https://shelly-14-eu.shelly.cloud)

    Potete recuperare queste le informazioni necessarie , potete accedere a:

    • Impostazioni utente - Chiave Autorizzazione Cloud
    • Impostazioni - Informazioni Dispositivo

    La chiamata POST per attivare o disattivare l'uscita di un dispositivo Shelly ha il formato seguente:

    https://{server location link}/device/relay/control/

    dove i parametri obbligatori da inserire sono

    • channel = numero del canale del dispositivo (0 corrisponde al primo)
    • turn = on oppure off (accensione o spegnimento)
    • id = identificativo del dispositivo a cui inviare il comando
    • auth_key = chiave personale associata al nostro profilo Shelly

    Questo è un esempio di chiamata di test per accendere il primo canale di uno Shelly 2.5 effettuata con un tool online per invocazione di API (https://reqbin.com/):

    POST /device/relay/control/ HTTP/1.1
    Host: shelly-14-eu.shelly.cloud
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 130
    channel=0&turn=on&id=Ba86f0&auth_key=******

    Per altri casi ed esempi vi rimando a questo documento o alla pagina Controlling device output channels.

    Per approfondire ulteriormente leggi la mia guida a Shelly Cloud Control API: usare IFTTT con Webhooks.

    Sonoff eWeLink Webhooks

    Sonoff e la sua piattaforma eWeLink hanno un supporto pieno e completo di IFTTT, per quanto dietro il pagamento di un piccolissimo canone di servizio annuo.

    Questo vuol dire che il trio Sonoff eWeLink, IFTTT e Webhooks funziona senza problemi: potreste così integrare facilmente il mondo Shelly.

    Recentemente anche la piattaforma eWeLink ha introdotto il supporto ai Webhooks consentendo pubblicare una URL da richiamare remotamente per eseguire un'azione su un dispositivo compatibile eWeLink come i Sonoff.

    Questo è possibile esclusivamente tramite la versione Web di eWeLink andando a configurare una scena:

    Sonoff eWeLink Webhooks
    Sonoff eWeLink Webhooks

    L'URL da invocare per richiamare il Webhook eWeLink per attivazione un dispositivo Sonoff ha un formato simile al seguente:

    https://eu-apia.coolkit.cc/v2/smartscene2/webhooks/execute?id=***

    Grazie a questi esempi sarete in grado, ad esempio, di attivare direttamente un interruttore Sonoff in base ad un evento su un dispositivo Shelly senza passare da IFTTT.

    Per approfondire leggi anche le mie guide a Sonoff eWeLink IFTTT ed eWeLink Web.

    Leggi tutti i miei articoli su IFTTT:

    Ultimo aggiornamento Amazon Affiliate 2022-07-03 at 23:57

    Lascia un commento

    Il tuo indirizzo email non sarà pubblicato.

    Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

    La mia Casa Elettrica

    GRATIS
    VISUALIZZA