Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Raum eines States herausfinden

    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

    Raum eines States herausfinden

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

      Hallo, wenn ich eine Funktion wie folgt erstelle:

      $(`state(${enumtypeFunctions}=${enumBewegungsmelder})`).on((obj)=>{
          .... Hier steht der quellcode
      });
      

      kann ich irgendwie direkt herausfinden, in welcher enum "rooms" der state ist,
      oder müsste ich erst die enum "rooms" durchlaufen und suchen, ob es eine Übereinstimmung gibt?

      Außer common.role habe ich nichts gefunden.... also zu "function" oder "rooms".

      Kann natürlich sein, dass es das nicht gibt, weil es ja beliebig erweiterbar ist. Liegt es daran?

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

        @ben1983 sagte: herausfinden, in welcher enum "rooms" der state ist,

            let room = getObject(obj.id, 'rooms').enumNames[0];
            if(typeof room == 'object') room = room.de;
        
        T Ben1983 2 Replies Last reply Reply Quote 0
        • T
          ticaki Developer @paul53 last edited by ticaki

          @paul53
          Ah so greift man wohl direkt auf den Namen zu?

          Ich mache das meinst so:

          var rooms = getObject(obj.replace('.available', ''), 'rooms').enumIds;
                  if (rooms === undefined) return;
                  if (rooms.indexOf('enum.rooms.Haus.second_floor.schlafzimmer') != -1...
          

          Wobei ich aber keine Ahnung habe wieso da das obj.replace() drin ist.

          bzw. mehr auf die Frage bezogen so:

          var rooms = getObject(obj.replace('.available', ''), 'rooms').enumIds;      
          if (rooms === undefined) return;
          let rname = ''
          rooms.forEach((room) => {
              // workaround manche Geräte enthalten Räume die ihnen nicht zugewiesen sind.
              var enumObj = getObject(room);
              if (enumObj.common.members.findIndex((a) => {return obj.includes(a)}) == -1 ) return;
              room = enumObj.common.name;
              let r = room.de;
              if (r === undefined) r = room;
              rname+= rname =='' ? r : `, ${r}`;
          }
          

          Code ist schon alt, keine Ahnung ob der Workaround heute noch nötig ist.

          paul53 Ben1983 2 Replies Last reply Reply Quote 0
          • paul53
            paul53 @ticaki last edited by

            @ticaki sagte: so greift man wohl direkt auf den Namen zu?

            Ja, wobei ich davon ausgehe, dass nur ein Raum zugewiesen wurde.

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

              @paul53 cool danke muss mir wohl das getObject nochmal genauer ansehen.

              1 Reply Last reply Reply Quote 0
              • Ben1983
                Ben1983 @ticaki last edited by

                @ticaki sagte in Raum eines States herausfinden:

                @paul53
                Ah so greift man wohl direkt auf den Namen zu?

                Ich mache das meinst so:

                var rooms = getObject(obj.replace('.available', ''), 'rooms').enumIds;
                        if (rooms === undefined) return;
                        if (rooms.indexOf('enum.rooms.Haus.second_floor.schlafzimmer') != -1...
                

                Wobei ich aber keine Ahnung habe wieso da das obj.replace() drin ist.

                Was sollte denn ".abailable" sein?
                gab es das früher mal?

                T 1 Reply Last reply Reply Quote 0
                • T
                  ticaki Developer @Ben1983 last edited by

                  @ben1983 sagte in Raum eines States herausfinden:

                  @ticaki sagte in Raum eines States herausfinden:

                  @paul53
                  Ah so greift man wohl direkt auf den Namen zu?

                  Ich mache das meinst so:

                  var rooms = getObject(obj.replace('.available', ''), 'rooms').enumIds;
                          if (rooms === undefined) return;
                          if (rooms.indexOf('enum.rooms.Haus.second_floor.schlafzimmer') != -1...
                  

                  Wobei ich aber keine Ahnung habe wieso da das obj.replace() drin ist.

                  Was sollte denn ".abailable" sein?
                  gab es das früher mal?

                  Weiß ich nicht mehr, hab den Code vor hm 4 Jahren??? eingebaut/kopiert/keine Ahnung und seit dem kopiere ich ihn nur dahin wo ich ihn brauche.

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  917
                  Online

                  31.8k
                  Users

                  80.0k
                  Topics

                  1.3m
                  Posts

                  3
                  7
                  264
                  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