Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Alle Räume aus enum.rooms auflisten

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    900

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Alle Räume aus enum.rooms auflisten

Geplant Angeheftet Gesperrt Verschoben Blockly
12 Beiträge 4 Kommentatoren 667 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    Proteus
    schrieb am zuletzt editiert von
    #1

    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-automatisierungH P 3 Antworten Letzte Antwort
    0
    • P Proteus

      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-automatisierungH Online
      haus-automatisierungH Online
      haus-automatisierung
      Developer Most Active
      schrieb am zuletzt editiert von haus-automatisierung
      #2

      @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

      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
      📚 Meine inoffizielle ioBroker Dokumentation

      paul53P 1 Antwort Letzte Antwort
      0
      • P Proteus

        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-automatisierungH Online
        haus-automatisierungH Online
        haus-automatisierung
        Developer Most Active
        schrieb am zuletzt editiert von
        #3

        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

        🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
        🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
        📚 Meine inoffizielle ioBroker Dokumentation

        1 Antwort Letzte Antwort
        0
        • haus-automatisierungH 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

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @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.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          haus-automatisierungH 1 Antwort Letzte Antwort
          1
          • P Proteus

            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?

            P Offline
            P Offline
            Proteus
            schrieb am zuletzt editiert von
            #5

            @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-automatisierungH 1 Antwort Letzte Antwort
            0
            • P Proteus

              @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-automatisierungH Online
              haus-automatisierungH Online
              haus-automatisierung
              Developer Most Active
              schrieb am zuletzt editiert von
              #6

              @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);
              

              🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
              🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
              📚 Meine inoffizielle ioBroker Dokumentation

              1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @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-automatisierungH Online
                haus-automatisierungH Online
                haus-automatisierung
                Developer Most Active
                schrieb am zuletzt editiert von
                #7

                @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 :)

                🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                📚 Meine inoffizielle ioBroker Dokumentation

                P 1 Antwort Letzte Antwort
                0
                • haus-automatisierungH haus-automatisierung

                  @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 Offline
                  P Offline
                  Proteus
                  schrieb am zuletzt editiert von
                  #8

                  @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-automatisierungH 1 Antwort Letzte Antwort
                  0
                  • P Proteus

                    @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-automatisierungH Online
                    haus-automatisierungH Online
                    haus-automatisierung
                    Developer Most Active
                    schrieb am zuletzt editiert von haus-automatisierung
                    #9

                    @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.

                    🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                    🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                    📚 Meine inoffizielle ioBroker Dokumentation

                    1 Antwort Letzte Antwort
                    0
                    • madjack84M Offline
                      madjack84M Offline
                      madjack84
                      schrieb am zuletzt editiert von madjack84
                      #10

                      Hello all,

                      ich brauchte eine Funktion um den Raum Namen das aktuellen Objektes zu erhalten.
                      Früher ging das über

                      let room = getObject(ObjectID, 'rooms').enumNames[0]; // OLD-DEPRECATED
                      

                      seit dem letzten Javascript Update bekomme ich hier nur noch undefined.
                      ich habe mir nun für die function im script so beholfen:

                      const rooms = getEnums('rooms');
                      let lang = 'de';
                      
                      for (const room of rooms) {
                          if (!Array.isArray(room.members)) continue;
                      
                          if (room.members.includes(ObjectID)) {
                              // Name kann String oder Sprachobjekt sein
                              if (typeof room.name === 'string') {
                                  return room.name;
                              }
                              //wichtigster Fall
                              if (room.name && room.name[lang]) {
                                  return room.name[lang];
                              }
                      
                              // Fallback: irgendeine Sprache
                              if (room.name && typeof room.name === 'object') {
                                  return Object.values(room.name)[0];
                              }
                          }
                      }
                      
                      return null; // kein Raum gefunden
                      

                      ohne Sonderfälle:

                      const rooms = getEnums('rooms');
                      let lang = 'de';
                      
                      for (const room of rooms) {
                          if (room.members.includes(ObjectID)) return room.name[lang];
                      }
                      

                      ausser die Sonderfälle: Habt ihr eine einfachere Lösung als jedes mal das roomsEnums durch zu iterieren? Das ändert sich in der Regel zwar ja selten, daher itereriere ich das nur beim startup des scripts in eine Liste

                      nuc i3, Proxmox, raspimatic (PI3), 15 shellies, shelly 4pro/25/RGB, wled sonoff, 7x xiaomi sensoren, 4xEchos, 4 Tasmota Steckdosen, motionEye, nspanel, Ring, hoymiles usw

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • madjack84M madjack84

                        Hello all,

                        ich brauchte eine Funktion um den Raum Namen das aktuellen Objektes zu erhalten.
                        Früher ging das über

                        let room = getObject(ObjectID, 'rooms').enumNames[0]; // OLD-DEPRECATED
                        

                        seit dem letzten Javascript Update bekomme ich hier nur noch undefined.
                        ich habe mir nun für die function im script so beholfen:

                        const rooms = getEnums('rooms');
                        let lang = 'de';
                        
                        for (const room of rooms) {
                            if (!Array.isArray(room.members)) continue;
                        
                            if (room.members.includes(ObjectID)) {
                                // Name kann String oder Sprachobjekt sein
                                if (typeof room.name === 'string') {
                                    return room.name;
                                }
                                //wichtigster Fall
                                if (room.name && room.name[lang]) {
                                    return room.name[lang];
                                }
                        
                                // Fallback: irgendeine Sprache
                                if (room.name && typeof room.name === 'object') {
                                    return Object.values(room.name)[0];
                                }
                            }
                        }
                        
                        return null; // kein Raum gefunden
                        

                        ohne Sonderfälle:

                        const rooms = getEnums('rooms');
                        let lang = 'de';
                        
                        for (const room of rooms) {
                            if (room.members.includes(ObjectID)) return room.name[lang];
                        }
                        

                        ausser die Sonderfälle: Habt ihr eine einfachere Lösung als jedes mal das roomsEnums durch zu iterieren? Das ändert sich in der Regel zwar ja selten, daher itereriere ich das nur beim startup des scripts in eine Liste

                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von paul53
                        #11

                        @madjack84 sagte: seit dem letzten Javascript Update bekomme ich hier nur noch undefined.

                        Welche Version des JS-Adapters? In Version 9.0.11 funktioniert es noch.

                        room.JPG

                        Der Raumname von "enum.rooms.living_room" ist mehrsprachig.

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        madjack84M 1 Antwort Letzte Antwort
                        0
                        • paul53P paul53

                          @madjack84 sagte: seit dem letzten Javascript Update bekomme ich hier nur noch undefined.

                          Welche Version des JS-Adapters? In Version 9.0.11 funktioniert es noch.

                          room.JPG

                          Der Raumname von "enum.rooms.living_room" ist mehrsprachig.

                          madjack84M Offline
                          madjack84M Offline
                          madjack84
                          schrieb am zuletzt editiert von
                          #12

                          @paul53 : Ich hab auch 9.0.11 installiert und meine Scripte die jahrelang funktioniert haben, spuckten nur noch undefinded aus, sodass die Rolläden in den Zimmern wilde Fahrten machten.
                          Hab nun ein Script testweise wieder zurück gebaut und kann den "undefined" Fall tatsächlich nicht mehr nachstellen. Die ObjectIDs sind unverändert.
                          Hab auch keine wilden Updates seit gestern gemacht und auch javascript nicht neu gestartet.
                          Puhh, da fehlt mir jetzt die Idee woher das kam :/

                          nuc i3, Proxmox, raspimatic (PI3), 15 shellies, shelly 4pro/25/RGB, wled sonoff, 7x xiaomi sensoren, 4xEchos, 4 Tasmota Steckdosen, motionEye, nspanel, Ring, hoymiles usw

                          1 Antwort Letzte Antwort
                          0
                          Antworten
                          • In einem neuen Thema antworten
                          Anmelden zum Antworten
                          • Älteste zuerst
                          • Neuste zuerst
                          • Meiste Stimmen


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          742

                          Online

                          32.6k

                          Benutzer

                          82.2k

                          Themen

                          1.3m

                          Beiträge
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Anmelden

                          • Du hast noch kein Konto? Registrieren

                          • Anmelden oder registrieren, um zu suchen
                          • Erster Beitrag
                            Letzter Beitrag
                          0
                          • Home
                          • Aktuell
                          • Tags
                          • Ungelesen 0
                          • Kategorien
                          • Unreplied
                          • Beliebt
                          • GitHub
                          • Docu
                          • Hilfe