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
    910

  • 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 668 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 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

                      802

                      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