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); } });
-
Hihi Mal in meinem Thread mit den Rollladen mit dem function Return function kannst du asynchron arbeiten..
-
Hmm versteh ich noch nicht. schaffe es nicht es in meinen Code zu integrieren.
-
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);