Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Gibt es ein "For each"? [gelöst]

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Gibt es ein "For each"? [gelöst]

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mlapp last edited by

      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

      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        @mlapp:

        Evtl. auch direkt mit JS? `
        Dafür gibt es den https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#–-selector.

        1 Reply Last reply Reply Quote 0
        • M
          mlapp last edited by

          Oh cool. Danke für den Tipp.

          Gibts dazu auch irgendwo Beispiele?

          Das wäre noch viel cooler 🙂

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 last edited by

            In der Doku gibt es bereits einige Beispiele. Wenn Du einen Screenhot mit den Datenpunkten posten würdest, könnte man konkret werden (ich habe kein MiHome).

            1 Reply Last reply Reply Quote 0
            • M
              mlapp last edited by

              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 🙂

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by

                @mlapp:

                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
                
                
                1 Reply Last reply Reply Quote 0
                • M
                  mlapp last edited by

                  Hy,

                  dein Script funktioniert soweit. Allerdings gibt es die ID und nicht den Namen aus.

                  Das Script wirft im Moment magnet_158d0001e62da0 aus, sollte aber "TS Balkontür Außen" zurück liefern.

                  Geht das auch noch irgendwie?

                  So sieht das aus:
                  5505_mihome.png

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 last edited by

                    @mlapp:

                    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
                    		}
                    
                    
                    1 Reply Last reply Reply Quote 0
                    • M
                      mlapp last edited by

                      Perfekt. Genau das wars 🙂

                      Tausend Dank!

                      1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 last edited by

                        @mlapp:

                        Genau das wars `
                        Dann markiere bitte das Thema im Betreff des ersten Beitrags als [gelöst].

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        878
                        Online

                        31.8k
                        Users

                        79.9k
                        Topics

                        1.3m
                        Posts

                        2
                        10
                        1162
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo