Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Verständnisproblem: Object versus ObjectID

    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

    Verständnisproblem: Object versus ObjectID

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

      Beim Versuch, in einem Skript auf Änderungen zu reagieren, probierte ich folgende Optionen aus.

      afdbf75b-c1b2-4dbd-b07d-48b07e23eb8b-image.png
      Die erste Version funktioniert wie gewünscht, die zweite liefert einen Fehler unsubscribe: invalid type of id - object

      Schaut man sich den JavaScript-Code an, wird sogar mir als Anfänger schnell klar, woran das liegt ..

      a92a6a68-e49b-4f5c-9ade-923521659e52-image.png

      Im ersten Beispiel wird der Datenpunkt selbst im Objektbaum referenziert, im zweiten Beispiel wird dessen Wert (Inhalt) referenziert.

      Was ich nicht verstehe ..

      Eigentlich will ich doch einen Trigger, der die Änderung des Wertes in dem Datenpunkt registriert. Für mich wäre es logisch, wenn das erste Beispiel nicht (der Datenpunkt ändert sich doch gar nicht) und nur das zweite (bei dem sich der Wert/Inhalt ändert) das richtige Verhalten liefern würde.

      Irgendwie stehe ich nach wie vor auf Kriegsfuß mit der Implementierung von JavaScript bzw. Blockly.

      PS:

      Was ich glaube verstanden zu haben ..

      Im ersten Beispiel wird der String [].concat(..) als Parameter dem Trigger on übergeben. Im zweiten Beispiel wird der Inhalt getObject(..) des Datenpunktes übergeben. Referenziert der String [].concat(..) einen Datenpunkt, so liefert getObject(..) natürlich nur einen Wert (hier true/false), was natürlich zu einem Fehler führt.

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

        @legro sagte: das erste Beispiel nicht (der Datenpunkt ändert sich doch gar nicht)

        Die ID ist eine Konstante, aber auch das statische Objekt des Datenpunktes:

        nur das zweite (bei dem sich der Wert/Inhalt ändert) das richtige Verhalten liefern würde.

        Getriggert wird auf eine Änderung des Zustandes des Datenpunktes, der per ID adressiert wird. Den Zustand erhält man nicht mit getObject(id), sondern mit getState(id).

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

          @paul53 sagte in Verständnisproblem: Object versus ObjectID:

          @legro sagte: das erste Beispiel nicht (der Datenpunkt ändert sich doch gar nicht)
          .. Den Zustand erhält man nicht mit getObject(id), sondern mit getState(id).

          Danke für deine Antwort. In der Tat habe ich fälschlicherweise getObject mit getState verwechselt.

          Leider verstehe ich's dennoch nicht ganz. Was liefert denn getObject, wenn nicht die ObjectID? Oder anders gefragt, was unterscheidet die beiden Blöcke Object ID (erste Option) und Object (zweite Option)? Naiv, wie ich bin, ging ich davon aus, dass die beiden Blöcke identisch sein sollten (was sie offensichtlich nicht sind).

          Welchen Block gibt es unter System in Blockly, den man in diesem Trigger einsetzen kann?😕

          Homoran paul53 2 Replies Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @legro last edited by Homoran

            @legro Du musst dir Objekt wie eine Kiste vorstellen. Darin befinden sich die states!

            Trigger finden tatsächlich auf ObjectID statt, auch wenn sich der Wert von Objekt ändert.

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

              @legro sagte: Was liefert denn getObject, wenn nicht die ObjectID?

              Zum Beispiel dieses statische Objekt:

              {
                "common": {
                  "name": "Taupunkt außen",
                  "desc": "Manuell erzeugt",
                  "role": "value.dewpoint",
                  "type": "number",
                  "read": true,
                  "write": false,
                  "unit": "°C",
                  "def": 0,
                  "min": -20,
                  "max": 35
                },
                "native": {},
                "type": "state",
                "_id": "0_userdata.0.Aussen.Klima.Taupunkt",
                "acl": {
                  "object": 1636,
                  "state": 1636,
                  "owner": "system.user.admin",
                  "ownerGroup": "system.group.administrator"
                },
                "from": "system.adapter.admin.0",
                "user": "system.user.admin",
                "ts": 1659369399962
              }
              

              @legro sagte in Verständnisproblem: Object versus ObjectID:

              Welchen Block gibt es unter System in Blockly, den man in diesem Trigger einsetzen kann?

              Blockly_temp.JPG

              Der untere ist allerdings ein Text-Block, in dem die ID eingetragen wurde.

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

                @paul53

                Vielen Dank. Dank deiner detaillierten Erläuterungen habe ich jetzt endlich das Ganze verstanden.

                Ich versuch's mal zusammenzufassen.

                Die Eingänge in den beiden Blöcken ..

                debe8bcf-b5d9-41d5-802b-bf174c32fd2f-image.png

                .. erwarten die Adresse des Datenpunktes im Objektbaum als String. Darauf muss man als (immer noch) Anfänger erst einmal kommen. Der Block Object liefert das Objekt mit allen seinen Feldern ..

                javascript.0 (2171) script.js.Rollladen._ObjectsTest: { common: { name: 'Grp01_Ins', desc: 'Manuell erzeugt', role: 'state', type: 'boolean', read: true, write: true, def: false }, type: 'state', native: {}, from: 'system.adapter.admin.0', user: 'system.user.admin', ts: 1714825235822, _id: '0_userdata.0.Rollladen.Grp01_Ins', acl: { object: 1636, state: 1636, owner: 'system.user.admin', ownerGroup: 'system.group.administrator' } }
                
                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @legro last edited by paul53

                  @legro sagte: erwarten die Adresse des Datenpunktes im Objektbaum als String.

                  Ja, wobei sich durch einen Klick auf "Object ID" bzw. "default" ein Selektionsfenster zur Auswahl des Datenpunktes öffnet. Blockly zeigt nach erfolgter Auswahl nicht die ID, sondern den Namen an.

                  L 1 Reply Last reply Reply Quote 1
                  • L
                    legro @paul53 last edited by

                    @paul53 sagte in Verständnisproblem: Object versus ObjectID:

                    Ja, wobei sich durch einen Klick auf "Object ID" bzw. "default" ein Selektionsfenster zur Auswahl des Datenpunktes öffnet. Blockly zeigt nach erfolgter Auswahl nicht die ID, sondern den Namen an.

                    Statt Kritik an Blockly gibt's nun freudige Begeisterung. Diese beiden Trigger-Bausteine ermöglichen auf unterschiedlichste Kriterien zu testen, wie die nachfolgende Abbildung zeigt.

                    66f28b09-c7f2-4392-a690-7afcd3a2d40e-image.png

                    Tolle Sache, wenn man's mal verstanden hat. Aber Dank deiner Unterstützung konnte ich's im Detail (endlich) verstehen.

                    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

                    538
                    Online

                    31.9k
                    Users

                    80.3k
                    Topics

                    1.3m
                    Posts

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