Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. GetObject nach setObject zum Hinzufügen von Members in Aufzählung (enums) schlägt fehl

    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

    GetObject nach setObject zum Hinzufügen von Members in Aufzählung (enums) schlägt fehl

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

      Ich hab ein kleines Script geschrieben, was mir für alle Geräte ein paar Enums selbst zuweist.

      Leider speichert es immer nur den letzten Eintrag ab.

      Starte ich das Script immer wieder sind irgendwann alle Werte drin.

      Ich habe mal eingebaut, dass nach dem setObject ein getObject gemacht wird.

      Dieses meldet dann auch bei allen Einträgen, die Anzahl der Members nicht gleich ist.

      Auch beim letzten Datensatz.

      Schaue ich aber in die Aufzählung rein, ist der letzte vorhanden.

      Vielleicht dauert es einen bis der Wert vorhanden ist, aber ein delay Kommando habe ich nicht gefunden.

      Ggf. geht das hinzufügen ja auch viel einfacher.

      Hier der Auszug der Speichern soll:

      function setCapability(device, target, capability) {
          var enumName = "enum.capability." + capability;
          var capabilityObj = getObject(enumName);
          var memberName = device + "." + target;
          capabilityObj.common.members.push(memberName) ;
          setObject(enumName, capabilityObj, function (err) {
              if (err) {
                  console.error('Kann Objekt nicht schreiben: ' + err);
              }
          });
      
          var capabilityObjCheck = getObject(enumName);
          if (capabilityObjCheck.common.members.length != capabilityObj.common.members.length) {
              console.error("Werte wurde nicht via setObject gespeichert " + capabilityObjCheck.common.members.length + ":" + capabilityObj.common.members.length);
          }
      }
      
      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        Ein getObject() nach setObject() funktioniert wegen der asynchronen Abarbeitung von setObject() nicht.

        Vorschlag: Lesen einmal das Objekt ein, füge <u>alle</u> neuen Members hinzu (.push) und schreibe das geänderte Objekt zurück (setObject()). In der <u>Callback-Funktion</u> von setObject() kannst Du getObject() aufrufen, um den Erfolg zu überprüfen.

        1 Reply Last reply Reply Quote 0
        • 0
          0.L.L.1. last edited by

          Ja, das habe ich mir schon gedacht, dass es asyncron läuft.

          Sowas wie await geht nicht, oder?

          Mein Problem ist, dass ich nicht Enumweise durchgehe, sondern alle ZWave Objekte.

          Und jedes Objekt hat ggf. mehrere Enums die geändert werden.

          Dadurch müsste ich mir ja alle Enum-Members aller Enums von enum.capability merken.

          Wäre sicher möglich, aber anders schon schöner 😞

          Ein Javascript Funktion addObjectToEnum gibts es auch nicht, oder?

          Ich bin doch nicht der Einzige, der Objekte zu Enums nicht immer manuell hinzufügen möchte 😉

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

            @0.L.L.1.:

            Ein Javascript Funktion addObjectToEnum gibts es auch nicht, oder? `
            Nein, kenne ich nicht.
            @0.L.L.1.:

            Ich bin doch nicht der Einzige, der Objekte zu Enums nicht immer manuell hinzufügen möchte `
            Bisher wahrscheinlich doch.

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

            Support us

            ioBroker
            Community Adapters
            Donate

            868
            Online

            31.8k
            Users

            79.9k
            Topics

            1.3m
            Posts

            2
            4
            392
            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