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. [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.3k

  • 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

Geplant Angeheftet Gesperrt Verschoben JavaScript
10 Beiträge 3 Kommentatoren 584 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.
  • M Offline
    M Offline
    Manfred-Outlaw
    schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #4

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

          Danke
          Manfred

          1 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #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 Antworten Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von
                      #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 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

                      800

                      Online

                      32.4k

                      Benutzer

                      81.6k

                      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