Ankündigung

Einklappen

ETS5 Sammelbestellung Vollversion

Infos unter: Link
Mehr anzeigen
Weniger anzeigen

ESP8266 KNX mit ETS

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

    ESP8266 KNX mit ETS

    Hallo allerseits,

    ich habe ein weiteren KNX-Stack für ESP8266 und SAMD21 entwickelt. Im Unterschied zu anderen Lösungen lässt sich der ESP damit per ETS konfigurieren. Programmierknopf, Programmierled und WPS sind integriert.

    Arduino-Lib:
    https://github.com/thelsing/knx

    Demo:
    https://github.com/thelsing/knx/tree/master/examples/knx-demo

    Die Demo kann normal über Beispiele->knx-esp in der Arduino-IDE ausgewählt werden.

    Nach dem flashen muss der ESP manuell resettet werden da sonst der Neustart beim programmieren per ETS nicht funktioniert.

    Ich nutze ein NodeMCU-Board, da es dort schon ein Led und einen Taster (Flash-Taster) gibt. Diese benutze ich als Programmiertaste und -Led. Man kann natürlich auch ein anderes ESP-Board nehmen. Im Beispiel ist die Led an GPIO16 und der Taster an GPIO0 gegen GND. Andere Pins lassen sich über knx.ledPin() bzw. knx.buttonPin() nutzen.

    Das Programm hat mehrere Zustände die durch die Led signalisiert werde und durch einen Button geändert werden können:
    Start -> noWifi

    NoWifi:
    - Led ist an
    - automatischer übergang nach Running wenn Wifi schon konfiguriert ist
    - durch Button wird zum Status WPS gewechselt

    WPS:
    - Led blinkt
    - Wifi wird versucht über WPS zu konfigurieren
    - bei Erfolg: Übergang zu Running
    - bei Misserfolg: Übergang zu NoWifi

    Running:
    -Led aus
    - kurzer Buttondruck -> Progammiermodus
    - langer Buttondruck -> WPS

    Programmiermodus:
    - Led blinkt
    - wie bei KNX-Geräten üblich

    Die Parameter werden bei der Demo ignoriert, aber auf der Seriellen Konsole ausgegeben.
    Die Demo erzeugt Zufallswerte und sendet sie an Objekt 1. Objekt 2 und 3 werden gesendet wenn der aktuelle Wert ein neues Minimum bzw. Maximum ist. Auf Objekt 4 kann man Minimum und Maximum reseten.

    Kleines Programm um knxprods zu erstellen:
    https://github.com/thelsing/CreateKnxProd
    Screenshots im Anhang. Die Geräte befinden sich im Katalog unter KNX-Association

    Hier kann man Parametertypen, Parameter und Kommunikationsobjekte anlegen. Die Parameter stehen in ETS aber einfach nur untereinander.
    Gespeichert wird in einer XML-Datei. Zur Erstellung der knxprod-Datei sind DLLs von ETS4 nötig. Dazu muss der Pfad dahin in der CreateKnxProd.exe.config eingetragen werden. Das Manufacturer Tool bringt die nötigen Dateien auch mit (C:\Program Files (x86)\KNX Manufacturer Tool 5.6\Extensions\Application\Ets4)

    Binary:
    https://github.com/thelsing/CreateKn...leases/tag/1.0

    xml-Datei für die Demo:
    https://github.com/thelsing/knx/blob/master/examples/knx-demo/knx-demo-tp.xml
    https://github.com/thelsing/knx/blob/master/examples/knx-demo/knx-demo-ip.xml


    erstellte knxprod:
    https://github.com/thelsing/knx/blob/master/examples/knx-demo/knx-demo-tp.knxprod
    https://github.com/thelsing/knx/blob/master/examples/knx-demo/knx-demo-ip.knxprod


    Das Ganze ist eher als Proof-of-Concept zu sehen und hat daher den "Works for me" Status.

    Viel Spaß beim probieren.

    Änderungen:
    10.4.2018
    - platformunabhängigen Code in https://github.com/thelsing/knx verschoben
    - Behandlung der verschiedenen Zustände, WPS usw. von der Demo zur knx-esp verschoben
    - demo zu knx-esp/examples verschoben

    7.11.2018
    - Versionen für SAMD21, ESP8266 und linux in ein repository zusammengefasst
    Angehängte Dateien
    Zuletzt geändert von thesing; 07.11.2018, 21:56.

    #2
    Wow!

    Kommentar


      #3
      Klingt wirklich toll !!!

      Irgendwie fehlen mir da aber noch ein paar Hintergrundinfos...ein praktisches Anwendungsbeispiel und ein paar Bilder bzw. ergänzende Infos wären da hilfreich.

      Hört sich jedenfalls sehr vielversprechend an.
      Viele Grüße,
      Stefan

      DIY-Bastelprojekte: || >> Smelly One << || >> BURLI << ||

      Kommentar


        #4
        Hallo
        super Projekt. So auf die Schnelle hatte ich jedoch beim kompelieren kein Erfolg.
        IDE 1.6.9
        1. Fehler
        knx-esp-demo:44: error: 'doLed' was not declared in this scope

        ticker.attach_ms(100, doLed);

        welche Version der IDE ist erforderlich.

        2. Frage die knx-esp-demo.knxprod lässt sich importieren, jedoch finde ich das Gerät nicht....

        Suche weiter.
        Gruss
        Remo

        Kommentar


          #5
          Ich habe die Reihenfolge der Funktionen im Sketch geändert. Damit sollte der Fehler nicht mehr kommen.
          Ich habe die Arduino Version 1.8.5 mit dem ESP-Paket 2.4.1

          Ich habe oben noch ein paar Infos ergänzt. Bei Fragen fragen.

          Kommentar


            #6
            Hallo
            Habe noch einen Fehler
            knx-esp-demo:23: error: 'buttonDown' was not declared in this scope

            attachInterrupt(BUTTON, buttonDown, FALLING);

            denke es müsste so sein :
            attachInterrupt(BUTTON, buttonUp, FALLING);

            so kann ich kompelieren.

            #define LED 16 -> entspricht GPIO 16 gegen Ground? Mit Vorwiederstand?

            #define BUTTON 0 -> entspricht GPIO 0 gegen Ground?

            grussRemo

            Kommentar


              #7
              Es muss schon buttonDown sein. Es hat nur eine Deklaration vor der Benutzung gefeht. Ich habe das geändert. Ich frage mich warum die Fehler bei mir nicht kamen.
              Zur Schaltung: Ich benutze das NodeMCU Board. Dort ist Gpio 16 die On-Board-Led und Gpio 0 der Flash-Taster. Schaltpläne gibt es davon ja genug und bevor ich was falsches sage..

              Rein vom Code her sollte der Button zu GND gehen. Bei der LED ist es eigentlich egal ob die bei GPIO16 high oder low leuchtet. Einen Vorwiederstand brauchst du natürlich je nach Led.

              Kommentar


                #8
                Sketch läuft nun perfekt. In der Seriellen Konsole wird alles korrekt angezeigt.
                Das Programmieren aus ETS funktioniert noch nicht, muss aber weiter testen.
                Ich nutze ETS5, ev. muss ich mal eine ETS4 Umgebung aufbauen.

                Kommentar


                  #9
                  Das ganze klingt ziemlich interessant.
                  könnte jemand eine etwas genauere Anleitung erstellen?
                  Danke schonmal dafür.

                  Kommentar


                    #10
                    @appi: Wenn du die fertige knxprod-Datei nimmst sollte es auch mit ETS5 gehen. Nur beim Erstellen der Datei brauchst die Dateien von ETS4.
                    Hast du einen IP-Router? Den brauchst du. Entweder in Form von knxd oder einen richtigen. Wenn man das Businterface von ETS auf KNX/IP Routing stellt sollte man in der seriellen Konsole vom ETS die Pakete sehen die man im Gruppenmonitor schickt. So lange das nicht klappt, braucht man sich um das Programmieren des Gerätes nicht zu kümmern.

                    Kommentar


                      #11
                      Sisamiwe Wofür genau brauchst du denn eine Anleitung? Sketch kompilieren? Knxprod erstellen? Gerät programmieren?
                      Ich habe leider keine Zeit komplexe Anleitungen zu schreiben. Auf konkrete Fragen antworte ich gern. Vielleicht entsteht dann mit der Zeit ein Anleitung.
                      Ich habe nicht die Absicht ein neues konnekting, selfbus o.ä. zu gründen. Mir war nur die Arbeit zu schade um sie auf dem Rechner versauern zu lassen.

                      Kommentar


                        #12
                        Nochmals ich:
                        EIBD läuft perfekt, wenn ich die Physikalische Adresse programmieren will und dann den Programmierknopf drücke ( LED blinkt schnell ) ändert auch der Status in der ETS5 sehr schnell auf programiert und dann auf Gerät wird neu gestartet und dann ( nach ca. 10 Sekunden ) bricht ETS ab und der Fehler "Das Gerät antwortet nicht" angezeigt.
                        Also ETS erkennt das drücken der Programmiertaste auf dem ESP8266, jedoch kommt der Neustart ( ende Programmiermodus ) nicht aktiviert.
                        gruss
                        Remo

                        Kommentar


                          #13
                          Das passiert bei mir auch. Ich drücke dann einfach die Reset-Taste und probiere es nochmal. Dann klappt es meistens. Ich muss mal schauen ob es eine Methode gibt den ESP neu zu starten bei der er nicht so oft hängt. Falls du eine Idee hast:

                          Siehe
                          https://github.com/thelsing/knx-esp/...p_platform.cpp

                          void EspPlatform::restart()

                          Kommentar


                            #14
                            Hm. Das scheint ein bekanntes Problem zu sein. Nach dem flashen muss das Geräte einmal manuell resetet werden bevor Softwarereset funktioniert.

                            Kommentar


                              #15
                              Zitat von thesing Beitrag anzeigen
                              Zur Erstellung der knxprod-Datei sind DLLs von ETS4 nötig. Dazu muss der Pfad dahin in der App.config eingetragen werden.
                              könntest du das bitte etwas genauer beschreiben? Welche DLLs muss ich wie in der App.config eintragen?
                              Zuletzt geändert von Bernator; 04.04.2018, 08:11.

                              Kommentar

                              Lädt...
                              X