NEWS
Bitte testen: zWave Associations
-
Hallo Leute,
habe vor kurzem den zWave-Adapter um Associations ergänzt. D.h. direkte Steuerung von Geräten untereinander ohne ioBroker/Controller. Ich nutze es z.B., um eine Kreuzschaltung von zwei Lichtschaltern zu realisieren, die an zwei verschiedenen Sicherungen hängen. Informationen, was möglich ist, sollte in der Anleitung der Geräte zu finden sein.
Das ganze funktioniert noch nicht über die GUI, kann aber wunderbar per JavaScript angesprochen werden.
Wäre super, wenn das jemand testen könnte (von Github aktualisieren), damit wir den aktualisierten Adapter freigeben können.
Aufruf der Funktionen erfolgt via sendTo aus JavaScript (oder einem eigenen Adapter):
sendTo("zwave.0", "getAssociations", {nodeID: 2, group: 1}, function (obj) { if (obj.error) { log(obj.error, "error"); } else { log("group " + group + " associations: " + obj.result); } });
Der Funktionsname wird hinter "zwave.0" in Anführungszeichen angegeben. Die Funktionsargumente stehen in der ersten Zeile in den geschweiften Klammern. In obj.result steht der Rückgabewert der Funktion, sofern es keinen Fehler beim Aufrufen gab.
Folgende Funktionen sind unterstützt:
// Anzahl der association groups ermitteln // Parameter nodeID {number}: Node-Nr des angefragten Knotens (1, 2, ...) // Rückgabewert {number}: Anzahl der Gruppen "numGroups" getNumGroups(nodeID) // Namen/Beschreibung der Gruppen ermitteln // Parameter group {number}: Nr der Gruppe - im Bereich 1..numGroups // Rückgabewert {string}: Name der Gruppe getGroupLabel(nodeID, group) // Associations des Knotens ermitteln // Parameter: s.o. // Rückgabewert {number[]}: NodeIDs der zugeordneten Knoten getAssociations(nodeID, group) // Maximale Anzahl der Associations des Knotens ermitteln // Parameter: s.o. // Rückgabewert {number}: Maximale Anzahl der Associations. Werden von open-zwave angegeben, können fehlerhaft sein (z.b. Fibaro) getMaxAssociations(nodeID, group) // Einem Knoten eine Association hinzufügen oder entfernen // Parameter target_nodeid {number}: Knoten, der in die Liste hinzugefügt oder entfernt werden soll // Rückgabewert: 'ok' addAssociation(nodeID, group, target_nodeid) removeAssociation(nodeID, group, target_nodeid)
-
Ein bisschen rumgespielt, hat so weit alles geklappt.
Konkrekt habe ich den S2 (Gruppe 4) vom Fibaro Dimmer 2 mit einem Fibaro Switch 2 gekoppelt. In der Standardkonfiguration wird dadurch S1 beim Switch geschaltet und das hat auch funktioniert.
Immerhin weiß ich jetzt, dass der S2 beim Dimmer überhaupt funktioniert, denn dessen Zustanden wird bei OZW nicht korrekt an den Controller gemeldet.
Eine GUI zum verwalten der Associations wird vermutlich noch etwas auf sich warten lassen?
-
Danke!
Eine GUI zum verwalten der Associations wird vermutlich noch etwas auf sich warten lassen? `
Ja, da bin ich mir auch noch nicht im Klaren, wie das am besten aussieht. Und die knappe Zeit…Aber vielleicht kommt ja kurzfristig jemand anderes dazu.
-
Läuft bei mir seit Einrichtung problemlos. Allerdings bestätigt die Admin-UI seitdem jeden Druck auf "Add Node" mit einem OK-Fenster. Kann das jemand nachvollziehen?
-
Vorher wurde z. B. bei include gesendet:
case 'addNode': if (inclusion) { disableInclusion(); if (obj.callback) adapter.sendTo(obj.from, obj.command, {error: null}, obj.callback); return; }
Also nur````
{error: null}Nun sendet der Adapter:
var predefinedResponses = {
OK: { error: null, result: 'ok' },
ERROR_UNKNOWN_COMMAND: { error: 'Unknown command!' },
ERROR_NOT_RUNNING: {error: 'zwave driver is not running!'}
}
[...]
respond(predefinedResponses.OK);In Admin wird ein Popup aufgerufen, sobald die Antwort ein Attribut "result" enthält:
if (nodeCommands[val].name) { // enter additional parameter var param = prompt(_(nodeCommands[val].name), ''); if (param !== '') { sendTo(null, val, {nodeID: id, param: param}, function (result) { $this.val(''); if ($.ui.selectmenu) $this.selectmenu('refresh'); if (result && result.error) { showMessage(result.error, _('Error'), 'alert'); } else if (result && result.result) { showMessage(_(result.result), _('Success'), 'check'); } }); } } else { sendTo(null, val, {nodeID: id}, function (result) { $this.val(''); if ($.ui.selectmenu) $this.selectmenu('refresh'); if (result && result.error) { showMessage(result.error, _('Error'), 'alert'); } else if (result && result.result) { showMessage(_(result.result), _('Success'), 'check'); } }); }
-
Top, das erspart mir ein paar Minuten suchen. Ändere ich heute abend und erstelle neuen PR.
-
Änderungen von AlCazone sind auf Github … Bitte testen!!
-
can you tell me how to assign an Association to group 2? when running the script I get this error:
2.05.2019, 19:37:45.929 [info ]: javascript.0 Stop script script.js.Z-Wave.associations 12.05.2019, 19:38:01.690 [info ]: javascript.0 Start javascript script.js.Z-Wave.associations 12.05.2019, 19:38:01.695 [info ]: javascript.0 script.js.Z-Wave.associations: registered 0 subscriptions and 0 schedules 12.05.2019, 19:38:01.707 [error]: javascript.0 ReferenceError: group is not defined at Object.cb (script.js.Z-Wave.associations:5:24) at Object.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4013:71) at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:53:30) at Socket.Emitter.emit (/opt/iobroker/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) at Socket.onevent (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:278:10) at Socket.onpacket (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:236:12) at Manager.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15) at Manager.Emitter.emit (/opt/iobroker/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) at Manager.ondecoded (/opt/iobroker/node_modules/socket.io-client/lib/manager.js:345:8) at Decoder.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15) 12.05.2019, 19:38:07.001 [info ]: javascript.0 Stop script script.js.Z-Wave.associations
z-wave 1.4.1