Hi Thomas,
ich habe das Ganze jetzt so weit hin bekommen, dass knx-linux auf einer Debian-VM läuft und ich auch debuggen kann. Mein Router (auf eibd-Basis) läuft auch, aber die ETS findet kein Gerät im Programmiermodus. So wie ich das verstanden habe, geht er aber nach dem Start direkt in den Programmiermodus, oder? Dann sollte ich das doch über die ETS sehen, oder?
Falls Du noch einen Tipp hast, was ich noch checken könnte, wäre ich dankbar - für heute mach ich mal Schluß...
Gruß, Waldemar
Ankündigung
Einklappen
Keine Ankündigung bisher.
ESP8266 KNX mit ETS
Einklappen
X
-
Ich habe gerade die Änderungen gepusht und die Beispiele aktualisiert. Man erhält nun die KOs durch knx.getGroupObject(NR). Die sind jetzt natürlich nur verfügbar, wenn das Gerät durch ETS konfiguriert wurde.
Einen Kommentar schreiben:
-
Es sollte je nach Konfiguration in ETS die richtige Größe fürs KO übertragen werden. Ich habe lokal schon die Konfiguration der KO komplett durch ETS umgestellt. Wenn ich getestet habe pushe ich es nach github.
Einen Kommentar schreiben:
-
Hi,
danke für die Info - ich muss mir mal anschauen, was die ETS da wirklich macht bzw. was sie wirklich überträgt. Ich kann in der knxprod ja so was definieren:
Somit definiere ich eigentlich nur ein KO9, die KOrefs erscheinen in der ETS zur Parametrierung unter "Kommunikationsobjekte", aber eben nur genau eines, je nach DPT-Auswahl über Parameter "M-00FA_A-0001-01-0000_P-64_R-64". Damit wird in der ETS die GA passend zum DPT zugewiesen (dafür mach ich das ganze ja). Was mir nicht klar ist: Hat man dann auf dem Device immer ein KO9 mit 14 Byte, weil das so im Original-KO spezifiziert ist, oder haben wir ein KO, dass sich letzendlich aus dem KOref ergibt?Code:<ComObject Id="M-00FA_A-0001-01-0000_O-9" Name="f1Out" Text="Funktion 1 - Ausgang" Number="9" FunctionText="Ausgang DPT 16.xxx" ObjectSize="14 Bytes" ReadFlag="Enabled" WriteFlag="Disabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" UpdateFlag="Disabled" ReadOnInitFlag="Disabled" DatapointType="" /> ... <ComObjectRef Id="M-00FA_A-0001-01-0000_O-9_R-1009" RefId="M-00FA_A-0001-01-0000_O-9" FunctionText="Ausgang DPT 1.xxx" ObjectSize="1 Bit" DatapointType="DPT-1" /> <ComObjectRef Id="M-00FA_A-0001-01-0000_O-9_R-1109" RefId="M-00FA_A-0001-01-0000_O-9" FunctionText="Ausgang DPT 5.001" ObjectSize="1 Byte" DatapointType="DPST-5-1" /> <ComObjectRef Id="M-00FA_A-0001-01-0000_O-9_R-1209" RefId="M-00FA_A-0001-01-0000_O-9" FunctionText="Ausgang DPT 9.xxx" ObjectSize="2 Byte" DatapointType="DPT-9" /> <ComObjectRef Id="M-00FA_A-0001-01-0000_O-9_R-1309" RefId="M-00FA_A-0001-01-0000_O-9" FunctionText="Ausgang DPT 16.001" ObjectSize="14 Byte" DatapointType="DPST-16-1" /> <ComObjectRef Id="M-00FA_A-0001-01-0000_O-9_R-1409" RefId="M-00FA_A-0001-01-0000_O-9" FunctionText="Ausgang DPT 17.001" ObjectSize="1 Byte" DatapointType="DPST-17-1" /> ... <choose ParamRefId="M-00FA_A-0001-01-0000_P-64_R-64"> <when test="0"> <ComObjectRefRef RefId="M-00FA_A-0001-01-0000_O-9_R-1009"/> </when> <when test="1"> <ComObjectRefRef RefId="M-00FA_A-0001-01-0000_O-9_R-1109" /> </when> <when test="2"> <ComObjectRefRef RefId="M-00FA_A-0001-01-0000_O-9_R-1209" /> </when> <when test="3"> <ComObjectRefRef RefId="M-00FA_A-0001-01-0000_O-9_R-1309" /> </when> <when test="4"> <ComObjectRefRef RefId="M-00FA_A-0001-01-0000_O-9_R-1409" /> </when> </choose>
Wenn ersteres gilt (immer 14 Byte), würde Deine Aussage
problematisch sein. Wenn die KOref-Definition gilt, dann sollte alles passen. Ich werde das mal ausprobieren und Dir dann berichten.Zitat von thesing Beitrag anzeigenDer Wert von einem Telegramm wird nur an ein KO zugewiesen, wenn auch die Größe des Wertes mit der Größe des KO übereinstimmen.
Danke schon mal für die Hilfe, ist ein super Projekt, wie schon mehrere hier sagten: Genau das, was im DIY-Bereich noch gefehlt hat.
Gruß, Waldemar
Einen Kommentar schreiben:
-
mumpf :
Um nochmal auf die Frage von https://knx-user-forum.de/forum/proj...49#post1360849 einzugehen.
Der Wert von einem Telegramm wird nur an ein KO zugewiesen, wenn auch die Größe des Wertes mit der Größe des KO übereinstimmen. Wenn man wie im anderen Thread gezeigt. die KO-Größe durch ETS festlegen lässt, solllte das aber immer die gleiche Größe sein.
Einen Kommentar schreiben:
-
Du brauchst keinen knx-Router, wenn das Gerät und dein PC sich im selben Netz befinden und du als Schnittstelle die Netzwerkverbindung deines PCs ausgewählt hast (IP Routing).
Die Kommunikation zwischen ETS und dem Geräte läuft dabei komplett über IP.
Einen Kommentar schreiben:
-
Hallo,
tatsächlich. Schön!Zitat von thesing Beitrag anzeigenhenfri hattest du dir das nicht sogar gewünscht?
Ich wollte gerade noch einmal probieren das Gerät zu parametrieren, während ich näher am AP bin. Allerdings kann die ETS keine Verbindung mehr mit dem Gerät herstellen -weder wenn ich die PA programmieren will (Programmiermodus mit Button aktiviert - auch im seriellen Log sichtbar), noch beim programmieren der Applikation (ohne Programmiermodus).
Habe ich es richtig verstanden, dass ich zum Programmieren keinen KNX-Router brauche und somit den KNXd auch mal zum Test abschalten kann, um auszuschließen, dass es daran liegt?
Anbei noch ein Screenshot meiner Topologie.
linie.PNG
Gruß,
Hendrik
Einen Kommentar schreiben:
-
Ja das kannst du machen. Du kannst über go.asap() die Nummer des KO herausbekommen. (asap = Application Layer Service Access Point) Genau so habe ich es auch in meine smarthomeNG plugin gemacht: https://github.com/thelsing/knx_ets/..._init__.py#L94
https://github.com/thelsing/knx_ets/...init__.py#L136Zuletzt geändert von thesing; 01.03.2019, 17:45.
Einen Kommentar schreiben:
-
Hallo thesing,
tolle Librarie für knx hast du da programmiert
Habe ich wunderbar mit einer Arduino MKR und Siemens BCU am laufen.
Ich habe jetzt eine Frage zu den callbacks der Gruppenadressen.
Ist es möglich alle callbacks auf eine Funktion einzustellen und dann in der Funktion die Nr./Key der Gruppenadresse welche den callback ausgelöst hat zu filtern?
Ich möchte in etwa folgendes machen:
Da ich diverse Gruppenadressen für verschiedene Sensoren habe würde dies meinen Code vereinfachen wie für jeden callback eine eigene Funktion zu verwenden.Code:void callback_funktion(GroupObject& go) { switch(Nr./Key der gruppenadresse) { case 7: ?.objectReadBool() mache was auch immer :) break; case 8: ?.objectReadBool() ... } setup { groupObjects[6].callback(callback_funtion); groupObjects[7].callback(callback_funtion); groupObjects[8].callback(callback_funtion); groupObjects[9].callback(callback_funtion); }
Einen Kommentar schreiben:
-
Nachdem bei mir WPS beim aktuellen esp8266 arduino-core nicht funktioniert, habe ich das ganze Zeug rausgeworfen und nutze die WifiManager-Lib für die wifi-Konfiguration. Siehe https://github.com/tzapu/WiFiManager
Damit spannt der ESP einen AP mit Webseite auf wenn Wifi nicht konfiguriert ist.
henfri hattest du dir das nicht sogar gewünscht?Zuletzt geändert von thesing; 26.02.2019, 22:54.
- Likes 1
Einen Kommentar schreiben:
-
Ich sehe im Code erst mal nicht wie es dazu kommen kann. Möglicherweise ging auf das Ack zu #241 verloren und das Gerät sendet den deshalb nochmal. Ich werde mir wohl mal einen Tool schreiben müssen um so etwas besser testen zu können. Für das EITT gibt es noch nicht einmal mehr eine Webseite. Aber das wird man als Privatperson wohl eh nicht kaufen könne. Mal ganz abgesehen vom Preis.
Einen Kommentar schreiben:
-
Hallo Thomas,
Stimmt, #245 hat ein falschen TPCI (T_Data, kein T_Data_Connected). Aber auch die Daten sind seltsam, die passen als Wiederholung von #241, nicht von #243. Da stimmt noch was mit deiner TransportLayer nicht.
Gruß, Klaus
Einen Kommentar schreiben:
-
Hallo Klaus,
ich hätte gar nicht gedacht, dass du dich im DIY-Forum rum treibst
In der knx_bme_flash.zip die Datei funktioniert_nicht.xml.
#243 ETS schickt PropertyValueWrite
#244 Geräte schickt Ack dazu
(erstes PropertyValueResponse geht verlohren)
#245 nach 3s wird erneut vom Gerät ein PropertyValueResponse geschickt. ETS antwortet nicht.
#246 es wird wieder ein PropertyValueResponse geschickt. ETS antwortet nicht.
#247 ETS schickt ein T-Disconnect.
Erwarten würde ich, dass ETS nach #245 einfach ein Ack schickt und es dann weiter geht. Oder übersehe ich etwas?
Edit:
Ich habe nochmal die vom Geräte gesendeten Daten genau analysiert. Das transport control field wird bei Wiederholungen nicht gefüllt. Ich hatte das Telegramm gespeichert bevor die richtig gefüllt wurde. Wenn man das weiß fällt auch auf, dass ETS keine Sequenznummer bei #245 und 246 anzeigt. Danke für den Hinweis.
henfri Ich habe gerade ein Fix gepusht. Kannst du mal bitte testen, ob es jetzt besser geht?
Grüße,
ThomasZuletzt geändert von thesing; 23.02.2019, 00:39.
Einen Kommentar schreiben:
-
Hallo Thomas,
ich finde auf Anhieb in der Gruppenmonitor-Aufzeichnung keine Stelle, wo die ETS nicht richtig reagiert. Kannst du mir das bitte zeigen?
Gruß, Klaus
Einen Kommentar schreiben:


Einen Kommentar schreiben: