NEWS
Z-Wave Adapter Problem
-
Hallo zusammen,
ich habe häufig Schwierigkeiten mit dem Z-Wave Adapter. Sollen mehrere Knoten gleichzeitig angesteuert werden, kommt es teilweise zu sehr hohen Verzögerungen. Wenn ich den Adapter auf debug stelle sieht es im Log so aus als ob alle paar ms neue "setstate" Befehle geschickt werden. Kürzlich hat sich der Adapter mit einer Auslastung von über 1GB Ram völlig aufgehängt und das ganze System gestoppt.
Hat hier jemand Erfahrung mit dem Z-Wave Adapter und/oder gleiches Problem?
Hardware:
intel nuc nuc5i3ryk 8GB RAM (Proxmox/Debian 2GB)
Aeotec AEOEZW090-C Aeon Labs USB Stick (Z-Wave Stick)
9x Fibaro FGRM222 Roller Shutter Controller 2
4x Fibaro FGS223 Double Relay
1x Fibaro FGS222 Double Relay Switch 2x1.5kW
3x Fibaro FGD212 Dimmer 2
2x Aeotec ZW100 MultiSensor 6
Vielen Dank und besten Gruß
Dominik
-
Hat echt keiner das gleiche Problem oder kann mir jemand helfen? Hier mal ein Auszug aus der LOG.
zwave.0 2018-09-06 09:48:37.881 debug setState for: nodeID=10: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.881 debug stateChange zwave.0.NODE10.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117863,"q":0,"from":"system.adapter.javascript.1","lc":1536220017027} zwave.0 2018-09-06 09:48:37.879 debug setState for: nodeID=12: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.879 debug stateChange zwave.0.NODE12.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117862,"q":0,"from":"system.adapter.javascript.1","lc":1536220052682} zwave.0 2018-09-06 09:48:37.862 debug setState for: nodeID=11: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.862 debug stateChange zwave.0.NODE11.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117859,"q":0,"from":"system.adapter.javascript.1","lc":1536220027098} zwave.0 2018-09-06 09:48:37.852 debug setState for: nodeID=9: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.852 debug stateChange zwave.0.NODE9.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117827,"q":0,"from":"system.adapter.javascript.1","lc":1536219999755} zwave.0 2018-09-06 09:48:37.852 debug setState for: nodeID=8: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.852 debug stateChange zwave.0.NODE8.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117827,"q":0,"from":"system.adapter.javascript.1","lc":1536219986185} zwave.0 2018-09-06 09:48:37.852 debug setState for: nodeID=10: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.852 debug stateChange zwave.0.NODE10.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117827,"q":0,"from":"system.adapter.javascript.1","lc":1536220017027} zwave.0 2018-09-06 09:48:37.852 debug setState for: nodeID=4: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.851 debug stateChange zwave.0.NODE4.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117827,"q":0,"from":"system.adapter.javascript.1","lc":1536219985734} zwave.0 2018-09-06 09:48:37.851 debug setState for: nodeID=11: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.851 debug stateChange zwave.0.NODE11.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117827,"q":0,"from":"system.adapter.javascript.1","lc":1536220027098} zwave.0 2018-09-06 09:48:37.841 debug value changed: 12 comClass: 38 value: {"value_id":"12-38-1-0","node_id":12,"class_id":38,"type":"byte","genre":"user","instance":1,"index":0,"label":"Level","units":"","help":"","read_only":false,"wri zwave.0 2018-09-06 09:48:37.831 debug setState for: nodeID=7: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.831 debug stateChange zwave.0.NODE7.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117823,"q":0,"from":"system.adapter.javascript.1","lc":1536219979263} zwave.0 2018-09-06 09:48:37.831 debug setState for: nodeID=6: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.830 debug stateChange zwave.0.NODE6.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117813,"q":0,"from":"system.adapter.javascript.1","lc":1536219983143} zwave.0 2018-09-06 09:48:37.830 debug setState for: nodeID=12: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.830 debug stateChange zwave.0.NODE12.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117812,"q":0,"from":"system.adapter.javascript.1","lc":1536220052682} zwave.0 2018-09-06 09:48:37.830 debug setState for: nodeID=9: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.830 debug stateChange zwave.0.NODE9.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117812,"q":0,"from":"system.adapter.javascript.1","lc":1536219999755} zwave.0 2018-09-06 09:48:37.830 debug setState for: nodeID=11: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.830 debug stateChange zwave.0.NODE11.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117812,"q":0,"from":"system.adapter.javascript.1","lc":1536220027098} zwave.0 2018-09-06 09:48:37.830 debug setState for: nodeID=8: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.830 debug stateChange zwave.0.NODE8.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117812,"q":0,"from":"system.adapter.javascript.1","lc":1536219986185} zwave.0 2018-09-06 09:48:37.830 debug setState for: nodeID=10: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.830 debug stateChange zwave.0.NODE10.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117812,"q":0,"from":"system.adapter.javascript.1","lc":1536220017027} zwave.0 2018-09-06 09:48:37.818 debug setState for: nodeID=4: comClass=38: index=0: instance=1: value=20 zwave.0 2018-09-06 09:48:37.817 debug stateChange zwave.0.NODE4.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117803,"q":0,"from":"system.adapter.javascript.1","lc":1536219985734} zwave.0 2018-09-06 09:48:37.809 debug setState for: nodeID=12: comClass=38: index=0: instance=1: value=20 -
Sollen mehrere Knoten gleichzeitig angesteuert werden, kommt es teilweise zu sehr hohen Verzögerungen. Wenn ich den Adapter auf debug stelle sieht es im Log so aus als ob alle paar ms neue "setstate" Befehle geschickt werden. `
Eine gewisse Verzögerung ist zu erwarten, da ZWave intern die Befehle einreiht, aber die sollte sich im Rahmen einiger ms bewegen.Kannst du noch genau beschreiben (Skript-Code bzw. Blockly-Screenshot), wie du mehrere States gleichzeitig ansteuerst? Anhand des Logs gehe ich davon aus, dass die States tatsächlich mit Aktualisierungen zugebombt werden (aber von einer anderen Quelle aus ioBroker) und der Adapter bzw. der Treiber seine Probleme hat, hinterher zu kommen.
Hier sind bspw zwei Schaltvorgänge für den selben Zustand und Wert innerhalb 40ms, die beide vom JS-Adapter ausgelöst wurden:
[...] NODE10.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117863,"q":0,"from":"system.adapter.javascript.1" [...] [...] NODE10.SWITCH_MULTILEVEL.Level_1 set {"val":20,"ack":false,"ts":1536220117827,"q":0,"from":"system.adapter.javascript.1" [...] -
Moin,
also das es ist der Code vom Blocky. Es werden die einzelnen Rolladen mit einer Verzögerung angesteuert.
on({id: 'vis.0.szene_2_sonne', val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("vis.0.szene_2_sonne"/*szene_2_sonne*/, false); // Rolladen setStateDelayed("zwave.0.NODE7.SWITCH_MULTILEVEL.Level_1"/*Rollade Wohnen Tür breit*/, 30, 100, false); setStateDelayed("zwave.0.NODE6.SWITCH_MULTILEVEL.Level_1"/*Rollade Wohnen Tür schmal*/, 30, 200, false); setStateDelayed("zwave.0.NODE5.SWITCH_MULTILEVEL.Level_1"/*Rollade Küche Tür*/, 99, 300, false); setStateDelayed("zwave.0.NODE4.SWITCH_MULTILEVEL.Level_1"/*Rollade Küche Fenster*/, 65, 400, false); setStateDelayed("zwave.0.NODE8.SWITCH_MULTILEVEL.Level_1"/*Rollade Büro Tür links*/, 30, 500, false); setStateDelayed("zwave.0.NODE9.SWITCH_MULTILEVEL.Level_1"/*Rollade Büro Tür rechts*/, 30, 600, false); setStateDelayed("zwave.0.NODE10.SWITCH_MULTILEVEL.Level_1"/*Rollade Schlafen Tür*/, 30, 700, false); setStateDelayed("zwave.0.NODE11.SWITCH_MULTILEVEL.Level_1"/*Rollade Schlafen Fenster*/, 65, 800, false); setStateDelayed("zwave.0.NODE12.SWITCH_MULTILEVEL.Level_1"/*Rollade Bad Fenster*/, 65, 900, false); }); -
also das es ist der Code vom Blocky. `
Das glaube ich nicht, dass es dieses Skript ist. Im Skript wird der Wert 30, im Log wird der Wert 20 gesetzt. -
Ja stimmt du hast recht. Die Skripte sind alle gleich halt mit unterschiedlichen Werten.
-
Dann müssen wir eine Ebene raus gehen. Irgendwas triggert dann wohl deine Szene mehrfach. Kannst du das nachvollziehen, indem du als ersten Befehl im Trigger mal dessen Quelle loggst?
log(obj.from);Was potentiell kritisch sein könnte:
on({id: 'vis.0.szene_2_sonne', val: true}, function (obj) { // [...] setState("vis.0.szene_2_sonne"/*szene_2_sonne*/, false);Wenn du in einem anderen Skript auf szene_2_sonne = false triggerst, hast du eine Endlosschleife.
-
Ich habe in der vis einen Button für die Rolladen Scene. Dieser setzt den Wert von einem Datenpunkt auf true. Dieser Datenpunkt triggert das Script wo er dann direkt wieder auf false zurück gesetzt wird. Ist dieser Ansatz falsch oder um die Ecke gedacht?
-
Ich habe den trigger jetzt auf "größer als letzte" gesetzt und werde jetzt mal beobachten ob er wieder in diese "Schleife" kommt. Danke ersteinmal, ich dachte echt es hat was mit dem Z-Wave Stick oder Adapter zu tun…
-
Größer als / Kleiner als macht bei Logikwerten keinen Sinn. Was ist denn hiermit?
@AlCalzone:Dann müssen wir eine Ebene raus gehen. Irgendwas triggert dann wohl deine Szene mehrfach. Kannst du das nachvollziehen, indem du als ersten Befehl im Trigger mal dessen Quelle loggst?
log(obj.from); ```` ` -
Wird der Logikwert nicht wie 0 und 1 behandelt also 1>0 ?
Ich weiß leider nicht wie ich mit dem log-Befehl vorgehen soll!? Wie bekomm ich das in ein blocky-script? Bitte einmal kurze Beschreibung
-
` > CODE: ALLES AUSWÄHLEN
log(obj.from); `
wie bekomm ich das in ein blocky und was muss ich einstellen?
-
Ah ok und bei jedem Trigger kann ich dann 'Ursprung' im Log lesen. Ich teste das mal! Danke dir
