NEWS
[gelöst]Datei erzeugen writeFile
-
Hallo zusammen,
ich bin dabei meine CCU Programme zu portieren was mir schon zu einem drittel gelungen ist.
Nun habe ich ein Programm, dass meinen Pelletverbrauch logged. Die Logik ist folgendermassen
Trigger1: Motor ist eingestellt
Logik: merke Startzeit
Trigger2: Motor ist ausgestellt
Logik:
- merke Endzeit
Berechne Differenz in Sekudnen
Multipliziere mit Faktor (KG per minute/60)
Addiere zu vorhandenem Datenpunkt (Verbrauch in KG) den berechneten Verbrauch
Schreibe in Textdatei die Zeile mit:
-
startzeit
-
Endzeit
-
Zeit in Sekunden
-
Verbrauch in KG
Jetzt habe ich als erstes versucht den Befehl für das Schreiben der Datei zu finden.
Den gibt es übrigens in Javascript nicht (Sicherheit) aber für ioBroker ist WriteFile dokumentiert.
Wenn ich mal versuche diesen Befehl abzusetzen, dann gibt es einen Fehler im Log
javascript-0 2015-11-14 11:47:50 error at script.js.TestScriptWrite(1):2:6
javascript-0 2015-11-14 11:47:50 error script.js.TestScriptWrite(1): ReferenceError: WriteFile is not defined
das kam nur aufgrund eines simplen Versuches raus: WriteFile("output.txt", "Testtext",0644);
ist der WriteFile Befehl überhaupt verfügbar ?
Gibt es noch Alternativen ?
vG Looxer
-
Es sit wichtig ob du "WriteFile" oder "writeFile" schreibst.
Es gibt zwei Funktionen "writeFile" um die Dateien in ioBroker DB zu schreiben und fs.writeFile um die Dateien auf der Festplatte zu schreiben.
Du versuchst vermutlich auf der Festplatte zu zugreifen. Ricjtig ist aber so:
` > var fs = require('fs');fs.writeFileSync("output.txt", "Testtext",0644); `
Um auf ioBroker FileSystem zu zugreifen:
> writeFile("output.txt", "Testtext");
-
1000 Dank BF. Ich habe es jetzt hinbekommen.
Da ich dem zu schreibenden File immer Zeilen hinzufügen möchte sieht die Lösung leicht abgewandelt so aus:
var fs = require('fs'); fs.appendFileSync("/opt/logoutput.txt", "Testtext1;" + "\n");
Das + "\n" fügt einen Zeilenumbruch hinzu.
mit writeFile habe ich keinen append hinbekommen
vG Looxer