Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] Inhalt Liste als Datei speichern und wieder laden

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.4k

[gelöst] Inhalt Liste als Datei speichern und wieder laden

Scheduled Pinned Locked Moved JavaScript
10 Posts 3 Posters 584 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Manfred-Outlaw
    wrote on last edited by Manfred-Outlaw
    #1

    Hallo,
    ich habe mich erst seit ein par Tagen mit den Listen beschäftigt. Meine Idee ist es einige Datenpunkte als Text-Datei zu speichern und bei Notwendigkeit diese wieder zu laden und in die Datenpunkte zurückzuschreiben.
    Das Abspeichern hab ich hinbekommen aber beim Laden und zurückschreiben komm ich nicht weiter.
    So sieht das Abspeichern aus:
    cfb41489-f323-4866-9d17-ad428a3d68d6-grafik.png
    Datei_W-W-A sieht so aus:

    const fs = require('fs');
    switch(mode) {
        case 'r': return fs.readFileSync(Dateiname, 'utf8');
        case 'w': return fs.writeFileSync(Dateiname, Daten);
        case 'a': return fs.appendFileSync(Dateiname, Daten);
        default: return 'Parameter mode muss "r", "w" oder "a" sein';
    }
    

    Bis hierher ist alles ok. Sieht zumindest so aus.
    Nur das Laden und zurückschreiben in die Datenpunkte geht nicht. Hier erstmal den Test den ich versucht habe.
    fd2c854e-2fc3-4a23-aa97-df90daf51cb4-grafik.png

    Hat jemand dazu eine Idee. Wo ist hier mein Fehler?
    Danke

    AsgothianA liv-in-skyL 2 Replies Last reply
    0
    • M Manfred-Outlaw

      Hallo,
      ich habe mich erst seit ein par Tagen mit den Listen beschäftigt. Meine Idee ist es einige Datenpunkte als Text-Datei zu speichern und bei Notwendigkeit diese wieder zu laden und in die Datenpunkte zurückzuschreiben.
      Das Abspeichern hab ich hinbekommen aber beim Laden und zurückschreiben komm ich nicht weiter.
      So sieht das Abspeichern aus:
      cfb41489-f323-4866-9d17-ad428a3d68d6-grafik.png
      Datei_W-W-A sieht so aus:

      const fs = require('fs');
      switch(mode) {
          case 'r': return fs.readFileSync(Dateiname, 'utf8');
          case 'w': return fs.writeFileSync(Dateiname, Daten);
          case 'a': return fs.appendFileSync(Dateiname, Daten);
          default: return 'Parameter mode muss "r", "w" oder "a" sein';
      }
      

      Bis hierher ist alles ok. Sieht zumindest so aus.
      Nur das Laden und zurückschreiben in die Datenpunkte geht nicht. Hier erstmal den Test den ich versucht habe.
      fd2c854e-2fc3-4a23-aa97-df90daf51cb4-grafik.png

      Hat jemand dazu eine Idee. Wo ist hier mein Fehler?
      Danke

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      wrote on last edited by
      #2

      @manfred-outlaw Screenshot 2022-03-10 at 09.00.02.png

      Mit diesem Baustein aktualisierst du den Datenpunkt i mit dem Wert vom Datenpunkt i, also mit genau dem was sich darin schon befindet.

      Zeig doch mal wie deine gespeicherte Datei aussieht, dann lässt sich vielleicht ein Vorschlag machen wie es gehen kann.

      A.

      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

      M 1 Reply Last reply
      0
      • M Manfred-Outlaw

        Hallo,
        ich habe mich erst seit ein par Tagen mit den Listen beschäftigt. Meine Idee ist es einige Datenpunkte als Text-Datei zu speichern und bei Notwendigkeit diese wieder zu laden und in die Datenpunkte zurückzuschreiben.
        Das Abspeichern hab ich hinbekommen aber beim Laden und zurückschreiben komm ich nicht weiter.
        So sieht das Abspeichern aus:
        cfb41489-f323-4866-9d17-ad428a3d68d6-grafik.png
        Datei_W-W-A sieht so aus:

        const fs = require('fs');
        switch(mode) {
            case 'r': return fs.readFileSync(Dateiname, 'utf8');
            case 'w': return fs.writeFileSync(Dateiname, Daten);
            case 'a': return fs.appendFileSync(Dateiname, Daten);
            default: return 'Parameter mode muss "r", "w" oder "a" sein';
        }
        

        Bis hierher ist alles ok. Sieht zumindest so aus.
        Nur das Laden und zurückschreiben in die Datenpunkte geht nicht. Hier erstmal den Test den ich versucht habe.
        fd2c854e-2fc3-4a23-aa97-df90daf51cb4-grafik.png

        Hat jemand dazu eine Idee. Wo ist hier mein Fehler?
        Danke

        liv-in-skyL Offline
        liv-in-skyL Offline
        liv-in-sky
        wrote on last edited by
        #3

        @manfred-outlaw warum schreibst du die liste nicht direkt in einen datenpunkt und pflegst sie dort? für was ist die datei gut bzw. wird die weiterverarbeitet?

        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

        M 1 Reply Last reply
        0
        • AsgothianA Asgothian

          @manfred-outlaw Screenshot 2022-03-10 at 09.00.02.png

          Mit diesem Baustein aktualisierst du den Datenpunkt i mit dem Wert vom Datenpunkt i, also mit genau dem was sich darin schon befindet.

          Zeig doch mal wie deine gespeicherte Datei aussieht, dann lässt sich vielleicht ein Vorschlag machen wie es gehen kann.

          A.

          M Offline
          M Offline
          Manfred-Outlaw
          wrote on last edited by
          #4

          @asgothian Danke für die Antwort.
          Hier ein Ausschnitt aus der Datei.
          Beispiel.txt

          Danke
          Manfred

          1 Reply Last reply
          0
          • liv-in-skyL liv-in-sky

            @manfred-outlaw warum schreibst du die liste nicht direkt in einen datenpunkt und pflegst sie dort? für was ist die datei gut bzw. wird die weiterverarbeitet?

            M Offline
            M Offline
            Manfred-Outlaw
            wrote on last edited by
            #5

            @liv-in-sky : Aktuel ist es nur mal ein Versuch die Datenpunkte zu exportieren, weiterzuverarbeiten und die Änderungen wieder zu Importieren. Aktuell speicher ich soweit möglich alles in den Datenpunkten ab. Aber es gab mal ein Fehler und Tage später hab ich festgestellt, dass da was nicht stimmt und hab eine Sicherung zurückgespielt. War ok aber auch da musste ich dann einiges nacharbeiten, da auch die Änderungen an div. anderen Punkten gefehlt hat. Daher einfach mal eine Idee entwickelt, wie ich diesem Problem entgegen wirken kann, sollte sowas wieder auftreten. Ok, nun kommt die Frage was ist da geschehen? Ja das wüsste ich auch gerne. Leider fehlt mir zu JS bzw. Blockly die Erfahrung. Daher mach ich sicherlich auch Fehler. Aber etwas zu lernen macht auch Spaß:blush:

            Danke
            Manfred

            liv-in-skyL AsgothianA 2 Replies Last reply
            0
            • M Manfred-Outlaw

              @liv-in-sky : Aktuel ist es nur mal ein Versuch die Datenpunkte zu exportieren, weiterzuverarbeiten und die Änderungen wieder zu Importieren. Aktuell speicher ich soweit möglich alles in den Datenpunkten ab. Aber es gab mal ein Fehler und Tage später hab ich festgestellt, dass da was nicht stimmt und hab eine Sicherung zurückgespielt. War ok aber auch da musste ich dann einiges nacharbeiten, da auch die Änderungen an div. anderen Punkten gefehlt hat. Daher einfach mal eine Idee entwickelt, wie ich diesem Problem entgegen wirken kann, sollte sowas wieder auftreten. Ok, nun kommt die Frage was ist da geschehen? Ja das wüsste ich auch gerne. Leider fehlt mir zu JS bzw. Blockly die Erfahrung. Daher mach ich sicherlich auch Fehler. Aber etwas zu lernen macht auch Spaß:blush:

              Danke
              Manfred

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              wrote on last edited by
              #6

              @manfred-outlaw

              ja - zum üben ist es gut - du musst dir einfach mehrere backitup instanzen einrichten - ich habe 4 davon - die 3 mal am tag meine scripte backupen und einmal ein iobroker backup

              deine dateien , die du ja im linux system speicherst, sind ja auch weg oder veraltetet, wenn du einen plattencrash hast und alles neu machen musst - du musst die dateien ja auch irgendwie backupen

              mit mehreren instanzen des backitups adapter sind die dp dann gesichert - oder hast du auch ein tägliches backup deiner nicht-iobroker-daten - also vom linux system

              daher habe ich nachgefragt !

              was nicht heißt, nicht doch ein wenig mit deinem script zu arbeiten, um zu üben

              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

              M 1 Reply Last reply
              0
              • M Manfred-Outlaw

                @liv-in-sky : Aktuel ist es nur mal ein Versuch die Datenpunkte zu exportieren, weiterzuverarbeiten und die Änderungen wieder zu Importieren. Aktuell speicher ich soweit möglich alles in den Datenpunkten ab. Aber es gab mal ein Fehler und Tage später hab ich festgestellt, dass da was nicht stimmt und hab eine Sicherung zurückgespielt. War ok aber auch da musste ich dann einiges nacharbeiten, da auch die Änderungen an div. anderen Punkten gefehlt hat. Daher einfach mal eine Idee entwickelt, wie ich diesem Problem entgegen wirken kann, sollte sowas wieder auftreten. Ok, nun kommt die Frage was ist da geschehen? Ja das wüsste ich auch gerne. Leider fehlt mir zu JS bzw. Blockly die Erfahrung. Daher mach ich sicherlich auch Fehler. Aber etwas zu lernen macht auch Spaß:blush:

                Danke
                Manfred

                AsgothianA Offline
                AsgothianA Offline
                Asgothian
                Developer
                wrote on last edited by Asgothian
                #7

                @manfred-outlaw Du machst 2 Fehler:

                1. Du trennst in der Datei sowohl den "key" (den Datenpunkt) als auch den "value" mit nur einem Trennzeichen.
                2. Du speicherst das ganze unformatiert weg.

                Ich würde Dir eine von 2 Optionen empfehlen:

                Option 1: Du änderst das Trennzeichen zwischen den "key" und "value" auf etwas anderes als das , (: bietet sich an). In diesem Fall müsstest Du in deiner Schleife (dem für jeden Wert i mache) noch den Block hinzufügen:
                setze KVP auf Erzeuge liste aus Text mit Trennzeichen ":"
                Dann kannst du im "schreibe" block als Objekt ID mit dem Block aus der Liste KVP nimm das erste Element und als Wert aus der Liste KVP nimm das letzte Element
                arbeiten. KVP ist dabei eine neu zu definierende Variable.
                Dazu musst du natürlich das Schreiben der Datei entsprechend anpassen.
                Dazu baust du hier Screenshot 2022-03-10 at 13.01.57.png statt des erzeuge Liste mit. Baustein einen erzeuge Text aus Baustein mit 3 Andockmöglichkeiten. An die erste kommt dann i, an die 2. ":", an die 3. Wert vom Objekt ID i

                Option 2: Du schreibst die Datei als JSON raus.

                Das ist insgesamt komplexer aber deutlich sicherer - allerdings kann ich das im Blockly heute nicht erklären. Das geht erst morgen. Wenn du diesen Weg gehst wirst Du unabhängig von den meisten Formatproblemen.

                In allen anderen Fällen wirst Du auf Dauer Probleme bekommen, insbesondere wenn du mal einen Datenpunkt hast in dem ein Text mit einen , drin vorkommt.

                ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                M 2 Replies Last reply
                0
                • AsgothianA Asgothian

                  @manfred-outlaw Du machst 2 Fehler:

                  1. Du trennst in der Datei sowohl den "key" (den Datenpunkt) als auch den "value" mit nur einem Trennzeichen.
                  2. Du speicherst das ganze unformatiert weg.

                  Ich würde Dir eine von 2 Optionen empfehlen:

                  Option 1: Du änderst das Trennzeichen zwischen den "key" und "value" auf etwas anderes als das , (: bietet sich an). In diesem Fall müsstest Du in deiner Schleife (dem für jeden Wert i mache) noch den Block hinzufügen:
                  setze KVP auf Erzeuge liste aus Text mit Trennzeichen ":"
                  Dann kannst du im "schreibe" block als Objekt ID mit dem Block aus der Liste KVP nimm das erste Element und als Wert aus der Liste KVP nimm das letzte Element
                  arbeiten. KVP ist dabei eine neu zu definierende Variable.
                  Dazu musst du natürlich das Schreiben der Datei entsprechend anpassen.
                  Dazu baust du hier Screenshot 2022-03-10 at 13.01.57.png statt des erzeuge Liste mit. Baustein einen erzeuge Text aus Baustein mit 3 Andockmöglichkeiten. An die erste kommt dann i, an die 2. ":", an die 3. Wert vom Objekt ID i

                  Option 2: Du schreibst die Datei als JSON raus.

                  Das ist insgesamt komplexer aber deutlich sicherer - allerdings kann ich das im Blockly heute nicht erklären. Das geht erst morgen. Wenn du diesen Weg gehst wirst Du unabhängig von den meisten Formatproblemen.

                  In allen anderen Fällen wirst Du auf Dauer Probleme bekommen, insbesondere wenn du mal einen Datenpunkt hast in dem ein Text mit einen , drin vorkommt.

                  M Offline
                  M Offline
                  Manfred-Outlaw
                  wrote on last edited by
                  #8

                  @asgothian : Danke für Antwort. Ja du hast recht, es gibt sogar Datenpunkte mit einem "," im Text. Das Thema hätte ich danach angegangen. Aber gut, wenn es gleich beachtet wird. Das Abspeichern hab ich nun umgesetzt. Nun muss ich noch das Einlesen und das zurückschreiben umsetzen. Das wird aber heute nichts mehr. Mach ich gleich morgen.
                  Beim Schreiben von i und Wert von i nutze ich nun den ":". Wenn ich aber die Daten in die Datei schreibe, nutze ich ja "Text aus Liste" und benötige da ja auch ein Trennzeichen. Das wäre dann "*". Oder hab ich da noch ein Denkfehler?
                  Dann die zweite Lösung von der du geschrieben hast. Alles in JSON zu schreiben. Ja JSON kenn ich vom Anschauen. Hab mir einige Formate schon angesehen. Aber mehr kann ich dazu nicht sagen. Wenn du dafür mal ein Beispiel hättest, würde ich mir das auch mal anschauen.
                  Danke
                  Manfred

                  1 Reply Last reply
                  0
                  • liv-in-skyL liv-in-sky

                    @manfred-outlaw

                    ja - zum üben ist es gut - du musst dir einfach mehrere backitup instanzen einrichten - ich habe 4 davon - die 3 mal am tag meine scripte backupen und einmal ein iobroker backup

                    deine dateien , die du ja im linux system speicherst, sind ja auch weg oder veraltetet, wenn du einen plattencrash hast und alles neu machen musst - du musst die dateien ja auch irgendwie backupen

                    mit mehreren instanzen des backitups adapter sind die dp dann gesichert - oder hast du auch ein tägliches backup deiner nicht-iobroker-daten - also vom linux system

                    daher habe ich nachgefragt !

                    was nicht heißt, nicht doch ein wenig mit deinem script zu arbeiten, um zu üben

                    M Offline
                    M Offline
                    Manfred-Outlaw
                    wrote on last edited by
                    #9

                    @liv-in-sky : Ich sichere die Daten einmal am Tag per backitup auf einem Netzwerkspeicher und ich erstelle auch noch ein Linux Backup, welches die komplette SanDisk (32GB) auch noch mal einmal die Woche sichert. Auch auf dem Netzwerkspeicher. Ja man kann sichern ohne Ende aber etwas übesieht man immer.
                    Danke für die Hilfe.
                    Manfred

                    1 Reply Last reply
                    0
                    • AsgothianA Asgothian

                      @manfred-outlaw Du machst 2 Fehler:

                      1. Du trennst in der Datei sowohl den "key" (den Datenpunkt) als auch den "value" mit nur einem Trennzeichen.
                      2. Du speicherst das ganze unformatiert weg.

                      Ich würde Dir eine von 2 Optionen empfehlen:

                      Option 1: Du änderst das Trennzeichen zwischen den "key" und "value" auf etwas anderes als das , (: bietet sich an). In diesem Fall müsstest Du in deiner Schleife (dem für jeden Wert i mache) noch den Block hinzufügen:
                      setze KVP auf Erzeuge liste aus Text mit Trennzeichen ":"
                      Dann kannst du im "schreibe" block als Objekt ID mit dem Block aus der Liste KVP nimm das erste Element und als Wert aus der Liste KVP nimm das letzte Element
                      arbeiten. KVP ist dabei eine neu zu definierende Variable.
                      Dazu musst du natürlich das Schreiben der Datei entsprechend anpassen.
                      Dazu baust du hier Screenshot 2022-03-10 at 13.01.57.png statt des erzeuge Liste mit. Baustein einen erzeuge Text aus Baustein mit 3 Andockmöglichkeiten. An die erste kommt dann i, an die 2. ":", an die 3. Wert vom Objekt ID i

                      Option 2: Du schreibst die Datei als JSON raus.

                      Das ist insgesamt komplexer aber deutlich sicherer - allerdings kann ich das im Blockly heute nicht erklären. Das geht erst morgen. Wenn du diesen Weg gehst wirst Du unabhängig von den meisten Formatproblemen.

                      In allen anderen Fällen wirst Du auf Dauer Probleme bekommen, insbesondere wenn du mal einen Datenpunkt hast in dem ein Text mit einen , drin vorkommt.

                      M Offline
                      M Offline
                      Manfred-Outlaw
                      wrote on last edited by
                      #10

                      @asgothian Ich habe soeben den Import hinbekommen. Nun funktioniert es erstmal. Danke. Als Trennzeichen zwischen den einzelnen Datenpunkte hab ich "Neue Zeile \n" genommen und damit geht es echt gut.
                      Beim zurückschreiben hab ich noch einen Schönheitsfehler. Ich müsste eigentlich zwischen "Logikwert", "Zeichenkette"; "Zahl" und soweiter unterscheiden. Das muss ich mir noch mal genauer anschauen. Aber es geht erstmal.
                      Manfred

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      635

                      Online

                      32.4k

                      Users

                      81.5k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Home
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe