Vidéo
Le Schéma

Mise en place d'un serveur MQTT avec Adafruit
Rendez-vous sur le site io.adafruit.com et créez vous un compte en cliquant sur « Get started for Free » puis remplissez le formulaire.

Une fois connecté, vous aurez une interface comme si dessous:

Vous allez créer un dashborad en allant dans Action
-> Create a New Dashboard
et donnez lui un nom : (Ex: Lumière…)
Une fois créé, cliquez dessus et vous aurez une page noire avec des boutons.

Cliquez sur le bouton « + », et choisissez « Toggle »

Donnez un nom à votre bouton comme si dessus, cliquez sur « create » et sélectionnez-le dans la liste si dessous. Faites « Next step » puis remplacer le texte « ON » par « 1 » et « OFF » par « 0 » comme si dessous:

Puis cliquez sur « Create block ». Répéter l’opération depuis le bouton + en fonction du nombre de lampes. Puis faites « Save » En haut à droite
Le Code:
Pour commencer, il faut installer la carte wemos dans le logiciel Arduino.
Faites « Fichier » -> « Préférences » et copier la ligne si dessous dans « URL de gestionnaire de carte »
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Ensuite, Allez dans « Outils » –> « Type de carte » –> « Gestionnaire de carte », chercher « ESP8266 » et faites installer.
Puis « Outils » –> « Type de carte » –> Et choisissez « Wemos D1 R2 & mini »
Une fois votre wemos branché à votre pc choisissez le port dans « Outils » -> « Port » -> Le COM de votre Wemos.
Copier le code si dessous dans le logiciel:
//-------------------------------------GammaTroniques------------------------------------
//* https://www.youtube.com/watch?v=U1kyExsT_gQ *
//* Code Relay MQTT Adafruit - GammaTroniques *
//---------------------------------------------------------------------------------------
#include <ESP8266WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#define prelay1 D1
#define prelay2 D2
#define WLAN_SSID "Votre SSID"
#define WLAN_PASS "Votre mdp Wifi"
#define relay D1
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883 // use 8883 for SSL
#define AIO_USERNAME "Votre nom d'utilisateur"
#define AIO_KEY "Votre clé d'utilisateur"
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Adafruit_MQTT_Subscribe relay1 = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/lumiere1");
Adafruit_MQTT_Subscribe relay2 = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/lumiere2");
void MQTT_connect();
void setup() {
Serial.begin(115200);
delay(10);
pinMode(prelay1,OUTPUT);
pinMode(prelay2,OUTPUT);
Serial.println(F("Adafruit MQTT demo"));
Serial.println(); Serial.println();
Serial.print("Connecting to ");
Serial.println(WLAN_SSID);
WiFi.begin(WLAN_SSID, WLAN_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi connected");
Serial.println("IP address: "); Serial.println(WiFi.localIP());
mqtt.subscribe(&relay1);
mqtt.subscribe(&relay2);
}
uint32_t x=0;
void loop() {
MQTT_connect();
Adafruit_MQTT_Subscribe *subscription;
while ((subscription = mqtt.readSubscription(5000))) {
if (subscription == &relay1) {
Serial.print(F("Got: "));
Serial.println((char *)relay1.lastread);
uint16_t state1 = atoi((char *)relay1.lastread);
if(state1 == 1){
digitalWrite(prelay1,LOW);
}else{
digitalWrite(prelay1,HIGH);
}
}
if (subscription == &relay2) {
Serial.print(F("Got: "));
Serial.println((char *)relay2.lastread);
uint16_t state2 = atoi((char *)relay2.lastread);
if(state2 == 1){
digitalWrite(prelay2,LOW);
}else{
digitalWrite(prelay2,HIGH);
}
}
}
}
void MQTT_connect() {
int8_t ret;
if (mqtt.connected()) {
return;
}
Serial.print("Connecting to MQTT... ");
uint8_t retries = 3;
while ((ret = mqtt.connect()) != 0) {
Serial.println(mqtt.connectErrorString(ret));
Serial.println("Retrying MQTT connection in 5 seconds...");
mqtt.disconnect();
delay(5000);
retries--;
if (retries == 0) {
while (1);
}
}
Serial.println("MQTT Connected!");
}
Remplacez « Votre SSID » par le nom de votre box et « Votre mdp Wifi » par le mot de passe en gardant les guillemets.
Cliquez sur la clé jaune pour avoir les info si dessous.
Ensuite, Changez « Votre nom d’utilisateur » par votre pseudo Adafruit et « Votre clé d’utilisateur » par votre clé dispo si dessus.
Dans les ligne :
Adafruit_MQTT_Subscribe relay1 = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME « /feeds/lumiere1 »);
Adafruit_MQTT_Subscribe relay2 = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME « /feeds/lumiere2 »);
Changez « lumiere1 » et « lumiere2 » par les nom donné à vos bouttons.
Pour finir Téléverser le code en appuyant sur la flèche.
Création des commande google assistant
Pour créé des commande google assistant, télécharger l’application « IFTTT »
Une fois l’app ouverte, allez dans le dernier onglet sur la droite (« My Applets »):

Puis appuyer sur +

Touchez « + This » et dans la barre de recherche taper google assistant et choisissez le, « Say a simle phrases »
Dans les 3 première ligne vous pouvez écrire 3 commande différente sinon c’est dans la première. (Ex: allume la lumière, allume lumière …)
Sur la dernière ligne choisissez la réponde de google et choisissez « french » et validez en haut à droite.
Sur « + That » prenez « adafruit » -> « send data to Adafruit IO », Il va vous demander de vous connecter avec votre compte adafruit.
Choisissez votre lumière dans « Feed name » et dans « Data to save » mettez 1 pour allumer et 0 pour éteindre.
Répétez l’opération pour toutes les lumière.
Voilà, c’est à présent terminé, il n’y a plus qu’a tester !