habe gerade noch ein wenig damit experimentiert.
das teil emuliert tatsächlich eine hue bridge.
ich nutze eine logitech harmony fernbedienung mit hub. dieses teil erkennt den wemos als hue bridge und die darin konfigurierten "Lampen"
darin habe ich z. B. meine Wohnzimmerrolläden auf eine der Haussteuerungstaste gelegt. Auch andere Smarthomedevices lassen sich somit via Logitech Fernbedienung steuern.
#ifdef ARDUINO_ARCH_ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include <Espalexa.h>
/////wird benötigt fur reconnect wenn wifi unterbrochen //////////
#include <ESP8266WiFiMulti.h>
ESP8266WiFiMulti wifiMulti;
boolean connectioWasAlive = true;
////////////////////////////////////////////////////////////////
boolean connectWifi();
//callback functions
void firstLightChanged(uint8_t brightness);
void secondLightChanged(uint8_t brightness);
void thirdLightChanged(uint8_t brightness);
void fourthLightChanged(uint8_t brightness);
void fifthLightChanged(uint8_t brightness);
void sixthLightChanged(uint8_t brightness);
void seventhLightChanged(uint8_t brightness);
void eighthLightChanged(uint8_t brightness);
void ninthLightChanged(uint8_t brightness);
void tenthLightChanged(uint8_t brightness);
// Anpassen !!!!!!
const char* ssid = "SSID";
const char* password = "Passwort";
////////// unten WIFI Hostnamen ändern ////////7////////
const char* CCU = "xxx.xxx.xxx.xxx";
boolean wifiConnected = false;
Espalexa espalexa;
EspalexaDevice* device3; //Optional
void setup()
{
Serial.begin(115200);
// Initialise wifi connection
wifiConnected = connectWifi();
if(wifiConnected){
// Define your devices here. Hier den Alexanamen des Gerätes angeben
espalexa.addDevice("Badezimmerheizung", firstLightChanged, 255); //simplest definition, default state off
espalexa.addDevice("Küchenheizung", secondLightChanged, 255); //third parameter is beginning state (here fully on)
espalexa.addDevice("Schlafzimmerheizung", thirdLightChanged, 255); //third parameter is beginning state (here fully on)
espalexa.addDevice("Wohnzimmerheizung", fourthLightChanged, 255); //simplest definition, default state off
espalexa.addDevice("Markise",fifthLightChanged, 255); //third parameter is beginning state (here fully on)
espalexa.addDevice("Stehlampe", sixthLightChanged, 255); //third parameter is beginning state (here fully on)
espalexa.addDevice("Beschattung_WZ_lks_Hue", seventhLightChanged, 255); //simplest definition, default state off
espalexa.addDevice("Ambiente_HUE_ALEXA", eighthLightChanged, 255); //third parameter is beginning state (here fully on)
espalexa.addDevice("Jota", ninthLightChanged, 255); //third parameter is beginning state (here fully on)
espalexa.addDevice("Kappa", tenthLightChanged, 255); //third parameter is beginning state (here fully on)
espalexa.begin();
while (1) {
Serial.println("Cannot connect to WiFi. Please check data and reset the ESP.");
delay(2500);
/////wird benötigt fur reconnect wenn wifi unterbrochen //////////
ESP.restart();
//////////////////////////////////////////////////////////////////
}
}
}
///// wird benötigt fur reconnect wenn wifi unterbrochen //////////
void monitorWiFi()
{
if (wifiMulti.run() != WL_CONNECTED)
{
if (connectioWasAlive == true)
{
connectioWasAlive = false;
Serial.print("Looking for WiFi ");
}
Serial.print(".");
delay(500);
ESP.restart();
}
else if (connectioWasAlive == false)
{
connectioWasAlive = true;
Serial.printf(" connected to %s\n", WiFi.SSID().c_str());
}
}
///////////////////////////////////////////////////////////////////
void loop()
{
espalexa.loop();
/////wird benötigt fur reconnect wenn wifi unterbrochen //////////
monitorWiFi();
//////////////////////////////////////////////////////////////////
delay(1);
}
/////////////////hier beginnt der Block für das erste Device ///////////////////////////
void firstLightChanged(uint8_t brightness) {
Serial.print("Device 1 changed to ");
//Beispiel Badezimmergeizung für Alexa
if (brightness) {
Serial.print("ON, brightness ");
Serial.println(brightness);
WiFiClient client;
const int httpPort_CCU = 80;
int Helligkeitswert = (brightness) * 100 / 255;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");
return;
}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=35302&new_value=") + Helligkeitswert + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
else {
WiFiClient client;
const int httpPort_CCU = 80;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=35302&new_value=4.5") + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
}
/////////////////hier endet der Block für das erste Device ///////////////////////////
/////////////////hier beginnt der Block für das zweite Device ///////////////////////////
void secondLightChanged(uint8_t brightness) {
Serial.print("Device 2 changed to ");
//Beispiel Kuechenheizung für Alexa
if (brightness) {
Serial.print("ON, brightness ");
Serial.println(brightness);
// ab hier eingetragen
WiFiClient client;
const int httpPort_CCU = 80;
int Helligkeitswert = (brightness) * 100 / 255;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");
return;
}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=37682&new_value=") + Helligkeitswert + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
else {
WiFiClient client;
const int httpPort_CCU = 80;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=37682&new_value=4.5") + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
}
/////////////////hier endet der Block für das zweite Device ///////////////////////////
/////////////////hier beginnt der Block für das dritte Device ///////////////////////////
void thirdLightChanged(uint8_t brightness) {
Serial.print("Device 3 changed to ");
//Beispiel Schlafzimmerheizung für Alexa
if (brightness) {
Serial.print("ON, brightness ");
Serial.println(brightness);
WiFiClient client;
const int httpPort_CCU = 80;
int Helligkeitswert = (brightness) * 100 / 255;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");
return;
}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=35381&new_value=") + Helligkeitswert + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
else {
WiFiClient client;
const int httpPort_CCU = 80;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=35381&new_value=4.5") + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
}
/////////////////hier endet der Block für das dritte Device ///////////////////////////
/////////////////hier beginnt der Block für das vierte Device ///////////////////////////
void fourthLightChanged(uint8_t brightness) {
Serial.print("Device 4 changed to ");
//Beispiel Wohnzimmerheizung für Alexa
if (brightness) {
Serial.print("ON, brightness ");
Serial.println(brightness);
WiFiClient client;
const int httpPort_CCU = 80;
int Helligkeitswert = (brightness) * 100 / 255;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");
return;
}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=35144&new_value=") + Helligkeitswert + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
else {
WiFiClient client;
const int httpPort_CCU = 80;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=35144&new_value=4.5") + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
}
/////////////////hier endet der Block für das vierte Device ///////////////////////////
/////////////////hier beginnt der Block für das fünfte Device ///////////////////////////
void fifthLightChanged (uint8_t brightness) {
Serial.print("Device 5 changed to ");
//Beispiel Markise für Alexa
if (brightness) {
Serial.print("ON, brightness ");
Serial.println(brightness);
WiFiClient client;
const int httpPort_CCU = 80;
float Helligkeitswert = (brightness) * 100 / 255 *0.01 ;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");
return;
}
Serial.println(Helligkeitswert);
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=13889&new_value=") + Helligkeitswert + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
else {
WiFiClient client;
const int httpPort_CCU = 80;
float Helligkeitswert = (brightness) * 100 / 255 *0.01 ;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");}
Serial.println(Helligkeitswert);
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=13889&new_value=") + Helligkeitswert + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
}
/////////////////hier endet der Block für das fünfte Device ///////////////////////////
/////////////////hier beginnt der Block für das sechste Device ///////////////////////////
void sixthLightChanged(uint8_t brightness) {
Serial.print("Device 6 changed to ");
//Beispiel Stehlampe für Alexa
if (brightness) {
Serial.print("ON, brightness ");
Serial.println(brightness);
// ab hier eingetragen
WiFiClient client;
const int httpPort_CCU = 80;
float Helligkeitswert = (brightness) * 100 / 255 *0.01 ;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");
return;
}
Serial.println(Helligkeitswert);
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=37968&new_value=") + Helligkeitswert + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
else {
WiFiClient client;
const int httpPort_CCU = 80;
float Helligkeitswert = (brightness) * 100 / 255 * 0.01 ;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");}
Serial.println(Helligkeitswert);
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=37968&new_value=") + Helligkeitswert + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
}
/////////////////hier endet der Block für das sechste Device ///////////////////////////
/////////////////hier beginnt der Block für das siebte Device ///////////////////////////
void seventhLightChanged(uint8_t brightness) {
Serial.print("Device 7 changed to ");
//Beschattung_WZ_lks_Hue
if (brightness) {
Serial.print("ON, brightness ");
Serial.println(brightness);
WiFiClient client;
const int httpPort_CCU = 80;
int Helligkeitswert = (brightness) * 100 / 255;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");
return;
}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=35893&new_value=1") + Helligkeitswert + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
else {
WiFiClient client;
const int httpPort_CCU = 80;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=35893&new_value=0") + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
}
/////////////////hier endet der Block für das siebte Device ///////////////////////////
/////////////////hier beginnt der Block für das achte Device ///////////////////////////
void eighthLightChanged(uint8_t brightness) {
Serial.print("Device 8 changed to ");
//Ambiente_HUE_ALEXA
if (brightness) {
Serial.print("ON, brightness ");
Serial.println(brightness);
WiFiClient client;
const int httpPort_CCU = 80;
int Helligkeitswert = (brightness) * 100 / 255;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");
return;
}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=18509&new_value=1") + Helligkeitswert + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
else {
WiFiClient client;
const int httpPort_CCU = 80;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=18509&new_value=0") + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
}
/////////////////hier endet der Block für das chte Device ///////////////////////////
/////////////////hier beginnt der Block für das neunte Device ///////////////////////////
void ninthLightChanged(uint8_t brightness) {
Serial.print("Device 9 changed to ");
//Beispiel Wohnzimmergeizung für Alexa
if (brightness) {
Serial.print("ON, brightness ");
Serial.println(brightness);
WiFiClient client;
const int httpPort_CCU = 80;
int Helligkeitswert = (brightness) * 100 / 255;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");
return;
}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=35144&new_value=") + Helligkeitswert + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
else {
WiFiClient client;
const int httpPort_CCU = 80;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=35144&new_value=4.5") + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
}
/////////////////hier endet der Block für das neunte Device ///////////////////////////
/////////////////hier beginnt der Block für das zehnte Device ///////////////////////////
void tenthLightChanged(uint8_t brightness) {
Serial.print("Device 10 changed to ");
//Beispiel Wohnzimmergeizung für Alexa
if (brightness) {
Serial.print("ON, brightness ");
Serial.println(brightness);
WiFiClient client;
const int httpPort_CCU = 80;
int Helligkeitswert = (brightness) * 100 / 255;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");
return;
}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=35144&new_value=") + Helligkeitswert + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
else {
WiFiClient client;
const int httpPort_CCU = 80;
if (!client.connect(CCU, httpPort_CCU)) {
Serial.println("connection failed");}
client.print(String("GET /config/xmlapi/statechange.cgi?ise_id=35144&new_value=4.5") + " HTTP/1.1\r\n" + "Host: " + CCU + "\r\n" "Connection: close\r\n\r\n");
}
}
/////////////////hier endet der Block für das zehnte Device /////////////////////////// zum hinzufügen einfach einen Block anhängen und Bezeichnungen anpassen
// connect to wifi – returns true if successful or false if not
boolean connectWifi(){
boolean state = true;
int i = 0;
WiFi.mode(WIFI_STA);
WiFi.hostname("Esp8266_Alexa");
WiFi.begin(ssid, password);
Serial.println("");
Serial.println("Connecting to WiFi");
// Wait for connection
Serial.print("Connecting...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if (i > 20){
state = false; break;
}
i++;
}
Serial.println("");
if (state){
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
else {
Serial.println("Connection failed.");
}
return state;
}