Hallo
ich schreib mir gerade ein kleines Programm mit dem ich mein Fenster aus/zu/kippen möchte
natürlich mit hilfe eines Motor mit Getriebe.
nun mein Problem,
ich muss immer ein aktionswort mit geben zB.: Alexa Fenster 1 ein
damit er eine aktion wie Fenster auf kippen stellen ausführt.
Das muss mann sich halt immer merken und ist nicht besonders userfreundlich.
geht das nicht auch ohne ein/aus
dann noch ein Problem, wenn ich das Codewort ändere und dann Alexa neue Geräte suchen lasse, tauchen die alten Namen immer noch auf und das neue nicht
auch in der Alexa App das löschen der Geräte bringt nichts die kommen immer wieder
// Alexa steuert über Code Wort Fenster 1,2,3 den Motor zur Fenstersteuerung
#include <ESP8266WiFi.h>
#include "Arduino.h"
#include "fauxmoESP.h"
byte Out1 = 4; // GPIO4 = D2
byte Out2 = 5; // GPIO5 = D1
byte Flag = 0; // zur Alexa Info übergabe
#define Fenster_1 // Codeword muss zuerst mal definiert werden
#define Fenster_2
#define Fenster_3
#define WIFI_SSID "FritzPC"
#define WIFI_PASS "xxx"
fauxmoESP fauxmo;
void wifiSetup()
{
WiFi.mode(WIFI_STA);
Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(100);
}
Serial.println();
Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
}
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.println();
pinMode(Out1, OUTPUT);
pinMode(Out2, OUTPUT);
digitalWrite(Out1, LOW);
digitalWrite(Out2, LOW);
wifiSetup();
fauxmo.addDevice("Fenster_1"); // definition für Alexa
fauxmo.addDevice("Fenster_2");
fauxmo.addDevice("Fenster_3");
fauxmo.setPort(80); // required for gen3 devices
fauxmo.enable(true);
fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state, unsigned char value)
{
//Serial.println(" ");
//Serial.printf("[MAIN] Device #%d (%s) state: %s value: %d\n", device_id, device_name, state ? "ON" : "OFF", value);
if ( (strcmp(device_name, "Fenster_1") == 0)) // Ausgabe und Anzeige FensterZu
{
if (state)
{
Flag = 1;
}
}
if ( (strcmp(device_name, "Fenster_2") == 0)) // Ausgabe und Anzeige Fenster_2
{
if (state)
{
Flag = 2;
}
}
if ( (strcmp(device_name, "Fenster_3") == 0)) // Ausgabe und Anzeige Fenster_3
{
if (state)
{
Flag = 3;
}
}
});
Serial.println("Fertig mit Setup");
}
void loop()
{
fauxmo.handle();
// Fenster kippen = Befehl Fenster1 ein , muss vorher zu gewesen sein
if ( Flag == 1 ) // Fenster von zu --> in Kippstellung fahren
{
Serial.println(" das Flag = 1 = Fenster zumachen");
digitalWrite(Out1, HIGH);
delay(7000);
digitalWrite(Out1, LOW);
delay(200);
Flag = 0;
Serial.println(" und wieder reset");
}
// Fenster Aufmachen = Befehl Fenster2 ein , muss vorher zu gewesen sein
if ( Flag == 2 ) // Fenster von zu --> in Mittelstellung fahren zum Manuell aufmachen
{ // nächster Befehl muss Fenster3 sein = zumachen, dann fährt er aber in anschlag ( no Prob )
Serial.println(" das Flag = 2 = Mittelstellung zum manuellen aufmachen");
digitalWrite(Out1, HIGH);
delay(3500);
digitalWrite(Out1, LOW);
delay(200);
Flag = 0;
Serial.println(" und wieder reset");
}
// Fenster Zu machen = Befehl Fenster3 ein , muss vorher gegippt gewesen sein
if ( Flag == 3 ) // Fenster von Kipp --> zu fahren
{
Serial.print(" das Flag = 3 = zum kippen bereitstellen");
digitalWrite(Out2, HIGH);
delay(7000);
digitalWrite(Out2, LOW);
delay(200);
Flag = 0;
Serial.println(" und wieder reset");
}
}