Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Json in Datenpunkt schreiben - Wert wird nicht gesetzt!

    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

    Json in Datenpunkt schreiben - Wert wird nicht gesetzt!

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

      Mit meinem Test Script versuche ich Json Objekt in ein Datenpunkt zu schreiben.
      Warum kommt aber im Datenpoint nicht an?
      Das result wird noch richtig angezeit.

      const dpRoot = `0_userdata.0`;
      const isLogging = `true`;
      
      var dpTestJson = `${dpRoot}.Test.json`;
      var dpCount = `${dpRoot}.Test.count`;
      var testArray = [];
      var writeJson = [];
      
      mySetState(dpTestJson, "", "string", "DP für Json");
      mySetState(dpCount, 0, "number", "Zähler für Elemente");
      
      var anzahlElemente = 2;
      var i;
      
      
      for (i = 0; i < anzahlElemente; i++) {
          let testZeile = {Zahl: `${i}`, Element0: `Null`, Element1: `Eins`, Element2: `Zwei`, Element3: `Drei`, Element4: `Vier`, Element5: `Fünf`, Element6: `Sechs`, Element7: `Sieben`, Element8: `Acht`, Element9: `Neun`};Zwei`, `Element3: Drei`, `Element4: Vier`, `Element5: Fünf`, `Element6: Sechs`, `Element7: Sieben`, `Element8: Acht`, `Element9: Neun`];
          //let testZeile = `Zahl: ${i}`;
          testArray[i] = testZeile;
          writeJson.push(testArray[i]);
      }
      let result = JSON.stringify(writeJson);
      console.log (result);
      setState(dpTestJson, result);
      
      //setState(dpTestJson, result, false, function() {
      //         console.log("Json: I n i t i a l: " + dpTestJson);});
      
      setState(dpCount, i, true);
      
      
      // Routine kommt hier aus dem Forum
      /********************************************************************************************
       * mySetState setstate or createState and setstate
       * @param id  string Datapoint für State
       * @param val string | number | boolean  Wert für State
       * @param type string | number | boolean  Type des States - muss zu Wert passen
       * @param name string Beschreibung des States
       * @param write boolean  
       * 
       * return: nichts
       * 
       * Usage: selbsterklärend
       ********************************************************************************************/
      function mySetState(id, val, type, name, write = false) {
          if (existsState(id)) {
              setState(id, val, true);
          } else {
              createState(id, {
                  'name': name,
                  'type': type,
                  'read': true,
                  'write': write
              }, function () {
                  setState(id, val, true);
              });
          }
      }
      
      AlCalzone 1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer @nichname last edited by

        @nichname Woran machst du fest, dass es nicht im Datenpunkt ankommt?

        N 1 Reply Last reply Reply Quote 0
        • N
          nichname @AlCalzone last edited by nichname

          @alcalzone
          unter Objekte

          JsonDPleer.JPG

          Ein Fehler war im Script, hier die Änderung.. ich hatte die DP aber manuel angelegt. Deshalb hatte das keine Auswirkung.

          mySetState(dpTestJson, "", "string", "DP für Json", true);
          mySetState(dpCount, 0, "number", "Zähler für Elemente", true);
          

          Als neuen Test habe ich in den DP einfach mal ein Teststring "Test" geschrieben. Dies funktioniert.

          N 1 Reply Last reply Reply Quote 0
          • N
            nichname @nichname last edited by

            So nach ein paar versuchen...

            mit dieser Funktion hatte ich im ersten Versuch die DP angelegt.
            Wie Ihr seht war der zweite Parameter leer.

            mySetState(dpTestJson, "", "string", "DP für Json", true);
            

            nach der Änderung auf

            mySetState(dpTestJson, "nicht leer", "string", "DP für Json", true);
            

            Habe ich das Script zwei mal laufen lassen.
            Beim ersten Lauf war der DP noch mit "nicht leer" gefüllt.
            Nach dem zweiten Lauf wir der DP überschrieben und richtig mit dem Json Object gefüllt.
            Verstehe warum.....

            M 1 Reply Last reply Reply Quote 0
            • M
              MCU @nichname last edited by MCU

              @nichname createstate .... write:write gibt es nicht.
              Entweder write:false oder write:true. Wo stand das mit dem write:write?

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

              Support us

              ioBroker
              Community Adapters
              Donate

              892
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              javascript
              3
              5
              452
              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