CONTRÔLER UN RELAY AVEC UN ARDUINO ET GOOGLE HOME

Vidéo

Les Composants

Wemos D1 Mini – Amazon

Carte 2 Relais – Amazon

Câble Arduino – Amazon

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 !