NEWS
Test Adapter OpenKNX 0.6.x
-
@tombox
Da wird nix geschrieben, da sehe ich nichts im Gruppenmonitor von der ETS.
Flags an der GA sind gesetzt, sogar zeitweise alle mal gesetzt, aber leider ohne erfolg.
Die Werte werden aber aktualisiert wenn sie sich ändern. Aber über den ioBroker kann ich die in den Objekten nicht ändern.Sorry falsch. kann doch über die openKNX Objekte schreiben. Mache gleich noch mal einen Log wie es dann aussieht.
Im Gruppenmonitor wird der Wert nur einmal geschrieben.Wenn du Adapter die irgendein Gerät auslesen das nicht auf dem KNX Bus ist, wie bekommst du die Werte dann auf den BUS?
Hier noch der Auszug aus dem Log.
2021-12-30 22:43:28.339 - debug: openknx.0 (5488) [debug] 2021-12-30 21:43:28.339 *** deferring inbound_TUNNELING_REQUEST_L_Data.ind until transition sendDatagram => idle 2021-12-30 22:43:28.340 - debug: openknx.0 (5488) [debug] 2021-12-30 21:43:28.340 (sendDatagram): >>>>>>> successfully sent seqnum: 270 2021-12-30 22:43:28.341 - debug: openknx.0 (5488) [debug] 2021-12-30 21:43:28.340 Inbound message: 06100421000a04730e00 2021-12-30 22:43:28.341 - debug: openknx.0 (5488) [debug] 2021-12-30 21:43:28.341 ===== datagram 14 acknowledged by IP router 2021-12-30 22:43:28.341 - debug: openknx.0 (5488) [debug] 2021-12-30 21:43:28.341 (idle): zzzz... 2021-12-30 22:43:28.351 - debug: openknx.0 (5488) [debug] 2021-12-30 21:43:28.351 (idle): zzzz... 2021-12-30 22:43:28.352 - debug: openknx.0 (5488) Inbound GroupValue_Write 4/4/19 val: 0 dpt: DPT14 to Object: openknx.0.Heizung.Hargassner_Nano_PK.Temperatur_Boiler_1 2021-12-30 22:43:28.355 - debug: openknx.0 (5488) Outbound GroupValue_Write to 4/6/7 value "50" from openknx.0.Heizung.Photovoltaik.Autarkie 2021-12-30 22:43:28.367 - debug: openknx.0 (5488) [debug] 2021-12-30 21:43:28.367 (sendDatagram): >>>>>>> successfully sent seqnum: 271 2021-12-30 22:43:28.400 - debug: openknx.0 (5488) [debug] 2021-12-30 21:43:28.400 Inbound message: 061004200016047381002900bce011141806020040ff 2021-12-30 22:43:28.400 - debug: openknx.0 (5488) [debug] 2021-12-30 21:43:28.400 *** deferring inbound_TUNNELING_REQUEST_L_Data.ind until transition sendTunnReq_waitACK => idle 2021-12-30 22:43:28.401 - debug: openknx.0 (5488) [debug] 2021-12-30 21:43:28.401 Inbound message: 06100421000a04730f00 2021-12-30 22:43:28.401 - debug: openknx.0 (5488) [debug] 2021-12-30 21:43:28.401 ===== datagram 15 acknowledged by IP router
Auch wenn ich den Wert dann wieder zurück auf "0" schreibe wird nur einmal der Befehl raus gegeben.
-
@chrischros kannst auch das skript mir per pn schicken
-
release 0.1.13 ist verfügbar
-
@killroy2 Vielen Dank für den Adapter! Habe mittlerweile ohne größere Probleme alles auf openknx umgestellt.
Gruß
Hans -
nochmal zurück zur Problematik mit den DPTs (Datenpunkttpyen).
Aktueller Stand:
- Ältere KNX-Projekte (vor ETS5) können mit openknx zur Zeit nicht importiert werden. Das liegt daran, dass erst seit ETS5 DPT den Gruppenadressen zugeordnet werden (können, müssen).
- Ältere KNX-Projekte laufen aber natürlich weiterhin problemlos, KNX und ETS ist weitgehend abwärtskompatibel. ETS4 (und älter!) kann auch problemlos in ETS5 konvertiert werden und dort weiterbenutzt werden. Es fehlen dann halt die DTP.
- fehlende DPT sind per definitionem (KNX) somit zwar ärgerlich, aber durchaus zulässig.
Was bedeuten fehlende DPT (bei älteren KNX-Installationen) für die Praxis? Natürlich läuft das KNX-Projekt weiterhin, kann auch nach Konversion zu ETS5 ohne DPT weiterhin verwendet und programmiert und parametriert werden. Unschön ist lediglich, dass u.U. beispielsweise ein (ganz neues) Anzeigegerät nicht weiß, was es mit den Werten anfangen soll. Es ist ein 2-Byte-Wert, aber welche Einheiten z.B.? Trotzdem fließen natürlich die Daten in der Installation weiterhin. Und in der Praxis muss man dann bei Installation eines neuen Gerätes eben einen Datenpunkttyp ergänzen, falls die Geräteanzeige unsinnig aussieht.
Schlussfolgerung: Fehlende Datenpunkttypen sollten kein Ausschlusskriterium für den Import sein. Dort, wo es stört (wegen der Weiterverarbeitung der Daten) muss der Anwender halt selbst später den passenden DPT in iobroker (oder in der ETS) ergänzen. Aber doch bitte kein Zwang, das schon vorher bei vielleicht 1000 GAs machen zu müssen!
Der andere Adapter von Chefkoch in der Version 1.x hatte damit keine Probleme. Und der neue Adapter in Version 2.x ist nunmehr auch dementsprechend angepasst worden (siehe https://github.com/ioBroker/ioBroker.knx/issues/128#issuecomment-989205691
"Ich habe in V2.0.5 den Importfilter für ETS4 projekte überarbeitet/angepasst. damit sollte es laufen" (letzter Eintrag). -
@tdoc Ich habe dazu mal ein PR gemacht. Die Werte würde aber alle als hex werte dargestellt da keine Information existieren wie die Werte umgewandelt werden müssen
-
@tombox
ich glaube mit der Änderung ist im nicht geholfen, er müsste sich dann selber um die Konvertierung der Datentypen (komplex zB Float) kümmern anhand von auch wieder nicht verfügbaren Regeln.@tdoc
DPTs bestehen aus einer
main number - mit dem Datentyp
und
subnumber (right) - mit Range + UnitZur Datenverarbeitung ist es notwendig den Datentyp zu kennen. Die subnumber ist optional.
Der ETS4 Export, sowohl im XML und CSV Format, erzeugt nicht die DPT Informationen.
Der Chefkoch Adapter nutzt ein proprietäres ETS Austauschformat und kann dort in den Tiefen nach den notwendigerweise Vorhandenen Informationen graben.
Gegen welche Konvention der openknx Adapter verstossen soll müsstest du schon aufzeigen denn ich sehe keine. Das Konzept der ETS4 wahr wohl eher keine externen Tools zu supporten.Du sagst du kannst zu ETS5 konvertieren. Wie sieht der XML Export dort ins eigene Format aus warum nimmst du den Output nicht von dort?
-
@tdoc Feature ist fertig.
@killroy2 Möchte das fertige Feature nicht integrieren weil es für ihn persönlich kein Vorteil bringt. Ich denke man sollte den Nutzer da nicht bevormunden und lieber die rohdaten anzeigt anstatt es zu verbieten
https://github.com/iobroker-community-adapters/ioBroker.openknx/pull/80#issuecomment-1004165231 -
@tdoc
DPTs bestehen aus einer
main number - mit dem Datentyp
und
subnumber (right) - mit Range + UnitZur Datenverarbeitung ist es notwendig den Datentyp zu kennen. Die subnumber ist optional.
Der ETS4 Export, sowohl im XML und CSV Format, erzeugt nicht die DPT Informationen.
Der Chefkoch Adapter nutzt ein proprietäres ETS Austauschformat und kann dort in den Tiefen nach den notwendigerweise Vorhandenen Informationen graben.
Gegen welche Konvention der openknx Adapter verstossen soll müsstest du schon aufzeigen denn ich sehe keine. Das Konzept der ETS4 wahr wohl eher keine externen Tools zu supporten.Du sagst du kannst zu ETS5 konvertieren. Wie sieht der XML Export dort ins eigene Format aus warum nimmst du den Output nicht von dort?
Hier einfach mal ein Auszug aus meiner aktuellen ETS5, die ich auch für Änderungen,umparametrieren etc. benutze. Wie du siehst, fehlen fast überall die DPT. Das kommt vom ursprünglichen Projekt, damals gab es noch keine DPT. Es ist halt eine sehr alte Installation,hat ein Elektriker vor 20 Jahren gemacht. Konvertierung aus dem ursprünglichen Projekt in ETS5 liegt mir also vor und funktioniert auch völlig problemlos. Trotz der fehlenden DPT (die ich nur bei Bedarf mal nachträglich einpflege).
Es wäre also grundsätzlich schon eine große Hilfe für ALLE alten KNX-Installationen, wenn man auch ohne DPT deinen Adpater benutzen könnte. Insbesondere könnte man importieren, so geht es nicht ohne weiteres. Aber wie gesagt, ich hab trotzdem für mich eine Lösung gefunden und benutze deinen Adapter gerne. Er ist gut. Macht bitte weiter so!
-
@tdoc
Du kannst doch die ganzen 1bit Werte in der ETS markieren und dann in den Eigenschaften auf z.B. 1bit Schalten stellen.
Das hat bei mir keine 30 minuten für 2000 GA gedauert -
Dafür gibt es dynamische Ordner wo man sich einen Filter für leere Datentypen bauen kann
und von den vermutlich wenigen uneindeutigen zB signed/unsigned muss man es mit den KOs abgleichen. -
@thorsten-missenberger
Ja natürlich gibt es für dieses Problem einige Lösungsmöglichkeiten. Allerdings werde ich auch nicht der einzige sein, der eine alte KNX-Installation am Laufen hat und dann erst mal vom vergeblichen XML-Importversuch frustriert ist. Für solche alten KNX-Installationen sollte es m.E. eben eine einfache Lösung geben (vielleicht auch nur einen Hinweis in der read.me). Am praktischsten wäre aber eine Checkbox, die eben einen raw Import zulässt (also ohne DPT) und trotzdem Objekte erzeugt (in Abhängigkeit von der Länge würde die Importprozedur halt bei 1 bit z.B. erst mal provisorisch Datentyp 1.000 erzeugen, das ist am einfachsten)Letztlich kommen die alten KNX-Installationen sehr gut ohne DPT aus. Jedes Gerät interpretiert eben die Rohdaten so, wie ihm vom Hersteller vorgegeben. Die DPT sind natürlich für die Übersichtlichkeit besser. Probleme gibt es aber erst, wenn andere Programme wie iobroker ins Spiel kommen und dann natürlich nicht wissen, was sie mit diesen Rohdaten anfangen sollen.
Grundsätzlich muss man aber so oder so Hand anlegen:
- entweder manuell in der knxproj Datei (und danach importieren)
- oder eben später manuell im iobroker (wenn es eine checkbox gäbe, die Rohdaten-Import zulässt)
Und grundsätzlich muss der user wissen, dass es bei alten KNX-Installationen dieses Problem geben kann und wie er es lösen muss.
-
@tdoc said in Test Adapter OpenKNX 0.1.x:
Die Länge 1 bit sieht der Adapter nicht, weder beim Import noch auf dem Bus.
Erstmal gehts darum überhaupt Daten in IOB zu bringen, aktuell verweigert sich der Adapter.
Ich weiss nicht wie gut dir da der "Rohwert" (das ist ein Bytearray) hilft.-Für boolsche Werte kriegst du ein 1 Byte grosses Interface. Willst du später die DPTs korrigieren musst du überall in deinen Applikationion auf neuen Schnittstellen umstellen.
-Alle anderen Datentypen sind ohne händische Eingabe in der ETS oder im Objekt eh nicht nutzbar, ausser du willst dich selber um die Dekodierung der Datentypen kümmernEs deshalb weniger problematisch das Feature mit einer Checkbox umzusetzen die besagt "importiere GAs ohne DPT Zuweisung als Logikwert"
Ist der Wert auf dem Bus >1Byte kommt eine Warnung und wird ignoriert, und alle 1 Byte Werte !=0 werden als true interpretiert. -
@killroy2
Auch nicht boolsche Werte werden gut angezeigt und sind nutzbar, es gibt kein Grund es auf Logikwerte zu begrenzen.
Ich denke der Nutzer sollte hier entscheiden was er wie nutzen möchte und man sollte ihn nicht beschränken weil man denkt er könnte vielleicht damit nicht umgehen. -
@tombox
Zu komplex, der Nutzer hat einen Haufen arbeit hat eine falsch verstandene Funktion nachher auszubügeln. Wenn man jedes erdenkbare Szenario abbilden möchte haben wir nachher einen frei programmierbaren Adapter und den Feature Creep. Womöglich will jemand Zugriff auf die ceimi Rohdaten? Oder, oder..
Wir brauchen verständliche Funktionen für einen normalen Anwender, wer experimetieren will baut sich das selber ein.Ein Float, ein Datum etc pp wird nie richtig angezeigt. Ich kennen keinen Use Case mit den Rohwerten was anfangen zu müssen. Der Use Case hier ist: importier mir die Daten mit Gewalt, zu Typen mit denen der Adapter nichts anfagen kann werde ich gewarnt und setze manuell
-
@killroy2 Wie gesagt ich entscheide nicht für den Nutzer was für ihn zu komplex ist oder nicht. Wenn er es zu komplex findet nutzt er es nicht.
Eine Checkbox ist noch kein Feature Creep außerdem ist das hier kein Industrieprodukt nach ISO Standard.
Ich denke du hast ein falsches Verständnis vom normalen ioBroker Anwender. Wenn er keine Möglichkeiten zum experiementieren wünscht dann würde er sich eine Gira X1 holen und fertig. Wenn es darum geht "normale" Nutzer zu schützen könnte man auch die nicht genehmigten Feature in Experimentier Tab auslagernEin Float wird als 800 anstatt 8,00 angezeigt ich denke damit kann man leben.
Ich verstehe nicht die Notwendigkeit jede Checkbox hinlänglich zu diskutieren um eine einzelne Person zu überzeugen, weil vielleicht ein Nutzer nicht weiß was die Checkbox bedeuten könnte oder weil vielleicht irgendwann ein Fehler auftreten könnte. Anstatt ein Betatest zu nutzen zu dem er da ist und wenn das Nutzerfeedback ist, das es Blödsinn ist, dann wieder rausnehmen. Anstatt das eine Person entscheidet was für alle gut oder schlecht sein könnte.
Es fördert auf jeden Fall nicht die Motivation mitzuarbeiten wenn am Ende nur eine Person entscheidet.
-
@tombox Ein DPT9 Float hat ein spezielles Format für Mantisse und Exponent, das wird doch ohne Umrechnungsfunktion nie eine korrekte JS Number draus. Das mal als Beispiel stellvertretend für viele.
Mit der Umsetzung wie von dir vorgeschlagen implementiert er jetzt alles gegen Mixed Datentypen und ist von einer installation mit DPTs abgehängt. Mit seinen komplexeren Typen ist er aufgeschmissen, weil nicht mehr handelbar wie vorher oder oben beschrieben. Fixt er die ETS irgendwann wie geplant, kann er in IOB auf DPT korrigieren und hinterlässt eine Inkonsistente Struktur weil er nicht die abhägigen Einstellungen nicht kennt oder macht das über einen Reimport über die ETS und kann nachher seine ganze Applikation anfassen. Wie es zu gehen hat ist auch nicht dokumentiert. Ohne den Code anzuschauen versteht aktuell niemand was die Funktion tut.
Ich bin nicht gegen neue Features, aber sie sollen erstmal gut genug verstanden sein bevor wir sie auf die Menschheit loslassen. Auch in einer frühen Phase sollte man nichts einbauen was absehbar mal zu Frust führt.
-
@killroy2 Zur Entscheidungsfindung gibts die GitHub issues. Dort kann auf breiterer Basis Notwendigkeit, technische Umsetzung und sonstige Details diskutiert werden.
-
@killroy2
Auf Github wird sich keine breite Diskussion entwickeln.
Es wird von einem Teil der Nutzer als Bug report genutzt. Diskussion finden hier im Forum statt.Außerdem findet auf Github nur deine Entscheidungsfindung statt
Aber bringt nichts. Da nur du entscheidest was in den Adapter kommt dann ist es besser wenn nur du den Adapter weiter entwickelst und wie du gesagt hast wer eigene Feature will soll sich die selber bei sich einbauen.
-
@tombox
Das ist eine Frage wie die Dinge gelebt werden. Jeder ist von mir aus herzlich eingeladen und auch weiter aktiv mitzuwirken. Es gibt noch viele Ideen zum Umsetzen.
Collaboration ist halt nunmal nicht ganz einfach wenn die Ausrichtung offen ist und nicht strikt nach Spec umgesetzt wird.
Wir brauchen einen gewissen Konsens was und wie es umgesetzt werden soll, und dazu hilft ein vorab eine Vorstellung mit Meinungsaustausch.
Wenn du das nicht valide hältst was ich oben geschrieben halst kannst du eine Gegenrede starten. Ab besten kanalisiert in einem Issue der alles thematisch umklammert.