Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Alle Räume aus enum.rooms auflisten

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Alle Räume aus enum.rooms auflisten

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

      Hallo.

      Ich hatte gedacht, es wäre ein leichtes, mir in Blockly alle Räume des "enum.rooms" in eine Liste zu packen und über eine Schleife auszugeben. Nach vielen Tests und nachlesen im Forum, funktioniert es immer noch nicht.
      Ich wollte es über den Block "für jeden Wert "Raum" aus der Liste" lösen. Über "IDs vom Selektor" wollte ich dann den enum.rooms benutzen.
      Kann mir jemand einen Tip geben, wie ich das machen kann?

      haus-automatisierung P 3 Replies Last reply Reply Quote 0
      • haus-automatisierung
        haus-automatisierung Developer Most Active @Proteus last edited by haus-automatisierung

        @proteus sagte in Alle Räume aus enum.rooms auflisten:

        mir in Blockly alle Räume des "enum.rooms"

        Die einzelnen Räume sind ja wieder Objekte unter enum.rooms.*. Daher habe ich gerade versucht, mit einem Selektor auf die ID genau diese Objekte zu holen (z.B. enum[id=enum.rooms.*]).

        Aber das funktioniert leider nicht. Ich könnte mir vorstellen, dass der JavaScript-Adapter nicht alle Objekt-Typen zurückliefert, sondern nur state, channel, device, ... und nicht enum.

        EDIT: Scheint wirklich so zu sein: https://github.com/ioBroker/ioBroker.javascript/blob/acc4af96c76334b159d3769e58084c8147d2b8c1/lib/sandbox.js#L688

        paul53 1 Reply Last reply Reply Quote 0
        • haus-automatisierung
          haus-automatisierung Developer Most Active @Proteus last edited by

          Aber: Du kannst Dir eine JS-Funktion mit Rückgabe bauen, in der nix anderes steht als

          return getEnums('rooms');

          Dann bekommst Du alle Räume. Siehe

          https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#getenums

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @haus-automatisierung last edited by

            @haus-automatisierung sagte: versucht, mit einem Selektor auf die ID genau diese Objekte zu holen

            Der Selektor liefert nur Datenpunkte. Diese gibt es unter "enum" nicht.

            haus-automatisierung 1 Reply Last reply Reply Quote 1
            • P
              Proteus @Proteus last edited by

              @proteus

              Ihr seid ja schnell!

              Mittlerweile habe ich es nun auch gelöst. Der Tip mit der JS-Funktion hat funktioniert:

              var rooms = getEnums("rooms");
              var result = [];
              
              rooms.forEach(function(r,i) {
                  if(r.name.de){
                      //log(r.name.de);
                      result.push(r.name.de);
                  }
                  ++i;
              });
              return result;
              

              Danke.

              haus-automatisierung 1 Reply Last reply Reply Quote 0
              • haus-automatisierung
                haus-automatisierung Developer Most Active @Proteus last edited by

                @proteus Sehr gut! Aber bissen umständlich, schau dir mal die map Funktion von Arrays an 🙂

                return getEnums('rooms').map(room => room.name.de);
                

                Oder mit Deiner Prüfung ob Name ein Objekt ist:

                return getEnums('rooms').map(room => typeof room.name === 'object' ? room.name.de : room.name);
                
                1 Reply Last reply Reply Quote 0
                • haus-automatisierung
                  haus-automatisierung Developer Most Active @paul53 last edited by

                  @paul53 sagte in Alle Räume aus enum.rooms auflisten:

                  Der Selektor liefert nur Datenpunkte. Diese gibt es unter "enum" nicht.

                  Ich hatte irgendwie gehofft, dass man damit alle möglichen Objekt-IDs selektieren kann.

                  Aber gut, kommt ein neuer Blockly-Block für getEnums eben auf meine ToDo-Liste 🙂

                  P 1 Reply Last reply Reply Quote 0
                  • P
                    Proteus @haus-automatisierung last edited by

                    @haus-automatisierung
                    Eine Sache ist mir noch aufgefallen:
                    getEnums('rooms') liefert unterschiedliche Ergebnisse.

                    Das war auch schon mal Thema in einem anderen Beitrag: https://forum.iobroker.net/topic/41999/inkonsistenzen-mit-getenums-rooms

                    Ich habe mir jetzt so beholfen:

                    var rooms = getEnums("rooms");
                    var result = [];
                    
                    rooms.forEach(function(r) {
                        let room = r.name;
                        if(typeof room == 'object') room = room.de; 
                        result.push(room);
                    });
                    return result;
                    

                    Das ist zwar immer noch nicht schön, geht jetzt aber sicher.

                    haus-automatisierung 1 Reply Last reply Reply Quote 0
                    • haus-automatisierung
                      haus-automatisierung Developer Most Active @Proteus last edited by haus-automatisierung

                      @proteus sagte in Alle Räume aus enum.rooms auflisten:

                      Eine Sache ist mir noch aufgefallen:

                      Exakt das habe ich doch oben im zweiten Statement geprüft 🙂 Name ist entweder ein String oder ein Objekt mit mehreren Eigenschaften (für jede Sprache ein String).

                      Das ist übrigens überall im ioBroker so, nicht nur bei Enums. Bei meinen Adaptern habe ich mir die Arbeit gemacht und den Namen jedes einzelnen Objektes übersetzt.

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      809
                      Online

                      32.0k
                      Users

                      80.4k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      400
                      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