Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. extendObject - Problem bzw funktioniert nicht

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    912

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

extendObject - Problem bzw funktioniert nicht

Geplant Angeheftet Gesperrt Verschoben JavaScript
10 Beiträge 4 Kommentatoren 898 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A Offline
    A Offline
    Automatisierer 0
    schrieb am zuletzt editiert von
    #1

    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?

    paul53P 1 Antwort Letzte Antwort
    0
    • A Automatisierer 0

      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?

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @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.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      A 1 Antwort Letzte Antwort
      0
      • paul53P 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 Offline
        A Offline
        Automatisierer 0
        schrieb am zuletzt editiert von
        #3

        @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
        }

        paul53P 1 Antwort Letzte Antwort
        0
        • A Automatisierer 0

          @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
          }

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @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);
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          A 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @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 Offline
            A Offline
            Automatisierer 0
            schrieb am zuletzt editiert von
            #5

            @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.

            paul53P 1 Antwort Letzte Antwort
            0
            • A Automatisierer 0

              @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.

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #6

              @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.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              liv-in-skyL A 2 Antworten Letzte Antwort
              0
              • paul53P 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-skyL Offline
                liv-in-skyL Offline
                liv-in-sky
                schrieb am zuletzt editiert von
                #7

                @paul53

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

                nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                1 Antwort Letzte Antwort
                0
                • paul53P 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.

                  A Offline
                  A Offline
                  Automatisierer 0
                  schrieb am zuletzt editiert von
                  #8

                  @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 Antwort Letzte Antwort
                  0
                  • AlCalzoneA Offline
                    AlCalzoneA Offline
                    AlCalzone
                    Developer
                    schrieb am zuletzt editiert von
                    #9

                    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.

                    Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                    A 1 Antwort Letzte Antwort
                    0
                    • AlCalzoneA AlCalzone

                      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 Offline
                      A Offline
                      Automatisierer 0
                      schrieb am zuletzt editiert von
                      #10

                      @alcalzone said in extendObject - Problem bzw funktioniert nicht:

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

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

                      Vielen Dank !!!!!

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      647

                      Online

                      32.6k

                      Benutzer

                      82.2k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe