EMULATION D’INTERRUPTEURS

Afin d’émuler les interrupteurs Belkin Wemo :

Exemple d’interraction d’Alexa avec un dispositif Z-WAVE Domoticz et avec un relais grâce à une carte ESP-12E. Ce qui permet de commander une prise via Domoticz et Alexa et une autre source directement reliée à l’ESP

a) Branchement : l’esp est alimentée en 5v via le port USB, la carte relais « Solid State » est reliée au +3,3v – GND et PIN 1

b) Dans Domoticz, un dispositif est

c) le code à télécharger dans l’ESP est le suivant :

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266HTTPClient.h>
#include "fauxmoESP.h"
/* Network credentials */
#define WIFI_SSID "xxxxx"
#define WIFI_PASS "xxxxx"
#define SERIAL_BAUDRATE                 115200
#define RELAY 5 // D1 sur ESP12
///////////// Domoticz
HTTPClient http;
///////////// Emulation Beklin
fauxmoESP fauxmo;
////////////
boolean dpFontaine = false, dpNotFontaine = false;
boolean dpBib = false, dpNotBib = false;
// -----------------------------------------------------------------------------
// Wifi
// -----------------------------------------------------------------------------

void wifiSetup() {
  // Set WIFI module to STA mode
  WiFi.mode(WIFI_STA);

  // Connect
  Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID);
  WiFi.begin(WIFI_SSID, WIFI_PASS);

  // Wait
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(100);
  }
  Serial.println();

  // Connected!
  Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
}

void callback(uint8_t device_id, const char * device_name, bool state) {
  Serial.print("Device "); Serial.println(device_name);
  Serial.print(" state: "); Serial.println(state);
  if ( (strcmp(device_name, "Bibliothèque") == 0) )
  {
    if (!state)
    {
      dpNotBib = true;
    }
    else
    {
      dpBib = true;
    }
  }
  else  if ( (strcmp(device_name, "Fontaine") == 0) )
  {
    if (!state)
    {
      dpNotFontaine = true;
    }
    else
    {
      dpFontaine = true;
    }
  }
}

void setup() {
  pinMode(RELAY, OUTPUT);
  //pinMode(buttonPin, INPUT_PULLUP);
  digitalWrite(RELAY, LOW);
  // Init serial port and clean garbage
  Serial.begin(SERIAL_BAUDRATE);
  Serial.println("FauxMo demo sketch");
  Serial.println("Après la connection, demander à alexa allume bibliothéque ou éteins ou Allume/Eteins fontaine");

  // Wifi
  wifiSetup();

  // Fauxmo
  fauxmo.addDevice("Fontaine");
  fauxmo.addDevice("Bibliothèque");
  fauxmo.onMessage(callback);
}

void loop() {
  fauxmo.handle();
  if (dpFontaine) {
    Serial.println("ON");
    String url = "http.begin("http://Ip_Domoticz:8120/json.htm?username=xxxxx=&password=yyyyy&type=command&dparam=switchlight&idx=112&switchcmd=On");
    sendDomoticz(url);
    dpFontaine = false;
  }
  if (dpNotFontaine) {
    Serial.println("OFF");
    String url = "http.begin("http://Ip_Domoticz:8120/json.htm?username=xxxxx=&password=yyyyy&type=command&dparam=switchlight&idx=112&switchcmd=Off");
    sendDomoticz(url);
    dpNotFontaine = false;
  }
  if (dpBib) {
    Serial.println("ON");
    digitalWrite(RELAY, LOW);
    dpBib = false;
    delay(100);
  }
  if (dpNotBib) {
    Serial.println("OFF");
    digitalWrite(RELAY, HIGH);
    dpNotBib = false;
    delay(100);
  }
}
///////////////////////////////
void sendDomoticz(String url) {
  //http.begin("http://Ip_Domoticz:8120/json.htm?username=xxxxx=&password=yyyyy&type=command&dparam=switchlight&idx=112&switchcmd=On");
  http.begin(url);
  Serial.println("Domoticz response ");
  int httpCode = http.GET();                                                                  //Send the request
  if (httpCode > 0) { //Check the returning code
    String payload = http.getString();   //Get the request response payload
    Serial.println(payload);                     //Print the response payload
  }
  Serial.println("closing connection");
  http.end();
}

d) procéder à la reconnaissance dans Alexa des dispositifs : « Alexa trouve des dispositifs connectés »

Connexion à l’ESP à l’aide de la librairie https://github.com/simap/fauxmoesp

A télécharger avec la librairie https://github.com/me-no-dev/ESPAsyncTCP

A tester : http://www.instructables.com/id/Alexa-NodeMCU-WeMo-Emulation-Made-Simple/

Tous les fichiers nécessaires sont là : https://app.box.com/s/oytwloh51ivvbztx37okmxgtkvo0wqks

Pilotage d’un switch Domoticz :

Références :

https://www.alexafrance.fr/commandes-alexa/

https://github.com/kakopappa/arduino-esp8266-alexa-multiple-wemo-switch

https://bitbucket.org/xoseperez/fauxmoesp

https://randomnerdtutorials.com/alexa-echo-with-esp32-and-esp8266/

https://www.toptal.com/arduino/esp8266-arduino-tutorial-alexa-hack

https://github.com/nassir-malik/IOT-ESP8266-ESP12E-Alexa-Multiple-Devices

http://www.instructables.com/id/Smart-Lamp-With-ESP8266-Amazon-Echo/

Publicités
Articles récents
Commentaires récents
fatima dans Bienvenue !
AdminDroid dans Bienvenue !
fatima dans Bienvenue !
Archives
Catégories
%d blogueurs aiment cette page :