Ankündigung

Einklappen
Keine Ankündigung bisher.

ESP8266 KNX mit ETS

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

  • IOException
    antwortet
    Hi Bernator,
    Zitat von Bernator Beitrag anzeigen
    versuch die entsprechende Stelle mal so umzubauen:
    Code:
    //check if echo
    _isEcho = false;
    if(_sendBuffer != NULL)
    {
    if (!((buffer[0] ^ _sendBuffer[0]) & ~0x20) && !memcmp(buffer + _convert + 1, _sendBuffer + 1, 5)) //ignore repeated bit of control byte
    {
    _isEcho = true;
    }
    }
    Ja cool ich hatte parallel auch mit folgendem den Absturz beheben können:
    Code:
    //check if echo
    if (_sendBuffer && !((buffer[0] ^ _sendBuffer[0]) & ~0x20) && !memcmp(buffer + _convert + 1, _sendBuffer + 1, 5))
    { //ignore repeated bit of control byte
        _isEcho = true;
    }
    else
    {
        _isEcho = false;
    }
    Damit konnte ich jetzt auch die physikalische Addresse programmieren und parametrieren.

    SEHR gut! Ich freue mich dass das nun funktioniert :-D
    Einfach genial!!

    Ich kann gerne meine Änderungen teilen, damit der ESP32 auch mit dem KNX-TP funktioniert.

    Greets und vielen Dank für die Hilfe!
    Patrick

    Einen Kommentar schreiben:


  • thesing
    antwortet
    Bernator :
    Schön, dass du schon so weit bist. Ich habe mal kurz drüber geschaut. Hier ein paar Hinweise:
    - Die SaveRestores sollen weiter so funktionierien wie bisher: Beim Save speichern sie ihren Inhalt in einen von der Memory Klasse bereit gestellten Speicher und beim Restore umgekehrt. Einziger Unterschied zu vorher sollte sein, dass die Memoryklasse beim Save alloziert (und dafür vorher die nötige Größe abfrage) und dann beim Restore der Bereitgestellte Speicher ehrhalten bleibt, d.h. die Objekte brauchen den Inhalt nicht kopieren.
    - Die Verschiedenen Speichermodi sollten Platformspezifisch sein. Der normale Stack nutzt einfach die Platform um zu Lesen oder zu Speicher. Wenn es unterschiedliche Möglichkeiten für eine Platform gibt, soll das alles dort verarbeitet werden.
    - Kann man für die MemoryId der SaveRestores nicht einfach den Index des SaveRestores im _saveRestores-Array in der Memory-Klasse nehmen?

    Die geänderte Memory-Klasse und die Platform*-Klassen habe ich mir bisher noch nicht angeschaut.

    mumpf :
    Super dass du hier so aktiv Fragen beantwortest.

    VG Thomas

    Einen Kommentar schreiben:


  • Bernator
    antwortet
    versuch die entsprechende Stelle mal so umzubauen:
    Code:
                    //check if echo
                    _isEcho = false;
                    if(_sendBuffer != NULL)
                    {
                        if (!((buffer[0] ^ _sendBuffer[0]) & ~0x20) && !memcmp(buffer + _convert + 1, _sendBuffer + 1, 5))     //ignore repeated bit of control byte
                        {
                            _isEcho = true;
                        }
                    }

    Einen Kommentar schreiben:


  • IOException
    antwortet
    Hi Waldemar,
    leichte Themen sind ja auch nicht herausfordernd

    Die KNX_Test.ino ist exakt die knx-demo.ino nur dass ich unten noch den knx.ledPin(22) und den knx.buttonPin(21) einkommentiert und damit gesetzt habe.
    Dann musste ich in der esp32_platform.cpp noch im Konstruktor con Serial1 auf Serial2 (pin 16 und 17) umstellen und in der knx_facade von Bau57B0 auf Bau07B0 ändern.

    Es ist so, dass der _sendBuffer noch keine 6 Elemente beinhaltet und damit abschmiert.
    Ich suche mal ob man den code auf dem esp32 debuggen kann.

    Nachdem du den SAMD erfolgreich mit KNX-TP einsetzt, welches board empfiehlst du?

    Vielen Dank dir und schöne Grüße
    Patrick

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi Patrick,

    willkommen im Forum... Du hast Dir für den Anfang nicht unbedingt ein leichtes Thema ausgesucht .

    Du solltest am Anfang versuchen, das knx-demo example zum laufen zu bringen. Die Kombi ESP32 und bau07B0 (also ESP-Plattform mit KNX-TP) hat hier im Thread noch keiner benutzt - oder es ist mir entgangen. Da könnten noch Fehler drin sein... Aber mit einem eigenen KNX_Test.ino weiß dann auch keiner, was Du da machst.

    Die meisten hier nutzen entweder ESP mit WLAN (und damit KNX-IP) oder SAMD mit KNX-TP. Vielleicht gibt es jemanden, der ne Idee hat, was da schief sein könnte. Ich bin auch auf SAMD unterwegs und kann Dir hier konkret nicht helfen.

    Gruß, Waldemar


    Einen Kommentar schreiben:


  • IOException
    antwortet
    Hi,
    hier ein Update meinerseits:
    Ich bin schon einen Schritt weiter und konnte den ESP32 DevKit v4 verwenden.
    Dafür habe ich (neben den Änderungen vom vorigen Post) das _knxSerial auf Serial2 (pin16 und pin17) gelegt.
    Jetzt sehe ich auch, dass er beim booten die Siemens BCU initialisiert (TX=0x01 => RX=0x03).

    Jetzt gibts aber einen crash wenn über KNX Daten empfangen werden:

    Code:
    0x400d7cf9: TpUartDataLinkLayer::loop() at C:\Users\patrick\Documents\Arduino\libraries\knx\src\knx\tpuart_data_link_layer.cpp line 238
    0x400d3a50: BauSystemB::loop() at C:\Users\patrick\Documents\Arduino\libraries\knx\src\knx\bau_systemB.cpp line 21
    0x400d1b05: KnxFacade::loop() at C:\Users\patrick\Documents\Arduino\libraries\knx\src/knx_facade.h line 177
    0x400d1b15: loop() at C:\Users\patrick\Documents\Entwicklung\KNX_Test/KNX_Test.ino line 109
    Also in dieser Zeile:
    Code:
    if (!((buffer[0] ^ _sendBuffer[0]) & ~0x20) && !memcmp(buffer + _convert + 1, _sendBuffer + 1, 5))
    Möglicherweise ist im _sendBuffer noch nicht genügend?
    Ich hab das Gerät auch noch nicht parametriert.
    Wie kann ich das lösen?

    Schöne Grüße
    Patrick

    Einen Kommentar schreiben:


  • IOException
    antwortet
    Hi,
    ersteinmal: sau cooles Projekt!!
    Ich bin auch gerade dabei in DIY-KNX einzusteigen, nachdem ich schon mehrere offizielle Geräte hier am Laufen habe.
    KONNEKTING habe ich auch schon erfolgreich mit der Siemens BCU und einem Arduino NANO zum Laufen bekommen.
    Nun möchte ich aber die ETS zum Parametrieren nutzen und bin über euer Projekt hier gefallen

    Jetzt habe ich hier aber zur benötigten Hardware eine Frage:
    Welches Board kann ich benutzen, um mit dieser Lib und der Siemens BCU (also kein WLAN) ein funktionsfähiges Gerät zu erstellen?

    Getestet habe ich ganz kurz den Arduino NANO: Hier hatte ich aber das Problem, dass der Compiler hier bei verschiedenen includes (z.B. cstddef) meckert.
    Beim ESP32 DevKit v4 kompiliert alles (ich musste statt dem "bau57B0" include das "bau07B0" nehmen, doch wegen der DEBUG-Ausgabe auf dem Seriellen Interface funktioniert das nicht. Hier könnte ich ein SoftwareSerial suchen um mit der BCU zu kommunizieren und das DEBUG über das USB-Kabel an den PC.

    d.h. Welches Board unterstützt das mit der BCU (also ohne WLAN) schon?

    Schöne Grüße und vielen Dank schon mal
    Patrick

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi,

    ich habe endlich eine erste Version von meinem commandline tool veröffentlicht. Damit dieser Thread nicht mit Rückfragen und Fehlermeldungen verwässert wird, finden ihr alle Infos hier: https://knx-user-forum.de/forum/%C3%...it-ets-projekt.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • Bernator
    antwortet
    Ich persönlich und für den SAMD werde vermutlich mit der Flash only Variante locker zurecht kommen, aber das Framework ist ja prinzipiell Platform unabhängig und da könnte es schon Fälle geben wo man evtl. lieber einen externen Speicher anflanscht. Ich bin einfach ein Freund effizienter Resourcen Nutzung, so dringend sehe ich das jetzt aber auch nicht deshalb hab ich es ja noch nicht implementiert

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi,

    Zitat von Bernator Beitrag anzeigen
    Nur für den Luxus in der Entwicklungsphase (den man noch anders erreichen kann)
    wollte nur zurückmelden, dass ich jetzt auch in PlatformIO es hinbekomme, mit oder ohne EraseFlash eine neue Firmware aufzuspielen.

    Zitat von Bernator Beitrag anzeigen
    Wie schon vorher kurz erwähnt wäre hier eher Potential in die Richtung vorhanden, dass man nicht alle Daten aus dem externen Speicher im Ram puffern müsste (zb. die Parameter).
    Siehst Du denn noch Fälle, in denen der Flash eher knapp werden könnte als das RAM? Also irgendwas für die external-Variante? Ich habe mir eingebildet, dass ich bisher hier die größten Parameterblöcke habe (knapp 6k), man könnte noch viele KO benötigen, aber die tangieren eher das RAM. Der Stack braucht ja grob 80k Flash, ich hab ein paar Libs drin und komme auch knapp 100k Flash, da sind immer noch 150k frei...

    Ich denke, man könnte sich den Aufwand der Implementierung sparen, wenn es keinen Bedarf dafür gibt, oder?

    Gruß, Waldemar

    P.S.: Dein Stack lief jetzt 3 Tage ohne Unterbrechung und komplett problemlos. Heute werde ich mal ausprobieren, ob ich an irgendwelche Grenzen komme...

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    HI Manuel,

    jetzt wird es schwierig...

    Tunneling im eibd habe ich auch, es darf nur kein Routing aktiv sein (zum programmieren, für den normalen Betrieb kann man Routing wieder nutzen).
    Im Augenblick würde ich darauf tippen, dass Dein ESP nicht korrekt über WLAN verbunden ist. Wie gesagt, ich habe keine Erfahrung mit dem ESP, ich wollte unbedingt was mit KNX-TP haben, um eben solche Probleme zu vermeiden. Die einzige KNX-IP Erfahrung für diesen Stack habe ich dadurch, dass ich meine Sachen auch unter Linux laufen lassen kann (hauptsächlich zum debuggen).

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • manu241
    antwortet
    Zitat von mumpf Beitrag anzeigen

    Manuel, Du musst den eibd stoppen oder zumindest den -R Parameter entfernen. Leider stören der eibd und der knxd im Routermodus die Programmierung über Netzwerkschnittstelle. Allerdings hättest Du auch gestern schon das Problem haben sollen...

    Gruß, Waldemar

    Hallo Waldemar,

    daran schein es nicht zu liegen. Ich habe nur beim Wiregate IP-Tunneling aktiviert. Testweise habe ich diesen mal vom Netzwerk getrennt.
    Irgendwas anderes mache ich falsch.

    Ich habe mal Testweise den ersten ESP wieder angesteckt und der sendet munter weiter seine Werte.

    Was könnte ich noch testen?

    Danke ihr so hilfsbereit seid.

    Gruß Manuel

    Einen Kommentar schreiben:


  • BlackDevil
    antwortet
    Sag ich ja. Keine ETS für DIY GA>Bus, ETS für KNX Gerät>Bus. Da beide die GA kennen müssen, brauche ich beide Varianten.

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Zitat von BlackDevil Beitrag anzeigen
    ich brauche die ETS um die GA in das offizielle KNX Gerät zu packen, richtig?
    Ich bin mir nicht sicher, ob ich Dich hier richtig verstehe... Folgendes gilt:
    1. Du brauchst die ETS, um ein gekauftes KNX-Gerät von einem Hersteller zu parametrieren.
    2. Du brauchst keine ETS, um ein DIY-Gerät (KONNEKTING, "KNX auf Arduino") eine GA auf den Bus senden zu lassen.
    3. Du brauchst die ETS, um ein DIY-Gerät, dass das Framework aus diesem Thread verwendet, auf den Bus senden zu lassen.
    Ich hoffe, das ist jetzt klarer...

    Gruß, Waldemar
    Zuletzt geändert von mumpf; 11.10.2019, 19:55.

    Einen Kommentar schreiben:


  • BlackDevil
    antwortet
    Die Vorstellung möchte ich aufräumen ok, Siemens BCU = Transceiver sonst nix. Verstanden.

    Wegen den GAs: wie ich gesagt habe, entweder Hard gecoded oder über eine Software. Aber egal ob über Konnekting oder anders, ich brauche die ETS um die GA in das offizielle KNX Gerät zu packen, richtig?

    Einen Kommentar schreiben:

Lädt...
X