<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Schreiben und Lesen von Dateien]]></title><description><![CDATA[<p dir="auto">Hallo zusammen,<br />
ich möchte einige Datenpunkte in regelmäßigen Abständen per Blockly in eine Datei schreiben, so, dass eine Logdatei entsteht. Dazu habe ich für die Appendfunktion die ich dafür benötige ein Beispiel aus dem Netz für mich angepasst. Das funktioniert auch und sieht folgendemaßen aus:<br />
<img src="/assets/uploads/files/1775055956810-ef8223e8-3c18-4cc2-8a71-350ebd7605a0-image.jpeg" alt="ef8223e8-3c18-4cc2-8a71-350ebd7605a0-image.jpeg" class=" img-fluid img-markdown" /><br />
Wenn ich nun aus der Datei Zaehler_log.csv von den villeicht 100 vorhandenen Zeilen die ersten 50 Zeilen lösche (mit einem Texteditor), dann sind diese gelöschten 50 Zeilen nach dem nächsten Schreibvorgang von Blockly wieder da und die Datei ist wieder 100 Zeilen lang. Ich möchte aber gerne von Zeit zu Zeit händisch Einträge aus der Datei entfrenen. Was läuft da falsch?</p>
]]></description><link>https://forum.iobroker.net/topic/84197/schreiben-und-lesen-von-dateien</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Apr 2026 18:45:02 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/84197.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Apr 2026 15:13:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Thu, 02 Apr 2026 14:55:33 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/a250-fan" aria-label="Profile: A250-Fan">@<bdi>A250-Fan</bdi></a></p>
<p dir="auto">Falls du es deiner KI nicht beibringen kannst <img src="https://forum.iobroker.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f606.png?v=0d7cc26988e" class="not-responsive emoji emoji-android emoji--laughing" style="height:23px;width:auto;vertical-align:middle" title=":laughing:" alt="😆" /> , hier die Version mit den Headerzeilen. Kannst dann einstellen wieviel Zeilen immer stehen bleiben sollen:</p>
<pre><code>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);

    case 'aL':
        let maxLines = 100;      // Anzahl Datenzeilen (ohne Header)
        let headerLines = 2;     // Anzahl geschützter Zeilen oben
        let content = '';

        if (fs.existsSync(Dateiname)) {
            content = fs.readFileSync(Dateiname, 'utf8');
        }

        let lines = content === '' ? [] : content.split(/\r?\n/);

        // technischen letzten Leer-Eintrag entfernen
        if (lines.length &gt; 0 &amp;&amp; lines[lines.length - 1] === '') {
            lines.pop();
        }

        // Header und Daten trennen
        let header = lines.slice(0, headerLines);
        let data   = lines.slice(headerLines);

        // führende \n aus neuen Daten entfernen
        let neuerEintrag = String(Daten).replace(/^\r?\n+/, '');

        // neuen Eintrag anhängen (nur Datenbereich!)
        data.push(neuerEintrag);

        // Datenbereich begrenzen
        if (data.length &gt; maxLines) {
            data = data.slice(-maxLines);
        }

        // wieder zusammensetzen
        let result = header.concat(data);

        fs.writeFileSync(Dateiname, result.join('\n') + '\n');

        return `OK (Header: ${header.length}, Daten: ${data.length}/${maxLines})`;

    default:
        return 'Parameter mode muss "r", "w", "a" oder "aL" sein';
}
</code></pre>
<p dir="auto">Schöne Ostertage.</p>
<p dir="auto">Gruß, Johannes</p>
]]></description><link>https://forum.iobroker.net/post/1332824</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332824</guid><dc:creator><![CDATA[JoJo58]]></dc:creator><pubDate>Thu, 02 Apr 2026 14:55:33 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Thu, 02 Apr 2026 09:48:35 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/jojo58" aria-label="Profile: jojo58">@<bdi>jojo58</bdi></a><br />
Interessante Idee. Die KI zu befragen ist mir bisher noch nicht in den Sinn gekommen, obwohl ich schon mal davon gehört habe, daß KI auch Quellcode generieren kann. In meiner Datei ist allerdings in den ersten beiden Zeilen eine Beschreibung die ich natürlich nicht löschen möchte. Ich werde  mal versuchen, ob ich der KI meine Wünsche verständlich machen kann.<br />
Nochmals herzlichen Dank, schöne Feiertage und Grüße aus Ratingen</p>
]]></description><link>https://forum.iobroker.net/post/1332751</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332751</guid><dc:creator><![CDATA[A250-Fan]]></dc:creator><pubDate>Thu, 02 Apr 2026 09:48:35 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Thu, 02 Apr 2026 09:09:42 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/a250-fan" aria-label="Profile: A250-Fan">@<bdi>A250-Fan</bdi></a></p>
<p dir="auto">Das kann sein, bei der Version ins Dateisystem schreiben, muss der Ordner und die Datei schon vorhanden sein und die Gruppe iobroker muss darauf Schreibrechte haben.</p>
<p dir="auto">Wenn du es noch einfacher haben willst und anstatt manuell Zeilen zu löschen, kannst du den folgenden Code in der Funktion nutzen. Darin die let maxLines = 100 an deine Bedürfnisse anpassen und dann wird die Liste immer nur so lang, wie du gesetzt hast. Die ältesten Zeilen werden dann gelöscht.<br />
Den folgenden Code in der Funktion setzen und bei "mode" nicht a sondern "aL" (append Limit) eintragen.</p>
<pre><code>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);

   case 'aL':
       let maxLines = 100;
       let content = '';

       if (fs.existsSync(Dateiname)) {
           content = fs.readFileSync(Dateiname, 'utf8');
       }

       let lines = content === '' ? [] : content.split(/\r?\n/);

       // Technischen leeren letzten Eintrag entfernen,
       // wenn die Datei mit Zeilenumbruch endet
       if (lines.length &gt; 0 &amp;&amp; lines[lines.length - 1] === '') {
           lines.pop();
       }

       // Führende Zeilenumbrüche aus neuen Daten entfernen,
       // damit keine Leerzeilen zwischen den Einträgen entstehen
       let neuerEintrag = String(Daten).replace(/^\r?\n+/, '');

       // Neuen Eintrag unten anhängen
       lines.push(neuerEintrag);

       // Maximal 100 Zeilen behalten
       if (lines.length &gt; maxLines) {
           lines = lines.slice(-maxLines);
       }

       fs.writeFileSync(Dateiname, lines.join('\n') + '\n');
       return `OK (${lines.length}/${maxLines})`;

   default:
       return 'Parameter mode muss "r", "w", "a" oder "aL" sein';
}
</code></pre>
<p dir="auto">Die Änderungen habe ich mit Hilfe von KI  gemacht.</p>
<p dir="auto">Gruß, Johannes</p>
]]></description><link>https://forum.iobroker.net/post/1332748</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332748</guid><dc:creator><![CDATA[JoJo58]]></dc:creator><pubDate>Thu, 02 Apr 2026 09:09:42 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Thu, 02 Apr 2026 08:35:19 GMT]]></title><description><![CDATA[<p dir="auto">Da mein Problem nun gelöst ist, bedanke ich mir bei allen Beitragenden recht herzlich.</p>
]]></description><link>https://forum.iobroker.net/post/1332744</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332744</guid><dc:creator><![CDATA[A250-Fan]]></dc:creator><pubDate>Thu, 02 Apr 2026 08:35:19 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Thu, 02 Apr 2026 08:38:42 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/jojo58" aria-label="Profile: jojo58">@<bdi>jojo58</bdi></a><br />
Hallo jojo58, auch deinen Vorschlag habe ich getestet. Das funktioniert auch wie ich mir das vorgestellt habe. Das ursprünglich ausgessuchte Verzeichnis für die Datei mochte dein Skript allerdings nicht (da gibt es wohl nicht die passenden Rechte). Das macht aber nichts, letztendlich ist es mir nicht wichtig in welchem Verzeichnis die Datei liegt. Mein Problem ist damit gelöst. Herzlichen Dank!</p>
]]></description><link>https://forum.iobroker.net/post/1332742</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332742</guid><dc:creator><![CDATA[A250-Fan]]></dc:creator><pubDate>Thu, 02 Apr 2026 08:38:42 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Thu, 02 Apr 2026 08:30:14 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/homoran" aria-label="Profile: homoran">@<bdi>homoran</bdi></a><br />
Habe heute weiter getestet.<br />
Test 1: Skript angehalten, Datei geändert, Skript wieder gestartet. Ergebnis: Die gelöschten Zeilen erscheinen nach dem nächsten Schreibzugriff von Blockly wieder.<br />
Test 2: Skript angehalten, Datei in anderes Verzeichnis verschoben, geändert und wieder im ursprünglichen Verzeichnis gespeichert. Ergebnis: Die gelöschten Zeilen erscheinen nach dem nächsten Schreibzugriff von Blockly wieder.</p>
]]></description><link>https://forum.iobroker.net/post/1332738</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332738</guid><dc:creator><![CDATA[A250-Fan]]></dc:creator><pubDate>Thu, 02 Apr 2026 08:30:14 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Thu, 02 Apr 2026 04:32:31 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/a250-fan" aria-label="Profile: A250-Fan">@<bdi>A250-Fan</bdi></a></p>
<p dir="auto">Wenn du die Datei doch eh auf ein Netzlaufwerk haben willst, dann kannst du sie auch direkt dorthin schreiben. So mache ich das z.B. mit diversen Listen. Da wird der neue Text immer nur als Zeile darunter gesetzt.</p>
<p dir="auto">Ich habe das folgende Blockly damals hier im Forum gefunden, weiß nur nicht mehr wo.</p>
<p dir="auto"><img src="/assets/uploads/files/1775104138782-c28d86e6-c536-4dbd-b193-bfa202672300-image.jpeg" alt="c28d86e6-c536-4dbd-b193-bfa202672300-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">Die JS-Funktion enthält:</p>
<pre><code>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';
}
</code></pre>
<p dir="auto">Oder hier das Blockly als Export:</p>
<pre><code>&lt;xml xmlns="https://developers.google.com/blockly/xml"&gt;
  &lt;variables&gt;
    &lt;variable id="[-H^4u[bLNKmNjJW5uP2"&gt;Dateiname&lt;/variable&gt;
    &lt;variable id="B@!nDrO;Ag4]/Ns]5`VT"&gt;Daten&lt;/variable&gt;
    &lt;variable id="Nw,T]ZGil{Kmm.Tfd=8`"&gt;mode&lt;/variable&gt;
    &lt;variable id="@`{2Tshq:9^uF$%i]pMW"&gt;Ergebnis&lt;/variable&gt;
  &lt;/variables&gt;
  &lt;block type="schedule" id=",/z9[bkm:Mx.Xz)_WV}C" x="63" y="-12"&gt;
    &lt;field name="SCHEDULE"&gt;0 12 * * *&lt;/field&gt;
    &lt;statement name="STATEMENT"&gt;
      &lt;block type="variables_set" id="toixTd-7I(w?Pn.u`a?n"&gt;
        &lt;field name="VAR" id="[-H^4u[bLNKmNjJW5uP2"&gt;Dateiname&lt;/field&gt;
        &lt;value name="VALUE"&gt;
          &lt;block type="text" id="?(6$X5B~AZEV{a([vl[@"&gt;
            &lt;field name="TEXT"&gt;/opt/iobroker/Test.txt&lt;/field&gt;
          &lt;/block&gt;
        &lt;/value&gt;
        &lt;next&gt;
          &lt;block type="comment" id="E=!qQw-l-tNwXd3eE2{K"&gt;
            &lt;field name="COMMENT"&gt;schreibe Daten&lt;/field&gt;
            &lt;next&gt;
              &lt;block type="variables_set" id="OOlava!O!gwl*p7jMH{$"&gt;
                &lt;field name="VAR" id="@`{2Tshq:9^uF$%i]pMW"&gt;Ergebnis&lt;/field&gt;
                &lt;value name="VALUE"&gt;
                  &lt;block type="procedures_callcustomreturn" id="#C-F-T.#.ZD80^Pn[:f}" inline="false"&gt;
                    &lt;mutation name="Datei"&gt;
                      &lt;arg name="Dateiname"&gt;&lt;/arg&gt;
                      &lt;arg name="Daten"&gt;&lt;/arg&gt;
                      &lt;arg name="mode"&gt;&lt;/arg&gt;
                    &lt;/mutation&gt;
                    &lt;value name="ARG0"&gt;
                      &lt;block type="variables_get" id="#%2(}]P4^Jg4JwKdoO0^"&gt;
                        &lt;field name="VAR" id="[-H^4u[bLNKmNjJW5uP2"&gt;Dateiname&lt;/field&gt;
                      &lt;/block&gt;
                    &lt;/value&gt;
                    &lt;value name="ARG1"&gt;
                      &lt;block type="text_join" id="$s-gtsey+o{l3}RQF^uK"&gt;
                        &lt;mutation items="6"&gt;&lt;/mutation&gt;
                        &lt;value name="ADD0"&gt;
                          &lt;block type="text_newline" id="cDYlllvQ1RZl;+$EdmU1"&gt;
                            &lt;field name="Type"&gt;\n&lt;/field&gt;
                          &lt;/block&gt;
                        &lt;/value&gt;
                        &lt;value name="ADD1"&gt;
                          &lt;block type="time_get" id="|^_IZ6r;?Uk`wi{`![?8"&gt;
                            &lt;mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"&gt;&lt;/mutation&gt;
                            &lt;field name="OPTION"&gt;YYYY.MM.DD&lt;/field&gt;
                          &lt;/block&gt;
                        &lt;/value&gt;
                        &lt;value name="ADD2"&gt;
                          &lt;block type="text" id="/yr|qtO+29$HOSt`J$5t"&gt;
                            &lt;field name="TEXT"&gt;;&lt;/field&gt;
                          &lt;/block&gt;
                        &lt;/value&gt;
                        &lt;value name="ADD3"&gt;
                          &lt;block type="time_get" id="leJ5uWCm;,j-I2A]Bi`V"&gt;
                            &lt;mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"&gt;&lt;/mutation&gt;
                            &lt;field name="OPTION"&gt;hh:mm:ss&lt;/field&gt;
                          &lt;/block&gt;
                        &lt;/value&gt;
                        &lt;value name="ADD4"&gt;
                          &lt;block type="text" id="=J#lQk)K7uCMaJghmU^;"&gt;
                            &lt;field name="TEXT"&gt;;&lt;/field&gt;
                          &lt;/block&gt;
                        &lt;/value&gt;
                        &lt;value name="ADD5"&gt;
                          &lt;block type="get_value" id="f!OZs64Riw}U2PQFJ^Q8"&gt;
                            &lt;field name="ATTR"&gt;val&lt;/field&gt;
                            &lt;field name="OID"&gt;ID auswählen&lt;/field&gt;
                          &lt;/block&gt;
                        &lt;/value&gt;
                      &lt;/block&gt;
                    &lt;/value&gt;
                    &lt;value name="ARG2"&gt;
                      &lt;block type="text" id="3up}TP81c9Wp-96*F,5@"&gt;
                        &lt;field name="TEXT"&gt;a&lt;/field&gt;
                      &lt;/block&gt;
                    &lt;/value&gt;
                  &lt;/block&gt;
                &lt;/value&gt;
              &lt;/block&gt;
            &lt;/next&gt;
          &lt;/block&gt;
        &lt;/next&gt;
      &lt;/block&gt;
    &lt;/statement&gt;
  &lt;/block&gt;
  &lt;block type="procedures_defcustomreturn" id="y8r,:{{HHSZ8(K/J*Z%." x="588" y="13"&gt;
    &lt;mutation statements="false"&gt;
      &lt;arg name="Dateiname" varid="[-H^4u[bLNKmNjJW5uP2"&gt;&lt;/arg&gt;
      &lt;arg name="Daten" varid="B@!nDrO;Ag4]/Ns]5`VT"&gt;&lt;/arg&gt;
      &lt;arg name="mode" varid="Nw,T]ZGil{Kmm.Tfd=8`"&gt;&lt;/arg&gt;
    &lt;/mutation&gt;
    &lt;field name="NAME"&gt;Datei&lt;/field&gt;
    &lt;field name="SCRIPT"&gt;Y29uc3QgZnMgPSByZXF1aXJlKCdmcycpOw0Kc3dpdGNoKG1vZGUpIHsNCiAgICBjYXNlICdyJzogcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhEYXRlaW5hbWUsICd1dGY4Jyk7DQogICAgY2FzZSAndyc6IHJldHVybiBmcy53cml0ZUZpbGVTeW5jKERhdGVpbmFtZSwgRGF0ZW4pOw0KICAgIGNhc2UgJ2EnOiByZXR1cm4gZnMuYXBwZW5kRmlsZVN5bmMoRGF0ZWluYW1lLCBEYXRlbik7DQogICAgZGVmYXVsdDogcmV0dXJuICdQYXJhbWV0ZXIgbW9kZSBtdXNzICJyIiwgInciIG9kZXIgImEiIHNlaW4nOw0KfQ==&lt;/field&gt;
    &lt;comment pinned="false" h="80" w="160"&gt;Beschreibe diese Funktion …&lt;/comment&gt;
  &lt;/block&gt;
