Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Alias-manager: Objektdaten nicht im Alias

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    Alias-manager: Objektdaten nicht im Alias

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

      @warhammer73 sagte: Idee wie ich die gesamte Struktur von oben in den Alias bekomme

      Wozu? Wird das Array nicht in den Alias übernommen?

      @warhammer73 sagte in Alias-manager: Objektdaten nicht im Alias:

      gleich einen einzelnen Eintrag ("quality": "GOOD")?

      Dann muss der Alias vom Typ "string" sein und man verwendet eine Lesekonvertierung:

      JSON.parse(val)[0]
      

      für "CommunicationQuality", wenn das Array so gefüllt ist wie unter "deviceServiceIds" beschrieben.

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

        @paul53 said in Alias-manager: Objektdaten nicht im Alias:

        @warhammer73 sagte: Idee wie ich die gesamte Struktur von oben in den Alias bekomme
        Wozu? Wird das Array nicht in den Alias übernommen?

        Nein, siehe oben.

        Beim Anlegen meckert der Alias-Manager vor dem Speichern auch:
        56d1735f-8709-406d-ac79-5e2c9a8e831e-image.png
        Speichert man trotzdem führt das zu der Anzeige oben.

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

          @warhammer73 sagte: einen Alias anzulegen, dort sieht das Ergebnis aber so aus:

          Das sieht doch gut aus. Damit muss es funktionieren.
          Anmerkung: Was im Original-DP unter "native" steht, interessiert den Alias nicht.

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

            @warhammer73
            Ich habe mal mit fast identischen Datenpunkten getestet: Bei mir funktioniert der Alias wie erwartet.
            Original-DP:

            {
              "common": {
                "name": "TRV2.0 18fc26000002fa89.CommunicationQuality.faults",
                "desc": "Manuell erzeugt",
                "role": "list",
                "type": "array",
                "read": true,
                "write": false
              },
              "type": "state",
              "native": {
                "device": {
                  "@type": "device",
                  "rootDeviceId": "64-da-a0-11-96-b6",
                  "id": "hdm:ZigBee:18fc26000002fa89",
                  "deviceServiceIds": [
                    "CommunicationQuality",
                    "Thermostat",
                    "BatteryLevel",
                    "ValveTappet",
                    "DisplayedTemperatureConfiguration",
                    "DisplayConfiguration",
                    "DisplayDirection",
                    "TemperatureLevel",
                    "Linking",
                    "TemperatureOffset"
                  ],
                  "manufacturer": "BOSCH",
                  "roomId": "hz_1",
                  "deviceModel": "TRV_GEN2",
                  "serial": "18FC26000002FA89",
                  "profile": "GENERIC",
                  "name": "TRV2.0 18fc26000002fa89",
                  "status": "AVAILABLE",
                  "parentDeviceId": "roomClimateControl_hz_1",
                  "childDeviceIds": []
                },
                "deviceService": {
                  "@type": "DeviceServiceData",
                  "id": "CommunicationQuality",
                  "deviceId": "hdm:ZigBee:18fc26000002fa89",
                  "state": {
                    "@type": "communicationQualityState",
                    "quality": "GOOD"
                  },
                  "path": "/devices/hdm:ZigBee:18fc26000002fa89/services/CommunicationQuality"
                },
                "state": "faults"
              },
              "_id": "0_userdata.0.Test.hdm:ZigBee:18fc26000002fa89.CommunicationQuality.faults",
              "acl": {
                "object": 1636,
                "state": 1636,
                "owner": "system.user.admin",
                "ownerGroup": "system.group.administrator"
              },
              "from": "system.adapter.admin.0",
              "user": "system.user.admin",
              "ts": 1688834888359
            }
            

            DP_Liste_BSH.JPG

            Alias mit Lesekonvertierung:

            {
              "common": {
                "name": "link quality",
                "desc": "Manuell erzeugt",
                "role": "text",
                "type": "string",
                "read": true,
                "write": false,
                "alias": {
                  "id": "0_userdata.0.Test.hdm:ZigBee:18fc26000002fa89.CommunicationQuality.faults",
                  "read": "JSON.parse(val)[0]"
                }
              },
              "type": "state",
              "native": {},
              "_id": "alias.0.Test.Liste_bshb",
              "acl": {
                "object": 1636,
                "state": 1636,
                "owner": "system.user.admin",
                "ownerGroup": "system.group.administrator"
              },
              "from": "system.adapter.admin.0",
              "user": "system.user.admin",
              "ts": 1688835072358
            }
            

            DP_Alias_BSH.JPG

            EDIT: Ich hatte zuerst mit dem Alias als Liste getestet, was auch funktioniert hat.

            1 Reply Last reply Reply Quote 0
            • W
              warhammer73 last edited by

              ... mein Problem liegt ja aber an der Stelle, das "val" bei mir "[]" ist:

              console.log (getState("console.log (getState("bshb.0.hdm:ZigBee:18fc26000002fa89.CommunicationQuality.faults"));"));
              javascript.0 (1833) script.js.Heim.check: {'val':[],'ack':true,'ts':1687715515607,'q':0,'from':'system.adapter.bshb.0','user':'system.user.admin','lc':1670363668833}
              

              ... ich hatte eigentlich die Hoffnung das mir getState den gesamten Baum wie ich ihn mit "Objekt bearbeiten" (siehe oben) anzeigt und ich mich dann über "deviceService" bis "quality" durchhangeln kann um den Wert "GOOD" zu bekommen. Da aber getState das schon nicht tut, habe ich irgendwo ein anderes Problem. 😞

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

                @warhammer73: "val" bei mir "[]" ist

                Dann kann ein Alias nichts liefern (außer ein leeres Array).

                1 Reply Last reply Reply Quote 0
                • W
                  warhammer73 last edited by

                  @paul53 :

                  Ja, an der falschen Stelle angefangen mit suche...

                  Tja, und auch wenn jetzt die Überschrift nicht mehr zu 100% passt:
                  Den Wert den ich brauche gibt es ja offensichtlich (Objekt bearbeiten zeigt ihn ja an), aber wie bekomme ich per JS ihn ausgelesen?

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

                    @warhammer73 sagte: wie bekomme ich per JS ihn ausgelesen?

                    getObject('bshb.0.hdm:ZigBee:18fc26000002fa89.CommunicationQuality.faults').native.deviceService.state.quality
                    

                    Dieses Attribut sollte allerdings statisch sein, sich also nicht im laufenden Betrieb ändern.

                    W 1 Reply Last reply Reply Quote 1
                    • W
                      warhammer73 @paul53 last edited by warhammer73

                      @paul53

                      Danke, manchmal kommt man auf naheliegende Sachen nicht...
                      Damit hat sich dann aber auch die Idee das Geräteunabhängig als Alias auslesen zu können erledigt. 😞

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

                        @warhammer73 sagte: als Alias auslesen zu können

                        Der Datenpunkt heißt "faults": Das Array wird sich wahrscheinlich erst füllen, wenn mind. ein Fehler auftritt.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate
                        FAQ Cloud / IOT
                        HowTo: Node.js-Update
                        HowTo: Backup/Restore
                        Downloads
                        BLOG

                        802
                        Online

                        32.1k
                        Users

                        80.7k
                        Topics

                        1.3m
                        Posts

                        2
                        11
                        423
                        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