Guida Integrazione IFTTT
Cos’è IFTTT è l’acronimo di “If This Then That” letteralmente “Se Questo Allora Quello”, significa ad ogni evento far corrispondere un’azione. Nell’ambiente di Home Assistant questo ci è utile per interagire con i dispositivi che non si integrano direttamente con esso, purtroppo potremmo si comandarli ma non avremmo un feedback di ritorno. Se ad esempio accendiamo una lampada non sapremmo se era già accesa o meno. Un’altra funzione interessante, tra le molteplici applicazioni che offre il servizio di IFTTT, è personalizzare i comandi vocali di Google Assistant per creare delle azioni. Essendo però il servizio di IFTTT su di un server esterno ci sarà una latenza tra il comando e l’esecuzione di 3 o 4 secondi.
I requisiti minimi per usare questo servizio è di avere un dominio https raggiungibile dall’esterno della vostra rete domestica. Se non lo avete ancora seguite la guida: Configurazione DuckDns
IFTTT
Iniziamo andando nel sito https://ifttt.com/ dove potremmo registrarci in diversi modi tramite l’account di Google, di Facebook o la registrazione tramite e-mail.
WEBHOOKS
Andiamo ora ad abilitare il servizio webhooks e recuperiamo la Key dall’applet che ci servirà poi per configurare Home Assistant. Andiamo a questo indirizzo https://ifttt.com/services/maker_webhooks/settings ed eseguiamo questi piccoli passaggi:
Ora ci spostiamo sul file configuration.yaml di Home Assistant e aggiungiamo queste due righe con la key appena vista sopra:
1 2 |
ifttt: key: 1hLCJm14h6o-Rsz5zJrkQ |
Possiamo a questo punto riavviare Home Assistant.
ESEMPIO 1: Comandi vocali personalizzati
Con questo esempio faremmo eseguire uno script in Home Assistant tramite comando vocale sul Google Home Mini che farà partire il robot Vacuum nella pulizia di una determinata zona.
1 2 3 4 5 6 7 8 9 |
script: robot_pulizia_sala: alias: "Pulizia Sala" sequence: - service: vacuum.send_command data: command: app_zoned_clean entity_id: vacuum.vacuum params: [[30789,32963,32889,36463,1]] |
Configuriamo ora IFTTT
Creiamo una New Applet in IFTTT
Poi selezioniamo +this
Digitiamo Google Assistant e premiamo sull’icona.
Dovremmo, per la prima volta, abilitare il servizio ed inserire le credenziali del vostro account Google
Selezioniamo la prima a Say a simple phase
Compiliamo le varie parti, le prime 3 saranno le frasi che Google Home interpreterà per azionare questo comando, invece la 4 voce sarà la risposta che lui darà nella lingua impostata.
Poi premiamo su Create trigger.
Premiamo su +that
Digitiamo Webhooks e selezioniamo l’icona
Selezioniamo Make a web request
- Su URL dovrete scrivere l’indirizzo del vs. dominio nel seguente modo: http://ilmiodominio.duckdns.org:8123/api/service/script/turn_on?api_password=ApiPassword
la potra :8123 dovrete o meno metterla in base a come accedete ad HA, ApiPassword è la api_password che avrete configurato sotto la dichiarazione http: nel file configuration.yaml.
script/turn_on sono i servizi disponibili in HA li trovate elencati nell’icona , sono divisi da un punto in questo modo script.turn_on, turn_on invece dovrà essere scritto come nell’esempio. - Selezioniamo su Method: POST
- Selezioniamo su Conect Type: application/json
- Nell’ultima riga Body andrà specificato quale entità verrà azionata {“entity_id”: ” script.robot_pulizia_sala”} in questo caso lo script.
Infine diamo un nome all’applet che abbiamo appena creato
Per testare il funzionamento ci basterà dire, rivolgendoci al Google Home: “Ok google aspira la sala” lui risponderà: “Ok procedo con la pulizia” e lo script verrà lanciato.
ESEMPIO 2: Comandare un dispositivo non integrabile tramite HA
Nel secondo esempio vi mostrerò come comandare un Sonoff con Firmware originale in due modi diversi usando la medesima configurazione in IFTTT, tramite uno switch o un boolean in Home Assistant.
Iniziamo creando due azioni in IFTTT applique_on e applique_off le quali andranno ad accendere o spegnere il sonoff tramite l’app eWeLink. I nomi dell’azione Webhook applique_on e applique_off, che configureremo più avanti, dovranno essere gli stessi che useremmo poi per configurare Home Assistant.
Creiamo una New Applet in IFTTT
Poi selezioniamo +this
Digitiamo Webhooks e selezioniamo l’icona
Selezionare Make a web request
Scriviamo applique_on che dovrà essere lo stesso nome che è stato usato nella dichiarazione dello script.applique_on e premiamo Create trigger
Premiamo su +that
Digitiamo ewelink e selezioniamo l’icona.
Abilitiamo il servizio ed inseriamo le credenziali di eWeLink dove sarà già associato il sonoff
selezioniamo Turn 1 Channel Plug on or off
ora selezioniamo Luce Applique che sarà la nostra lampada controllata dal sonoff e su Turn on or Off mettiamo on
Poi premiamo su Create action
Infine diamo un nome univoco all’applet che abbiamo appena creato.
Ora non ci resta che create un altro Applet scrivendo come trigger applique_off su webhook e come azione su eWeLink Turn off
Così ora potremmo comandare il sonoff con firmware originale tramite Home Hassistant. Vediamo ora i due diversi modi.
Tramite SWITCH:
Creiamo prima una variabile input_boolean che ci servirà per ricordare lo stato del dispositivo:
1 2 3 |
input_boolean: applique_on_off: name: Applique Ifttt |
Poi creiamo due script che andrà ad accendere o spegnere il nostro dispositivo. Su event: il nome che gli diamo dovrà essere lo stesso che useremo più avanti nella configurazione di IFTTT.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
script: applique_on: sequence: - service: input_boolean.turn_on entity_id: input_boolean.applique_on_off - service: ifttt.trigger data: event: applique_on applique_off: sequence: - service: input_boolean.turn_off entity_id: input_boolean.applique_on_off - service: ifttt.trigger data: event: applique_off |
Ora per finire creiamo uno switch template che utilizzerà gli script per fare l’azione tramite IFTTT di accensione e di spegnimento mentre imput_boolean (la nostra memoria) ci ricorderà lo stato del dispositivo e di conseguenza dello switch, è stato aggiunto anche icon_template in questo modo invece dell’icona a forma di lampo che ha lo switch è stata sostituita con l’icona della lampadina accesa o spenta. Le icone le potete trovare sul link: https://materialdesignicons.com/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
switch: - platform: template switches: applique: value_template: "{{ is_state('input_boolean.applique_on_off', 'on') }}" turn_on: service: script.turn_on data: entity_id: script.applique_on turn_off: service: script.turn_on data: entity_id: script.applique_off icon_template: >- {% if is_state('input_boolean.applique_on_off', 'on') %} mdi:lightbulb {% else %} mdi:lightbulb-outline {% endif %} |
Questo sarà il risultato ottenuto
Tramite INPUT_BOOLEAN:
È possibile comandare un dispositivo con IFTTT tramite un input_boolean. Prenderemo come esempio la stessa configurazione di IFTTT con le due Applet applique_on e applique_off.
Dovremmo creare un input_boolean che ci servirà per azionare il sonoff come semplice interruttore e due automazioni che richiameranno il servizio di IFTTT per acendere o spegnere il sonoff.
1 2 3 |
input_boolean: dispensa: name: Sonoff Ifttt Dispensa |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
automation: - id: Applique On alias: Accendi Dispensa trigger: platform: state entity_id: input_boolean.dispensa to: 'on' action: service: ifttt.trigger data: {"event":"dispensa_on"} - id: Applique Off alias: Spegni Dispensa trigger: platform: state entity_id: input_boolean.dispensa to: 'off' action: service: ifttt.trigger data: {"event":"dispensa_off"} |
Per rendere graficamente più gradevole l’icona del boolean sul file customize.yaml aggiungiamo queste righe
1 2 3 4 5 6 7 |
customize_glob: input_boolean.dispensa: templates: icon: 'if (state === ''on'') return ''mdi:lightbulb''; return ''mdi:lightbulb-outline''; ' icon_color: 'if (state === ''on'') return ''red''; return ''grey''; ' |
in alternativa il colori per l’icona si possono scrivere nel modo RGB
1 |
icon_color: 'if (state === ''on'') return ''rgb(255, 0, 0)''; return ''rgb(128, 128, 128)''; |
Questo sarà il risultato ottenuto
In fondo vi lascio il link pkg_ifttt.zip con il package che racchiude tutte le dichiarazioni in HA che sono state trattate in questo articolo.
10 risposte
Ho seguito la guida ma mi da questo errore:
Error loading /home/homeassistant/.homeassistant/configuration.yaml: while scanning a simple key in “/home/homeassistant/.homeassistant/configuration.yaml”, line 169, column 1 could not find expected ‘:’ in “/home/homeassistant/.homeassistant/configuration.yaml”, line 171, column 1
Come posso risolvere?
Grazie
È difficile capire quale sia il tuo errore in base al log ma sicuramente un errore di spazi, HA è molto pignolo per uno spazio in più o in meno si blocca tutto
Grazie ho risolto era un problema di virgolette. Ho provato e funziona tutto. Solo una cosa…lo switch cliccandoci sopra in accensione funziona mentre se provali spegnere non spegne la lampadina ma ritorna in posizione accesa. È normale oppure ho sbagliato io qualcosa?
Grazie
Riscontro l’errore Unable to make web request. Your server returned a 404
Ho controllato e ricontrollato il dominio risponde nn è che è sbagliato qualcosa nella guida?
Buonasera, come posso creare un trigger in Webhooks per uno Shelly. Grazie in anticipo
ciao Raffaele, sto provando a fare la stessa cosa, sei riuscito a farlo?
Grazie, Simone
Salve, se volessi creare piu’ switch per comandare diversi rele’? dovrei fare copia e incolla cambiando solo i nomi? (attuatore 1, attuatore 2 ecc ecc).
Facendo cosi’, mi da errore.
Salve, ottima guida, io non sono riuscito ad integrare IFTTT Webhook, in HASSIO ultima versione.
Ciao,
ho seguito la guida dell’esempio 1.
Ho creato uno script per fare andare il ventilatore alla massima velocità,
utilizzo ifan2 tasmotato…..
lo script forzandolo manualmente funziona, ma non tramite ifttt.
Nel log di Hassio trovo questo errore:
Received invalid data from IFTTT. Data needs to be formatted as JSON: {“entity_id”: ” script.ventilatore_camera_hig”}
Lo script è il seguente:
ventilatore_camera_hig:
alias: Ventilatore camera – High
sequence:
– data:
speed: high
entity_id: fan.ventilatore_camera
service: fan.set_speed
La chiamata è fatta:
URL: https://xxxxxxxxxxxxxxxx.duckdns.org:xxxx/api/webhook/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Method: POST
Content Type: application/json
Body: {“entity_id”: ” script.ventilatore_camera_hig”}
Dove sbaglio?
grazie
renato
Ciao Renato, considera che l’articolo è vecchio di quasi 2 anni fa. Da allora ne sono cambiate di cose. Prova comunque a sentire sul gruppo telegram https://t.me/HassioHelp
o su facebook https://www.facebook.com/groups/2062381507393179/?ref=share
qualcuno sicuramente lo usa ancora IFTTT.