&lt;/xml&gt;
</code></pre>
<p dir="auto">Gruß, Johannes</p>
]]></description><link>https://forum.iobroker.net/post/1332716</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332716</guid><dc:creator><![CDATA[JoJo58]]></dc:creator><pubDate>Thu, 02 Apr 2026 04:32:31 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 19:15:11 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/a250-fan" aria-label="Profile: A250-Fan">@<bdi>A250-Fan</bdi></a></p>
<p dir="auto">Vielleicht solltest du zunächst mal genauer definieren, was du als Ziel hast.<br />
Du willst nur die letzten x Messwerte haben?<br />
Oder willst du händisch Einträge löschen? Nach welchen Kriterien?</p>
]]></description><link>https://forum.iobroker.net/post/1332702</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332702</guid><dc:creator><![CDATA[Thomas Braun]]></dc:creator><pubDate>Wed, 01 Apr 2026 19:15:11 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 19:03:54 GMT]]></title><description><![CDATA[<p dir="auto">Das Löschen von Zeilen dient der Verkleinerung der Datei .</p>
]]></description><link>https://forum.iobroker.net/post/1332699</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332699</guid><dc:creator><![CDATA[A250-Fan]]></dc:creator><pubDate>Wed, 01 Apr 2026 19:03:54 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 18:37:07 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/a250-fan" aria-label="Profile: A250-Fan">@<bdi>A250-Fan</bdi></a></p>
<p dir="auto">Ich würde das ja versuchen anders aufzuziehen.<br />
Schreib doch von vorneherein nur plausible Werte in die Datei. Dann musste dich auch nicht so umständlich wieder herausklamüsern.</p>
]]></description><link>https://forum.iobroker.net/post/1332696</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332696</guid><dc:creator><![CDATA[Thomas Braun]]></dc:creator><pubDate>Wed, 01 Apr 2026 18:37:07 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 18:04:50 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/a250-fan" aria-label="Profile: A250-Fan">@<bdi>A250-Fan</bdi></a> ja</p>
]]></description><link>https://forum.iobroker.net/post/1332691</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332691</guid><dc:creator><![CDATA[Homoran]]></dc:creator><pubDate>Wed, 01 Apr 2026 18:04:50 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 17:54:03 GMT]]></title><description><![CDATA[<p dir="auto">Also so wie MartinP geschrieben hat: weg kopieren, ändern, zurück kopieren?</p>
]]></description><link>https://forum.iobroker.net/post/1332685</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332685</guid><dc:creator><![CDATA[A250-Fan]]></dc:creator><pubDate>Wed, 01 Apr 2026 17:54:03 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 17:49:58 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/a250-fan" aria-label="Profile: A250-Fan">@<bdi>A250-Fan</bdi></a> <a href="/post/1332681">sagte</a>:</p>
<p dir="auto">Skript wurde nicht angehalten</p>
</blockquote>
<p dir="auto">Dann <strong>kannst</strong> du in die Asynchronfalle geraten, dass das Skript die Änderung überschreibt, aber...</p>
<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/a250-fan" aria-label="Profile: A250-Fan">@<bdi>A250-Fan</bdi></a> <a href="/post/1332681">sagte</a>:</p>
<p dir="auto">Bearbeitung der Datei direkt auf dem Raspi.</p>
</blockquote>
<p dir="auto">Das "geht nicht".<br />
Das wird nicht als geänderte Datei markiert.<br />
Dazu muss sie neu mittels writeFile geschrieben, oder manuell über die GUI hochgeladen werden.</p>
]]></description><link>https://forum.iobroker.net/post/1332682</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332682</guid><dc:creator><![CDATA[Homoran]]></dc:creator><pubDate>Wed, 01 Apr 2026 17:49:58 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 17:44:25 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/homoran" aria-label="Profile: homoran">@<bdi>homoran</bdi></a><br />
Skript wurde nicht angehalten. Bearbeitung der Datei direkt auf dem Raspi.</p>
]]></description><link>https://forum.iobroker.net/post/1332681</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332681</guid><dc:creator><![CDATA[A250-Fan]]></dc:creator><pubDate>Wed, 01 Apr 2026 17:44:25 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 16:55:20 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/a250-fan" aria-label="Profile: A250-Fan">@<bdi>A250-Fan</bdi></a> <a href="/post/1332670">sagte</a>:</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/homoran" aria-label="Profile: homoran">@<bdi>homoran</bdi></a><br />
Für das Markieren und Löschen der Zeilen sowie das anschließende Speichern benötige ich ca 15 Sekunden.</p>
</blockquote>
<p dir="auto">Hast du</p>
<ul>
<li>in der Zeit das Skript angehalten?</li>
<li>die Datei
<ul>
<li>heruntergeladen</li>
<li>bearbeitet</li>
<li>zurückgeschrieben?</li>
</ul>
</li>
</ul>
]]></description><link>https://forum.iobroker.net/post/1332674</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332674</guid><dc:creator><![CDATA[Homoran]]></dc:creator><pubDate>Wed, 01 Apr 2026 16:55:20 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 16:33:37 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/martinp" aria-label="Profile: martinp">@<bdi>martinp</bdi></a><br />
Werde ich morgen mal ausprobieren habe gleich leider noch Termine.</p>
]]></description><link>https://forum.iobroker.net/post/1332672</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332672</guid><dc:creator><![CDATA[A250-Fan]]></dc:creator><pubDate>Wed, 01 Apr 2026 16:33:37 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 16:22:00 GMT]]></title><description><![CDATA[<p dir="auto">Die Dateioperationen aus Blockly nutzen soweit ich weiß NICHT die Betriebssystem-Funktionen.<br />
Dateien innerhalb des iobroker-ökosystems sollte man nicht "von außen" z. B. mit einem Text-Editor schreibend anpacken.</p>
<p dir="auto">Dafür gibt es z. B. die iobroker - kommandozeilen-Kommandos.</p>
<p dir="auto"><a href="https://github.com/ioBroker/ioBroker.docs/blob/master/docs/de/config/cli.md" rel="nofollow ugc">https://github.com/ioBroker/ioBroker.docs/blob/master/docs/de/config/cli.md</a></p>
<p dir="auto">Ein Kochrezept wäre</p>
<ol>
<li>Kopie des Files anlegen</li>
</ol>
<pre><code>iobroker file read /vis.0/main/imgZaehler_log.csv /tmp/Zaehler_log.csv
</code></pre>
<ol start="2">
<li>
<p dir="auto">Editieren der Kopie des Files in /tmp/Zaehler_log.csv</p>
</li>
<li>
<p dir="auto">Geänderte Kopie des Files zurückschreiben</p>
</li>
</ol>
<pre><code>iobroker file write /tmp/Zaehler_log.csv /vis.0/main/imgZaehler_log.csv
</code></pre>
]]></description><link>https://forum.iobroker.net/post/1332671</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332671</guid><dc:creator><![CDATA[MartinP]]></dc:creator><pubDate>Wed, 01 Apr 2026 16:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 16:21:25 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/homoran" aria-label="Profile: homoran">@<bdi>homoran</bdi></a><br />
Für das Markieren und Löschen der Zeilen sowie das anschließende Speichern benötige ich ca 15 Sekunden.</p>
]]></description><link>https://forum.iobroker.net/post/1332670</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332670</guid><dc:creator><![CDATA[A250-Fan]]></dc:creator><pubDate>Wed, 01 Apr 2026 16:21:25 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 16:15:44 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/a250-fan" aria-label="Profile: A250-Fan">@<bdi>A250-Fan</bdi></a> <a href="/post/1332661">sagte</a>:</p>
<p dir="auto">Worauf bezieht sich "das"?</p>
</blockquote>
<p dir="auto">Auf die Tätigkeitsbeschreibung in dem Zitat</p>
]]></description><link>https://forum.iobroker.net/post/1332669</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332669</guid><dc:creator><![CDATA[Homoran]]></dc:creator><pubDate>Wed, 01 Apr 2026 16:15:44 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 16:08:52 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/martinp" aria-label="Profile: martinp">@<bdi>martinp</bdi></a><br />
Das Skript soll eigendlich nur einmal am Tag laufen (nachts). Das Bild des Blocklys ist aus eienm Testskript.</p>
]]></description><link>https://forum.iobroker.net/post/1332666</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332666</guid><dc:creator><![CDATA[A250-Fan]]></dc:creator><pubDate>Wed, 01 Apr 2026 16:08:52 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 16:05:55 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/oliverio" aria-label="Profile: oliverio">@<bdi>oliverio</bdi></a><br />
Ich möchte die Daten später von einem Netzlauferk abrufen.</p>
]]></description><link>https://forum.iobroker.net/post/1332663</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332663</guid><dc:creator><![CDATA[A250-Fan]]></dc:creator><pubDate>Wed, 01 Apr 2026 16:05:55 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 16:02:27 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/homoran" aria-label="Profile: Homoran">@<bdi>Homoran</bdi></a> <a href="/post/1332654">sagte</a>:</p>
<p dir="auto">Wie lange dauert das?</p>
</blockquote>
<p dir="auto">Worauf bezieht sich "das"?</p>
]]></description><link>https://forum.iobroker.net/post/1332661</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332661</guid><dc:creator><![CDATA[A250-Fan]]></dc:creator><pubDate>Wed, 01 Apr 2026 16:02:27 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 16:01:35 GMT]]></title><description><![CDATA[<p dir="auto">So macht man das nicht gerne ...</p>
<p dir="auto">Der Zeitplan sorgt minütlich für "Bewegung" in der Datei. Da ist die "Kollisionsgefahr" mit Deinen Editierversuchen groß ...</p>
<p dir="auto">50 Zeilen löschen wäre das Logging von 50 Minuten.</p>
<p dir="auto">Würde den Dateinamen mit Datum/Uhrzeit kombinieren, z. B. "Zaehler_log_2026_04_01_18_00.csv"</p>
<p dir="auto">Stündlich oder täglich eine neue Log-Datei anfangen.<br />
Automatisches oder händisches Housekeeping über den Dateinamen, oder das Dateialter.</p>
]]></description><link>https://forum.iobroker.net/post/1332660</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332660</guid><dc:creator><![CDATA[MartinP]]></dc:creator><pubDate>Wed, 01 Apr 2026 16:01:35 GMT</pubDate></item><item><title><![CDATA[Reply to Schreiben und Lesen von Dateien on Wed, 01 Apr 2026 15:49:15 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/a250-fan" aria-label="Profile: A250-Fan">@<bdi>A250-Fan</bdi></a></p>
<p dir="auto">warum nutzt du nicht den history adapter?<br />
dort kann man die daten auch als csv exportieren (über oberfläche),<br />
aber auch mit javascript. mit blockly weiß ich jetzt nicht so genau, aber<br />
den sendtobefehl gibt es ja dort auch</p>
<p dir="auto"><a href="https://github.com/ioBroker/ioBroker.history/blob/master/docs/de/README.md#zugriff-auf-history-werte-mit-javascript" rel="nofollow ugc">https://github.com/ioBroker/ioBroker.history/blob/master/docs/de/README.md#zugriff-auf-history-werte-mit-javascript</a></p>
<p dir="auto">wenn do die datenpunkt history nutzt kannst du die auch noch flexibler auswerten und visualisieren (bspw mit echarts)</p>
]]></description><link>https://forum.iobroker.net/post/1332655</link><guid isPermaLink="true">https://forum.iobroker.net/post/1332655</guid><dc:creator><![CDATA[OliverIO]]></dc:creator><pubDate>Wed, 01 Apr 2026 15:49:15 GMT</pubDate></item></channel></rss>