NEWS
Mehrere Objekte auf Statusänderung prüfen
-
Hallo,
ich möchte gerne mehrere Geräte anlegen und auf deren Statusänderung reagieren.
Hier ist mein aktueller Code, der auch gut funktioniert, allerdings nur für ein Gerät.
const request = require('request').defaults({ rejectUnauthorized: false }); var sessiontoken on({id: "My_Devices.0.Lichtschalter_Flur", change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("My_Devices.0.Lichtschalter_Flur").val == true) { try { request('https://IP:8080/json/system/loginApplication?loginToken=APPLToken', { json: true }, (err, res, body) => { if (err) { return console.log(err); } sessiontoken = body.result.token; //console.log(`${sessiontoken}`); request({url: 'https://IP:8080/json/device/turnOn?dsid=DeviceID', headers: {Cookie: `token=${sessiontoken}`}}, function(error, response, body) { console.log(body); }); }); } catch (e) { console.error(e); } } else if (getState("My_Devices.0.Lichtschalter_Flur").val == false) { try { request('https://IP:8080/json/system/loginApplication?loginToken=APPLToken', { json: true }, (err, res, body) => { if (err) { return console.log(err); } sessiontoken = body.result.token; //console.log(`${sessiontoken}`); request({url: 'https://IP:8080/json/device/turnOff?dsid=DeviceID', headers: {Cookie: `token=${sessiontoken}`}}, function(error, response, body) { console.log(body); }); }); } catch (e) { console.error(e); } } });Ich möchte ungern den Code für jedes Gerät duplizieren. Ist es möglich alles Geräte unter My_Devices.0 auf Änderung ab zu fragen und die Device ID des geänderten Gerätes an den HTTP Request zu übergen?
-
Schau dir Mal $selector an
https://github.com/ioBroker/ioBroker.ja ... --selector
Sent from my iPhone using Tapatalk
-
Ist es möglich alles Geräte unter My_Devices.0 auf Änderung ab zu fragen und die Device ID des geänderten Gerätes an den HTTP Request zu übergeben? `
Ja, z.B. mit regexon(/^My_Devices\.0\..+/, function(obj) { // Triggert auf Wertänderung aller Datenpunkte unter My_Devices.0. var id = obj.id; // ID des Trigger-DatenpunktesDu meinst sicherlich die Datenpunkt-ID ?
-
Danke hat damit wunderbar geklappt.
Hier die Finale Lösung.
const request = require('request').defaults({ rejectUnauthorized: false }); var sessiontoken on(/^My_Devices\.0\..+/, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; var id = obj.id var dsid = obj.id.replace("My_Devices.0.", "") console.log(`DeviceID = ${id}`); if (getState(id).val == true) { try { request('https://IP:8080/json/system/loginApplication?loginToken=Token', { json: true }, (err, res, body) => { if (err) { return console.log(err); } sessiontoken = body.result.token; console.log(`SessionToken = ${sessiontoken}`); console.log(`https://IP:8080/json/device/turnOn?dsid=${dsid}`) request({url: `https://IP:8080/json/device/turnOn?dsid=${dsid}`, headers: {Cookie: `token=${sessiontoken}`}}, function(error, response, body) { console.log(body); }); }); } catch (e) { console.error(e); } } else if (getState(id).val == false) { try { request('https://IP:8080/json/system/loginApplication?loginToken=Token', { json: true }, (err, res, body) => { if (err) { return console.log(err); } sessiontoken = body.result.token; console.log(`SessionToken = ${sessiontoken}`); console.log(`https://IP:8080/json/device/turnOff?dsid=${dsid}`) request({url: `https://IP:8080/json/device/turnOff?dsid=${dsid}`, headers: {Cookie: `token=${sessiontoken}`}}, function(error, response, body) { console.log(body); }); }); } catch (e) { console.error(e); } } });
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