NEWS
Test Adapter KNX v2.x
-
@chefkoch009 Vielen Dank! Scheint zu funktionieren. Sachen lassen sich schalten und Log ist bis jetzt leer.
-
@merlin123 Klasse. Danke für die Rückmeldung. Hast Du schon directLink probiert?
Wenn die Funktion oder das wie und warum unklar sind, dann erkläre ich es gern einmal, denn offensichtlich ist die Doku dann nicht gut.
VG
chefkoch009 -
@chefkoch009 habe soeben auf 2.0.8 updated und bisher (30 min.) keine Probleme entdeckt.
directLink bei einem Objekt ebenfalls getestet und funktionierte auf Anhieb.
Dachte zuerst, dass man damit ein bereits bestehendes Objekt auf ein KNX Objekt bindet, aber es ist ja umgekehrt.Der Wert des KNX Objekt wird auf ein ioBroker Objekt gebunden.
-
@marlan99 was heisst das denn ganz genau, was bewirkt es und bei welchen Fällen braucht man das?
Hast du ein Beispiel für diese Bindung? -
@loverz angenommen du willst dass ein KNX Objekt bei einer Aktualisierung des Wert ein anderes Objekt (Bsp.: 0_userdata.0.example_state) mit diesem Wert beschreibt, dann trägst du bei directLink das Objekt 0_userdata.0.example_state ein.
Tatsächlich benötige ich den entgegengesetzten Fall.
Ich messe Temperaturen mit 1wire und beschreibe bei einer Änderung des Wertes ein bestimmtes KNX Objekt für die Heizungssteuerung.Aber ich kann mir vorstellen, dass auch der nun verfügbare directLink von nutzen sein kann.
In meinem Fall nutze ich aktuell weiterhin die javascript blockly Option mit dem Baustein "binde object" -
@chefkoch009 said in Test Adapter KNX v2.x:
@mpl1338 update ist online V2.0.8
danke funzt.
Ich hab nun ein anderes Problem wahr genommen. Der Adapter verschluckt den ein oder anderen Befehl. Am meisten merke ich es bei Routinen welche mehrere GAs ansprechen.
on({id: 'alexa2.0.Echo-Devices.123', change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("alexa2.0.Echo-Devices.123").val == true) { setStateDelayed("alias.0.Bad.Deckenlicht.SET"/*Bad Deckenlicht schalten*/, false, 15000, false); setStateDelayed("knx.0.zentral.Szenen.haus_verlassen"/*haus_verlassen*/, 64, 10000, false); if (getState("alias.0.Wetter.Dämmerungsschalter.ACTUAL").val) { setState("alias.0.Bad.Rollladen_Bad.SET"/*Rollladen Bad SET*/, 100); } setState("alias.0.Bad.Duschlicht.SET"/*Duschlicht schalten*/, true); setState("alias.0.Bad.Duschablage.ON_SET"/*Duschablage schalten*/, true); setState("alexa2.0.Echo-Devices.123.Player.radioStationId"/*radioStationId*/, 's96355'); setState("alexa2.0.Echo-Devices.123.Player.controlPlay"/*controlPlay*/, true); setState("alexa2.0.Echo-Devices.123"/*fertig*/, false); } }); // "alexa duschen" on({id: 'alexa2.0.Echo-Devices.123', change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("alexa2.0.Echo-Devices.123").val == true) { setState("alias.0.Bad.Deckenlicht.SET"/*Bad Deckenlicht schalten*/, false); setState("alias.0.Bad.Spiegellicht.SET"/*Bad Spiegellicht schalten*/, false); if (getState("alias.0.Wetter.Dämmerungsschalter.ACTUAL").val) { setState("alias.0.Bad.Rollladen_Bad.SET"/*Rollladen Bad SET*/, 0); } setState("alias.0.Bad.Duschlicht.SET"/*Duschlicht schalten*/, false); setState("alias.0.Bad.Duschablage.ON_SET"/*Duschablage schalten*/, false); setState("alexa2.0.Echo-Devices.123.Player.controlPause"/*controlPause*/, true); setState("alexa2.0.Echo-Devices.123"/*Duschen*/, false); } });
on({id: 'alias.0.Garage.Garage_verlassen.SET', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("alias.0.Garage.Garage_verlassen.SET").val == true) { console.log('Garage verlassen'); setState("alexa2.0.Echo-Devices123.Player.controlPause"/*controlPause*/, true); setState("alias.0.Garage.Steckdose_Kompressor.SET"/*Steckdose Kompressor schalten*/, false); setState("alias.0.Garage.Licht_Garage_hinten.SET"/*Licht Garage hinten schalten*/, false); setState("alias.0.Garage.Garage_Licht.SET"/*Garage Licht schalten*/, false); setStateDelayed("alias.0.Garage.Licht_Garagentorstripes.ON_SET"/*Licht Garagentorstripes schalten*/, false, 2000, false); setState("alias.0.Garage.Garagentor_fahren.SET"/*Garagentor fahren schalten*/, true); if (getState("knx.0.schalten_status.bewaesserung.magnetventil_trafo_schalten_status").val == false) { setState("alias.0.Garage.Steckdose_Brunnen.SET"/*Steckdose Brunnen schalten*/, false); } console.log('alles aus'); if (getState("alias.0.Wetter.Dämmerungsschalter.ACTUAL").val) { setState("alias.0.Garage.Licht_Torsturz.ON_SET"/*Licht Torsturz schalten*/, true); setState("alias.0.Außen.Licht_Hauswand_Garage.SET"/*Licht Hauswand Garage schalten*/, true); setState("alias.0.Außen.Licht_Hauswand_vorne.SET"/*Licht Hauswand vorne schalten*/, true); setStateDelayed("alias.0.Garage.Licht_Torsturz.ON_SET"/*Licht Torsturz schalten*/, false, 18000, false); setStateDelayed("alias.0.Außen.Licht_Hauswand_Garage.SET"/*Licht Hauswand Garage schalten*/, false, 19000, false); setStateDelayed("alias.0.Außen.Licht_Hauswand_vorne.SET"/*Licht Hauswand vorne schalten*/, false, 20000, false); console.log('alles aus bei dämmerung '); } else { setStateDelayed("alias.0.Garage.Licht_Torsturz.ON_SET"/*Licht Torsturz schalten*/, false, 5000, false); } setStateDelayed("alias.0.Garage.Garage_verlassen.SET"/*Garage verlassen schalten*/, false, 1000, false); } }); on({id: 'alias.0.Garage.Garagentor_fahren.SET', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("alias.0.Garage.Garagentor_fahren.SET").val == false) { console.log('Garagentor öffnen'); if (getState("alias.0.Wetter.Dämmerungsschalter.ACTUAL").val) { setState("alias.0.Garage.Licht_Torsturz.ON_SET"/*Licht Torsturz schalten*/, true); setStateDelayed("alias.0.Außen.Licht_Hauswand_Garage.SET"/*Licht Hauswand Garage schalten*/, true, 5000, false); setStateDelayed("alias.0.Garage.Garage_Licht.SET"/*Garage Licht schalten*/, true, 8000, false); setStateDelayed("alias.0.Garage.Licht_Torsturz.ON_SET"/*Licht Torsturz schalten*/, false, 180000, false); setStateDelayed("alias.0.Außen.Licht_Hauswand_Garage.SET"/*Licht Hauswand Garage schalten*/, false, 100000, false); } } });
anbei 2 Blocklys welche bis vor kurzem ganz durchliefen. Jetzt kommt es vor dass die Scripte nicht mehr alle befehle abarbeiten
-
Ich gebe einfach mal folgendes Szenaren:
- Es gibt einen Sonosplayer und einen KNX-Tastsensor. Nun soll die Taste 1 vom Tastsensor "play" machen und im Display vom Tastsensor soll der Interpret und die Lautstärke angezeigt werden.
Dazu lege ich eine GA Bsp 5/0/1 "Sonos-play-stopp", eine GA 5/0/2 "Interpret" und eine GA 5/0/3 "Lautstärke" an.
Nun verknüpfe ich über directLink die 5/0/1 mit Sonos-simpleState, die 5/0/2 mit Sonos-Interpret und die 5/0/3 mit Sonos-Volume.
Somit werden diese Sachen im KNX abgebildet und umgekehrt, das heisst, wenn ich die Lautstärke über meine Sonos-HandyApp ändere, wird sofort die 5/0/3 aktualisiert und umkehrt, wenn ich einen Wert für Volume in die 5/0/3 schreibe, dann werden die Sonos-States aktualisiert.
Ich kann nun auch über ein GroupValueRead den verknüpften State abfragen.
- mein iobroker soll als Zeitserver für KNX dienen. Dann verknüpfe ich das iobroker object, welches mir die Zeit liefert direkt mit der KNX GA. Wenn sich nun das Object aktualisiert, dann tut es das auch auf dem KNX Bus.
Ich hoffe das bringt etwas Licht ins Dunkel
VG
chefkoch009 - Es gibt einen Sonosplayer und einen KNX-Tastsensor. Nun soll die Taste 1 vom Tastsensor "play" machen und im Display vom Tastsensor soll der Interpret und die Lautstärke angezeigt werden.
-
@mpl1338 Ich glaube ich verstehe das Problem nicht....du machst doch nur ein einziges setState mit einem object aus KNX?
VG
chefkoch009 -
es scheint so. als ob bei Version 2.0.8. die GA Properties nicht gespeichert werden. Wenn ich von lesen/aktualisieren auf schreiben wechsle und schließe ist beim nächsten öffnen der zustand wieder der alte. DPT Änderung wird gespeichert. Rollback auf 2.0.5. hat das Problem behoben.
-
@chefkoch009 geht alles per alias weiter ans KNX, hatte für die eine GA nur kein Alias eingerichtet
-
@chefkoch009 wenn ich dich richtig verstehe, dann wird beim direct Link ein veränderter Wert in beide Richtungen aktualisiert?
In diesem Fall funktioniert es bei mir nicht.
Wenn ich ein Objekt verknüpfe, dann wird der Wert nur auf das Datenobjekt geschrieben, wenn ich vom KNX Bus einen Wert empfange.
Wenn sich jedoch ein Datenobjekt im ioBroker ändert, dann wird dies nicht auf das verknüpfte KNX Objekt geschrieben. -
Hallo!
Ich habe das schon mal geschrieben aber ich denke es ist untergegangen.
Wenn ich die Gruppenadressen importiere steht da ja immer Erfolgreich importierte GAs: XXX. Wäre es wohl möglich im gleichen Fenstern noch die Anzahl der neu angelegten GA anzuzeigen.
Ich bin mit der KNX Installation nicht fertig und erweitere immer wieder. Es hätte mir in einigen Fällen schon die Fehlersuche verkürzt.Gruß
-
@klamm-0 Ähm...stimmt...ist untergegangen, sorry. Kannst Du dazu auf Github bitte einen Feature request anlegen?
VG
chefkoch009 -
@mpl1338 Danke für das Feedback.
VG
chefkoch009 -
schau mal hier ein beispiel, hier hat der Adapter den befehl knx.0./knx.0.schalten.Garage.garagentor_fahren und knx.0./knx.0.schalten.Garage.licht_garage_hinten_schalten verschluckt.
Busmonitor:
# Zeit Dienst Flags Prio Quelladresse Quellname Zieladresse Zielname Hop Count Typ DPT Info # Zeit Dienst Flags Prio Quelladresse Quellname Zieladresse Zielname Hop Count Typ DPT Info 10 07.01.2022 18:05:29,397 zum Bus Niedrig 1.0.2 Tunnelling Kanal 2 7/1/10 Garage verlassen 6 GroupValueWrite 1.001 Schalten $01 | Ein 9 07.01.2022 18:05:29,394 vom Bus Niedrig 1.1.100 - 1/4/3 steckdose_kompressor_schalten 6 GroupValueWrite 1.001 Schalten $00 | Aus 11 07.01.2022 18:05:29,620 vom Bus Niedrig 1.1.100 - 1/4/0 licht_garage_schalten 6 GroupValueWrite 1.001 Schalten $00 | Aus 12 07.01.2022 18:05:29,845 vom Bus Niedrig 1.1.100 - 1/4/4 steckdose_brunnen_schalten 6 GroupValueWrite 1.001 Schalten $00 | Aus 13 07.01.2022 18:05:30,070 vom Bus Niedrig 1.1.100 - 1/4/1 licht_torlicht_schalten 6 GroupValueWrite 1.001 Schalten $01 | Ein 15 07.01.2022 18:05:30,171 vom Bus Niedrig 1.1.100 - 1/3/3 licht_hauswand_garage_schalten 6 GroupValueWrite 1.001 Schalten $01 | Ein 17 07.01.2022 18:05:30,294 vom Bus Niedrig 1.1.100 - 1/3/7 licht_hauswand_schalten 6 GroupValueWrite 1.001 Schalten $01 | Ein 19 07.01.2022 18:05:30,396 vom Bus Niedrig 1.1.100 - 7/1/11 Bett taster blinken 6 GroupValueWrite 1.001 Schalten $01 | Ein 21 07.01.2022 18:05:30,519 vom Bus Niedrig 1.1.100 - 7/1/11 Bett taster blinken 6 GroupValueWrite 1.001 Schalten $01 | Ein 22 07.01.2022 18:05:30,621 vom Bus Niedrig 1.1.100 - 7/1/10 Garage verlassen 6 GroupValueWrite 1.001 Schalten $00 | Aus 23 07.01.2022 18:05:31,388 vom Bus Niedrig 1.1.100 - 1/4/7 licht_garage_ledstripe_schalten 6 GroupValueWrite 1.001 Schalten $00 | Aus 40 07.01.2022 18:05:47,388 vom Bus Niedrig 1.1.100 - 1/4/1 licht_torlicht_schalten 6 GroupValueWrite 1.001 Schalten $00 | Aus 42 07.01.2022 18:05:47,537 vom Bus Niedrig 1.1.100 - 7/1/11 Bett taster blinken 6 GroupValueWrite 1.001 Schalten $01 | Ein 44 07.01.2022 18:05:48,389 vom Bus Niedrig 1.1.100 - 1/3/3 licht_hauswand_garage_schalten 6 GroupValueWrite 1.001 Schalten $00 | Aus 46 07.01.2022 18:05:48,589 vom Bus Niedrig 1.1.100 - 7/1/11 Bett taster blinken 6 GroupValueWrite 1.001 Schalten $01 | Ein 47 07.01.2022 18:05:49,389 vom Bus Niedrig 1.1.100 - 1/3/7 licht_hauswand_schalten 6 GroupValueWrite 1.001 Schalten $00 | Aus
Javascript:
18:05:27.974 info javascript.0 (397) script.js.Garage.garage_verlassen: Garage verlassen 18:05:27.974 info javascript.0 (397) script.js.Garage.garage_verlassen: alles aus 18:05:27.975 info javascript.0 (397) script.js.Garage.garage_verlassen: alles aus bei dämmerung 18:05:27.982 silly knx.0 (1034) States user redis pmessage knx.0.*/knx.0.schalten.Garage.steckdose_kompressor_schalten:{"val":false,"ack":false,"ts":1641575127980,"q":0,"c":"script.js.Garage.garage_verlassen","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1640994645124} 18:05:27.984 silly knx.0 (1034) States user redis pmessage knx.0.*/knx.0.schalten.Garage.licht_garage_hinten_schalten:{"val":false,"ack":false,"ts":1641575127980,"q":0,"c":"script.js.Garage.garage_verlassen","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1638987354871} 18:05:27.985 silly knx.0 (1034) States user redis pmessage knx.0.*/knx.0.schalten.Garage.licht_garage_schalten:{"val":false,"ack":false,"ts":1641575127980,"q":0,"c":"script.js.Garage.garage_verlassen","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1641574670278} 18:05:27.986 silly knx.0 (1034) States user redis pmessage knx.0.*/knx.0.schalten.Garage.garagentor_fahren:{"val":true,"ack":false,"ts":1641575127980,"q":0,"c":"script.js.Garage.garage_verlassen","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1641574670278} 18:05:27.987 silly knx.0 (1034) States user redis pmessage knx.0.*/knx.0.schalten.Garage.steckdose_brunnen_schalten:{"val":false,"ack":false,"ts":1641575127980,"q":0,"c":"script.js.Garage.garage_verlassen","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1641150805828} 18:05:27.988 silly knx.0 (1034) States user redis pmessage knx.0.*/knx.0.schalten.Garage.licht_torlicht_schalten:{"val":true,"ack":false,"ts":1641575127980,"q":0,"c":"script.js.Garage.garage_verlassen","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1641575127980} 18:05:27.990 silly knx.0 (1034) States user redis pmessage knx.0.*/knx.0.schalten.Außen.licht_hauswand_garage_schalten:{"val":true,"ack":false,"ts":1641575127980,"q":0,"c":"script.js.Garage.garage_verlassen","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1641575127980} 18:05:27.996 silly knx.0 (1034) States user redis pmessage knx.0.*/knx.0.schalten.Außen.licht_hauswand_schalten:{"val":true,"ack":false,"ts":1641575127980,"q":0,"c":"script.js.Garage.garage_verlassen","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1641575127980} 18:05:28.976 silly knx.0 (1034) States user redis pmessage knx.0.*/knx.0.Logic.IOB_befehle.Garage_verlassen:{"val":false,"ack":false,"ts":1641575128975,"q":0,"c":"script.js.Garage.garage_verlassen","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1641575128975} 18:05:29.976 silly knx.0 (1034) States user redis pmessage knx.0.*/knx.0.schalten.Garage.licht_garage_ledstripe_schalten:{"val":false,"ack":false,"ts":1641575129975,"q":0,"c":"script.js.Garage.garage_verlassen","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1641150807833} 18:05:45.977 silly knx.0 (1034) States user redis pmessage knx.0.*/knx.0.schalten.Garage.licht_torlicht_schalten:{"val":false,"ack":false,"ts":1641575145976,"q":0,"c":"script.js.Garage.garage_verlassen","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1641575145976} 18:05:46.978 silly knx.0 (1034) States user redis pmessage knx.0.*/knx.0.schalten.Außen.licht_hauswand_garage_schalten:{"val":false,"ack":false,"ts":1641575146977,"q":0,"c":"script.js.Garage.garage_verlassen","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1641575146977} 18:05:47.978 silly knx.0 (1034) States user redis pmessage knx.0.*/knx.0.schalten.Außen.licht_hauswand_schalten:{"val":false,"ack":false,"ts":1641575147977,"q":0,"c":"script.js.Garage.garage_verlassen","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1641575147977}
-
@chefkoch009 sagte in Test Adapter KNX v2.x:
Ich gebe einfach mal folgendes Szenaren:
- Es gibt einen Sonosplayer und einen KNX-Tastsensor. Nun soll die Taste 1 vom Tastsensor "play" machen und im Display vom Tastsensor soll der Interpret und die Lautstärke angezeigt werden.
Dazu lege ich eine GA Bsp 5/0/1 "Sonos-play-stopp", eine GA 5/0/2 "Interpret" und eine GA 5/0/3 "Lautstärke" an.
Nun verknüpfe ich über directLink die 5/0/1 mit Sonos-simpleState, die 5/0/2 mit Sonos-Interpret und die 5/0/3 mit Sonos-Volume.
Somit werden diese Sachen im KNX abgebildet und umgekehrt, das heisst, wenn ich die Lautstärke über meine Sonos-HandyApp ändere, wird sofort die 5/0/3 aktualisiert und umkehrt, wenn ich einen Wert für Volume in die 5/0/3 schreibe, dann werden die Sonos-States aktualisiert.
Ich kann nun auch über ein GroupValueRead den verknüpften State abfragen.
- mein iobroker soll als Zeitserver für KNX dienen. Dann verknüpfe ich das iobroker object, welches mir die Zeit liefert direkt mit der KNX GA. Wenn sich nun das Object aktualisiert, dann tut es das auch auf dem KNX Bus.
Ich hoffe das bringt etwas Licht ins Dunkel
VG
chefkoch009Ich versuche den "DirectLink" funktion zu konfigurieren aber kann nicht die ioBroker Objekte wählen beim Verlinken. Warum kann ich nur andere KNX GAs wählen?
Adapter version ist 2.0.8
- Es gibt einen Sonosplayer und einen KNX-Tastsensor. Nun soll die Taste 1 vom Tastsensor "play" machen und im Display vom Tastsensor soll der Interpret und die Lautstärke angezeigt werden.
-
@videonisse Rechts unten in Deinem Screenshot fehlt "directLink". Hast Du mal "iobroker u knx" gemacht?
VG
chefkoch009 -
@chefkoch009 sagte in Test Adapter KNX v2.x:
iobroker u knx
It actually works. The issue was that the button "ADD" for Direct Links was not visible on my screen. I'm using Full HD resolution and the GA-TOOLS GUI lacks a scroll bar so I didn't understand there was another button below "Add new relation".
-
How can I create an Object where Direct Link is connected with the current Time/Date? Or has ioBroker such Object in the Object Tree already available?
It should be used to send the actual Time/date to the KNX bus as a response to a GroupValueRead.
-
@videonisse Have you seen this object?
javascript.0.variables.dayTime
Mayby this is, what you're searching for.
I translate the meaning of your question.
videonisse fragt nach einem vorhanden directLink fähigem Objekt, welches die Uhrzeit auf den KNX Bus schreibt. Er möchte es so zu sagen als Zeitgeber benutzen.
VG
chefkoch009