INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
mit einem Wemos D1 mini mit Alexa eine Rolllade steuern
26.07.2020, 10:34
Beitrag #1
mit einem Wemos D1 mini mit Alexa eine Rolllade steuern
Hallo zusammen

Ich möchte mit einem Wemos D1 mini eine Rolllade per Alexa Sprachbefehl steuern.

Im Netz bin ich über diese Anleitung gestolpert.
https://christians-hub.de/esp8266-mit-am...a-steuern/

Mein Problem ist das ich den Ausgang am Wemos nur ein oder Ausschalten kann.
Ich möchte aber das der Ausgang nach ca. 1sec. wieder automatisch auf LOW gesetzt wird. Dann brauch ich nur die Ausgänge Parallel zu den vorhandenen Tastern klemmen und fertig ist der Lack.

Die Verbindung zu Alexa usw, funktioniert und ich kann wie gesagt die Ausgänge ein oder ausschalten.

Sobald ich ein Delay einfüge geht der Ausgang zwar auf null aber irgendwie hält er sich nicht an die Zeit die eingestellt wird. Die High Phase ist so kurz das zwar eine zu Testzwecken angeschlossen LED kurz aufleuchtet. Für ein anziehen eines Relais reicht dies jedoch nicht.

Muss ich auf millis() wechseln damit es Funktioniert? Wie müsste es dann aussehen?

Vielen Dank für eure Unterstützung

Code:
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include "fauxmoESP.h"
#define SERIAL_BAUDRATE                 115200
fauxmoESP fauxmo;

// -----------------------------------------------------------------------------
// Wifi defines
// -----------------------------------------------------------------------------

#define WIFI_SSID "FRITZ!Box 7590 LQ"
#define WIFI_PASS "xxxxxxxxxxxxxxxxx"

// -----------------------------------------------------------------------------
// PIN definitions
// -----------------------------------------------------------------------------

#define SWITCH_PIN1 13
#define SWITCH_PIN2 15

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 until connected
  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 setup() {

// -----------------------------------------------------------------------------
// Configure and set PINs
// -----------------------------------------------------------------------------
  delay(10000);
  
  pinMode(SWITCH_PIN1, OUTPUT);
  digitalWrite(SWITCH_PIN1, LOW);

  pinMode(SWITCH_PIN2, OUTPUT);
  digitalWrite(SWITCH_PIN2, LOW);
  
    // Init serial port and clean garbage
    Serial.begin(SERIAL_BAUDRATE);
    Serial.println();
    Serial.println();
    Serial.println("FauxMo Setup");
    Serial.println("Nach der Verbindung sage: Alexa schalte Rolllade1 / Rolllade2 an / aus .");

  // Wifi
  wifiSetup();
  
// -----------------------------------------------------------------------------
// Define devices
// -----------------------------------------------------------------------------

  // Fauxmo
  fauxmo.addDevice("Rolllade1");
  fauxmo.addDevice("Rolllade2");

  fauxmo.setPort(80);
  fauxmo.enable(true);

   fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state, unsigned char value)
   {
      Serial.printf("[MAIN] Device #%d (%s) state: %s value: %d\n", device_id, device_name, state ? "ON" : "OFF", value);
      
      // -----------------------------------------------------------------------------
      // Define queries
      // -----------------------------------------------------------------------------

      if ( (strcmp(device_name, "Rolllade1") == 0) ) {
        if (state) {
          digitalWrite(SWITCH_PIN1, HIGH);
          Serial.printf("Rolllade1 wird angeschaltet.");
          delay(1000);                                                            // mein Delay
          digitalWrite(SWITCH_PIN1, LOW);                             // mein Mist
          Serial.printf("Rolllade1 wird ausgeschaltet.");              // mein Mist
      
} else {
          digitalWrite(SWITCH_PIN1, LOW);
          Serial.printf("Rolllade1 wird ausgeschaltet.");
        }
      }


      if ( (strcmp(device_name, "Rolllade2") == 0) ) {
        if (state) {
          digitalWrite(SWITCH_PIN2, HIGH);
          Serial.printf("Rolllade2 wird angeschaltet.");
          delay(1000);                                                            // mein Delay
          digitalWrite(SWITCH_PIN2, LOW);                             // mein Mist
          Serial.printf("Rolllade2 wird ausgeschaltet.");              // mein Mist
        } else {
          digitalWrite(SWITCH_PIN2, LOW);
          Serial.printf("Rolllade2 wird angeschaltet.");
        }
      }
       }
       );
}

