Ankündigung

Einklappen
Keine Ankündigung bisher.

ARDUINO am KNX

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

    Hi Leute,

    ich stehe auf dem "Schlauch". Versuche KNX Telegramme über "serialEvent" auszuwerten.
    Ich bekomme nur "TPUART_RESET_INDICATION" und "UKNOWN" Events aber nie ein "KNX_TELEGRAM".

    Hier der Quellcode:
    Code:
    #include <SoftwareSerial.h>
    #include <LiquidCrystal.h>
    #include <KnxTelegram.h>
    #include <KnxTpUart.h>
    
    KnxTpUart knx(&Serial, 15, 15, 20);
    LiquidCrystal lcd(12, 11, 6, 5, 4, 3);
    
    
    void setup() {
    
      Serial.begin(19200);
      UCSR0C = UCSR0C | B00100000;
      knx.uartReset();
      
      lcd.begin(16, 2);
      lcd.setCursor(0, 0);
      lcd.print("Bereit!");
    }
    
    void loop() {
    }
    
    void serialEvent() {
      KnxTpUartSerialEventType eType = knx.serialEvent();
      if (eType == TPUART_RESET_INDICATION) {
        //lcd.setCursor(0, 0);
        //lcd.print("Event TPUART_RESET_INDICATION");
      } else if (eType == UNKNOWN) {
        //lcd.setCursor(0, 0);
        //lcd.print("Event UNKNOWN");
      } else if (eType == KNX_TELEGRAM) {
        //lcd.setCursor(0, 0);
        //lcd.print("Event KNX_TELEGRAM");
         KnxTelegram* telegram = knx.getReceivedTelegram();
                 String target = String(0 + telegram->getTargetMainGroup()) + "/" +
                   String(0 + telegram->getTargetMiddleGroup()) + "/" +
                   String(0 + telegram->getTargetSubGroup());
        lcd.setCursor(0, 0);
        lcd.print(target);
      }
    }
    Was habe ich da übersehen?

    Gruß Sepp

    Kommentar


      Zitat von MJJ Beitrag anzeigen
      Was habe ich da übersehen?
      Hoi Sepp,

      ich habs nur grad kurz ueberflogen: stimmt die Adresse? Und benenn mal deine ISR um in "serialEvent1". Kann - je nach Plattform - noetig sein...

      Oh, und edit: hast du die aktuelle Version der Lib von Thorsten? In einer der ersteren Ableger gabs da ein Problem mit einem Rueckgabewert welches ich gefixed hatte, das hatte bei mir zu exakt demselben Problem gefuehrt...

      gruesse :: Michael

      Kommentar


        Ich denke "serialEvent" stimmt es werden ja auch Events ausgelöst - "TPUART_RESET_INDICATION" und "UKNOWN" steht auf dem LCD Display (falls ich jeweils die Quellcodezeilen wieder aktiviere). Bei "serialEvent1" passiert nichts.
        Die Lib ist auch aktuell. Letzte Änderung war am 31.1.14...

        Ob die Adresse 15/15/20 stimmt bin ich mir allerdings nicht sicher. Habe die Adresse einfach aus den Beispielen genommen. Ob und wie ich der BCU 5WG1117-2AB12 von Siemens eine Adresse geben kann weiß ich nicht.
        Wie finde ich das am besten heraus?

        Gruß, Sepp

        Kommentar


          Zitat von MJJ Beitrag anzeigen
          Wie finde ich das am besten heraus?
          Einfach per ETS zB eine Leseanfrage an die Adresse schicken. Ausserdem musst du noch GAs angeben auf die der Arduino lauschen soll, dazu in der setup zB noch das hier:

          Code:
          [URL="http://redaktion.knx-user-forum.de/lexikon/knx/"]knx[/URL].addListenGroupAddress(1,1,100);
          [URL="http://redaktion.knx-user-forum.de/lexikon/knx/"]knx[/URL].addListenGroupAddress(1,1,101);
          Sonst haelt der Arduino sich nicht fuer "zustaendig"

          gruesse

          Kommentar


            Zitat von MJJ Beitrag anzeigen
            Ob die Adresse 15/15/20 stimmt bin ich mir allerdings nicht sicher. Habe die Adresse einfach aus den Beispielen genommen. Ob und wie ich der BCU 5WG1117-2AB12 von Siemens eine Adresse geben kann weiß ich nicht.
            Das hatte ich i-wie ueberlesen
            Der BCU musst du keine Adresse geben, die Adresse mit der das ganze arbeitet wird im Code vergeben (also in deinem Fall dann die genannte).

            gruesse

            Kommentar


              Jepp das hat geklappt. Danke!

              Da ich vor habe mehrere von den Dingern in meinem Haus zu verwenden werde ich am WE mal versuchen auch auf Broadcasts zu reagieren.
              Die Idee ist mit der ETS Adressen zuweisen zu können. Die zugewiesene Adresse soll dann im EEPROM verewigt werden...
              Werde am WE berichten :-)

              Gruß, Sepp

              Kommentar


                Zitat von MJJ Beitrag anzeigen
                Die Idee ist mit der ETS Adressen zuweisen zu können.
                Schau mal in den Example Ordner der KNX-Lib - da ist ein Beispiel wie man mit der ETS eine Adresse programmieren kann. Braucht man halt nur nen Taster oder sowas am Arduino

                gruesse

                Kommentar


                  Zitat von wintermute Beitrag anzeigen
                  Braucht man halt nur nen Taster oder sowas am Arduino
                  Nicht unbedingt. Per ETS kann man die PA auch neu setzen, wenn man die alte kennt und diese einmalig im System ist. Wenn man jeweils nur ein neues Gerät an den Bus hängt und dessen PA neu setzt, bevor das nächste neue Gerät an den Bus kommt, so können alle neuen Geräte zunächst mal die selbe Default-PA haben.
                  Ein Taster erlaubt nur zusätzlich das Setzen einer neuen PA ohne die alte zu kennen und falls mehrere Geräte die selbe PA haben.
                  Als Default-PA bietet sich 15.15.255 an, weil die von allen Herstellern dafür verwendet wird.
                  Vermutlich, weil bei einem frisch gelöschten und noch nicht wieder beschriebenen EEPROM automatisch 0xFFFF drinn steht.
                  Tessi

                  Kommentar


                    Ich hoffe ich hab bald genug Zeit um hier auch "mitspielen" zu können.

                    Was mich immer noch (habs hier glaub schonmal erwähnt) brennend interessiert und was die Sache wohl erst richtig interessant (weil kleiner) werden lässt:

                    Prototype PCBs of the Arduino TPUART Interface | Daniel's Blog

                    Hat da da schon jemand ran getraut?

                    Wenn das in der Tat so funktioniert (der TPUART IC scheint mit etwas Fingerspitzengefühl und passendem Lötkolben auch von Hand lötbar zu sein), dann wäre das, in Kombination mit dem Schreiben der Adresse via ETS (https://bitbucket.org/dka/arduino-tp...ino?at=default) in den Arduino, die ideale Voraussetzung für die dollsten Basteleien.

                    Kommentar


                      Du meinst sowas? Die Boards sind auf dem Weg zu mir.
                      Angehängte Dateien
                      Umgezogen? Ja! ... Fertig? Nein!
                      Baustelle 2.0 !

                      Kommentar


                        Jepp, sowas. Dann bin ich gespannt.



                        Was mich ebenfalls noch interessieren würde, worauf ich aber noch keine Antwort gefunden habe:

                        Wenn ich einen Anwendungsfall für den KNX Adruino habe, der sich mit einer Applikation eines real existierenden KNX Geräts abdecken lassen würde: Könnte man über ETS eine solche "Fremd-Application" auf den Arduino schreiben?

                        Beispiel:

                        1-Kanal LED PWM Dimmer.

                        Real existieren viele 3 oder auch 4 Kanal-Dimmer. Die Idee wäre eine solche Produktdatenbank in ETS laden und auf den Arduino schreiben. Kanäle 2 und 3 (bzw. auch noch 4) würden dann einfach vom Arduino ignoriert und nur Kanal 1 findet anwendung.

                        Geht sowas?

                        Kommentar


                          Nein, ziemlich sicher nicht!
                          Dazu müsste die HW praktisch baugleich sein.
                          Selbst wenn dort zufällig ein AVR werkeln würde müsste es auch noch der selbe Typ sein, denn es wird ja ein Image geladen, da reichen schon kleinste Unterschiede im Adresslayout der Peripherie um zu scheitern. Und dann müsste die darum verbaute HW auch noch exakt gleich anzusprechen sein...
                          So viel Zufall gibt es dann doch nicht auf einmal.

                          Um fremde SW nutzen zu können müsste man das Originalgerät praktisch kopieren. Mit solchen Wünschen ist man aber bei freebus.org besser aufgehoben.
                          Tessi

                          Kommentar


                            Was hat das mit der Hardware zu tun?

                            Die ETS schickt die Info doch auch nur über den Bus und der entsprechende Teilnehmer nimmt die Daten entgegen. Was der Teilnehmer daraus dann macht ist doch seine Sache. Im Fall des Arduinos und dem obigen Scenario, könnte man Kanal 2..4 der ankommenden Parametrisierung einfach ignorieren und nur die Kanal 1 Einstellung sich herauspicken. Der Rest ist dann Software im Arduino...

                            Der einzige Denkfehler den ich mir noch vorstellen könnte ist, dass die Daten irgendwie mit einem Herstellerschlüssel verschlüsselt sind, und somit mangels Schlüsselkenntnis nur vom Original KNX Gerät gelesen werden können.

                            Kommentar


                              Zitat von tuxedo Beitrag anzeigen
                              Was hat das mit der Hardware zu tun?
                              Ganz viel: Das Image muss dazu passen, sonst geht nichts!

                              Zitat von tuxedo Beitrag anzeigen
                              Die ETS schickt die Info doch auch nur über den Bus und der entsprechende Teilnehmer nimmt die Daten entgegen. Was der Teilnehmer daraus dann macht ist doch seine Sache.
                              Richtig, und was macht ein Gerät normalerweise mit einem Image der Applikation? Richtig, in den Speicher laden und starten. Und was passiert wenn das Image nicht passt? Richtig, kapitaler Absturz!
                              Ganz so dumm sind die Gerätebootloader aber normalerweise nicht. Sie erkennen meistens an Hand von Signaturen, ob das Image passt und verweigern das Laden und ausführen fremder SW.

                              Zitat von tuxedo Beitrag anzeigen
                              Im Fall des Arduinos und dem obigen Scenario, könnte man Kanal 2..4 der ankommenden Parametrisierung einfach ignorieren und nur die Kanal 1 Einstellung sich herauspicken. Der Rest ist dann Software im Arduino...
                              ÄH, Moment mal, es wurde nach einer Applikation gefragt, das ist die Software! Was Du wahrscheinlich meinst ist die Konfiguration. Ja, da könnte man eine eigene SW schreiben, die zu einem anderen Gerät diesbezüglich kompatibel ist. Bei freebus.org hat es entsprechende Experimente schon gegeben - soweit mir bekannt sogar mit Erfolg.

                              Zitat von tuxedo Beitrag anzeigen
                              Der einzige Denkfehler den ich mir noch vorstellen könnte ist, dass die Daten irgendwie mit einem Herstellerschlüssel verschlüsselt sind, und somit mangels Schlüsselkenntnis nur vom Original KNX Gerät gelesen werden können.
                              Die Apps sind nicht unbedingt verschlüsselt, tragen aber Signaturen (Herstellerkennung) um zu verhindern, das Anwender versehentlich unpassende Apps laden.
                              Tessi

                              Kommentar


                                Zitat von tuxedo Beitrag anzeigen
                                Wenn das in der Tat so funktioniert (der TPUART IC scheint mit etwas Fingerspitzengefühl und passendem Lötkolben auch von Hand lötbar zu sein),
                                Der alte TPUART schon. Der TPUART2 im QFN ist von Hand nicht wirklich zu löten. Glaube es mir, ich habe einige TPUART2-Leichen im Keller liegen.

                                Was die Konfiguration angeht, gibt es eine parallele Diskussion beim KNX-Multisensor. Ich schlage vor, die Selbstbaugeräte nicht über die ETS, sondern mit einem eigenen Programm zu parametrieren. In die ETS einbauen kannst du eigene Geräte nur dann, wenn du entweder 1:1 ein bestehendes Gerät nachbaust (so macht es Freebus, aber dann kannst du das Gerät auch gleich kaufen) oder die ETS Developer hast und das Projekt von der Konnex zertifizieren lässt, ISO9001-Zertifikat und EMV-Messungen inklusive.

                                Ich mache zu dem Thema einen separaten Thread auf.

                                Max

                                Kommentar

                                Lädt...
                                X