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.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Problem mit neuen thelsing / knx Stack Versionen und ESP32 / ESP8266
Jetzt stehe ich vor neuen Problem.
Mit Kanex ein Produkt erstellt und erfolgreich in Ets importiert. Nun ist die Frage wie ich die XML Datei erstelle für den Code ?
Bestes Forum hier (danke mal wieder für deine schnelle Antwort).
Ich hatte das Beispiel DIY-DEMO thelsing/knx umgeschrieben das ich ws2812b und sk6812 rgbw mit meinen Glastaster2 benutzen kann Mein Ehrgeiz hat mich dazu gebracht eine KNX Produktdatei zu erstellen mit dem Kaenx-Creator. Jetzt muss natürlich der Controller(ESP32) die neue Struktur wissen.
Hier haben ich vorgesehen R(1byte),G(1byte),B(1byte),WW(1byte),Start_Stop(R( 1byte). Diese entnimmt der Code doch aus der XML-Datei oder liege ich hier falsch ?
Grüße
Julian
Zu meiner Schande habe ich den Kaenx-Creator schon lange nicht mehr benutzt. Generiert er zufällig auch ein .h-file? Wenn ja, sollten da drin passende #defines stehen, die für die Parameter und KO Deiner ETS-Applikation gelten.
Dann kannst Du in der Firmware entspechend die Parameter auslesen und auf entsprechende KO schreiben.
Die üblichen verdächtigen Danke für eure Antworten Wenn das Projekt komplett fertig ist werde ich es der Allgemeinheit öffnen. (Code,Platine,KNX)
Also hat die XML-Datei keine Bedeutung im Code // Nur die Defines die in der H-Datei geschrieben werden ?
Weil die alte XML-Datei von der DIY-DEMO ist ausführlicher ( Produktname ,Größe, Parameter , und und ) und die erstellte .h Datei beinhaltet nur die defines ...
Grüße
Julian
Versucht hatte ich es auch schon manuell anzupassen aber leider ohne Erfolg xD
<ComObjectTable>
<ComObject Id="M-00FA_A-ABCE-79-0000_O-1" Name="Current temperature value" Text="Current temperature value" Number="1" FunctionText="Transmit temperature value" ObjectSize="2 Bytes" ReadFlag="Enabled" WriteFlag="Disabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" UpdateFlag="Disabled" ReadOnInitFlag="Disabled" DatapointType="" />
Ja, die XML ist für die ETS, die .h ist für C++. Manchmal ist es so einfach . Die .h nimmt einem nur etwas rechnen ab, technisch notwendig ist sie nicht.
okay gut das habe ich dann richtig verstanden.
Wie sieht denn der Ablauf bei euch aus ? gibt es ein besseres Tool zum erstellen der KNX.prod Datei ? ( passt ihr die XML-Datei manuell an ? )
Aktuell wenn ich meine Produkt-Datei (Applikationsdatei) im Esp32 lade resetet der Controller immer wieder neu.
Hier war meine Vermutung da die XML Datei fehlerhaft sein könnte.
Grüße
Julian
Weil die alte XML-Datei von der DIY-DEMO ist ausführlicher
Das liegt daran, dass in der xml der Demo nicht nur die Applikation drin ist, sondern auch die Hardware und Katalog.
Bei mir trenne ich das in drei Seperate Dateien (wie sie auch später in der knxprod zu finden sind).
Die Defines sind wichtig/hilfreich für das Arduino Projekt.
Dann kannst du nämlich in deinem Code
knx.paramByte(Param_LightSettings)
.
Ändert sich nun der Offset (Speicherort) des Parameters musst du nur die neue .h in dein Projekt übernehmen.
(Ansonsten müsstest du jede Stelle wo du auf den Offset zugreifst manuell in den neuen Ändern)
Aktuell wenn ich meine Produkt-Datei (Applikationsdatei) im Esp32 lade resetet der Controller immer wieder neu.
Hier war meine Vermutung da die XML Datei fehlerhaft sein könnte.
Diese Aussagen passen überhaupt nicht zusammen.
Man lädt die XML nicht in den ESP.
Es wird nur die .h importiert.
Ohne mehr Code (am besten Github Link) können wir da auch nicht helfen...
Kein Problem
Schon mal vorweg eine kleine Zusammenfassung:
XML-demo -> in Kaenx.Creator laden -> erstellt knxprod und .h
knxprod -> wird in ETS geladen -> schreibt parameter in ESP
.h -> in Arduino Code inkludieren -> in Code können nun die Defines verwendet werden:
Hallo zusammen ;D danke nochmal thewhobox // deine kleine Zusammenfassung hat mich nochmals Überlegen lassen // Hatte im Kaenx Creator keinen Speicher angelegt bzw. gedacht das automatisch anlegen macht es von allein. Den Harken habe ich weggemacht und Speicher angelegt hiernach hat sich der µC nicht mehr aufgehängt. // Allerdings wenn ich jetzt aus dem Gruppenmonitor auf die Gruppenadresse sende bekomme ich nur jede 2 Adresse( Byte) Empfangen.Mir ist nicht ganz klar wie die zuordnung der Daten passiert ;( // Sprich: 1/1/1 = Rot 1/1/2= Grün 1/1/3 Blau 1/1/4 = Weiß// Ich bekomme über den Gruppenmonitor nur auf Grün und Weiß etwas im µC empfangen.
(Wofür genau ist der Offset beim Kaenx Creator und warum bekomme ich nur jedes 2 byte gelesen ? )
-Grüße
Programmauschnitt :
#define Rot knx.getGroupObject(0)
#define Grun knx.getGroupObject(1) // wird empfangen
#define Blau knx.getGroupObject(2)
#define Weiss knx.getGroupObject(3) // wird empfangen
#define Effekte knx.getGroupObject(4)
#define StartStop knx.getGroupObject(5) // wird empfangen
Rot.dataPointType(DPT_DecimalFactor);
Grun.dataPointType(DPT_DecimalFactor);
Blau.dataPointType(DPT_DecimalFactor);
Weiss.dataPointType(DPT_DecimalFactor);
Effekte.dataPointType(DPT_DecimalFactor);
StartStop.dataPointType(DPT_DecimalFactor);
/* WLED ist eine gute alternative, aber der Traum mit dem Glastaster alles zu steuern lebt weiter */
keinen Speicher angelegt bzw. gedacht das automatisch anlegen macht es von allein.
Nein es wird keiner automatisch angelegt.
Wenn du allerdings vom Template "Minimal" startest, ist ein Speicher bereits angelegt.
Die automatische Größe wird beim veröffentlichen oder Heatmap berechnen berechnet.
Kann natürlich sein, dass der Stack mit einer größe von 0 Bytes nicht zurecht kommt.
Das hat auch bei mir schon zu vielen Problemen geführt.
Für den Stack müssen die KOs bei 1 anfangen.
Warum die anderen nicht empfangen werden kann ich nur raten.
knx.loop() zu selten aufgerufen
Flags an den KOs stimmen nicht
für die anderen kein Callback angegeben
Der Offset bei einem Speichersegment ist laut XSD zwingend erforderlich.
Man könnte die ersten 3 Bytes irgendwelche Statischen informationen Speichern und Offset auf 3 stellen, damit die 3 bytes beim Parametrieren nicht überschrieben werden.
Hab ich aber noch nie getestet, im Normalfall bleibt das einfach auf 0.
Und nochmal: Ohne Code kann man zum Großteil nur Raten
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.
Kommentar