Ankündigung

Einklappen
Keine Ankündigung bisher.

ESP8266 KNX mit ETS

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

  • mumpf
    antwortet
    Hi Bernator,

    yepp, Dein Pull-Request repariert das wieder (ich habe die Sachen mal testhalber übernommen). Schön, wenn es gleich immer Lösungen zu gefundenen Problemen gibt. Danke, ich hätte das nicht gefunden.

    thesing: Du hast ein change drin mit dem Namen "fix connect", der ist meiner Meinung nach fehlerhaft bzw. ich bin mir nicht sicher. Derzeit wirkt sich das nicht aus, erst wenn ich meinen pull-Request mit "restartDevice" mache (sorry, dass das so lange dauert, ich teste immer noch verschiedene Geräte).

    Dein change:
    Code:
    void ApplicationLayer::connectConfirm(uint16_t destination, uint16_t tsap, bool status)
    {
        if (status)
            _connectedTsap = tsap;
        else
            _connectedTsap = -1;
    }
    Aufgerufen wird das aber mit
    Code:
    void TransportLayer::A13(uint16_t destination)
    {
        _applicationLayer.connectConfirm(destination, 0, true);
    }
    und damit mit einer konstanten 0 für tsap. Ich brauche die Stelle auch für's restartDevice und habe da derzeit   _connectedTsap = destination;  stehen. Dann kann man auch prüfen, ob bereits connected ist und mit wem. So funktioniert es, aber ich bin natürlich nicht sicher, ob das richtig ist.
    Ich wollte nur Feedback geben, auf jeden Fall wird mein pull-Request diese Stelle auch behandeln...

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • Bernator
    antwortet
    Ich hab beim letzten Stand ein Problem beim Wechseln der default knxUart Schnittstelle festgestellt und dazu einen pull request offen, bin dann aber nicht mehr dazu gekommen um zu testen ob das programmieren über die ETS klappt, evtl. mach ich das heute abend.

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi,

    ich bekomme seit dem letzten Pull (also mit dem aktuellen github-Stand vom Stack) keine Applikation mehr auf den SAMD übertragen (mit der ETS). PA programmieren läuft noch. Ich bin noch am weiter analysieren, wollte nur fragen, ob sonst noch jemand das Problem hat.

    Dass es an meinem Coding liegt, kann ich ausschließen, da es sofort wieder funktioniert hat, wenn ich einfach nur die knx-library ausgetauscht habe. Ich melde mich, sobald ich das Problem besser eingekreist habe.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi Thomas,

    ich kam mal wieder dazu, was zu machen und hab nen pull von Deinem Stack gemacht. Ich denke, das ist einfach nur ein Tippfehler, aber ich bekomme ein Warning bei
    Code:
    #define DPT_UElCurrent?A_Z Dpt(203, 13)
    in dpt.h. Ich hab das mal auf
    Code:
    #define DPT_UElCurrent_Z Dpt(203, 13)
    korrigiert, auch wenn ich keine Ahnung habe, was das für ein DPT ist .

    Nur als Feedback... wenn Du willst, kann ich das auch in einen Pull-Request packen.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • thesing
    antwortet
    Du musst noch ein paar Skripte modifizieren. Siehe https://github.com/BoschSensortec/BSEC-Arduino-library

    Einen Kommentar schreiben:


  • jeff25
    antwortet
    Hallo zusammen,

    wenn ich das ganze unter Arduino IDE complilieren will muss ich dann eine bestimmte Version haben und was muss ich zusätzliches noch laden? Bei mir kommen seltsame Fehlermeldungen mit Version 1.8.9

    Gruß
    RObert

    C:\Users\r\Documents\Arduino\libraries\BSEC-Arduino-library-master\src/bsec.cpp:381: undefined reference to `bsec_update_subscription'

    libraries\BSEC-Arduino-library-master\bsec.cpp.o.text._ZN4Bsec8getStateEPh+0x0): undefined reference to `bsec_get_state'

    libraries\BSEC-Arduino-library-master\bsec.cpp.o: In function `Bsec::getState(unsigned char*)':

    C:\Users\r\Documents\Arduino\libraries\BSEC-Arduino-library-master\src/bsec.cpp:381: undefined reference to `bsec_get_state'

    libraries\BSEC-Arduino-library-master\bsec.cpp.o.text._ZN4Bsec8setStateEPh+0x0): undefined reference to `bsec_set_state'

    libraries\BSEC-Arduino-library-master\bsec.cpp.o: In function `Bsec::setState(unsigned char*)':

    C:\Users\r\Documents\Arduino\libraries\BSEC-Arduino-library-master\src/bsec.cpp:381: undefined reference to `bsec_set_state'

    libraries\BSEC-Arduino-library-master\bsec.cpp.o: In function `Bsec::Bsec()':

    C:\Users\r\Documents\Arduino\libraries\BSEC-Arduino-library-master\src/bsec.cpp:69: undefined reference to `bsec_do_steps'

    libraries\BSEC-Arduino-library-master\bsec.cpp.o: In function `Bsec::readProcessData(long long, bsec_bme_settings_t)':

    C:\Users\r\Documents\Arduino\libraries\BSEC-Arduino-library-master\src/bsec.cpp:293: undefined reference to `bsec_do_steps'

    libraries\BSEC-Arduino-library-master\bsec.cpp.o: In function `Bsec::getTimeMs()':

    C:\Users\r\Documents\Arduino\libraries\BSEC-Arduino-library-master\src/bsec.cpp:424: undefined reference to `bsec_sensor_control'

    libraries\BSEC-Arduino-library-master\bsec.cpp.o: In function `Bsec::run()':

    C:\Users\r\Documents\Arduino\libraries\BSEC-Arduino-library-master\src/bsec.cpp:164: undefined reference to `bsec_sensor_control'

    collect2.exe: error: ld returned 1 exit status

    exit status 1
    Fehler beim Kompilieren für das Board Generic ESP8266 Module.
    Zuletzt geändert von jeff25; 06.09.2019, 20:00.

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Sisamiwe: Danke für den Tipp, aber es ist eben KONNEKTING, also ein anderes Framework. Mir ging es um Erfahrungen mit Thomas Framework und externem Speicher, speziell auch darum, ob man damit RAM sparen kann bzw. was man machen muss, damit die ETS-Daten nicht im Programm-Flash landen.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Zitat von mumpf Beitrag anzeigen
    Über einen Erfahrungsbericht mit externem Speicher würde ich mich freuen,
    Waldemar
    Vielleicht kann Masifi hier beitragen. Ich glaube das im KONNEKTING 1w Gateway auch mit EEPROM gearbeitet wird

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Zitat von SebastianObi Beitrag anzeigen
    Ich wede jetzt mal einen I2C EEPROM "24AA256" besorgen und damit testen. Dies sollte das Speicherplatzproblem eim SAMD deutlich entspannen
    Hallo Sebastian,

    hast Du da schon irgendwelche Erfahrungen gemacht? Ich habe soeben festgestellt, dass bei meinem neuen Spielzeug (Sensormodul) auch so ein EEPROM verbaut ist. Man könnte da dann zwar die ETS-Parameter speichern und muss so nicht nach jeder Firmware-Änderung das Gerät neu per ETS programmieren, aber dass es Speicher sparen würde, sehe ich (noch) nicht. Aber ich kann nicht behaupten, dass ich den Durchblick habe. Ich wollte erstmal das EEPROM zum speichern von Werten nutzen, die nicht beim Flashen gelöscht werden sollen, mal schauen, was noch möglich wird. Wenn Du neue Infos hast, würde es mich freuen.

    Zu Deinem Speicherplatzproblem im allgemeinen: Du kannst übrigens massig Parameter-Speicher sparen, wenn Du die ETS-Möglichkeiten nutzt, die Parameter nur in der benötigten Bitbreite anzulegen und dann in den Parameter-Speicher zu übertragen. Hat bei mir pro Kanal von voher 230 Bytes (alles 4-Byte-Ints) auf 110 Bytes (teilweise 8 1-Bit-Parameter in einem Byte). Das kann aber CreateKnxProd nicht, da musst Du ins xml...

    Und noch ein Tipp: Auch bei KO kann man Speicher sparen, wenn man so was hat, dass ein KO nur in einem Fall gilt, und ein anderes nur in einem anderen. Dann kann man die als "union" betrachten, beide nehmen nur den Speicher des größten ein. Ich habe z.B. 7 verschiedene KO für den Ausgang, alle haben die KO-Nummer 3, das längste KO ist 14 Bytes und alle zusammen sind auch nur 14 Bytes, weil nur eines davon aktiv ist.

    Über einen Erfahrungsbericht mit externem Speicher würde ich mich freuen,
    Waldemar

    Einen Kommentar schreiben:


  • thesing
    antwortet
    Nanosonde Zuerst solltest du die Doku zu pybind11 lesen. Int-Parameters sollte man z.B. mit :

    Code:
    m.def("ParamInt", [](int addr)
    {
       return bau->parameters().getInt(addr);
    });
    in knxmodule.cpp
    als knx.ParamInt(addr) verfügbar machen können.

    Es gab auch mal ein Beispiel (https://github.com/thelsing/knx/blob...Python/main.py) das aber nicht mehr ganz funktioniert. Aber im interaktiven Modus vom Python kannst du ja nach "import knx" schauen, welche Methoden das Modul bietet.

    Einen Kommentar schreiben:


  • Nanosonde
    antwortet
    Zitat von thesing Beitrag anzeigen
    Einschänkungen:
    - nur Linux
    - keine Parameter
    - keine DPT-Konvertierungen (nur Raw Wert)

    Das kann natürlich gern erweitert werden. Das Moduls gibt es übrigens auch auf pypi
    thesing

    Könntest Du einen Hinweis geben, was genau beim Python C++ Binding gemacht werden müsste, um Parameter zu unterstützen?
    Wo würdest Du ansetzen?


    Einen Kommentar schreiben:


  • Masifi
    antwortet
    Zitat von mumpf Beitrag anzeigen
    ch hätte erwartet, dass da nur der Prog-Button dran hängt und den Eingang auf Masse zieht und alles ist gut. Eventuell noch ein Kondensator zum Entprellen dran... Oder ist der (externe) Pullup wegen dem Kondensator nötig?
    Wenn du sowas machst, dann hast du kein Entprellfilter mehr, da zwischen dem Taster und dem Kondensator kein Widerstande sich mehr befindet. Der Taster schließt den Kondensator einfach kurz und daher ist dieser Wirkungslos.
    In meinem Foto etwas weitern vorne im Thread ist das der Widerstand R2, dieser ist zwingend erforderlich zum Entprellen und damit sich der Kondensator nur "langsam" entladen kann.
    Hier ist es eigentlich ganz gut beschrieben: https://www.mikrocontroller.net/articles/Entprellung

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Zitat von thesing Beitrag anzeigen
    Es ist sicher sinnvoll die x.* Typen direkt zu unterstützen.
    Hi Thomas,

    dummerweise sind das c++-Bereiche, an die ich mich (noch) nicht traue. Aber wer weiß, vor 2 Monaten hätte ich auch nicht gedacht, dass ich irgendwo im data_link_layer debugge. Und mir war nicht klar, dass das Coding portiert ist (hört sich besser an als "geklaut").

    Und den 2. Absatz Deiner Aussage hab ich noch nicht mal verstanden, geschweige denn, dass ich da Ideen entwickeln könnte. Ich habe aber auch noch nie in die knx_master.xml rein geschaut...

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi Masifi,

    Zitat von Masifi Beitrag anzeigen
    Falls dir das hilft, so sieht meine Beschaltung des ProgButtons aus:
    noch eine Verständnisfrage eines technisch interessierten:
    Ich lese immer, dass der/die Arduinos an den PIO schon eingebaute Pullup-Wiederstände haben, man setzt ja auch den Pin auf INPUT_PULLUP. Ich hätte erwartet, dass da nur der Prog-Button dran hängt und den Eingang auf Masse zieht und alles ist gut. Eventuell noch ein Kondensator zum Entprellen dran... Oder ist der (externe) Pullup wegen dem Kondensator nötig? Wie Du siehst, ich habe keine Ahnung... Ich mach mal weiter mit Software, das kann ich besser​​​​​​​...

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • thesing
    antwortet
    mumpf Es ist sicher sinnvoll die x.* Typen direkt zu unterstützen. Ich hab den Code ja auch nur von knxd geklaut. Kann gern geändert werden.
    Ich habe man defines für die ganzen Dpt aus der knx-spec hinzugefügt. Die sind natürlich nicht alle implementiert. Die richtig hohe Schule wäre ja die Dpt aus der knx_master.xml zu parsen und den gesamten Code zur Konvertierung der Dpt daraus zu generieren. Aber wahrscheinlich muss man sich dann überlegen wie man verhindert, dass man den Konvertierungscode für nicht benutzte Dpt nicht mit kompiliert. Bestimmt nimmt die ganze Konvertierung eh schon viel zuviel Platz weg. Wenn da jemand eine Idee hat, her damit.

    VG Thomas

    Einen Kommentar schreiben:

Lädt...
X