- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 2 von 2

Thema: MQTT-gesteuerte Rolläden mit ESP32-Clients schalten unzuverlässig! Mesh Schuld?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    14.10.2016
    Beiträge
    45

    MQTT-gesteuerte Rolläden mit ESP32-Clients schalten unzuverlässig! Mesh Schuld?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo zusammen,
    trotz gutem Wlan-Netzausbau (Fritzbox und mehreren Mesh-Repeatern) schalten ab und zu einige ESP32 nicht (Arduino-IDE / C++). Mann muss den ausgestiegenen ESP dann stromlos machen damit er wieder schaltet. Laut meiner Unterlage mit Stand Juni 2020 kann die Arduino-IDE noch kein Mesh. Ist das noch so?

    Kann das die Ursache sein?

    Der Rolladen in der Nähe des Routers hatte noch nie einen Ausfall, um so weiter weg, um so unzuverlässlicher schalten die ESP's trotz starken Signalen. Ich schalte mit QOS1.

    Wie würdet ihr vorgehen um den Fehler zu finden?

    Danke

    Das Program:

    Code:
    #include <WiFi.h>
    #include <PubSubClient.h>
     
    const char* SSID = "xxxx";
    const char* PSK = "999999";
    const char* MQTT_BROKER = "192.16....";
    
    const char* CLIENT_ID = "e32_123";
    const char* CLIENT_TOPIC = "vorne/rl1";
    
    char char1_oldmsg[1] ={'x'};
     
    WiFiClient espClient;
    
    PubSubClient client(espClient);
    int hochpin = 32;
    int runterpin = 33; 
    
    void setup() {
        Serial.begin(115200);
    
        pinMode(hochpin, OUTPUT);
        pinMode(runterpin, OUTPUT);
    
        digitalWrite(hochpin, HIGH); /*Relais zu Anfang auf OFF */
        digitalWrite(runterpin, HIGH);/*Relais zu Anfang auf OFF */
        Serial.println("Pins auf off gesetzt");
        delay(1500);
        setup_wifi();
        client.setServer(MQTT_BROKER, 1883);
        client.setCallback(callback);
    }
     
    void setup_wifi() {
        delay(10);
        WiFi.begin(SSID, PSK);
        while (WiFi.status() != WL_CONNECTED) {
          Serial.print(".");
          delay(500);
        }
        Serial.println("IP address: ");
        Serial.println(WiFi.localIP());
     }
     
    void callback(char* topic, byte* payload, unsigned int length) {
        char msg[length+1];
    
        for (int i = 0; i < length; i++) {
            msg[i] = (char)payload[i];
            /*Serial.print(msg[i]);*/
        }
         Serial.println("--");
         msg[length] = '\0';
    
        if (msg[0] != char1_oldmsg[0])
        {
            Serial.println("pos1");
            if(strcmp(msg,"hoch")==0)
              {
                  digitalWrite(runterpin, HIGH);
                  delay(100);
                  digitalWrite(hochpin, LOW);
                  delay(100);
                  Serial.println("---runter---");
              }
            else if(strcmp(msg,"runter")==0)
              {   
                digitalWrite(hochpin, HIGH);
                delay(100);
                digitalWrite(runterpin, LOW);
                delay(100);
                Serial.println("---hoch---");
              }
            else if(strcmp(msg,"stop")==0)
              {   
                digitalWrite(hochpin, HIGH);
                delay(100);
                digitalWrite(runterpin, HIGH);
                delay(100);
                Serial.println("---stop---");
              } 
            char1_oldmsg[0] = msg[0];
        }    
    }
    
    void reconnect() {
        while (!client.connected()) {
            if (client.connect(CLIENT_ID))
            {
               client.subscribe(CLIENT_TOPIC);     
            }
            else
            {
               Serial.println("failed, rc=");
               Serial.println(client.state());
               Serial.println(" try again in 5 seconds");
               delay(5000);
            }
        }
    }    
     
    void loop() {
        if (!client.connected()) {
            reconnect(); 
        }
        client.loop();
    }

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    14.10.2016
    Beiträge
    45
    Meine Tests haben es bestätigt : die Arduino-IDE kann derzeit kein MQTT innerhalb einem Mesh-Netz. Die ESP-IDF soll es hingegen können.

Ähnliche Themen

  1. Mehrere Rolläden steuern
    Von stepbystep im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 12
    Letzter Beitrag: 06.11.2020, 08:46
  2. Zigbee XBee Mesh Adressierung / UART
    Von spelli2001 im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 04.09.2011, 22:08
  3. RC5Empfang unzuverlässig
    Von funkheld im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 14.09.2010, 11:53
  4. Schreiben und Lesen aus dem EEProm unzuverlässig
    Von Razer im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 29.08.2006, 16:09
  5. addLink mit mehrerer Clients - Protokoll?
    Von WernerMeier im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 13.07.2004, 09:26

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests