ESP266 Alexa ohne Skill :-)

Begonnen von rr725, 02 April 2017, 12:18:29

Vorheriges Thema - Nächstes Thema

rr725

Mach ich, wenn ich mit meinem Laptop online bin.....

rr725

wie versprochen......

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <WiFiUdp.h>
#include <functional>
#include "switch.h"
#include "UpnpBroadcastResponder.h"
#include "CallbackFunction.h"

#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();

const char* fhem = "192.168.1.40";    //   fuer http request

boolean connectWifi();

//on/off callbacks
bool VentilatorOn();
bool VentilatorOff();
bool nachttisch_lampeOn();
bool nachttisch_lampeOff();
bool WohnzimmerlampeOn();
bool WohnzimmerlampeOff();
bool BadezimmerlampeOn();
bool BadezimmerlampeOn();
bool SchlafzimmerlampeOn();
bool SchlafzimmerlampeOff();
bool SternenhimmelOn();
bool SternenhimmelOff();
bool GutenMorgenOn();
bool GutenMorgenOff();
bool SchlafzimmerrolloOn();
bool SchlafzimmerrolloOff();

// vor dem flashen ändern
const char* ssid = "xxxxxxxx";
const char* password = "xxxxxxxx";

boolean wifiConnected = false;

UpnpBroadcastResponder upnpBroadcastResponder;

Switch *Buero = NULL;
Switch *Kueche = NULL;
Switch *WZ_Lampe = NULL;
Switch *Bad_Lampe = NULL;
Switch *Schlaf_Lampe = NULL;
Switch *Sternenh = NULL;
Switch *Gutenmorgen = NULL;
Switch *Schlafrollo = NULL;

bool isVentilatorOn = false;
bool isnachttisch_lampeOn = false;
bool isWohnzimmerlampeOn = false;
bool isBadezimmerlampeOn = false;
bool isSchlafzimmerlampeOn = false;
bool isSternenhimmelOn = false;
bool isGutenMorgenOn = false;
bool isSchlafzimmerrolloOn = false;

void setup()
{
  Serial.begin(115200);
   mySwitch.enableTransmit(16);
  // Initialise wifi connection
  wifiConnected = connectWifi();
 
  if(wifiConnected){
    upnpBroadcastResponder.beginUdpMulticast();
   
    // Define your switches here. Max 10
    // Format: Alexa invocation name, local port no, on callback, off callback
    Buero = new Switch("Ventilator", 80, VentilatorOn, VentilatorOff);
    Kueche = new Switch("nachttisch_lampe", 81,   nachttisch_lampeOn,   nachttisch_lampeOff);
    WZ_Lampe = new Switch("Wohnzimmerlampe", 82, WohnzimmerlampeOn, WohnzimmerlampeOff);
    Sternenh = new Switch("Sternenhimmel", 83, SternenhimmelOn, SternenhimmelOff);
    Gutenmorgen = new Switch("guten_morgen", 84, GutenMorgenOn, GutenMorgenOff);
    Bad_Lampe = new Switch("Badezimmerlampe", 85, BadezimmerlampeOn, BadezimmerlampeOff);
    Schlaf_Lampe = new Switch("Schlafzimmerlampe", 86, SchlafzimmerlampeOn, SchlafzimmerlampeOff);
    Schlafrollo = new Switch("Schlafzimmerrollo", 87, SchlafzimmerrolloOn, SchlafzimmerrolloOff);

   

    Serial.println("Adding switches upnp broadcast responder");
    upnpBroadcastResponder.addDevice(*Buero);
    upnpBroadcastResponder.addDevice(*Kueche);
    upnpBroadcastResponder.addDevice(*WZ_Lampe);
    upnpBroadcastResponder.addDevice(*Sternenh);
    upnpBroadcastResponder.addDevice(*Gutenmorgen);
    upnpBroadcastResponder.addDevice(*Bad_Lampe);
    upnpBroadcastResponder.addDevice(*Schlaf_Lampe);
    upnpBroadcastResponder.addDevice(*Schlafrollo);
  }
}

