NEWS
Test Adapter KNX v1.0.x
-
@loverz Über wie viele Geräte bzw. Gruppenadressen reden wir denn?
Wie gesagt, ein langes Wochenende und du hast das selbst in node-red gemacht und bist unabhängig vom Adapter.
Bzgl. Best Practice gebe ich dir natürlich recht. Habe ja darauf hingewiesen, dass das nicht von mir kommt, sondern in der Anleitung des Adapters steht.
Mach es halt Stück für Stück - Raum für Raum - Etage für Etage. Jedes Wochenende ein bißchen, irgendwann hast du es dann.
Kannst auf die aktuelle ETS hoch und wahrscheinlich sogar auf die ETS6, sobald die rauskommt.Darf ich fragen, warum bei dir ca. 85% im ioBroker laufen (müssen) oder geht es auch um die Einbindung von non-knx Geräten?
So sieht es bei mir momentan aus:
Ist keine Raketenwissenschaft. Und da ich mit Entwicklung bzw. Programmieren null am Hut habe, nutze ich weiterhin Blockly für die Logik, obwohl ich es direkt in node-red machen könnte bzw. jeder andere der entwickeln kann.
Evtl. lässt sich auch @Garfonso für einen kleinen proof of concept gewinnen.
Grundsätzlich dürfte das exportieren der Gruppenadressen und das anlegen selbiger als Datenpunkte im ioBroker kein Hexenwerk sein. Mit Hilfe der nodes kann dann der jeweilige Befehl (Gruppenadresse ist ja bekannt) auch über den Global Context node gesendet werden.
-
@lessthanmore ich denke nicht, dass ich die ETS Programmierung UND meine Scripte an einem langen WE schaffe. Ich habe wirklich extrem viele Logikscripte. Keine Ahnung, aber ich schätze über 300. Das ist auch der Grund wieso ich 85% in iobroker habe, weil der einfach viel mehr kann als die KNX Aktoren. Hab keinen KNX Logikserver!
Mit NodeRed habe ich nie gearbeitet, müsste mich da komplett einlesen. Verstehe ich richtig, dass NodeRed direkt mit KNX kommunizieren kann?
-
@cvidal said in Test Adapter KNX v1.0.x:
@lessthanmore Ja Traum, hab Write auf True gesetzt und Read auf false, Lief direkt. Besten dank euch allen.
Hab noch mal ne frage bzgl. Position Anzeigen.
Ich habe die Objekte "Position anzeigen" und "Position anfahren"
Wenn ich Manuell meine Rollladen fahre bekomme ich den % Wert nur auf "Position anzeigen" und nicht auf "Position anfahren".
Ich brauche den aktuellen Wert im Objekt "Position anfahren" um den Shuttercontrol Adapter nutzen zu können. Bekomme ich das ohne ETS hin?Gruß Christian
Ich hab dafür ein Blockly gemacht, welches nach dem fahren Position anfahren mit dem Wert von Position AKTUALISIERT, nicht steuert, dann sind beide Werte synchron. Das braucht man auch für YAHKA (Apple homekit) so.
-
@loverz Ich habe auch keinen Logikbaustein und nutze auch die Logik nicht, die mit vielen Geräten bereits mitkommt. Die Logik in der KNX ist wirklich viel zu schwach, kennt nur UND und ODER.
Aber du kannst auch verdammt viel mit Szenen machen. Meine Rollläden bspw. laufen alle über Szenen.
Ich habe dafür nur eine einzige GA, auf die ich lediglich eine Szenennummer schicke und die Rollläden dementsprechend fahren.
Sonnenschutz lässt sich auch prima mit den Aktoren von MDT umsetzen und die kosten nicht viel.Mir ist vor allem wichtig so viel wie möglich in der KNX laufen zu haben um unabhängig vom ioBroker zu sein; siehe KNX Adapter. Es kann immer mal sein, dass ein Entwickler keine Lust mehr hat oder schlimmeres passiert.
Lichter kann man auch super über Szenen steuern und die meisten Aktoren bringen das mit (DALI bspw.).
Und selbst wenn du die Logik im Skript in ioBroker hast, so musst du von ioBroker lediglich eine GA mit einer Szene beschreiben, etc.Ich habe mir node-red erstmals vor genau zwei Tagen installiert. Für node-red werden unzählige Module angeboten und für knx gibt es mehrere (ultimate, easy, etc.).
Im Modul selbst hinterlegst du lediglich die IP Adresse deines Gateways oder Router:
Du verlinkst dann einen Datenpunkt aus ioBroker mit einer GA und der Wert von ioBroker wird direkt auf die GA geschrieben. Beim Update aus KNX kommend sollte man allerdings darauf achten, dass ioBroker, der den Wert aktualisiert, nicht direkt wieder an den Bus schickt. Hatte ich hübsche Disko hier im Haus weil alles an/ aus, usw. gegangen ist
Aber wenn du wirklich über 300 Gruppenadressen hast, dann ist das schon eine Hausnummer und dann verstehe ich das auch.
-
@lessthanmore danke für den kleinen Gedankenausflug
Hab auch die MDT Aktoren, aber nie die Szenen verwendet.
Ich verfolge einen anderen Denkansatz:
-KNX für Grundfunktionen, sodass auch ohne iobroker alles manuell funktioniert.
-iobroker für die Automationen bzw. Logiken. Natürlich mache ich mach da ein Stückweit abhängig, aber wenn mal alles läuft muss ich ja nicht updaten. Ist ja alles Offline, das relativiert alles ein wenig. -
@loverz Ja, da bin ich ganz bei dir.
Wenn du node-red mal ausprobieren willst und Fragen hast, schreib mich einfach an. Hier geht es ja um den KNX Adapter.Im Übrigen kannst du mit dem ultimate Modul auch deine Gruppenadressen importieren. Aber es ist natürlich deutlich mehr Arbeit als mit dem Adapter, der schon alle Datenpunkte anlegt.
-
@lessthanmore Hab nun meine ganzen Objekte händisch korrigiert.
Also:
-Statusobjekte mit Write=false und Read=true
-Schaltobjekte mit Write=true und Read=falseNach dem Updaten auf die aktuellste Version des KNX Adapters bekomme ich direkt wieder keine Rollo-Positionen, wenn diese gefahren sind.
Muss wohl wieder auf 1.0.20 runter...
-
@loverz StatusGA müsste glaube ich beides true sein, also write und read. Nur dann reagiert der Adapter auf ein GroupValueRead.
Warum hast du nicht erst ein Update gemacht?
Die Verknüpfung zwischen Schalt und Status DP wurde ja erst nach 1.0.20 eingeführt.
Hast du in deinen Skripten wirklich so oft die Statusadresse verwendet? Oder eher die Schaltadresse?
Denn du müsstest in der ETS ja nur die Status GA umbenennen.
Dann Update vom Adapter und Projekt neu importieren damit alles sauber angelegt wird. -
@lessthanmore ich habe erst die Objekte händisch angepasst, weil ich wusste, dass der Adapter Probleme macht. Hab es nun bestimmt schon 4 mal veruscht upzudaten.
Ich habe in meinen Scripten alle möglichen Objekte verwendet, ich will da nicht nochmal ran, die laufen einwandfrei.
Nun werde ich bei den Status Adressen noch zusätzlich den Write auf True setzen und die letzte Chance geben....
-
@loverz Ich glaube wir drehen uns im Kreis.
Probier es, aber weitere Probleme sind dann recht wahrscheinlich bzw. können nicht ausgeschlossen werden. -
@loverz
Ich versuche mal zu helfen. Bei mir klappt es recht gut.
Ich nutze:- KNX-Adapter: 1.0.45
- ETS-Version: 5.7.4
Meine Jalousie im Badezimmer wird von einem ABB JAL-Aktor angetrieben. Befehle wie auf und ab gehen, sowie die direkte Positionsansteuerung. Bei der Badezimmerjalousie nutzte ich ausschließlich die Positionsansteuerung über ioBroker und der ioGO-App.
Die Schaltgruppenadresse:
Die zugehörige Statusgruppenadresse:
Die KNX-Objekte am Aktor:
Das KNX-Schaltobjekt im ioBroker:
Die Objekt-Eigenschaften der Schaltadresse:
{ "_id": "knx.0.Jalousie.Jalousie_Position.Jalousie_Position_Badezimmer", "type": "state", "common": { "name": "Jalousie Position Badezimmer", "type": "number", "role": "value", "unit": "%", "max": 100, "min": 0, "read": false, "write": true }, "native": { "dpt": "DPT5.001", "address": "2/1/205", "addressRefId": "P-02CE-0_GA-376", "statusGARefId": "P-02CE-0_GA-377", "actGARefId": "", "objRef": "O-13_R-1388", "devName": "M-0002_A-A064-14-83B7", "devInst": "P-02CE-0_DI-56", "objectSize": "", "update": false }, "from": "system.adapter.knx.0", "user": "system.user.admin", "ts": 1603985491838, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
Das KNX-Statusobjekt im ioBroker:
Die Objekt-Eigenschaften der Statusadresse:
{ "_id": "knx.0.Jalousie.Jalousie_Position_Status.Jalousie_Position_Badezimmer_Status", "type": "state", "common": { "name": "Jalousie Position Badezimmer Status", "type": "number", "role": "value", "unit": "%", "max": 100, "min": 0, "read": true, "write": false }, "native": { "dpt": "DPT5.001", "address": "2/2/205", "addressRefId": "P-02CE-0_GA-377", "statusGARefId": "", "actGARefId": "P-02CE-0_GA-376", "objRef": "O-33_R-1407", "devName": "M-0002_A-A064-14-83B7", "devInst": "P-02CE-0_DI-56", "objectSize": "" }, "from": "system.adapter.knx.0", "user": "system.user.admin", "ts": 1603985491844, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
Das Alias-Objekt, mit denen ich seit einer Weile ausschließlich arbeite. Es reicht dieses eine Aliasobjekt auf die Schaltadresse. Ein Alias auf die Statusadresse ist nicht notwendig:
Die Objekt-Eigenschaften des Alias-Objektes:
{ "type": "state", "common": { "name": "Rollladen", "type": "number", "role": "level.blind", "unit": "%", "max": "100", "min": "0", "read": false, "write": true, "alias": { "id": "knx.0.Jalousie.Jalousie_Position.Jalousie_Position_Badezimmer", "read": "val*1", "write": "" }, "desc": "Geziehlte Position anfahren", "states": "", "custom": [] }, "native": {}, "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1603996490851, "_id": "alias.0.Rollladen.Raum_203_Badezimmer.Rollladen_Position", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Hier mal die Steuerung mittels der Android App ioGO:
Wichtig ist, dass wenn du die ioBroker-Objekteigenschaften änderst, musst Du den KNX-Adapter neustarten. War zumindestens bei mir so.
Es sollte keinen Grund geben, dass es bei Dir nicht so klappt. Auch wenn Du die Aliase nicht nutzt. Dann würdest Du direkt mit dem Schaltobjekt arbeiten.
Du solltest aber zukünftig die Aliase nutzen, damit Du nicht die festen Objektadressen in den Scripten nutzt. Das Anlegen der Aliase macht kurz etwas Arbeit. Ich nutze dazu pro Gerät ein Script, damit ich nicht soviel klicken muss.
Bei mir geht mit dem KNX-Adapter fast alles. Nach einem anfänglichen Geisterhaus beim Starten des KNX-Adapters, wo viel an und aus bzw. Rollläden hoch- und runter fuhren, musste ich nur die KNX-Flags in Ordnung bringen und auf die richtige Verbindung zwischen Schalt- und Status-GA im ioBroker sorgen (siehe meinen Vorrednern). Das geht zum Teil automatisch beim Einlesen, nur ganz selten musste ich es manuell korrigieren.
Nur mit Datum und Zeitobjekten will es bei mir zwischen ioBroker und KNX nicht so richtig. Falls mir da jemand weiterhelfen kann. Zum Beispiel welcher Objekttyp: String, Number oder Mixed der richtige ist...
Viele Grüße
Michael -
@mpenno danke für ausführliche Erklärung.
Die Positionsansteuerung funktioniert bei mir einwandfrei, nur die Positionen, welche von KNX nach iobroker gehen sollen kommen nicht an.
Die Flags der Objekte sind so wie bei dir: Schalt-Objekte Write=True; Read=False. Status-Objekte Write=False; Read=True.
Der einzige Unterschied scheint meine Benennung in ETS zu sein:
Wohnzimmer_Rollladen_Nord_Position_anfahren
Wohnzimmer_Rollladen_Nord_PositionIch hab also die Benennung von der Schalt-GA nicht zu 100% im Namen von der Status-GA. Daran kann es aber doch nicht liegen mensch
Mich ärgert es, dass doch beim 1.0.20 alles geht und danach nicht mehr!
Die Alias-Objekt hast du nur gemacht um zukünftige Umbenennungen einfacher zu gestalten, habe ich das richtig verstanden?
-
@loverz said in Test Adapter KNX v1.0.x:
Wohnzimmer_Rollladen_Nord_Position_anfahren
Dann ändere nur einmal diese GA zu:
Wohnzimmer_Rollladen_Nord_Position_anfahren_Statusund du wirst ein Wunder erleben
Kannst sie ja mal zu Testzwecken umbenennen. Nur daran liegt es nämlich.
Es geht ja nach Version 1.0.20 nicht nur um die Eigenschaften read und write, sondern auch um die Pärchen, also
addressRefId
statusGARefId
actGARefIdDas gilt es eben händisch anzupassen wenn man die GA in der ETS nicht umbenennen möchte/ kann.
-
@lessthanmore also doch. Es liegt echt am Namen... Das ist aber ehrlich gesagt sehr doof gemacht vom Adapter...
Ich werde testweise mal ein Pärchen und die dazugehörigen Scripte umbenennen und mich anschließend nochmal melden.
Aber wenn dann muss ich doch die andere GA
Wohnzimmer_Rollladen_Nord_Position umbenennen in:
Wohnzimmer_Rollladen_Nord_Position_anfahren_Status oder nicht? -
@loverz Ja, richtig. Hatte die falsche GA zitiert.
anfahren ist die Schalt GA und anfahren_Status die Status GA.
Wie soll der Adapter denn erkennen dass die beiden zusammen gehören wenn sie nicht gleich heißen bzw. identisch sind?
Der Adapter kennt lediglich die Adresse, Bezeichnung und die Flags.
Nach welcher Logik würdest du es denn machen?
Wie gesagt, diese Abfrage kam erst nach 1.0.20 weshalb es bei Versionen vorher bei dir keine Probleme gab. -
@lessthanmore der Adapter muss das doch gar nicht wissen, ob die zusammen gehören, das ist doch der Punkt! 1.0.20 weiß das auch nicht.
Der Adapter soll einfach nur dafür sorgen, dass wenn mein Rollladen Aktor auf die Status GA einen Wert (z.B.100%) sendet dies im entsprechenden iobroker Objekt eingetragen wird, das kann doch nicht so schwer sein.
-
@loverz Was soll ich dir sagen?
Die Änderung wurde aber implementiert um sie später für weitere Funktionen nutzen zu können.
Zumindest war das wohl mal der Plan.
Nach 1.0.20 prüft der Adapter eben auf Pärchen. Ist so.
Das kann man jetzt doof finden oder nicht, aber es wird sich nicht ändern.
Also benennt man entweder seine Gruppenadressen einmalig sauber in der ETS (RM, Status, etc.) oder man muss alles händisch anpassen.
Oder aber man nutzt weiterhin die 1.0.20 und bleibt auf einer veralteten ETS hängen.Im Übrigen steckt im Adapter ein bißchen mehr Logik als simples „Shit in, shit out“.
Wenn du nur einen Wert auf den Bus senden willst und einen lesen möchtest tut es eben auch node-red. -
@loverz sagte in Test Adapter KNX v1.0.x:
@lessthanmore der Adapter muss das doch gar nicht wissen, ob die zusammen gehören, das ist doch der Punkt! 1.0.20 weiß das auch nicht.
Der Adapter soll einfach nur dafür sorgen, dass wenn mein Rollladen Aktor auf die Status GA einen Wert (z.B.100%) sendet dies im entsprechenden iobroker Objekt eingetragen wird, das kann doch nicht so schwer sein.
Äh..
Der Adapter hätte gerne das die zugehörige GAs einen logische Benennung haben..
Mal ganz simpel:Rolladen EG Wohnzimmer rauf
Rolladen EG Wohnzimmer runter
Rolladen EG Wohnzimmer status
Rolladen EG Wohnzimmer TeilSo ist er programmiert.
Wenn du es gerne anderst hättest brauchst du einen anderen AdapterMusste ich auch lernen und halt nach richten..
Es ist halt ne ETS für die Umbenennung sinnvoll..Oder kippst du in deinen Benziner auch ab und zu Diesel..
-
@lessthanmore @Tobi68 alles klar, ich glaub ich bin einfach nicht fähig die Logik zu verstehen.
Das einzige was ich verstanden habe: Es wurde eine neue Funktion implementiert, die man wahrscheinlich in der Zukunft brauchen könnte, dann ist der Entwickler aber weg gegangen. Da es wahrscheinlich nicht mehr weitergehen wird, kann ich auch auf 1.0.20 bleiben, da diese neue Funktionen wohl nie kommen werden.Was ich aber nochmal fragen muss:
"Entweder man benennt im ETS alles sauber um, oder muss selbst Hand anlegen"
Dieses selbst Hand anlegen beinhaltet das Bearbeiten der RAW-Werte richtig? Ich frage mich nur, wie ich dem Adapter über die RAW-Werte erklären kann, welche Pärchen nun zusammengehören.
Sorry, ich stehe etwas auf dem Schlauch... -
@loverz Ich wiederhole mich, aber wir drehen uns im Kreis.
Bis 1.0.20 wurde jede GA einzeln betrachtet und gemäß den Flags in ETS angelegt und deren Attribute entsprechend gesetzt.
Mit 1.0.30 wurden dann erweiterte Statusobjekte (actRefId, etc.) verwendet, um die Funktionen zu erweitern. In erster Linie um im Adapter zu wissen, wenn eine Status GA bspw. eine Rückmeldung erhält, von welchem Schaltobjekt diese Rückmeldung kommt.
Evtl. hatte es damit etwas zu tun, ist aber alles nur Mutmaßung.
Bis 1.0.20: Es müssen die Attribute der Datenobjekte (RAW) manuell angepasst werden, so fern sie nicht korrekt gemäß der Flags angelegt wurden (write und read).
Ab 1.0.30: Gleiches wie oben + die jeweiligen Schalt und Status Datenpunkte müssen miteinander verbunden werden.Schau dir die Screenshots von @Tobi68 an. Dort siehst du für jeden Datenpunkt die zusätzlichen Attribute adressRefId, statusGARefId und actGARefId. Wenn du die Werte betrachtest, dann siehst du, dass diese in den jeweiligen Datenpunkten verknüpft sind.
addressRefId ist die eindeutige ID pro GA.
Im Schaltdatenpunkt befindet sich die entsprechende addressRefId des Statusdatenpunktes im Feld statusGARefId.
Im Statusdatenpunkt befindet sich die entsprechende addressRefId des Schaltdatenpunktes im Feld actGARefId.Die Zeit, die wir hier diskutieren, hättest du übrigens wunderbar verwenden können, um die Gruppenadressen in der GA umzubenennen und die ersten Skripte anzupassen
Wie gesagt, klar kannst du auf der 1.0.20 bleiben. Wenn die bei dir sauber läuft warum auch nicht.
Möchtest du allerdings auf eine neuer ETS Version und machst Änderungen in der ETS, die du dann in den Adapter übertragen möchtest, so geht das nicht mehr.
Selbst mit der aktuellsten Adapter Version ist ein Import der ETS Version 5.7.6 bereits nicht mehr möglich.
Jetzt können wir natürlich auch gerne noch darüber diskutieren, ob es sinnvoll ist oder nicht die ETS Version aktuelle zu halten, aber das würde dann wohl den Rahmen sprengen.
Gleiches gilt auch für deine nodejs VersionWas wenn Kay in nächster Zeit am Adapter weitermacht? Oder ein anderer Entwickler warum auch immer übernimmt? Dann musst du den Schritt eh gehen. Aber mehr als spekulieren können wir nicht.