L’objectif est de commander vocalement une sortie d’un ESP32. L’idée est d’utiliser des technologies no-code/low-code comme Blynk et IFTTT.
Le moyen le plus simple d’interagir vocalement avec l’ESP32 via Blynk est d’utiliser IFTTT. IFTTT (If This Then That) est un service web gratuit permettant de créer des chaînes d’instruction simples appelées applets. Un applet intègre un déclencheur (This) lié à une action (That). IFTTT fournit un grand nombre de déclencheurs et d’actions.
Les déclencheurs IFTTT pour assurer une commande vocale sont : Google Assistant et Alexa. Il faudra donc trouver une solution pour Siri en utilisant Webhooks.
Blynk fournit une API HTTP RESTful qui permet de piloter les entrées/sorties de l’ESP32 (ou tout autre système embarqué pris en charge par Blynk comme Arduino, Raspberry Pi, ESP8266, etc …). Il est possible d’utiliser des requêtes GET
et/ou PUT
:
GET
pour lire l’état d’une broche (ici D1
) : http://blynk-cloud.com/auth_token/get/D1
GET
pour écrire sur une broche (ici D1
) : http://blynk-cloud.com/auth_token/update/D1?value=1
PUT
pour écrire sur une broche (ici D1
) : http://blynk-cloud.com/auth_token/update/D1
Tests (remplacer XXXXXXXX
par le token d’authenfication) :
$ curl -X GET http://blynk-cloud.com/XXXXXXXX/update/D19?value=1
$ curl -X GET http://blynk-cloud.com/XXXXXXXX/update/D19?value=1
$ curl -X PUT -H "Content-Type: application/json" -d '["1"]' http://blynk-cloud.com/XXXXXXXX/update/D19
$ curl -X PUT -H "Content-Type: application/json" -d '["0"]' http://blynk-cloud.com/XXXXXXXX/update/D19
On utilisera cet API HTTP RESTful avec le service Webhooks d’IFTTT pour piloter l’ESP32 via une requête web (Make a web request).
Par contre, il faudra prendre l’adresse du serveur Blynk blynk-cloud.com
(car il utilise différents serveurs pour différents pays) :
$ ping -c 1 blynk-cloud.com
PING blynk-cloud.com (139.59.206.133) 56(84) bytes of data.
64 bytes from 139.59.206.133 (139.59.206.133): icmp_seq=1 ttl=50 time=41.2 ms
--- blynk-cloud.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 41.218/41.218/41.218/0.000 ms
Exemple ESP32 avec PlatformIO :
platform.ini
pour une carte ESP32 wemos et la bibliothèque Blynk :[env:lolin_d32]
platform = espressif32
board = lolin_d32
framework = arduino
lib_deps =
blynkkk/Blynk @ ^0.6.7
main.cpp
:#include <Arduino.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
//#define BLYNK_PRINT Serial
char auth[] = "";
char ssid[] = "";
char pass[] = "";
void setup()
{
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
}
void loop()
{
Blynk.run();
}
Le moyen le plus simple d’interagir avec l’ESP32 via Google Assistant est d’utiliser IFTTT.
IFTTT est un service web gratuit permettant de créer des chaînes d’instruction simples appelées applets.
On va par exemple créer un applet avec un déclencheur sur le service Google Assitant (This) avec une action Webhooks vers l’API HTTP RESTful de Blynk (That) :
Il faut choisir le service Google Assistant :
On sélectionne “Say a simple phrase” :
On complète :
On va ajouter le That :
On sélectionne Webhooks :
On sélectionne “Make a web request” :
On paramètre l’action :
Par contre, il faudra prendre l’adresse du serveur Blynk blynk-cloud.com
(car il utilise différents serveurs pour différents pays) :
$ ping -c 1 blynk-cloud.com
PING blynk-cloud.com (139.59.206.133) 56(84) bytes of data.
64 bytes from 139.59.206.133 (139.59.206.133): icmp_seq=1 ttl=50 time=41.2 ms
--- blynk-cloud.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 41.218/41.218/41.218/0.000 ms
GET
:PUT
:On termine le processus de création :
On vérifie l’état connected
:
Test :
Un moyen simple d’interagir avec l’ESP32 via Alexa est d’utiliser IFTTT.
IFTTT est un service web gratuit permettant de créer des chaînes d’instruction simples appelées applets.
On va par exemple créer un applet avec un déclencheur sur le service Alexa (This) avec une action Webhooks vers l’API HTTP RESTful de Blynk (That) :
Il faut choisir le service Alexa :
On sélectionne “Say a specific phrase” :
Il faut se connecter au service Alexa :
On autorise son compte Alexa :
On va ajouter le That en sélectionnant Webhooks :
On sélectionne “Make a web request” :
On paramètre l’action :
Par contre, il faudra prendre l’adresse du serveur Blynk blynk-cloud.com
(car il utilise différents serveurs pour différents pays) :
$ ping -c 1 blynk-cloud.com
PING blynk-cloud.com (139.59.206.133) 56(84) bytes of data.
64 bytes from 139.59.206.133 (139.59.206.133): icmp_seq=1 ttl=50 time=41.2 ms
--- blynk-cloud.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 41.218/41.218/41.218/0.000 ms
GET
:PUT
:On termine le processus de création et on teste.
Siri n’est pas disponible directement dans IFTTT. Une solution simple est d’utiliser l’application Raccourcis pour iOS ce qui permettra d’envoyer une requête web vers un déclencheur Webhooks d’IFTTT.
IFTTT est un service web gratuit permettant de créer des chaînes d’instruction simples appelées applets.
On va par exemple créer un applet avec un déclencheur Webhooks (This) avec une action Webhooks vers l’API HTTP RESTful de Blynk (That) :
Il faut choisir le service Webhooks :
On crée l’évènement déclencheur :
On va ajouter ensuite le That :
Sélectionner Webhooks :
On sélectionne “Make a web request” :
On paramètre l’action :
Par contre, il faudra prendre l’adresse du serveur Blynk blynk-cloud.com
(car il utilise différents serveurs pour différents pays) :
$ ping -c 1 blynk-cloud.com
PING blynk-cloud.com (139.59.206.133) 56(84) bytes of data.
64 bytes from 139.59.206.133 (139.59.206.133): icmp_seq=1 ttl=50 time=41.2 ms
--- blynk-cloud.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 41.218/41.218/41.218/0.000 ms
GET
:PUT
:On termine le processus de création.
Maintenantil faut aller dans My Services
du compte IFTTT :
Puis dans Webhooks :
Et cliquer sur Documentation
:
Il faut récupérer sa clé (key) et surtout l’URL en faisant copier/coller :
L’URL https://maker.ifttt.com/trigger/{event}/with/key/XXXXXXXX
est nécessaire pour le raccourci que l’on va créer ensuite.
Test :
$ curl -X POST https://maker.ifttt.com/trigger/{event}/with/key/XXXXXXXX
Il faut installer l’application Raccourcis depuis l’Apple Store :
On crée un nouveau raccourci :
Il faut commencer par ajouter une action “Texte” et coller l’URL https://maker.ifttt.com/trigger/{event}/with/key/XXXXXXXX
en remplaçant {event}
par le nom de l’évènement créé dans IFTTT.
Il faut ensuite ajouter simplement l’action “Obtenir le contenu de l’URL”.
Dans les réglages du raccourci, il est possible de :
Terminer par OK
et tester.