Ankündigung

Einklappen
Keine Ankündigung bisher.

ESP8266 über WLAN an KNX

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

    So, bin einen Schritt weiter.
    Auf dem Sonoff läuft bereits die 2.3.0 -
    2_3_0/1.5.3(aec24ac9))
    dennoch hört er schlecht und verliert Telegramme, bei denen er eigentlich schalten sollte. Angebunden ist der Basic über einen Gira IP-Router und liegt im Backbonebereich mit seiner Phys-Adr. (0.0.175).

    Ich frag mal andersrum: Hat das hier jemand am Laufen, ohne das Telegramme verloren gehen? Und wie ist dann die Konstellation und Komponenten?
    Gruß Christian

    Kommentar


      KNX schaltet die S20 nun geschmeidig.
      Über das Webinterface hatte ich wohl vorher einer älteren Tasmota Version, die 6.2.1 drauf. Nun habe ich über die Arduino IDE die Tasmota 6.2.1.11 und die schaltet geschmeidig! ;-)

      Nach den Parametern für die Arduino IDE habe ich etwas gesucht, bis das lief. Das sind nicht die Standardparameter.Darum poste ich die mal hier.

      Board: "Generic ESP8266 Module"
      Flash Mode: "DOUT"
      Flash Frequency: "40MHz"
      Upload Using: "Serial"
      CPU Frequency: "80MHz"
      Flash Size: "1M (no SPIFFS)"
      Debug Port: "Disabled"
      Debug Level: "None"
      Reset Method: "ck"
      Upload Speed: "115200"


      Gruß Christian

      Kommentar


        Hallo,

        hat jemand von Euch eine Idee wie ich den Wert eines GA-s mit der Hilfe vom ESP KNX IP Library abragen kann? Beim Starten der ESP8266 möchte ich ein Read Request an eine bestimmte GA senden.

        Danke

        Kommentar


          Ich habe inzwischen die Möglichkeit für die GA Abfrage gefunden.

          Kommentar


            Das mit den verloren gehenden Telegrammen scheint ein Netzwerkproblem zu sein. Zitat von der Entwickler-Seite (
            https://github.com/arendst/Sonoff-Ta...KNX-Features):
            ​​​​​​If the Sonoff device is connecting to a Wifi Repeater you might experience some issues receiving KNX Telegrams. This also applies to mDNS and Emulation features.
            Ich verschicke per SmarthomeNG einfach parallel noch einen Http-Request zum ESP. Dann klappt es auch am Repeater - blöder Workaround, der aber seinen Zweck erfüllt.

            Kommentar


              Ich hab das mit den verlorenen Telegrammen auch nicht in den Griff bekommen. Mein Netzwerk besteht mittlerweile ausschließlich aus Unifi-Komponenten, die tadellos ihren Dienst tun. Letzte Woche habe ich dann wieder das Sonoff im Schuppen auf MQTT umgeschmissen und seit dem keinerlei Probleme mehr.

              Wirklich aufgefallen ist es mir erst seit die Tage wieder kürzer werden, da mein Strahler im Carport dran hängt und der BWM darüber meldet. Es kam halt immer wieder vor, dass der Strahler nicht ein- bzw. ausgeschaltet wurde. Gesteuert wird das ganze in einer Edomi-Logik. Zum einen konnte ich im Edomi-GA-Monitor beobachten, dass der BWM nicht sauber gemeldet hat und zum anderen dass die Befehle zum schalten des Strahlers zwar abgesetzt wurden, aber vom Sonoff nicht verarbeitet wurden. Mit MQTT läuft es nun immer.

              Ist zwar schade, aber irgendwo auch eine Erkenntnis.

              Gruß
              Sven

              Kommentar


                Zitat von OleDeluxe Beitrag anzeigen
                Ich hab das mit den verlorenen Telegrammen auch nicht in den Griff bekommen.
                Hallo Sven,

                KNX über IP-Multicast hat hier schon einigen, mir eingeschlossen, Probleme gemacht. Ich habe auch nie herausgefunden, wo das Problem genau lag, evtl. an der Verbindung über WLAN-Repeater. Einen Alternative zum Multicast ist eine Tunneling-Verbindung, doch sind die meisten KNX-IP-Schnittstellen begrenzt in der Anzahl der parallelen Tunnel. Ich habe für mich selbst eine Firmware für die Sonoffs gebastelt, die stattdessen die eigene API des eibd/knxd benutzt. Durch die TCP-Verbindung läuft das sehr stabil, aber natürlich muss man einen eibd/knxd in Betrieb haben. In meinem Fall läuft selbiger sowieso auf dem Wiregate, alternativ würde es natürlich auch ein Raspi o.ä. tun. Den Code habe ich hier abgelegt, falls Interesse daran bestehen sollte: https://github.com/McOrvas/sonoff-knxd

                Natürlich kann man KNX-Gruppenadressen auch in MQTT-Topics abbilden (was ich zuerst auch tun wollte), jedoch braucht man dafür dann wieder eine separate Schnittstelle, die zwischen beiden Welten übersetzt. Und mein Ziel ist es, möglichst wenig Komplexität ins System zu bringen.

                Gruß
                Manfred

                Kommentar


                  Hallo,

                  ich versuche mich auch gerade an ESP und KNX. Ich habe jetzt alles in Arduino IDE kopiert und meine WLAN Daten eingegeben. Leider kommt beim überprüfen immer ein Fehler. Muss ich noch was anderes ändern oder eintragen?
                  You do not have permission to view this gallery.
                  This gallery has 1 photos.

                  Kommentar


                    Hallo,

                    ohne dass ich dein Projekt detailliert kennen würde...hast Du #include <esp-knx-ip.h> in deinem cpp file (wahrscheinlich)?
                    Und ich glaube Du solltest:
                    callback_id_t my_callbacki = knx.callback_register("Test", my_callback);
                    verwenden.

                    Und noch eine Idee:
                    bewege die Definition von my_callback(...) vor der setup()Methode.
                    Zuletzt geändert von aandras; 09.12.2018, 20:58.

                    Kommentar


                      Hi und danke für deine Antwort. Stehe so ein bisschen auf dem Schlauch. Was meinst du, mit "#include <esp-knx-ip.h> in deinem cpp file (wahrscheinlich)?"

                      Kommentar


                        Ich meinte dass Du <esp-knx-ip.h> inkludieren solltest. Und dass Du das wahrscheinlich gemacht hast.

                        Kommentar


                          Hallo zusammen,

                          nachdem der Sketch, mit dem der Thread begonnen hat, bei mir nicht funktionierte, habe ich ihn auf ESPdht umgestellt, und einen delay eingefügt, damit das Telegram für die Luftfeuchtigkeit nicht verloren geht.
                          Getestet mit mit einem ESP8266 ESP-01 1M. Funktioniert prinzipiell. Leider bei mir immer nur für einige wenige Zyklen, danach liest er die Werte vom DHT22 nicht mehr. Ich fürchte, ich habe das Ding mit etwas über 5V mal fritiert.

                          Grüße

                          Peter


                          Code:
                          /*
                           * DHT11 to KNX
                           */
                          
                          #include <esp-knx-ip.h>
                          #include <DHTesp.h>
                          
                          // WiFi config
                          const char* ssid = "mypass";
                          const char* pass = "mypass";
                          
                          #define LED_PIN LED_BUILTIN
                          #define UPDATE_INTERVAL 10000 // Default send and debug interval
                          #define DHTTYPE DHT22
                          #define DHTPIN 2
                          // To adjust the amount of data traffic by delaytime in the loop
                          #define LOOPDELAY 1000
                          // To adjust the period between telegrams of temperature and humidity
                          #define TELDELAY 100
                          
                          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;
                          
                          //DHTesp dht(DHTPIN, DHTTYPE);
                          DHTesp dht;
                          
                          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();
                              dht.setup(DHTPIN, DHTesp::DHTTYPE);
                          
                              // 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.getTemperature();
                                  float hum = dht.getHumidity();
                                  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.write_2byte_float(knx.config_get_ga(temp_ga), temp);
                                  delay(TELDELAY);
                                  knx.write_2byte_float(knx.config_get_ga(hum_ga), hum);
                              }
                              delay(LOOPDELAY);
                          }
                          Zuletzt geändert von Peter88; 17.12.2018, 15:08.

                          Kommentar


                            Hallo Zusammen,

                            ich habe hier auch mal eine Frage, habe einen ESP8266 / NodeMCU / und ein Sonoff TH10 mit Tasmota geflasht.
                            Ich habe ein KNX IP Interface MDT SCN-IP000.02.
                            Kann ich das KNX IP INTERFACE direkt ansprechen bzw. Temperaturwerte an den Bus senden ? oder brauche ich hier KNXD ?

                            Das verstehe ich noch nicht so ganz, habe dem Sonoff die Adresse Bsp: 1.1.100 gegeben, auch eine Gruppenadresse 2.2.200 aber auf dem Bus kommt nichts an.

                            Hat da jemand ein Beispiel ? bzw. kann das erklären was da gemacht werden muss ?!

                            Vielen Dank vorab

                            Kommentar


                              Du brauchst einen IP Router, das Interface reicht nicht. Also entweder den knxd das Routing übernehmen lassen oder halt einen Hardware-Router kaufen.

                              Kommentar


                                Zitat von MarcusF Beitrag anzeigen
                                Du brauchst einen IP Router, das Interface reicht nicht. Also entweder den knxd das Routing übernehmen lassen oder halt einen Hardware-Router kaufen.
                                Am KNXD sehe ich alles was auf dem Bus geschrieben wird, nur von TASMOTA siehe ich nichts.

                                //EDIT//
                                Erledigt, am Interface des KNXD - SERVER war die Multicast nicht mehr vorhanden ! Funktioniert nun wie gewünscht.

                                SYNOLOGY > VMM > RASPERRY X86 VM > KNXD DIENST > IP-INTERFACE <> SONOFF / KNX
                                Zuletzt geändert von ibase; 09.02.2019, 07:40.

                                Kommentar

                                Lädt...
                                X