void loop() {
  fauxmo.handle();
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.07.2020, 10:47 (Dieser Beitrag wurde zuletzt bearbeitet: 26.07.2020 11:00 von hotsystems.)
Beitrag #2
RE: mit einem Wemos D1 mini mit Alexa eine Rolllade steuern
Du musst deine 1Sekunde Zeitverlängerung durch die Funktion millis() erreichen.

Sieh dir dazu das Beispiel "BlinkWithoutDelay" in der IDE an.

Edit:
Habe mir auch mal deinen Sketch angesehen und sehe eigentlich keinen Grund, dass es mit delay nicht funktioniert.
Hast du an den Ausgängen schon Relais dran ?
Evtl. beeinflusst ja irgend etwas deine Steuerung.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.07.2020, 11:23 (Dieser Beitrag wurde zuletzt bearbeitet: 26.07.2020 11:24 von SiR WonG.)
Beitrag #3
RE: mit einem Wemos D1 mini mit Alexa eine Rolllade steuern
Ja habe ein Relais pro Ausgang angeschlossen. Wenn ich das Delay einfüge zieht es nicht an. Sobald ich aber Delay lösche und den Ausgang auf HIGH schalte zieht auch das Relais an.
Die Kontroll LED zeigt übrigens auch mit Delay ein kurzes aufleuchten. Nur eben nicht in der vorgegebenen Zeit.
Augenscheinlich ist die Dauer des aufleuchten bei 1000 genauso lange wie bei 10000.
Es liegt also nicht an der Schaltung. Werde gleich mal mein Oszilloskop rauskramen und die Zeit des HIGH Pegels mit Delay messen.

Warum das Delay nicht funktioniert ist mir echt ein Rätsel weil dort meiner Meinung nichts dagegen spricht.

DANKE

Gruß Daniel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.07.2020, 11:43
Beitrag #4
RE: mit einem Wemos D1 mini mit Alexa eine Rolllade steuern
(26.07.2020 11:23)SiR WonG schrieb:  ...
Warum das Delay nicht funktioniert ist mir echt ein Rätsel weil dort meiner Meinung nichts dagegen spricht.

DANKE

Gruß Daniel

...dann poste doch mal deinen Sketch in Code "#" Tags.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.07.2020, 12:12
Beitrag #5
RE: mit einem Wemos D1 mini mit Alexa eine Rolllade steuern
(26.07.2020 11:43)Bitklopfer schrieb:  
(26.07.2020 11:23)SiR WonG schrieb:  ...
Warum das Delay nicht funktioniert ist mir echt ein Rätsel weil dort meiner Meinung nichts dagegen spricht.

DANKE

Gruß Daniel

...dann poste doch mal deinen Sketch in Code "#" Tags.
lgbk

Huh

Hab ich doch. Siehe erster Post.

hier aber noch mal ein Auszug:
Code:
if ( (strcmp(device_name, "Rolllade1") == 0) ) {
        if (state) {
          digitalWrite(SWITCH_PIN1, HIGH);
          Serial.printf("Rolllade1 wird angeschaltet.");
          delay(1000);                                                            // mein Delay
          digitalWrite(SWITCH_PIN1, LOW);                             // mein Mist
          Serial.printf("Rolllade1 wird ausgeschaltet.");              // mein Mist
      
} else {
          digitalWrite(SWITCH_PIN1, LOW);
          Serial.printf("Rolllade1 wird ausgeschaltet.");
        }
      }


      if ( (strcmp(device_name, "Rolllade2") == 0) ) {
        if (state) {
          digitalWrite(SWITCH_PIN2, HIGH);
          Serial.printf("Rolllade2 wird angeschaltet.");
          delay(1000);                                                            // mein Delay
          digitalWrite(SWITCH_PIN2, LOW);                             // mein Mist
          Serial.printf("Rolllade2 wird ausgeschaltet.");              // mein Mist
        } else {
          digitalWrite(SWITCH_PIN2, LOW);
          Serial.printf("Rolllade2 wird angeschaltet.");
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.07.2020, 12:19
Beitrag #6
RE: mit einem Wemos D1 mini mit Alexa eine Rolllade steuern
Bitte mach mal genauere Angaben.
Welches Relais und wie hast du es angeschlossen.

Ich vermute deine Spannung bricht zusammen oder es fehlt eine Freilaufdiode.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.07.2020, 12:42 (Dieser Beitrag wurde zuletzt bearbeitet: 26.07.2020 14:15 von SiR WonG.)
Beitrag #7
RE: mit einem Wemos D1 mini mit Alexa eine Rolllade steuern
Tausend Bilder sagen ...

Was ich halt nicht verstehe wieso es nichts ändert wenn ich die delay Zeit ändere.

Grüße Daniel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.07.2020, 13:21
Beitrag #8
RE: mit einem Wemos D1 mini mit Alexa eine Rolllade steuern
(26.07.2020 12:42)SiR WonG schrieb:  Tausend Bilder sagen...
rechte Maus/ Bild in neuem Tab öffnen
N
Was ich halt nicht verstehe wieso es nichts ändert wenn ich die delay Zeit ändere.

Grüße Daniel

Ich sehe kein Bild.
Setze das Bild bitte direkt ins Forum, dann bleibt es auch erhalten.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  WS2812b am Wemos mini - Idee, warum's nicht geht? a-stern.1 10 851 03.07.2020 05:17
Letzter Beitrag: N1d45
  WEMOS D1 mini pro nach 4 Jahren gestorben Tommy56 1 366 02.07.2020 05:52
Letzter Beitrag: amithlon
  ESP8266 (Wemos D1 Mini) - WifiManager und TimerInterrupt fiberman 10 980 30.06.2020 06:24
Letzter Beitrag: amithlon
  i2c LCD Display am Wemos D1 Mini mit mqtt klappt nach modifikation nicht raspido 5 671 15.06.2020 22:19
Letzter Beitrag: stw
  D1 Mini Windmessung - Interrupt/Zeitfaktor rev.antun 15 1.158 13.06.2020 13:00
Letzter Beitrag: nbk83
  Wemos D1 R2, Kein Reset wenn 5V Ausgang belegt ist LutzS 14 1.341 24.05.2020 21:07
Letzter Beitrag: LutzS
  Wemos D1 mini (ESP8266) wechselt nicht mehr in auto-sleep Zipfel1 5 931 27.04.2020 14:07
Letzter Beitrag: rev.antun
  Alexa Controlled Home Automation by Emulating a WeMo Device using ESP32 2uk 4 591 27.04.2020 09:17
Letzter Beitrag: Fips
  Wemos D1 mini mit Switch input ButtaMartin 3 864 06.03.2020 14:17
Letzter Beitrag: ButtaMartin
  Wemos D1 Mini Deepsleep Wlan Zeit plastikjoe 11 2.800 29.02.2020 11:29
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste