NEWS
Z-Wave-Adapter setzt falsche Status bei "benachbarten" Objekten
-
So, hier was passiert wenn ich Switch_2 einmal auf true setze und danach wieder auf false:
2018-02-05 17:01:34.412 - debug: zwave.0 value changed: 4 comClass: 37 value: {"value_id":"4-37-2-0","node_id":4,"class_id":37,"type":"bool","genre":"user","instance":2,"index":0,"label":"Switch","units":"","help":"","read_only":false,"write_only":false,"min":0,"max":0,"is_polled":false,"value":true} 2018-02-05 17:01:34.418 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.SWITCH_BINARY.Switch_2 val=true, ack=true, ts=1517846494414, q=0, from=system.adapter.zwave.0, lc=1517846494307 2018-02-05 17:01:36.364 - debug: zwave.0 value changed: 4 comClass: 37 value: {"value_id":"4-37-1-0","node_id":4,"class_id":37,"type":"bool","genre":"user","instance":1,"index":0,"label":"Switch","units":"","help":"","read_only":false,"write_only":false,"min":0,"max":0,"is_polled":false,"value":true} 2018-02-05 17:01:36.367 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.SWITCH_BINARY.Switch_1 val=true, ack=true, ts=1517846496366, q=0, from=system.adapter.zwave.0, lc=1517846496366 2018-02-05 17:01:36.404 - debug: zwave.0 value changed: 4 comClass: 37 value: {"value_id":"4-37-1-0","node_id":4,"class_id":37,"type":"bool","genre":"user","instance":1,"index":0,"label":"Switch","units":"","help":"","read_only":false,"write_only":false,"min":0,"max":0,"is_polled":false,"value":true} 2018-02-05 17:01:36.407 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.SWITCH_BINARY.Switch_1 val=true, ack=true, ts=1517846496406, q=0, from=system.adapter.zwave.0, lc=1517846496366 2018-02-05 17:01:40.009 - debug: zwave.0 value changed: 4 comClass: 50 value: {"value_id":"4-50-1-32","node_id":4,"class_id":50,"type":"bool","genre":"user","instance":1,"index":32,"label":"Exporting","units":"","help":"","read_only":true,"write_only":false,"min":0,"max":0,"is_polled":false,"value":false} 2018-02-05 17:01:40.010 - debug: zwave.0 value changed: 4 comClass: 50 value: {"value_id":"4-50-1-8","node_id":4,"class_id":50,"type":"decimal","genre":"user","instance":1,"index":8,"label":"Power","units":"W","help":"","read_only":true,"write_only":false,"min":0,"max":0,"is_polled":false,"value":"16.6"} 2018-02-05 17:01:40.018 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.METER.Exporting_1 val=false, ack=true, ts=1517846500010, q=0, from=system.adapter.zwave.0, lc=1517742614071 2018-02-05 17:01:40.021 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.METER.Power_1 val=16.6, ack=true, ts=1517846500018, q=0, from=system.adapter.zwave.0, lc=1517846500018 2018-02-05 17:01:40.048 - debug: zwave.0 value changed: 4 comClass: 50 value: {"value_id":"4-50-1-32","node_id":4,"class_id":50,"type":"bool","genre":"user","instance":1,"index":32,"label":"Exporting","units":"","help":"","read_only":true,"write_only":false,"min":0,"max":0,"is_polled":false,"value":false} 2018-02-05 17:01:40.049 - debug: zwave.0 value changed: 4 comClass: 50 value: {"value_id":"4-50-1-8","node_id":4,"class_id":50,"type":"decimal","genre":"user","instance":1,"index":8,"label":"Power","units":"W","help":"","read_only":true,"write_only":false,"min":0,"max":0,"is_polled":false,"value":"16.3"} 2018-02-05 17:01:40.055 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.METER.Exporting_1 val=false, ack=true, ts=1517846500049, q=0, from=system.adapter.zwave.0, lc=1517742614071 2018-02-05 17:01:40.055 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.METER.Power_1 val=16.3, ack=true, ts=1517846500051, q=0, from=system.adapter.zwave.0, lc=1517846500051 2018-02-05 17:01:46.184 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.SWITCH_BINARY.Switch_2 val=false, ack=false, ts=1517846506183, q=0, from=system.adapter.admin.0, lc=1517846506183 2018-02-05 17:01:46.184 - debug: zwave.0 stateChange zwave.0.NODE4.SWITCH_BINARY.Switch_2 set {"val":false,"ack":false,"ts":1517846506183,"q":0,"from":"system.adapter.admin.0","lc":1517846506183} 2018-02-05 17:01:46.185 - debug: zwave.0 setState for: nodeID=4: comClass=37: index=0: instance=2: value=false 2018-02-05 17:01:46.281 - debug: zwave.0 value changed: 4 comClass: 37 value: {"value_id":"4-37-2-0","node_id":4,"class_id":37,"type":"bool","genre":"user","instance":2,"index":0,"label":"Switch","units":"","help":"","read_only":false,"write_only":false,"min":0,"max":0,"is_polled":false,"value":false} 2018-02-05 17:01:46.286 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.SWITCH_BINARY.Switch_2 val=false, ack=true, ts=1517846506283, q=0, from=system.adapter.zwave.0, lc=1517846506183 2018-02-05 17:01:48.234 - debug: zwave.0 value changed: 4 comClass: 37 value: {"value_id":"4-37-1-0","node_id":4,"class_id":37,"type":"bool","genre":"user","instance":1,"index":0,"label":"Switch","units":"","help":"","read_only":false,"write_only":false,"min":0,"max":0,"is_polled":false,"value":false} 2018-02-05 17:01:48.237 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.SWITCH_BINARY.Switch_1 val=false, ack=true, ts=1517846508235, q=0, from=system.adapter.zwave.0, lc=1517846508235 2018-02-05 17:01:48.275 - debug: zwave.0 value changed: 4 comClass: 37 value: {"value_id":"4-37-1-0","node_id":4,"class_id":37,"type":"bool","genre":"user","instance":1,"index":0,"label":"Switch","units":"","help":"","read_only":false,"write_only":false,"min":0,"max":0,"is_polled":false,"value":false} 2018-02-05 17:01:48.280 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.SWITCH_BINARY.Switch_1 val=false, ack=true, ts=1517846508276, q=0, from=system.adapter.zwave.0, lc=1517846508235 2018-02-05 17:01:49.009 - debug: zwave.0 value changed: 4 comClass: 50 value: {"value_id":"4-50-1-32","node_id":4,"class_id":50,"type":"bool","genre":"user","instance":1,"index":32,"label":"Exporting","units":"","help":"","read_only":true,"write_only":false,"min":0,"max":0,"is_polled":false,"value":false} 2018-02-05 17:01:49.010 - debug: zwave.0 value changed: 4 comClass: 50 value: {"value_id":"4-50-1-8","node_id":4,"class_id":50,"type":"decimal","genre":"user","instance":1,"index":8,"label":"Power","units":"W","help":"","read_only":true,"write_only":false,"min":0,"max":0,"is_polled":false,"value":"0.0"} 2018-02-05 17:01:49.013 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.METER.Exporting_1 val=false, ack=true, ts=1517846509011, q=0, from=system.adapter.zwave.0, lc=1517742614071 2018-02-05 17:01:49.015 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.METER.Power_1 val=0, ack=true, ts=1517846509013, q=0, from=system.adapter.zwave.0, lc=1517846509013 2018-02-05 17:01:49.048 - debug: zwave.0 value changed: 4 comClass: 50 value: {"value_id":"4-50-1-32","node_id":4,"class_id":50,"type":"bool","genre":"user","instance":1,"index":32,"label":"Exporting","units":"","help":"","read_only":true,"write_only":false,"min":0,"max":0,"is_polled":false,"value":false} 2018-02-05 17:01:49.049 - debug: zwave.0 value changed: 4 comClass: 50 value: {"value_id":"4-50-1-8","node_id":4,"class_id":50,"type":"decimal","genre":"user","instance":1,"index":8,"label":"Power","units":"W","help":"","read_only":true,"write_only":false,"min":0,"max":0,"is_polled":false,"value":"0.0"} 2018-02-05 17:01:49.053 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.METER.Exporting_1 val=false, ack=true, ts=1517846509049, q=0, from=system.adapter.zwave.0, lc=1517742614071 2018-02-05 17:01:49.054 - silly: zwave.0 inMem message zwave.0.* zwave.0.NODE4.METER.Power_1 val=0, ack=true, ts=1517846509051, q=0, from=system.adapter.zwave.0, lc=1517846509013
Ich werde gerade nicht ganz schlau draus…
-
Laut Log sieht das so aus, dass ioBroker korrekt nur einen der Switches schalten will. Anschließend kommt von ZWave die Info, dass sich der Zustand von 2 Switches geändert hat.
Poste mal nen Screenshot des CONFIGURATION Baums, nicht dass da eine Geräteeinstellung dazwischen haut.
-
Das liegt nicht am Adapter, es gibt bei OZW schon einen offenen issue dafür. Am besten dort nochmal reinhängen.
-
Danke, da hab ich ja noch gar nicht nachgesehen.
Gibt es eine Moeglichkeit dieses "Info aktualisieren" zwischendurch irgendwie zu triggern, da dann ja wieder die korrekten States erscheinen haette ich dann einen Workaround bis das Problem an sich geloest wird. Ich sehe so nur nichts in den Objekten wo man einen passenden Befehl absetzen kann. Wenn man das direkt an OpenZWave geben kann geht ja auch ein kleines Cron-Script.
-
Ich sehe so nur nichts in den Objekten wo man einen passenden Befehl absetzen kann. `
Dürfte per JavaScript gehen (die 2 ersetzen durch den Node, den du aktualisieren willst):sendTo("zwave.0", "refreshNodeInfo", {nodeID: 2}, function(ret) { if (ret.error) { // es gab ein Problem } else if (ret.result === "ok") { // alles gut } });
-
Habe das jetzt erstmal fuer alle 5 Minuten gesetzt, funktioniert einwandfrei, also noch maximal 5 Minuten passen die gemeldeten States dann auch, sehr schoen.
schedule("*/5 * * * *", function () { sendTo("zwave.0", "refreshNodeInfo", {nodeID: 4}, function(ret) { if (ret.error) { // es gab ein Problem } else if (ret.result === "ok") { // alles gut } }); });
Besten Dank!
-
Alternativ könntest du auch einen refresh veranlassen, wenn ich einer der States geändert hat (nicht aktualisiert, sonst gibts ne Endlosschleife!). Dann vermeidest du unnötigen Funkverkehr, wenn nichts passiert und bist schneller aktuell.
-
on({id: new RegExp('zwave\\.0\\.NODE4\\.SWITCH_BINARY\\.Switch_1' + "|" + 'zwave\\.0\\.NODE4\\.SWITCH_BINARY\\.Switch_2' + "|" + 'zwave\\.0\\.NODE4\\.SWITCH_BINARY\\.Switch_3'), change: "ne"}, function (obj) { sendTo("zwave.0", "refreshNodeInfo", {nodeID: 4}, function(ret) { if (ret.error) { // es gab ein Problem } else if (ret.result === "ok") { // alles gut } }); });
Ja, das scheint auch zu funtkionieren
(Ja, den RegExpkram da oben habe ich mit Blockly erzeugt und mir dann den Code genommen.)
-
den RegExpkram da oben `
kannst du durch ein Array ersetzen, ist einfacher zu ergänzen:[ 'zwave.0.NODE4.SWITCH_BINARY.Switch_1', 'zwave.0.NODE4.SWITCH_BINARY.Switch_2', 'zwave.0.NODE4.SWITCH_BINARY.Switch_3' ]
-
on({id: [ 'zwave.0.NODE4.SWITCH_BINARY.Switch_1', 'zwave.0.NODE4.SWITCH_BINARY.Switch_2', 'zwave.0.NODE4.SWITCH_BINARY.Switch_3' ], change: "ne"}, function (obj) { sendTo("zwave.0", "refreshNodeInfo", {nodeID: 4}, function(ret) { if (ret.error) { // es gab ein Problem } else if (ret.result === "ok") { // alles gut } }); });
Also so. Funktioniert auch, Arrays wollte ich mir sowieso noch mal ansehen, praktischer Einstieg dafuer.
Wenn du noch weitere Verbesserungen hast fange ich an Versionsnummern ins Script zu schreiben