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
-
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'); } });
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden