Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
freut mich, dass es auch jemanden gibt, der den ESP32 mit KNX-TP angeht. Bleib mal ruhig dabei, ich hab hier auch noch 3xESP32 rumliegen, vielleicht kann ich Deine Erfahrung nochmal gebrauchen...
Ja sehr gerne, das werde ich hier zu Hause sicherlich jetzt verstärkt einsetzen und nutzen...
freut mich, dass es auch jemanden gibt, der den ESP32 mit KNX-TP angeht. Bleib mal ruhig dabei, ich hab hier auch noch 3xESP32 rumliegen, vielleicht kann ich Deine Erfahrung nochmal gebrauchen...
Aber um Deine Frage zu beantworten:
Ich nutze derzeit das Sensormodul von Masifi, das er in dem Thread https://knx-user-forum.de/forum/proj...-sensoreinsatz vorstellt. Das ist eben fertig mit KNX Transceiver und hat auch noch ein externes EEPROM mit drauf. Außerdem passen da Standardsensoren mit I2C bus drauf, da muss ich nicht noch löten .
Am Anfang hatte ich noch ein einfaches Devel-Board aus China, da steht "Wemos SAMD21 MINI" drauf, das geht auch, aber es gibt sehr wenig Doku zu dem Board.
danke für die Blumen, aber wenn ich schon nichts beim Coding beitragen kann, kann ich wenigstens bei den einfachen Fragen helfen. Nachdem ich die Änderungen von Bernator gesehen habe, ist mir klar geworden, dass mein "löblicher" Ansatz für die Speicherverwaltung nicht mehr war als eine Idee, die ich nicht hätte realisieren können.
@Bernator: Könnte man für die MemoryId nicht ne Kombi machen? 2 Byte programmierter Präfix und das 3. Byte den Index? So was wie 0xAE5Ann, wobei nn der Index ist?
Und zum Thema Save: Ich würde davon ausgehen, dass hier jeder bereit ist, noch was an seiner Firmware zu ändern (falls man es schon genutzt hat, ich mach es z.B. im externen EEPROM), wenn man dadurch nennenswert mehr RAM zur Verfügung hat. Ich will nur sagen, ich fände es schade, falls diese Erweiterung nicht in den Stack kommt, nur weil man ein api stabil halten will. Ist nur meine Meinung, ich kann nicht behaupten, dass ich das Ganze schon durchblicke.
ich bin nicht sicher ob ich dich richtig verstehe, aber wenn Save() weiter so funktionieren soll wie bisher ist eine Flash only Variante nicht möglich da vom Interface immer Speicher im Ram alloziert werden muss welcher dann erst später über Save() in den von der Memory Klasse allozierten Speicher kopiert wird. Restore() funktioniert eigentlich wie vorher nur das eben kein Speicher alloziert wird sonder nur ein Pointer auf die bereits vorhandenen Daten übergeben wird.
Ja das mit den Platformspezifischen Speichermodi wollte ich anfangs so machen, bin dann aber irgendwo auf auf ein Problem gestoßen (hatte auch was mit der direkten Flash Nutzung zu tun) und habs dann dem Stack bekannt gegeben. Das war aber zu einem Zeitpunkt wo ich noch nicht alles so ganz durchschaut hatte, hier könnte man tatsächlich nochmal drüber nachdenken, wär auf jeden Falls eleganter.....
MemoryId könnte man auch den Index des SaveRestores nehmen aber 1,2,3.... als eindeutige ID ist nicht sonderlich originell und wenn die App selbst auch noch Flash Speicher anfordert bekommt man evtl.schnell Probleme?
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.
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?
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.
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
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?
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.
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
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...
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).
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: