NEWS
Gibt es ein "For each"? [gelöst]
-
Hallo Gemeinde,
ich habe hier relativ viele (so ca. 25) MiHome Devices, die mit Batterie funktionieren.
Jetzt kam ich auf die Idee, ein Blockly zu erstellen, dass für jedes Device die Baterieladung prüft und falls unter einem bestimmten Wert, 10% oder so, eine Nachricht in der VIS anzeigt, dass am Gerät XY die Batterie getauscht werden muss.
Für ein Gerät gar kein Problem. Für 25 eigentlich auch nicht, aber bei vielen Geräten ist es erstens viel Arbeit und zweitens muss man dran denken, neue Geräte mit in das Script auf zu nehmen.
Von daher kam ich auf die Idee, so etwas mit einer for each Schleife zu lösen. Leider gibt es das in Blockly nicht oder ich bin blind.
Kann mir da einer weiter helfen? Evtl. auch direkt mit JS?
Ich stell mir das so vor, dass man einen Ordner angibt und alle Objekte im Ordner werden in der Schleife behandelt. Wäre so etwas machbar?
LG, Markus
-
Hy, über die Suche gabs auch schon diverse Treffer.
Hab das Script auch soweit am laufen, allerdings scheint es aktuell mit .Devicename Probleme zu geben.
Den brauch ich aber zwingend, wenn ich wissen will bei welchem Gerät die Batterie leer ist.
Ich behalte das mal im Auge.
Trotzdem Danke für deine Hilfe :-)
-
scheint es aktuell mit .Devicename Probleme zu geben. `
Sind denn die Datenpunkte bei MiHome einem Device-Objekt zugeordnet ?Falls nicht, Vorschlag:
const idVis = 'MiHome.Batterietausch'; const batt = $('mihome.0.*.percent'); createState(idVis, '', {type: 'string'}); function lowBatt() { var low = []; batt.each(function (id, i) { if(getState(id).val < 10) { low.push(id.split('.')[3]); // Geräte-ID } }); setState(idVis, low.join(', '), true); } schedule('0 * * * *', lowBatt); // jede volle Stunde -
sollte aber "TS Balkontür Außen" zurück liefern.
Geht das auch noch irgendwie? `
Das sollte auch gehen.if(getState(id).val < 10) { id = id.split('.'); id = 'mihome.0.' + id[2] + '.' + id[3]; low.push(getObject(id).common.name); // Geräte-Name }
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
