Ankündigung

Einklappen
Keine Ankündigung bisher.

ESP8266 über WLAN an KNX

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    ESP8266 über WLAN an KNX

    Hallo zusammen,
    ich bin da zufällig über diese Seite im GitHub gestolpert: https://github.com/envy/esp-knx-ip
    Im Forum gibt es bisher dazu nichts zu lesen, daher möchte ich diese Information teilen.
    Die ersten Versuche waren auch direkt erfolgreich.

    Mit diesem Code bekomme ich beispielsweise einen DHT11 an den KNX Bus:

    Code:
    /*
     * DHT11 to KNX
     */
    
    #include <esp-knx-ip.h>
    #include <DHT.h>
    
    // WiFi config
    const char* ssid = "SSID";
    const char* pass = "PASS";
    
    #define LED_PIN LED_BUILTIN
    #define UPDATE_INTERVAL 10000 // Default send and debug interval
    #define DHTTYPE DHT11
    #define DHTPIN  D2
    
    unsigned long next_data_change = 0;
    unsigned long next_debug_change = 0;
    
    config_id_t temp_ga, hum_ga;
    config_id_t hostname_id;
    config_id_t temp_rate_id;
    config_id_t debug_rate_id;
    
    DHT dht(DHTPIN, DHTTYPE);
    
    void setup() {
        pinMode(LED_PIN, OUTPUT);
        Serial.begin(115200);
    
        // Register the group addresses
        temp_ga = knx.config_register_ga("Temperature");
        hum_ga = knx.config_register_ga("Humidity");
    
        // And the config options
        hostname_id = knx.config_register_string("Hostname", 20, String("env"));
        temp_rate_id = knx.config_register_int("Send rate (ms)", UPDATE_INTERVAL);
        debug_rate_id = knx.config_register_int("Serial debug rate (ms)", UPDATE_INTERVAL);
    
        // Load previous values from EEPROM
        knx.load();
    
        // Init sensor
        dht.begin();
    
        // Init WiFi
        WiFi.hostname(knx.config_get_string(hostname_id));
        WiFi.begin(ssid, pass);
    
        Serial.println("");
        Serial.print("[Connecting]");
        Serial.print(ssid);
    
        digitalWrite(LED_PIN, HIGH);
        while (WiFi.status() != WL_CONNECTED) {
            digitalWrite(LED_PIN, LOW);
            delay(500);
            Serial.print(".");
            digitalWrite(LED_PIN, HIGH);
        }
        digitalWrite(LED_PIN, LOW);
    
    
        // Start knx
        knx.start();
    
        Serial.println();
        Serial.println("Connected to wifi");
        Serial.println(WiFi.localIP());
        Serial.println(" ");
    }
    
    void loop() {
        // Process knx events, e.g. webserver
        knx.loop();
    
        unsigned long now = millis();
    
        // Debug Loop
        if (next_debug_change < now)
        {
            next_debug_change = now + knx.config_get_int(debug_rate_id); // Read debug rate setting
    
            if (WiFi.status() != WL_CONNECTED)
            {
                digitalWrite(LED_PIN, HIGH);
                Serial.println("WIFI ERROR");
            }else
            {
                digitalWrite(LED_PIN, LOW);
                Serial.println("WIFI OK");
            }
        }
    
        // Data Loop
        if (next_data_change < now)
        {
            next_data_change = now + knx.config_get_int(temp_rate_id);
            float temp = dht.readTemperature();
            float hum = dht.readHumidity();
            if ( isnan (temp) )
            {
                temp = -99.0;
            }
            if ( isnan(hum))
            {
                hum = -99.0;
            }
            Serial.print("T: ");
            Serial.print(temp);
            Serial.print("°C  H: ");
            Serial.print(hum);
            Serial.println("%");
            knx.write2ByteFloat(knx.config_get_ga(temp_ga), temp);
            knx.write2ByteFloat(knx.config_get_ga(hum_ga), hum);
        }
        delay(50);
    }
    Damit bekommt man sehr kostengünstig und ohne Umwege (MQTT) die entsprechenden Messwerte direkt über den KNX Router auf den BUS.

    Konfiguriert wird über den WEB-Browser
    ESP8266 to KNX Config.png

    Hier noch mein provisorischer Aufbau mit einem NodeMCU
    NodeMCU mit DHT11.png

    Viel Spaß beim spielen.

    Gruß
    Wolfgang

    #2
    Klingt spannend!

    Kommentar


      #3
      Zitat von henfri Beitrag anzeigen
      Klingt spannend!
      Sehr!

      Kommentar


        #4
        Gleich mal nen ESP bestellen hab da schon ein Projekt für in planung mal schauen ob ich das mit meinem wissen auch darauf umgesetzt bekomme

        Kommentar


          #5
          Danke!
          P.S. Wäre es nicht besser in DIY-Bereich aufgehoben?

          Kommentar


            #6
            Habe auch schon mal damit gebastelt, funktioniert ganz gut. Will damit eine WS2811 LED Sequenz steuern
            Das S in IoT steht für Security

            Kommentar


              #7
              Also endlich ohne viel Aufwand KNX-Gerärte an Orten, an denen kein KNX-Kabel liegt :-)

              Würde mich freuen, wenn einer der Arduino/ESP8266-Cracks den Code auf BME280 Sensoren mit Temp/Humidity/Pressure umschreiben könnte.

              Kommentar


                #8
                Hi!

                Der BME280 funktioniert im mitgelieferten Beispiel "examples\esp_knx_environment_sensor.ino" out of the box.

                Allerdings kaempfe ich hier mit erheblichen Abfragezeiten.
                Ein groupreadresponse dauert 20-30 Sekunden; bringt dann aber die korrekten Daten.
                Ich weiss noch nicht so recht, woran es liegt: knxd, Topologie, WLAN?
                Bei Euch klappt das wie es soll?

                Viele Gruesse, Oliver

                Kommentar


                  #9
                  Bin hier leider völliger Laie... könnte man da eine Firmware für
                  Sonoff RF WiFi Wireless Smart Home Automation Switch mit ESP8266 und 433Mhz MQTT
                  generieren?
                  Wäre eine tolle Sache, könnte ich mir einen EDOMI LBS sparen...
                  Hab da mal zwei bestellt, sind aber noch nicht da.

                  Kommentar


                    #10
                    hmm, das geht wahrscheinlich. Ist aber "aufwändig", da ein FTDI benötigt wird (2,95EUR oder so in der Bucht) und angefriemelt werden will:

                    https://tech.scargill.net/itead-slampher-and-sonoff/

                    Der nativ auf z.B. dem NodeMCU enthaltene USB-Port fehlt da.

                    Kommentar


                      #11
                      Den FTDI braucht man doch nur zum programmieren oder? Es gibt ja Firmwares für Sonoff, z.B. Tasmota, von daher benötigt man den FTDI doch sowieso, wenn man die Sonoffs entsprechend mit Custom-Firmware einsetzen möchte?

                      Wenn die Firmware dann mal drauf ist, wird der FTDI ja nicht mehr benötigt, weil alles über WLAN geht. Also sollte es doch relativ einfach umzusetzen sein (wenn man programmieren kann :-) ).

                      Kommentar


                        #12
                        FTDI ist schon da, da ja sowieso Firmware getauscht wird

                        Kommentar


                          #13
                          Zitat von halloween Beitrag anzeigen
                          Den FTDI braucht man doch nur zum programmieren oder? Es gibt ja Firmwares für Sonoff, z.B. Tasmota, von daher benötigt man den FTDI doch sowieso, wenn man die Sonoffs entsprechend mit Custom-Firmware einsetzen möchte?
                          Ist Tasmota ein anderer Bootloader, der dann OTA-Updates ermöglicht?

                          Dann würde ich das be-ja-en, sonst: ja, jedes mal wenn programmiert werden soll. Wobei: Wenn ich das Beispiel richtig deute, dann lässt sich die GA auch so oder so über die Web-Oberfläche der KNX-ESP-Software umstellen. Mehr als An-Aus (lesen und schreiben) kann man da eh nicht zum kommunizieren rausgeben.

                          Ich traue meinen Selbst-Friemel-Geräten aber keine 230V zu, und ein modifizierter Sonoff zählt IMHO dann zu selbstgefriemelt...

                          Kommentar


                            #14
                            Tasmota ist eine andere Firmware, kann schon sein, dass dann alles weitere über OTA geht. Ich habs noch nicht ausprobiert.

                            Schaust du hier: https://github.com/arendst/Sonoff-Tasmota

                            Kommentar


                              #15
                              Bei Tasmota funktionieren auch OTA Updates und sonst kann man alles über die Weboberfläche konfigurieren.
                              Allerdings kann die Tasmota Fw kein KNX von haus aus. Die Fw setzt rein auf Mqtt.
                              Hab ein Sonoff Dual mit Ds18b20 und ein H801 im Einsatz und funktionieren seit ca 6 Wochen problemlos.

                              Beim Flashen der Fw. Unbedingt darauf achten die Netzspannung vom Sonoff trennen!

                              Mfg

                              Kommentar

                              Lädt...
                              X