NEWS
Alle Geräte eines Ordner selektieren für eine for Schleife
-
Hallo,
wie schaffe ich es alle Geräte eines Ordners zu selekteiern, um für jedes Geräte eine Abfrage zu machen? Ich dem an eine "for" schleife bekomme aber nicht alle Objekte selectiert.
bei der der RegExp habe ich hier schon Unterstützung gehabt aber mit on wird ja nur auf eine Änderung des Objekts reagiert.
on(/^My_Devices\.0\..+/, function (obj) {Vielen Dank im Vorraus.
-
wie schaffe ich es alle Geräte eines Ordners zu selekteiern, `
Meinst Du Geräte oder Datenpunkte ?Falls die erste Ebene unter dem Ordner "My_Devices.0." Geräte sind, kannst Du vielleicht mit https://forum.iobroker.net/viewtopic.php?f=21&t=17430&p=182576#p182404 etwas anfangen.
-
Danke hat mir weitergeholfen. Bin aber gleich auf das nächste gestoßen.
Die Requests die ich mache haben eine etwas längere Antwortzeit. Wie bekomme ich es hin mit den responses noch zu arbeiten?
Habe mir schon Tutorials zu Callback und Promises angeschaut, aber nach erst drei Tagen JavaScript bin ich da noch überfordert.
klemmen.each(function(id, i) { var dsid = id.replace("My_Devices.0.Digitalstrom.Klemmen.", "") console.log(dsid); console.log(getState(id).val); try { console.log(`SessionToken = ${sessiontoken}`); request({url: `https://${dssip}:${dssport}/json/device/getOutputValue?dsid=${dsid}&offset=0`, headers: {Cookie: `token=${sessiontoken}`}}, function(error, response, body) { console.log(body); }); } catch (e) { console.error(e); } }); -
Damit das Script selber nicht blockiert es einfach in einen Timeout reinsetzen, und es wird ein separater Thread erstellt…. und der läuft dann parallel.
durch das function return function werden eigene variablen erst.....
setTimeout( (function(a_klemmen){
return function(){
// Kann auch funktionieren wenn das hier einzelnd ist.....
aklemmen.each(function(a_id, a_i) {
return function(){
var dsid = a_id.replace("My_Devices.0.Digitalstrom.Klemmen.", "")
console.log(dsid);
console.log(getState(a_id).val);
try {
console.log(
SessionToken = ${sessiontoken});request({url:
https://${dssip}:${dssport}/json/device/getOutputValue?dsid=${dsid}&offset=0, headers: {Cookie:token=${sessiontoken}}}, function(error, response, body) {console.log(body);
});
} catch (e) { console.error(e); }
}})(id, i);
// Bis hier
}
})(klemmen),200);
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