Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. $ findet Aliase mit mit fehlender Source nicht

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    $ findet Aliase mit mit fehlender Source nicht

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

      Hallo

      Ich versuche ein kleines Script zu erstellen, welches Aliase bei denen der Source-Datenpunkt fehlt bereinigt.
      Dazu muss ich als erstes die IDs aller möglicherweise betroffenen Aliase finden, damit ich anschliessen prüfen kann ob die alias id auf einen existierenden Datenpunkt zeigt. Der folgende Code gibt die IDs der Aliase zurück.

      const ids=$("[id=alias.0.*]").toArray();
      log(ids);
      

      Leider gibt es dabei ein Problem. Bei Alias Punkten deren Quell-Datenpunkt gelöscht wurde, wird die ID mit dem obigen Statement nicht zurückgegeben, obwohl der Alias in der Objekt-Übersicht weiterhin angezeigt wird. Wenn der Alias Datenpunkt von Hand modifiziert wird, z.B. Änderung von common.name, dann gibt die obige Abfrage, die ID des Datenpunkts wieder zurück. Was ist der Hintergrund dieses Verhaltens bzw. ist das so gewollt?

      Gibt es einen Weg mit $ die IDs aller Aliase, inkl. jener die eine fehlende Quelle haben und danach nicht von Hand modifiziert wurden, zurückzugeben?
      Oder gibt es einen anderen Weg alle Aliase per Code zu finden?

      mickym paul53 2 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @Swisslizard last edited by

        @swisslizard sagte in $ findet Aliase mit mit fehlender Source nicht:

        Bei Alias Punkten deren Quell-Datenpunkt gelöscht wurde, wird die ID mit dem obigen Statement nicht zurückgegeben

        Da bekommst Du doch im Log entsprechende Warnungen.

        Swisslizard 1 Reply Last reply Reply Quote 0
        • Swisslizard
          Swisslizard @mickym last edited by Swisslizard

          @mickym
          Habs grad nochmal ausprobiert.

          • Neuen Datenpunkt angelegt unter userdata und neuen Alias dazu angelegt.
          • ID des Alias wird wie erwartet aufgelistet.
          • Datenpunkt unter userdata gelöscht (per Abfalleimersymbol). Alias nicht modifiziert.
          • ID des Alias wird vom Code nicht aufgelistet. Im Log gibt es keine Warnng.
          • Objektdaten des Alias modifiziert (common.name um ein x ergänzt).Alias zeigt aber immer noch ins leere,
          • ID des Alias wird vom Code aufgelistet.

          Etwas merkwürdig ❓

          mickym 1 Reply Last reply Reply Quote 1
          • mickym
            mickym Most Active @Swisslizard last edited by

            @swisslizard Ja ich habs auch gerade ausprobiert. Scheint nur Warnungen zu geben, wenn der alias geändert oder erstellt wurde.

            MartinP 1 Reply Last reply Reply Quote 1
            • MartinP
              MartinP @mickym last edited by

              Kann man da vielleicht einen indirekten Weg gehen ...

              1. Liste mit "_id" als Schlüssel
              2. Liste mit "id" als Schlüssel

              Alle die in 1. vorkommen aber nicht in 2. sind verwaist ...

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

                @swisslizard sagte: Bei Alias Punkten deren Quell-Datenpunkt gelöscht wurde, wird die ID mit dem obigen Statement nicht zurückgegeben

                Das kann ich bei mir (JS Version 8.7.6) nicht nachvollziehen. Es werden auch Alias-DP aufgelistet, deren Quell-Datenpunkt schon vor einiger Zeit gelöscht wurde.

                Selektor_Alias.JPG

                Den Quell-DP "0_userdata.0.Batterie.Gesamt.Restkapazitaet" zu "alias.0.Batterie.Restladung" gibt es nicht mehr.

                EDIT: Weiter getestet und einen existierenden DP zugewiesen: Alias aufgelistet. Dann existierenden Quell-DP gelöscht: Alias nicht aufgelistet. Merkwürdig!

                Noch weiter getestet und Javascript-Instanz neu gestartet: Alias mit nicht existierendem Quell-DP wird wieder aufgelistet.

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

                  @paul53 sagte in $ findet Aliase mit mit fehlender Source nicht:

                  EDIT: Weiter getestet und einen existierenden DP zugewiesen: Alias aufgelistet. Dann existierenden Quell-DP gelöscht: Alias nicht aufgelistet. Merkwürdig!
                  Noch weiter getestet und Javascript-Instanz neu gestartet: Alias mit nicht existierendem Quell-DP wird wieder aufgelistet.

                  Puh, kannst Du das irgendwie in eine reproduzierbaren Beschreibung gießen (am liebsten als Issue)?

                  paul53 Swisslizard 2 Replies Last reply Reply Quote 0
                  • paul53
                    paul53 @haus-automatisierung last edited by

                    @haus-automatisierung sagte: reproduzierbaren Beschreibung

                    Zusammenfassung: Nach Löschen des Quell-DP eines Alias muss die Javascript-Instanz neu gestartet werden, damit ein $-Selektor auf "alias.0" den Alias mit dem gelöschten Quell-DP weiter auflistet.

                    1 Reply Last reply Reply Quote 2
                    • Swisslizard
                      Swisslizard @haus-automatisierung last edited by

                      @haus-automatisierung

                      Ich kann das Problem mit folgender Anleitung reproduzieren. Kann auch gerne ein Issue erfassen. Bei https://github.com/ioBroker/ioBroker/issues ?

                      • Neuen Datenpunkt in 0_userdata.0.testdatenpunkt anlegen. Von Hand oder per Script.
                        0e6c93e4-8b61-44e1-94d5-2cb3aa7225a6-grafik.png

                      • Neuen Alias anlegen. Entweder per Alias-Manager, von Hand oder per Script.

                      {
                        "type": "state",
                        "common": {
                          "name": "testdatenpunkt",
                          "role": "state",
                          "type": "string",
                          "read": true,
                          "write": true,
                          "alias": {
                            "id": "0_userdata.0.testdatenpunkt"
                          }
                        },
                        "_id": "alias.0.testdatenpunktalias.testdatenpunkt",
                        "native": {},
                        "from": "system.adapter.admin.0",
                        "user": "system.user.admin",
                        "ts": 1725463536428,
                        "acl": {
                          "object": 1636,
                          "state": 1636,
                          "owner": "system.user.admin",
                          "ownerGroup": "system.group.administrator"
                        }
                      }
                      
                      • Alias suchen mit:
                      const ids=$("[id=alias.0.testdatenpunktalias.testdatenpunkt]").toArray();
                      log(ids);
                      

                      Alias wird gefunden:

                      script.js.common.test.aliasMissingSourceTest: [ 'alias.0.testdatenpunktalias.testdatenpunkt' ]
                      
                      • Datenpunkt löschen
                        0b46b6c0-bb17-46dc-a9c3-7a7363abe9fe-grafik.png

                      • Alias suchen mit:

                      const ids=$("[id=alias.0.testdatenpunktalias.testdatenpunkt]").toArray();
                      log(ids);
                      

                      Alias wird nicht gefunden:

                      script.js.common.test.aliasMissingSourceTest: []
                      
                      • Javascript Instance neu starten oder Object Data von Alias ändern (z.B. common.name) und speichern.

                      • Alias suchen mit:

                      const ids=$("[id=alias.0.testdatenpunktalias.testdatenpunkt]").toArray();
                      log(ids);
                      

                      Alias wird gefunden:

                      script.js.common.test.aliasMissingSourceTest: [ 'alias.0.testdatenpunktalias.testdatenpunkt' ]
                      
                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @Swisslizard last edited by

                        @swisslizard sagte: Kann auch gerne ein Issue erfassen

                        Unter https://github.com/ioBroker/ioBroker.javascript/issues.

                        Swisslizard 1 Reply Last reply Reply Quote 1
                        • Swisslizard
                          Swisslizard @paul53 last edited by

                          @paul53
                          Issue erfasst.

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          880
                          Online

                          31.7k
                          Users

                          79.7k
                          Topics

                          1.3m
                          Posts

                          5
                          11
                          410
                          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