Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. $Selector für Objekte

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    $Selector für Objekte

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

      Ich habe einige "verweiste" Alias Einträge.

        "_id": "alias.0.lights.stehlampe.online",
        "type": "state",
        "common": {
          "alias": {
            "id": "0_userdata.0.online.shelly.0.SHSW-25#112E6F#1.online"
          },...
      

      d.h. der state bzw das object dahinter gibt es nicht mehr (0_userdata.0.online.shelly.0.SHSW-25#112E6F#1.online)

      Um aufzuräumen, würde ich gerne durch die Liste gehen

      $("alias.*").each(id=>{
      if(!existsObject(getObject(id).common.alias.id)){
      //cleanup...
      }
      })
      

      Allerdings scheint zu alias.0.lights.stehlampe.online kein state mehr zu existieren,(Allerdings gibt es das objekt natürlich noch) und der selector gibt mir diese ids nicht zurück.
      Wie kann ich durch alle objekte "loopen"? $(...) scheint nur ids zu liefern zu denen es auch einen state gibt?

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

        @coalado

        Du benutzt zu oft state so das ich nicht wirklich verstehe was du genau meinst.

        Ich finde bei mir aliase die einen ungültigen common.alias.id haben.

        Das hier hab ich angelegt und die alias.id gibts nicht:

        {
          "common": {
            "name": "test1",
            "desc": "Manuell erzeugt",
            "role": "state",
            "type": "boolean",
            "read": true,
            "write": true,
            "def": false,
            "alias": {
              "id": "0_userdata.0.internet_connecte"
            }
          },
        

        Bei einem Test mit :

        log(JSON.stringify($('alias.*')))
        

        Ist dieser State in der Aufzählung.

        edit:
        Und mit

        $("alias.*").each(id=>{
            if(!existsObject(getObject(id).common.alias.id)){
                log(id)
            }
        })
        

        erscheint er auch im log.

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

          @ticaki sagte: nicht wirklich verstehe was du genau meinst.

          Ich übersetze mal:

          Allerdings scheint zu alias.0.lights.stehlampe.online kein Zustand mehr zu existieren,(Allerdings gibt es das statische Objekt natürlich noch) und der selector gibt mir diese ids nicht zurück.

          @coalado sagte in $Selector für Objekte:

            "id": "0_userdata.0.online.shelly.0.SHSW-25#112E6F#1.online"                                                                                                                                                                            
          

          Weshalb hat ein eigenen Datenpunkt einen Alias und weshalb enthält die ID eines eigenen Datenpunktes eine Geräte-ID?

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

            @paul53

            Meinst du weil das common leer ist?

            {
              "common": {
                "alias": {
                  "id": "userdata.0.gibsnicht"
                }
              },
              "type": "state",
              "native": {},
            

            wird auch gefunden

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

              @ticaki sagte: wird auch gefunden

              Ein Objekt, das keinen Zustand ({val, ack, ts, lc, ...}) hat, wird vom $Selector offenbar nicht gefunden.

              EDIT: Gerade getestet: Bei mir findet der Selektor auch Datenpunkte ohne Zustand - erkennbar im Tab "Objekte" am Wert (null).

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

                @paul53
                Könnte sein das wir mit latest das problem nicht haben.

                @coalado
                welche Javascriptversion nutzt du - falls du auf latest bist, bitte beschreibe es genauer.

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

                  Ich bin auf 7.1.6
                  Warum hat ein eigener Datenpunkt einen Alias und warum hat die ID eine GeräteID hat, tut jetzt hier eigentlich nichts zur Sache. Ich kann das gerne erklären, aber ich denke das würde jetzt nur vom eigentlichen Problem ablenken.

                  Begrifflichkeiten:

                  • object: Das Json-Objekt, das z.B. mit getObject abgerufen oder mit existsObject überprüft werden kann.

                  • state: Der Zustand, den man mit getState abrufen oder mit existsState prüfen kann.

                  So kann ich das Problem nachstellen:

                  • Ich erstelle einen Alias (alias.0.example) zu einer ID (0_userdata.0.example) für die es sowohl object als auch state gibt
                  • Ich lösche das object (deleteObject("0_userdata.0.example"))
                  • das object alias.0.example gibt es noch. existsObject("alias.0.example") gibt true zurück
                  • den state alias.0.example gibt es nicht mehr. existsState("alias.0.example") gibt false zurück
                  • log($("alias.0.example")) gibt mir jetzt {'length':0} aus.
                  • log($("alias.0.*")) enthält alias.0.example auch nicht mehr
                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @coalado last edited by

                    @coalado sagte: log($("alias.0.*")) enthält alias.0.example auch nicht mehr

                    Das kann ich bei mir (JS 7.4.0) nicht nachvollziehen:

                    Selektor_ohne_Zustand.JPG

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    934
                    Online

                    31.7k
                    Users

                    79.8k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    331
                    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