Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. [Frage] Object werte in ein Array schreiben, Array auslesen und Wert zurück ins object schreiben

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    895

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.5k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    5.8k

[Frage] Object werte in ein Array schreiben, Array auslesen und Wert zurück ins object schreiben

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 2 Kommentatoren 1.6k Aufrufe
  • Ä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.
  • DutchmanD Offline
    DutchmanD Offline
    Dutchman
    Developer Most Active Administrators
    schrieb am zuletzt editiert von
    #1

    Hi zusammen,

    Mal wieder leider eine kleine Herausforderung wofür ich nicht gut genug im Scripten bin.

    Situation :

    ioBroker Installation muss fasiert umziehen von Host A nach B, beiden Installationen laufen bereits parallel.

    Durch Benutzung von Scripten (Energy Messung und andere) muss ich sowohl den object Baum aber auch die Werte der objecte übertragen.

    Die Export Funktion im Admin liefert aber leider nur den Baum ohne Werte.

    Jetzt hab ich mir folgende Lösung einfallen lassen:

    1. gewünschte objecte von A exportieren

    2. diese auf B importieren

    3. auf A per Script die Werte in ein object als Array schreiben (objectname/Wert)

    4. diese Array auf Host B bringen

    5. per Script Array auslesen und die Werte wieder in die objecte setzen

    Könnte mir bitte jemand auf die Sprünge helfen wie man das anstellen könnte ?

    Die Array Geschichte schreiben und auslesen sprengt leider meine eigene Kompetenz Zone :(

    Ich würde gerne im Script den Baum* angeben wobei der gesamte Inhalt Dan in die Array geschrieben wird, und bei Option 2 dieses Array ausgelesen und Werte zurück ins object schreiben.

    Danke schonmal im voraus !

    ~Dutch

    Sent from my iPhone using Tapatalk

    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      So könntest Du die IDs + Werte in eine JSON-Datei schreiben:

      const tree = 'dp.0.';
      
      const path = '';
      const fn = path + tree + 'json';
      const dps = $(tree + '*');
      const fs = require('fs');
      
      var arr = [];
      
      dps.each(function(id, i) {
          var obj = {};
          obj.id = id;
          obj.val = getState(id).val;
          arr.push(obj);
      });
      
      writeFile(null, fn, JSON.stringify(arr));
      
      

      und so wieder einlesen:

      `const tree = 'dp.0.';
      
      const path = '';
      const fn = path + tree + 'json';
      const dps = $(tree + '*');
      const fs = require('fs');
      
      readFile(null, fn, function(err, data) {
          var arr = JSON.parse(data);
          for(let i = 0; i < arr.length; i++) {
              setState(arr[i].id, arr[i].val, true);
          }
      });` [/i][/i]
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

      1 Antwort Letzte Antwort
      0
      • DutchmanD Offline
        DutchmanD Offline
        Dutchman
        Developer Most Active Administrators
        schrieb am zuletzt editiert von
        #3

        Super danke Paul ! werde ich heute Abend direkt probieren

        Sent from my iPhone using Tapatalk

        1 Antwort Letzte Antwort
        0
        • DutchmanD Offline
          DutchmanD Offline
          Dutchman
          Developer Most Active Administrators
          schrieb am zuletzt editiert von
          #4

          Leider geht da was schief, habe logging punkte hinzugefügt :

          log("Start object export");
          const tree = 'javascript.0.Strom.';
          
          const path = '/tmp/';
          const fn = path + tree + 'json';
          const dps = $(tree + '*');
          const fs = require('fs');
          
          var arr = [];
          
          dps.each(function(id, i) {
              log("Object : " & id & "with value " & getState(id).val & " written to JSON");
              var obj = {};
              obj.id = id;
              obj.val = getState(id).val;
              arr.push(obj);
          
          });
          
          writeFile(null, fn, JSON.stringify(arr));
          log("Finished object export");
          
          

          Die log Ausgabe lautet :

          javascript.1	2018-09-05 22:42:21.684	info	script.js.Test_Omgeving.JSON_Export: Finished object export
          javascript.1	2018-09-05 22:42:21.683	info	script.js.Test_Omgeving.JSON_Export: 0
          javascript.1	2018-09-05 22:42:21.683	info	script.js.Test_Omgeving.JSON_Export: 0
          javascript.1	2018-09-05 22:42:21.683	info	script.js.Test_Omgeving.JSON_Export: 0
          javascript.1	2018-09-05 22:42:21.683	info	script.js.Test_Omgeving.JSON_Export: 0
          javascript.1	2018-09-05 22:42:21.682	info	script.js.Test_Omgeving.JSON_Export: 0
          javascript.1	2018-09-05 22:42:21.681	info	script.js.Test_Omgeving.JSON_Export: 0
          javascript.1	2018-09-05 22:42:21.681	info	script.js.Test_Omgeving.JSON_Export: 0
          javascript.1	2018-09-05 22:42:21.678	info	script.js.Test_Omgeving.JSON_Export: Start object export
          
          

          Der wert 0 im log wundert mich, es wird auch keine dabei erzeugt in /tmp/

          Dutch

          1 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #5

            @Dutchman:

            es wird auch keine dabei erzeugt in /tmp/ `
            Lass mal path als Leerstring und dann schau mal unter iobroker-data/files/javascript
            @Dutchman:

            Der wert 0 im log wundert mich, `
            Ja, mich auch. Ändere mal das Log (so hatte ich es getestet):

                log(id + ': ' + getState(id).val);
            
            

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

            1 Antwort Letzte Antwort
            0
            • DutchmanD Offline
              DutchmanD Offline
              Dutchman
              Developer Most Active Administrators
              schrieb am zuletzt editiert von
              #6

              @paul53:

              Lass mal path als Leerstring und dann schau mal unter iobroker-data/files/javascript

              Danke, da stand die Datei dan auch also will er wohl nicht ausserhalb dieses Verzeichnisses arbeiten ?

              Ja, mich auch. Ändere mal das Log (so hatte ich es getestet):

                  log(id + ': ' + getState(id).val);
              
              ```` `  
              

              mein blöder Fehler, + anstatt & … jetzt klappts danke dir !!!

              1 Antwort Letzte Antwort
              0

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              358

              Online

              33.0k

              Benutzer

              83.5k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2026
              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