NEWS
Z-Wave Adapter Problem
-
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
