Ankündigung

Einklappen
Keine Ankündigung bisher.

ARDUINO am KNX

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

    hallo
    habe dein artikel gelsen und finde es sehr interessant.
    habe auch die library gefunden und einkopiert, da ich aber blutiger anfänger bin erhalte ich natürlich eine fehlermeldung.
    knxtpuart.h:36:25: fatal error: knxtelegram.h: no such file or directory
    das directory und datei sind aber da.
    kanst du mir helfen

    danke

    Kommentar


      @tuxedo:

      Danke fürs fixen des Links, aber ich bekomme nichtmal das GroupWrite Example kompiliert. Oder ist etwas beim Import der Library schief gegangen ?

      Code:
      GroupWrite:4: error: invalid conversion from 'const char*' to 'byte*'
      GroupWrite:4: error: initializing argument 2 of 'KnxTpUart::KnxTpUart(Stream*, byte*)'
      GroupWrite.ino: In function 'void loop()':
      GroupWrite:51: error: invalid conversion from 'const char*' to 'byte*'
      GroupWrite:51: error: initializing argument 1 of 'bool KnxTpUart::groupWriteBool(byte*, bool)'
      Umgezogen? Ja! ... Fertig? Nein!
      Baustelle 2.0 !

      Kommentar


        JuMi2006

        Leider ist eine Fehlersuche ohne Sketch nicht von Erfolg gekrönt.
        Die Library wurde angepasst, und deshalb solltest du auch das GroupWrite Example anpassen.

        scotti

        Die IDE erwartet die Library auf einem bestimmten Pfad. Diese Library hat sie bei dir dort nicht vorgefunden.
        Bitte beachte den Link unten.

        Kommentar


          Soll ich den Example Sketch aus der Library jetzt auch noch posten?

          Klartext: Das Example wirft den o.g. Fehler
          Umgezogen? Ja! ... Fertig? Nein!
          Baustelle 2.0 !

          Kommentar


            Entschuldigung.

            Ich gehen davon aus, das der Example Sketch aus der ursprünglichen Library stammt und die importierte Library von tuxedo damit natürlich Fehler auswerfen wird.

            Deshalb sollte/muss man den Example Sketch etwas anpassen, oder nicht ?

            Kommentar


              Genau das war meine Frage . Ich ging/gehe davon aus das die Examples funktionieren. Ich schau mir das heute nochmal in Ruhe an.
              Umgezogen? Ja! ... Fertig? Nein!
              Baustelle 2.0 !

              Kommentar


                Habs in dem Example gefixed und ins git geschoben. Rest der Examples folgt ...

                https://github.com/JuMi2006/KnxTpUart/tree/develop
                Umgezogen? Ja! ... Fertig? Nein!
                Baustelle 2.0 !

                Kommentar


                  Zitat von JuMi2006 Beitrag anzeigen
                  Habs in dem Example gefixed und ins git geschoben. Rest der Examples folgt ...

                  https://github.com/JuMi2006/KnxTpUart/tree/develop


                  Jepp, hatte die Examples nicht angepasst, da ich nur an meinem eigenen Sketch gearbeitet hatte.

                  Kommentar


                    Nächstes Problem nach einem Update auf die neueste Arduino IDE:

                    Code:
                    Build-Optionen wurden verändert, alles wird neu gebaut
                    GroupWrite:4: error: taking address of temporary array
                    GroupWrite.ino: In function 'void loop()':
                    GroupWrite:52: error: taking address of temporary array
                    Heißt also er erwartet einen festen Wert.
                    Um in meinem Sketch weiter zu kommen hab ich also erstmal folgendes gemacht:

                    Code:
                    byte pa_byte[2] = {0B11111111, 0B00000000};
                    KnxTpUart knx(&Serial1, pa_byte);
                    Dabei wirft er dann aber Fehler in Zeile 195, 305, 311 und 320 der KnxTpUart.cpp in der jeweils mit PA_INTEGER gearbeitet wird.

                    Code:
                    /Users/mh/Dropbox/Arduino/libraries/KnxTpUart/KnxTpUart.cpp: In member function 'bool KnxTpUart::readKNXTelegram()':
                    /Users/mh/Dropbox/Arduino/libraries/KnxTpUart/KnxTpUart.cpp:195:135: error: taking address of temporary array
                                 sendNCDPosConfirm(_tg->getSequenceNumber(), PA_INTEGER(_tg->getSourceArea(), _tg->getSourceLine(), _tg->getSourceMember()));
                                                                                                                                                           ^
                    /Users/mh/Dropbox/Arduino/libraries/KnxTpUart/KnxTpUart.cpp: In member function 'bool KnxTpUart::individualAnswerAddress()':
                    /Users/mh/Dropbox/Arduino/libraries/KnxTpUart/KnxTpUart.cpp:305:88: error: taking address of temporary array
                         createKNXMessageFrame(2, KNX_COMMAND_INDIVIDUAL_ADDR_RESPONSE, PA_INTEGER(0,0,0), 0);
                                                                                                            ^
                    /Users/mh/Dropbox/Arduino/libraries/KnxTpUart/KnxTpUart.cpp: In member function 'bool KnxTpUart::individualAnswerMaskVersion(int, int, int)':
                    /Users/mh/Dropbox/Arduino/libraries/KnxTpUart/KnxTpUart.cpp:311:108: error: taking address of temporary array
                         createKNXMessageFrameIndividual(4, KNX_COMMAND_MASK_VERSION_RESPONSE, PA_INTEGER(area, line, member), 0);
                                                                                                                                ^
                    /Users/mh/Dropbox/Arduino/libraries/KnxTpUart/KnxTpUart.cpp: In member function 'bool KnxTpUart::individualAnswerAuth(int, int, int, int, int)':
                    /Users/mh/Dropbox/Arduino/libraries/KnxTpUart/KnxTpUart.cpp:320:121: error: taking address of temporary array
                         createKNXMessageFrameIndividual(3, KNX_COMMAND_ESCAPE, PA_INTEGER(area, line, member), KNX_EXT_COMMAND_AUTH_RESPONSE);
                    Any ideas ? Also muss da grundsätzlich was geändert werden.
                    Umgezogen? Ja! ... Fertig? Nein!
                    Baustelle 2.0 !

                    Kommentar


                      Hab nen Fix, bekomme ich Zugriff, dass ich es in deinen Dev Branch pushen kann?

                      Kommentar


                        Ist nun in JuMis Repository. Bitte testen!

                        Kommentar


                          Also bei mir läufts.

                          Seit gestern Abend werkelt nun der Arduino mit meinen iButtons. Der sendet für jeden Button nach Änderung/Zyklisch eine 1 oder 0 auf die entsprechende GA. Auslesen der GAs ist auch möglich. Dann gibt es noch 2 globale GAs. Die erste macht eine ODER-Logik und meldet 1 für mind. ein Button hängt und 0 für kein Button hängt.
                          Die zweite ist meine Praesenz-GA, die schaltet erst 5 Minuten nach dem entfernen des letzten iButtons eine 0 und sofort wenn wieder einer hängt eine 1. Die beiden globalen GAs senden auch noch zyklisch.

                          Als nächstes schau ich mir das mit den Propertys noch an. Vielleicht kann man das wirklich noch auf den Arduino-Stack bringen. Meine fest programmierten GAs gefallen mir nicht wirklich. Die Erkennung der Buttons ist jedenfalls deutlich stabiler als über den DS9490R USB-Busmaster am owfs.
                          Umgezogen? Ja! ... Fertig? Nein!
                          Baustelle 2.0 !

                          Kommentar


                            Das mit den Properties hab ich mir auch schon angeschaut. Ist nicht schwer umzusetzen. Habs bereits in meiner Version der TpUart-Lib für den Arduino mit drin, aber nie ausprobiert... Bin allerdings dabei davon wieder abzukommen... Grund:

                            Mein 6-Kanal-Dimmer hat sehr viele KOs. Ich müsste dann im Arduino-Code hinterlegen: "Property XYZ muss im EEPROM an Adresse ABC gesichert werden".

                            Das ergibt recht schnell bei vielen KOs eine recht große und komplizierte Mappingtabelle, die auch noch Speicherplatz "verschwendet".

                            Für kleinere Dinge (eine Hand voll KOs) sind die Properties eine einfache Sache. Für viele KOs (hab glaub >50) ist es aber ggf. einfacher für den Arduino-Teil direkt in den EEPROM zu schreiben (memwrite/memread). Allerdings wird das dann auf Seite des "schreibenden" aufwendiger. Ein Konsolen-Script für eibd wäre möglich, aber eben entsprechend aufwendiger.

                            Zur Zeit liegt die Entwicklung etwas "brach", aber ich bin dran das über ein nettes Progrämmchen und einer XML Konfiguration zu erschlagen.


                            Kommentar


                              Hi
                              @JuMi: gibt's deinen Code als Beispielprojekt - wenn möglich mit der verwendeten Library? Ich denke meine Library wird dafür ja nicht verwendet?
                              deine Library basiert auf Tuxedos Anpassungen - plus bugfixes? Ich finde es hier eh schon unübersichtlich ... Weitere libraries die auf codebasis von "dritten" basieren verschlimmern das noch und laufen Gefahr auf Dauer nicht gepflegt zu werden :-(
                              @tuxedo: pflegst du deine version irgendwo im GIT ö.ä.?

                              @all: läuft eigentlich meine letzte Version mit dem letzten Arduino IDE? (Kann gerade nicht testen - bin in Italien im Urlaub). Wenn nicht... @mode: würdest du helfen deinen fix auch in der ursprünglichen lib zu fixen?

                              @JuMi: warum verwendest du die lib von tuxedo? Wolltest du auch "Platz sparen" oder fandest den Ansatz besser? Ich frage aus reiner Neugier... Damit ich entscheiden kann ob ich meinen Code irgendwann umstelle (hab ich bisher nicht geplant... So wie er ist finde ich hin einfach leichter für Einsteiger zu verwenden)

                              Grüße
                              Thorsten

                              Kommentar


                                Nein, mein Code ist von meiner Seite noch nirgendwo in einem VCS gepflegt. Bitbucket war mir bisher "zu weit abseits vom Mainstream" und zu dem Zeitpunkt war ich noch nicht firm mit Github. Und für ein SVN Repo war ich noch zu faul.

                                Afaik hat JuMi es aber nach Github geschoben?

                                Bzgl. "String vs. Byte" (also den Unterschied zwischen den beiden Libs):

                                Geschmackssache. Ich denke die wenigsten werden mit ihrem Bastelprojekt das Speicherlimit oder den RAM ausreizen. Aber dem "optischen" und vor allem für Einsteiger tatsächlichen Vorteil durch die Strings kann man zumindest mit den Macros in meiner Variante ein wenig - ich würde sogar sagen weitgehend - reduzieren.

                                Kommentar

                                Lädt...
                                X