void loop()
{
if(wifiConnected){
      upnpBroadcastResponder.serverLoop();
     
      Kueche->serverLoop();
      Buero->serverLoop();
      WZ_Lampe->serverLoop();
      Sternenh->serverLoop();
      Gutenmorgen->serverLoop();
      Bad_Lampe->serverLoop();
      Schlaf_Lampe->serverLoop();
      Schlafrollo->serverLoop();
     
}
}

bool VentilatorOn() {
    Serial.println("Switch 1 turn on ...");
    mySwitch.sendTriState("F0F000FFFF0F");
    isVentilatorOn = true;   

      WiFiClient client;
      const int httpPort = 80;
      if (!client.connect(fhem, httpPort)) {
    Serial.println("connection failed");

  }
client.print(String("GET /Ventilator_an.php") + " HTTP/1.1\r\n" + "Host: " + fhem + "\r\n" "Connection: close\r\n\r\n");

return isVentilatorOn;
}

bool VentilatorOff() {
    Serial.println("Switch 1 turn off ...");
    mySwitch.sendTriState("F0F000FFFFF0");
    isVentilatorOn = false;
    return isVentilatorOn;
}

bool   nachttisch_lampeOn() {
    Serial.println("Switch 2 turn on ...");
    mySwitch.sendTriState("00000FF0FF11");
    isnachttisch_lampeOn = true;
    return isnachttisch_lampeOn;
}

bool   nachttisch_lampeOff() {
  Serial.println("Switch 2 turn off ...");
  mySwitch.sendTriState("00000FF0FFF0");

  isnachttisch_lampeOn = false;
  return isnachttisch_lampeOn;
}

bool WohnzimmerlampeOn() {
    Serial.println("Switch 2 turn on ...");
    mySwitch.sendTriState("F10000FF00F0");
    isWohnzimmerlampeOn = true;
    return isWohnzimmerlampeOn;
}

bool WohnzimmerlampeOff() {
  Serial.println("Switch 2 turn off ...");
  mySwitch.sendTriState("F10000FF00F0");

  isWohnzimmerlampeOn = false;
  return isWohnzimmerlampeOn;
}

bool SternenhimmelOn() {
    Serial.println("Switch 1 turn on ...");
    mySwitch.sendTriState("0F000FF0FF11");
    isSternenhimmelOn = true;   


      WiFiClient client;
      const int httpPort = 80;
      if (!client.connect(fhem, httpPort)) {
    Serial.println("connection failed");

  }
client.print(String("GET /Sternenhimmel_an.php") + " HTTP/1.1\r\n" + "Host: " + fhem + "\r\n" "Connection: close\r\n\r\n");

  return isSternenhimmelOn;
}

bool SternenhimmelOff() {
    Serial.println("Switch 1 turn off ...");
    mySwitch.sendTriState("0F000FF0FFF0");
    isSternenhimmelOn = false;

      WiFiClient client;
      const int httpPort = 80;
      if (!client.connect(fhem, httpPort)) {
    Serial.println("connection failed");

  }
client.print(String("GET /Sternenhimmel_aus.php") + " HTTP/1.1\r\n" + "Host: " + fhem + "\r\n" "Connection: close\r\n\r\n");

     return isSternenhimmelOn;
}

bool GutenMorgenOn() {
    Serial.println("Switch 1 turn on ...");
    isGutenMorgenOn = true;   
    WiFiClient client;
      const int httpPort = 80;
      if (!client.connect(fhem, httpPort)) {
    Serial.println("connection failed");

  }
client.print(String("GET /guten_morgen.php") + " HTTP/1.1\r\n" + "Host: " + fhem + "\r\n" "Connection: close\r\n\r\n");

  return isGutenMorgenOn;
}

bool GutenMorgenOff() {
       isGutenMorgenOn = false;
    return isGutenMorgenOn;
}

bool   BadezimmerlampeOn() {
    Serial.println("Switch 2 turn on ...");
    mySwitch.send("001101110101111001000100");
    isBadezimmerlampeOn = true;
    return isBadezimmerlampeOn;
}

bool  BadezimmerlampeOff() {
  Serial.println("Switch 2 turn off ...");
  mySwitch.send("001101110101111001000100");

  isBadezimmerlampeOn = false;
  return isBadezimmerlampeOn;
}


bool   SchlafzimmerlampeOn() {
    Serial.println("Switch 2 turn on ...");
    mySwitch.send("001001000011111001000100");
    isSchlafzimmerlampeOn = true;
    return isSchlafzimmerlampeOn;
}

