Ankündigung

Einklappen
Keine Ankündigung bisher.

ESP8266 über WLAN an KNX

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

    Hallo zusammen,

    ich hätte da auch mal eine Frage. Ich bekomme einfach keine Daten auf den Bus.
    Getestet mit dem Programm von Woda auf der ersten Seite, sowie den Beispielen aus der Library.
    Der Zugriff auf das Webinterface funktioniert und in der seriellen Ausgabe sieht man wie die Pakete eigentlich geschrieben werden.
    Egal ob ich die Gruppenadresse im Webinterface eingebe oder mit dem Projekt https://github.com/envy/esp-knx-ip/wiki/Tutorial fest eintrage, es tut sich nichts.
    Die KNX-Konfiguration hab ich gegengetestet mit der drahtgebundenen Version (Arduino mit BCU) und da funktioniert alles.
    Nun bin ich etwas Ratlos, vielleicht kann mir jemand einen Tipp geben wie ich dahinter kommen könnte was da nicht stimmt.
    Danke im Voraus!

    Kommentar


      Hi, ich bräuchte mal eure Unterstützung.
      Hab über Tasmota ein 4 Kanal-Relais eingebunden(Soll Lautsprecher-Signale switchen). Im Verteiler hängt ein MDT Router.
      ioBroker liest auch auf dem Bus mit und schaltet einige Sperrfunktionen, die neuen GAs hab ich aber da noch nicht eingelesen und vorher auch nie verwendet.
      Den schließe ich als Fehler mal aus.

      -Relais lässt sich aus der Tasmota WebUI und durch Forcen der GA schalten. Kommunikation ist also augenscheinlich gegeben.

      Leider bekomme ich meinen Schalter nicht dazu die GA umzuschalten.
      Folgende Punkte würde ich als Fehler Vermuten.
      -FLAGS falsch konfiguriert(Standard des Tasters übernommen)?
      -Multicast falsch?
      -Dummy falsch?
      -GA am Tunnel nötig?

      Wäre Super, wenn ihr mal drüber schaut.
      KNXvsTASMOTApng.png

      Kommentar


        Hi,

        Zitat von fanatikz Beitrag anzeigen
        Folgende Punkte würde ich als Fehler Vermuten.
        der wichtigste fehlt: Topologie!

        Wenn Dein IP-Gerät eine PA aus der TP-Linie hat, denkt der Router doch nicht dran, die GA in die IP-Linie zu routen. Warum sollte er. Würdest Du ein echtes KNX-IP-Gerät haben, hätte Dir die ETS schon gesagt, dass Du das nicht in eine TP-Linie hängen kannst.

        Ich weiß jetzt nicht, welche PA Dein Router hat, wahrscheinlich 1.1.0, Dein Dummy für den Tasmota muss dann in 1.0.x, dann sollte es klappen.

        Gruß, Waldemar
        OpenKNX www.openknx.de

        Kommentar


          Zitat von mumpf Beitrag anzeigen
          Hi,



          der wichtigste fehlt: Topologie!

          Wenn Dein IP-Gerät eine PA aus der TP-Linie hat, denkt der Router doch nicht dran, die GA in die IP-Linie zu routen. Warum sollte er. Würdest Du ein echtes KNX-IP-Gerät haben, hätte Dir die ETS schon gesagt, dass Du das nicht in eine TP-Linie hängen kannst.

          Ich weiß jetzt nicht, welche PA Dein Router hat, wahrscheinlich 1.1.0, Dein Dummy für den Tasmota muss dann in 1.0.x, dann sollte es klappen.

          Gruß, Waldemar
          Kann dir jetzt nicht folgen? hab doch die 1.1.37 für den Dummy und in Tasmota vergeben.

          Kommentar


            Zitat von fanatikz Beitrag anzeigen

            Kann dir jetzt nicht folgen? hab doch die 1.1.37 für den Dummy und in Tasmota vergeben.
            OK, lange Leitung, jetzt ist es angekommen... Danke, werde ich testen.

            Kommentar


              Zitat von mumpf Beitrag anzeigen
              Dein Dummy für den Tasmota muss dann in 1.0.x,
              Der Tasmota muss dann natürlich auch die PA 1.0.x bekommen, das hatte ich nicht geschrieben, sorry.

              Gruß, Waldemar
              OpenKNX www.openknx.de

              Kommentar


                Zitat von mumpf Beitrag anzeigen

                Der Tasmota muss dann natürlich auch die PA 1.0.x bekommen, das hatte ich nicht geschrieben, sorry.

                Gruß, Waldemar
                OK, eventuell hab ich doch noch eine Lücke. Hab eine neue Linie angelegt die arbeitet auf IP, muss ich die jetzt noch irgendwie verknüpfen?
                Verbindung ist aktuell wie bei TP auf "keine".
                Vermute, dass ich jetzt aber noch die Tunnel oder GAs zusammenschalten muss. Alle Versuche führen ins nichts. Eventuell sollt ichs für heute gut sein lassen.
                KNXvsTASMOTA2.png

                Kommentar




                  OK, hier fehlt vermutlich auch noch was.
                  KNXvsTASMOTA3.png
                  Zuletzt geändert von fanatikz; 31.07.2020, 00:32.

                  Kommentar


                    Hi,

                    damit ein Router routen kann, muss er die PA x.x.0 haben, in Deinem Fall also 1.1.0. Seine übergeordnete Linie 1.0 muss dann eine IP-Linie sein (also keine neue IP-Linie 1.2, nimm die vorhandene 1.0). Den Tasmota setzt Du dann auch auf diese IP-Linie, also bekommt der eine Adresse 1.0.x, sein Dummy dann auch.
                    Router mit Secure kenne ich nicht, bin mir aber sicher, dass Du KNX-Secure auf der IP-Ebene abschalten muss, sonst wird das der Tasmota nicht verstehen. Für einen Test kann man auch temporär das Filtern abschalten, damit alle Telegramme durchgelassen werden, aber ich würde das nicht im Produktiven System machen.

                    Gruß, Waldemar
                    OpenKNX www.openknx.de

                    Kommentar


                      Zitat von mumpf Beitrag anzeigen
                      Hi,

                      damit ein Router routen kann, muss er die PA x.x.0 haben, in Deinem Fall also 1.1.0. Seine übergeordnete Linie 1.0 muss dann eine IP-Linie sein (also keine neue IP-Linie 1.2, nimm die vorhandene 1.0). Den Tasmota setzt Du dann auch auf diese IP-Linie, also bekommt der eine Adresse 1.0.x, sein Dummy dann auch.
                      Router mit Secure kenne ich nicht, bin mir aber sicher, dass Du KNX-Secure auf der IP-Ebene abschalten muss, sonst wird das der Tasmota nicht verstehen. Für einen Test kann man auch temporär das Filtern abschalten, damit alle Telegramme durchgelassen werden, aber ich würde das nicht im Produktiven System machen.

                      Gruß, Waldemar
                      Waldemar, du bist mein Held, das hat geklappt, jetzt funkt das alles wie gewünscht. Vielen Dank.

                      Kommentar


                        Hallo zusammen,
                        bin neu hier und bin via Google auf diesen Beitrag aufmerksam geworden.

                        Meine Idee ist meine Zisterne die leider nur mit einem Schwimmerschalter ausgestattet ist mit einem HC-SR04 auszustatten.
                        Leider habe ich dort nur ein zweiadriges Kabel liegen. Somit könnte ich zwar die Stromversorgung schaffen, mehr aber nicht.
                        Daher die Idee per Wlan an KNX zu senden.

                        Auf Seite 10 dieses Beitrages wurde das ja schon versucht und ist wohl auch geglückt. (https://knx-user-forum.de/forum/%C3%...68#post1193668)

                        Leider bekomme ich es nicht so ganz hin.
                        Der NodeMCU sendet zwar immer fleißig aber am KNX Bus kommt nichts an.
                        Siehe Screenshot.
                        Bus Monitor Screenshot habe ich jetzt mal nicht angehängt, aber da kommt einfach rein gar nichts vom NodeMCU an.
                        Ich habe einen Gira IP-Router und dieser steht auch auf Multicast. Die Multicast IP ist auch die Standard IP.

                        Vielleicht kann mir jemand helfen. Stehe da gerade etwas auf dem Schlauch.

                        Vielen Dank.

                        Hier noch das Script
                        Code:
                        #include <esp-knx-ip.h>
                        
                        // WiFi config
                        const char* ssid = "XXXX";
                        const char* pass = "XXXXXXX";
                        
                        //Define
                        #define LED_PIN LED_BUILTIN
                        #define UPDATE_INTERVAL 10000 // Default send and debug interval
                        #define echoPin D7 // Echo Pin
                        #define trigPin D6 // Trigger Pin
                        #define MinDist 5
                        #define MaxDist 700
                        
                        //Variablendeklaration
                        unsigned long next_data_change = 0;
                        unsigned long next_debug_change = 0;
                        
                        // Duration used to calculate distance
                        long duration, distance;
                        int diverence, percentage;
                        
                        //Gruppenadressen
                        config_id_t dist_ga;
                        config_id_t distproz_ga;
                        
                        //Konfigurationselemente
                        config_id_t hostname_id;
                        config_id_t send_rate_id;
                        config_id_t debug_rate_id;
                        config_id_t distmin_id;
                        config_id_t distmax_id;
                        
                        
                        
                        void setup() {
                        Serial.begin(9600);
                        //Serial.begin(115200);
                        pinMode(LED_PIN, OUTPUT);
                        pinMode(trigPin, OUTPUT);
                        pinMode(echoPin, INPUT);
                        
                        IPAddress ip(XXXXXXX);
                        IPAddress dns(XXXXXXXXX);
                        IPAddress gateway(XXXXXXXXX);
                        IPAddress subnet(XXXXXXXXX);
                        WiFi.config(ip, dns, gateway, subnet);
                        
                        //Register der Callbacks
                        knx.register_callback("Distanz", dist_callback);
                        knx.register_callback("Distanz Status", distState_callback);
                        
                        //Register der Gruppenadressen
                        dist_ga = knx.config_register_ga("Entfernung");
                        distproz_ga = knx.config_register_ga("Entfernung Prozent");
                        
                        // And the config options
                        hostname_id = knx.config_register_string("Hostname", 20, String("env"));
                        send_rate_id = knx.config_register_int("Senderate (ms)", UPDATE_INTERVAL);
                        debug_rate_id = knx.config_register_int("Serial debug rate (ms)", UPDATE_INTERVAL);
                        distmin_id = knx.config_register_int("Entfernung Minimum", MinDist);
                        distmax_id = knx.config_register_int("Entfernung Maximum", MaxDist);
                        
                        // Load previous values from EEPROM
                        knx.load();
                        
                        
                        // 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(send_rate_id);
                        digitalWrite(trigPin, LOW);
                        delayMicroseconds(2);
                        digitalWrite(trigPin, HIGH);
                        delayMicroseconds(10);
                        digitalWrite(trigPin, LOW);
                        duration = pulseIn(echoPin, HIGH);
                        //Calculate the distance (in cm) based on the speed of sound.
                        distance = duration/58.2;
                        Serial.print("Entfernung: ");
                        Serial.println(distance);
                        Serial.print("Min: ");
                        Serial.println(knx.config_get_int(distmin_id));
                        Serial.print("Max: ");
                        Serial.println(knx.config_get_int(distmax_id));
                        diverence = knx.config_get_int(distmax_id)-knx.config_get_int(distmin_id);
                        Serial.print("Differenz: ");
                        Serial.println(diverence);
                        percentage = map(distance,knx.config_get_int(distmin_id),knx.co nfig_get_int(distmax_id),0,100);
                        Serial.print("%: ");
                        Serial.println(percentage);
                        knx.write2ByteInt(knx.config_get_ga(distproz_ga), percentage);
                        knx.write2ByteInt(knx.config_get_ga(dist_ga), distance);
                        }
                        delay(50);
                        }
                        
                        void dist_callback(knx_command_type_t ct, address_t const &received_on, uint8_t data_len, uint8_t *data)
                        {
                        switch (ct)
                        {
                        case KNX_CT_WRITE:
                        knx.write2ByteInt(knx.config_get_ga(dist_ga), *data);
                        //knx.write1Bit(knx.config_get_ga(Ch1Ack_GA), *data);
                        break;
                        }
                        }
                        
                        void distState_callback(knx_command_type_t ct, address_t const &received_on, uint8_t data_len, uint8_t *data)
                        {
                        switch (ct)
                        {
                        case KNX_CT_READ:
                        digitalWrite(trigPin, LOW);
                        delayMicroseconds(2);
                        digitalWrite(trigPin, HIGH);
                        delayMicroseconds(10);
                        digitalWrite(trigPin, LOW);
                        duration = pulseIn(echoPin, HIGH);
                        distance = duration/58.2;
                        knx.answer1Bit(knx.config_get_ga(dist_ga), distance);
                        break;
                        }
                        }
                        You do not have permission to view this gallery.
                        This gallery has 1 photos.

                        Kommentar


                          Hallo Woda ,

                          der Beitrag von 2017 ist zwar schon älter aber ich hoffe Sie können mir trotzdem helfen !
                          Ich habe obigen Source Code kopiert und versucht zu kompilieren ,leider bekomme ich folgenden Fehler :

                          DHT11_to_KNX:116:13: error: 'class ESPKNXIP' has no member named 'write2ByteFloat'

                          knx.write2ByteFloat(knx.config_get_ga(hum_ga), hum);

                          die lib : <esp-knx-ip.h> habe ich eingebunden.

                          Der Code könnte eine schmerzliche Lücke( wenige Anschlüsse der onewire structur funktionieren nicht ) bei der Inbetriebnahme eines Neubaus ( mit LOGO8 /KNX und onewire geplant wurde ) beheben ! wenn es mir gelingt den Code zu nutzen wäre ich und der Bauherr sehr zufrieden!
                          Ich kenne mich leider mit KNX wenig aus ,kann aber MQTT ESP8266 und Mosquitto habe privat bei mir ein kleines netzwerk mit Node Red am Laufen . Der Bauherr programmiert selbst sein KNX-Umgebung mit ETS5 und wir beide könnten das Problem warscheinlich lösen

                          MFG

                          Kommentar


                            Zitat von MaKojett Beitrag anzeigen
                            error: 'class ESPKNXIP' has no member named 'write2ByteFloat'
                            wenn ich in den Code esp-knx-ip.h auf github schaue, heisst die Funktion write_2byte_float( ... )
                            Der Unterschied liegt in den verloren gegangenen Underscores; schau mal, ob es mit folgendergeänderten Aufruf-Zeile funktioniert
                            Code:
                            knx.write_2byte_float(knx.config_get_ga(hum_ga), hum);

                            Kommentar


                              Ok Danke knxPaul ,

                              hätte ich ja auch mal selbst nachschauen und suchen können ! Ändere ich gleich mal in meinem sourcecode. !!!

                              MFG Martin

                              Kommentar


                                Hallo liebe KNX Gemeinde,
                                bin gerade auch auf das Projekt aufmerksam geworden, ich wuerde mir damit gerne einen Niederschlagssensor bauen. Waere der jetzige Code fuer Batterieanwendungen sinnvoll? Ich wuerde am liebsten den ESP in den Tiefschlaf versetzen, und nur aufwachen lassen wenn am Eingang ein Impuls kommt.
                                Dann soll er kurz eine GA senden und wieder weiterschlafen. Ich habe gesehen dass sich bisher die GAs ja nur zyklisch senden lassen oder?
                                MFG Andi

                                Kommentar

                                Lädt...
                                X