Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. extendObject - Problem bzw funktioniert nicht

    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

    extendObject - Problem bzw funktioniert nicht

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

      extendObject - Problem bzw funktioniert nicht

      Ich möchte mit extendObject mehrere Attribute in einem Datenpunkt ändern.

      Dazu rufe ich je zu ändernden Attribut extendObject auf.
      Leider funktioniert dies nicht, die Attribute werden nicht geändert

      Hier mein Beispiel:

      1. Attribute des Objekts VOR den Aufrufen:
        +++++++ SCREENSHOT Vorher.jpg+++++++
        Vorher.jpg

      2. Mein Script:
        +++++++ SCREENSHOT DerScript.jpg+++++++
        DerScript.jpg

      3. Attribute des Objekts NACH den Aufrufen:
        +++++++ SCREENSHOT Nachher.jpg+++++++
        Nachher.jpg

      Von den vielen Aufrufen scheint nur der Letzte tatsächlich das Attribut zu ändern.
      Was mache ich falsch bzw. wo ist das Problem?

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

        @automatisierer-0 sagte: mit extendObject mehrere Attribute in einem Datenpunkt ändern.

        Wenn mehrere Attribute zu ändern sind, würde ich mit getObject(id) das Objekt einlesen, die Attribute im eingelesenen Objekt ändern und anschließend das geänderte Objekt mit setObject(id, obj) speichern. Das ist auf jeden Fall effektiver.

        @automatisierer-0 sagte: wo ist das Problem?

        Vermutung: Da extendObject() im Hintergrund getObject(id) und setObject() ausführt, wird jedes Mal mit getObject(id) noch das alte Objekt eingelesen, da das vorangegangene setObject() noch nicht fertig ist.

        Anmerkung:

        "role": "ICH333"
        

        ist ungültig.

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

          @paul53
          Könntest du mir bitte ein kleines Beispiel schreiben, in dem die Attribute "type", "read" und "max" gesetzt werden.
          Ich bringe das leider nicht zusammen.

          Vielen Dank im Voraus!

          {
          "id": "knx.0.Multimedia(MM).Gar__Wkst_.MM_-WS-HifiBerry-Favorit_Set-_(cmdPlayFavorite)",
          "type": "state",
          "common": {
          "name": "MM - WS - HifiBerry - Favorit Set - (cmdPlayFavorite)",
          "type": "BURLI111",
          "role": "ICH111",
          "read": false,
          "write": true,
          "max": 253,
          "min": 3
          },
          "native": {
          "dpt": "DPT5.000",
          "address": "17/4/18",
          "addressRefId": "P-0480-0_GA-1762",
          "statusGARefId": "P-0480-0_GA-1763",
          "actGARefId": "",
          "update": true,
          "objRef": "O-29_R-29",
          "devName": "M-000C_A-7104-10-5844-O000A",
          "devInst": "P-0480-0_DI-57",
          "objectSize": "1 Byte"
          },
          "acl": {
          "object": 1636,
          "state": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
          },
          "from": "system.adapter.javascript.0",
          "user": "system.user.admin",
          "ts": 1635795393308
          }

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

            @automatisierer-0 sagte: Beispiel schreiben, in dem die Attribute "type", "read" und "max" gesetzt werden.

            const obj = getObject('knx.0.Multimedia(MM).Gar__Wkst_.MM_-WS-HifiBerry-Favorit_Set-_(cmdPlayFavorite)');
            obj.common.type = 'number';
            obj.common.read = false;
            obj.common.min = 3;
            obj.common.max = 253;
            setObject('knx.0.Multimedia(MM).Gar__Wkst_.MM_-WS-HifiBerry-Favorit_Set-_(cmdPlayFavorite)', obj);
            
            A 1 Reply Last reply Reply Quote 0
            • A
              Automatisierer 0 @paul53 last edited by

              @paul53 said in extendObject - Problem bzw funktioniert nicht:

              const obj = getObject('knx.0.Multimedia(MM).Gar__Wkst_.MM_-WS-HifiBerry-Favorit_Set-_(cmdPlayFavorite)');

              Hallo,

              Sorry, ich gebe das genau so ein, aber es funktioniert nicht:

              Tut nicht so wie es soll.jpg

              Irgend etwas mache ich scheinbar falsch.

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

                @automatisierer-0 sagte: aber es funktioniert nicht:

                Was funktioniert nicht? Werden die Attribute im Datenpunkt nicht geändert? Liefert die Log-Ausgabe Fehlermeldungen?
                Die roten Wellenlinien des Javascript-Editors sollte man ignorieren.

                liv-in-sky A 2 Replies Last reply Reply Quote 0
                • liv-in-sky
                  liv-in-sky @paul53 last edited by

                  @paul53

                  kann es sein, dass der cache da mit rein "murkst" ?

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

                    @paul53
                    Fehlermeldung kommt keine.
                    Wenn ich mir das Ergebnis im Objektbaum anschaue, dann sehe ich dass nichts geändert wurde.

                    {
                    "id": "knx.0.Multimedia(MM).Gar__Wkst_.MM_-WS-HifiBerry-Favorit_Set-_(cmdPlayFavorite)",
                    "type": "state",
                    "common": {
                    "name": "MM - WS - HifiBerry - Favorit Set - (cmdPlayFavorite)",
                    "type": "BURLI111",
                    "role": "NEU",
                    "read": false,
                    "write": true,
                    "max": 253,
                    "min": 3
                    },

                    1 Reply Last reply Reply Quote 0
                    • AlCalzone
                      AlCalzone Developer last edited by

                      Warum nicht alles einfach in einem einzigen extendObject Aufruf?

                      extendObject('...id...', {
                        common: {
                          read: false,
                          write: true,
                          role: "ICH333",
                          // ... rest
                        }
                      });
                      

                      Das ursprüngliche Problem ist, dass extendObject asynchron arbeitet und die ersten Aufrufe noch gar nicht abgearbeitet sind, wenn der letzte zuschlägt (und letztendlich gewinnt).

                      Wenn es wirklich nacheinander sein muss:

                      await extendObjectAsync('...id', { common: {read: false} } );
                      await extendObjectAsync('...id', { common: {write: true} } );
                      // ...
                      

                      aber das ist nicht zu empfehlen, da es in deinem Fall 6x das Objekt ändert, statt nur 1x.

                      A 1 Reply Last reply Reply Quote 0
                      • A
                        Automatisierer 0 @AlCalzone last edited by

                        @alcalzone said in extendObject - Problem bzw funktioniert nicht:

                        extendObject('...id...', {

                        Super, super und nocheimal Super!!!!
                        So funktioniert es bestens!

                        Vielen Dank !!!!!

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        866
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        4
                        10
                        608
                        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