NEWS
[Gelöst] Trigger auf state change innerhalb einer gruppe mit rueckgabe der id
-
Hi,
Ich habe merere werte die ein script ausloesen sollen, einzeln programmiert geht ja:
on({id: "javascript.0.domoticz.1.STATE", change: "ne"}, function (obj) { var URL = 'http://192.168.1.152'; var port = '8080'; var value = obj.state.val; var device = '1';
2 Loesugsfragen:
1:
Die variabele "device" ist jetzt fest gesetzt sollte aber javascript.0.domoticz. * .State darstellen
2:
Das script loest nur bei javascript.0.domoticz.1 aus sollte aber bei javascript.0.domoticz. * .State triggeren wobei ich fuer * den wert als device zurueck bekommen mus
thanks !
Dutch
-
Dann suche mal nach RegExp.
-
2:
Das script loest nur bei javascript.0.domoticz.1 aus sollte aber bei javascript.0.domoticz. * .State triggeren wobei ich fuer * den wert als device zurueck bekommen mus `
probier mal:
on({id: /^javascript\.\d\.domoticz\.\d+\.STATE$/ , change: "ne"}, function (obj) { var value = obj.state.val; var objArr = obj.id.match(/(^.+)\.(.+)\.(.+)$/, ""); //Aufteilung in Pfad + Device + CMD var device = objArr[2]; log("device: " + device +" - State: " + value); });
-
Dann suche mal nach RegExp. `
danke das haetten wir:
// on({id: /\.STATE$/, change: "ne"}, function (obj) { on({id: /javascript\.0\.domoticz\..*\.STATE/, change: "ne"}, function (obj) { var device = obj.id; log(device); });
jetzt fehlt mir nur ruckgabe der ID dabei noch nen tip ? Ich brauche die zahl
javascript.0.domoticz.1.STATE
-
probier mal:
on({id: /^javascript\.\d\.domoticz\.\d+\.STATE$/ , change: "ne"}, function (obj) { var value = obj.state.val; var objArr = obj.id.match(/(^.+)\.(.+)\.(.+)$/, ""); //Aufteilung in Pfad + Device + CMD var device = objArr[2]; log("device: " + device +" - State: " + value); }); ```` `
Super danke das hat geklappt !
Falls es jemand gebrauchen kan, script reagiert auf trigger innerhalb der gruppe und abhaenging von status verschikt er ein commando per URL:
// on({id: /javascript\.0\.domoticz\..*\.STATE/, change: "ne"}, function (obj) { on({id: /^javascript\.\d\.domoticz\.\d+\.STATE$/ , change: "ne"}, function (obj) { var value = obj.state.val; var objArr = obj.id.match(/(^.+)\.(.+)\.(.+)$/, ""); //Aufteilung in Pfad + Device + CMD var device = objArr[2]; log("device: " + device +" - State: " + value); log(device); var URL = 'http://192.168.1.152'; var port = '8080'; if (getState("javascript.0.domoticz." + device + ".STATE").val == '1') { try { require("request")( URL + ':' + port + '/json.htm?type=command¶m=switchlight&idx=' + device + '&switchcmd=On'); } catch (e) { console.error(e); } console.log("request: " + URL + ':' + port + '/json.htm?type=command¶m=switchlight&idx=' + device + '&switchcmd=On'); } else { try { require("request")(URL + ':' + port + '/json.htm?type=command¶m=switchlight&idx=' + device + '&switchcmd=Off'); } catch (e) { console.error(e); } console.log("request: " + URL + ':' + port + '/json.htm?type=command¶m=switchlight&idx=' + device + '&switchcmd=Off'); } });