bool  SchlafzimmerlampeOff() {
  Serial.println("Switch 2 turn off ...");
  mySwitch.send("001001000011111001000100");

  isSchlafzimmerlampeOn = false;
  return isSchlafzimmerlampeOn;
}


bool   SchlafzimmerrolloOn() {
    Serial.println("Switch 2 turn on ...");
    mySwitch.sendTriState("F00F0F000FFF");
    isSchlafzimmerrolloOn = true;
    return isSchlafzimmerrolloOn;
}

bool   SchlafzimmerrolloOff() {
  Serial.println("Switch 2 turn off ...");
  mySwitch.sendTriState("F00F0F000FF0");

  isSchlafzimmerrolloOn = false;
  return isSchlafzimmerrolloOn;
}


boolean connectWifi(){
  boolean state = true;
  int i = 0;
 
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("");
  Serial.println("Connecting to WiFi");

  Serial.print("Connecting ...");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    if (i > 10){
      state = false;
      break;
    }
    i++;
  }
 
  if (state){
    Serial.println("");
    Serial.print("Connected to ");
    Serial.println(ssid);
    Serial.print("IP address: ");
    Serial.println(WiFi.localIP());
  }
  else {
    Serial.println("");
    Serial.println("Connection failed.");
  }
 
  return state;
}

pc1246

Moin
Vielen Dank. Dann kann ich mir das naechste Woche mal ansehen! Bin derzeit verdienstreist in Italien, und am Wochenende ist Schuetzenfest, da wird es nichts mit fhem!
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

pc1246

Hallo
Jetzt hatte ich kurz mal Zeit den Code anzusehen. Da ist mir einiges unklar, aber vielleicht sollte ich es zu Hause erstmal probieren!?
bool VentilatorOn() {
    Serial.println("Switch 1 turn on ...");
    mySwitch.sendTriState("F0F000FFFF0F");
    isVentilatorOn = true;   

      WiFiClient client;
      const int httpPort = 80;
      if (!client.connect(fhem, httpPort)) {
    Serial.println("connection failed");

  }
client.print(String("GET /Ventilator_an.php") + " HTTP/1.1\r\n" + "Host: " + fhem + "\r\n" "Connection: close\r\n\r\n");

return isVentilatorOn;
}

Das sieht irgendwie verwurschtelt aus, kommt spaeter noch einmal.
Das mit den ports erschliesst sich mir auch nicht, zudem die dann bei den verwurschtelten stumpf auf 80 sind!?
Und was hat es mit dem code bei send tristate auf sich? Woher kommt der?
Danke und Gruss
Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

rr725

Zitat von: pc1246 am 20 Juni 2018, 15:38:41
Hallo
Jetzt hatte ich kurz mal Zeit den Code anzusehen. Da ist mir einiges unklar, aber vielleicht sollte ich es zu Hause erstmal probieren!?
bool VentilatorOn() {
    Serial.println("Switch 1 turn on ...");
    mySwitch.sendTriState("F0F000FFFF0F");
    isVentilatorOn = true;   

      WiFiClient client;
      const int httpPort = 80;
      if (!client.connect(fhem, httpPort)) {
    Serial.println("connection failed");

  }
client.print(String("GET /Ventilator_an.php") + " HTTP/1.1\r\n" + "Host: " + fhem + "\r\n" "Connection: close\r\n\r\n");

return isVentilatorOn;
}

Das sieht irgendwie verwurschtelt aus, kommt spaeter noch einmal.
Das mit den ports erschliesst sich mir auch nicht, zudem die dann bei den verwurschtelten stumpf auf 80 sind!?
Und was hat es mit dem code bei send tristate auf sich? Woher kommt der?
Danke und Gruss
Christoph
Keine Ahnung was du mit verwurschtelt meinst- kannst es ja nach deinem Geschmack ordnen.  Und mit den Ports stumpf auc 80 trifft nicht zu, hier in dem Beispiel,aufsteigend bis 87. Wäre es falsch würde Alexa die Geräte nicht finden und wären auch nicht funktional. Bei mir zumindest funzt es einwandfrei
Send tristate ist die antwort des jeweiligen 433mhz Senders.Und