NEWS
CSV Datei über VIS downloaden
- 
					
					
					
					
 Hallo liebe Community, ich möchte per Javascript aus einer Benutzer-Auswahl von Messdaten aus meiner InfluxDB eine CSV Datei erstellen, die sich der User über die VIS-2 downloaden kann. Leider kann ich in den Pfad /opt/iobroker/iobroker-data/files/0_userdata.0 nicht schreiben. Ich bekomme immer: javascript.0 09:06:18.671 error script.js.common.Export.Auswerten: Error: Permission denied javascript.0 09:06:18.671 error at create_csv (script.js.common.Export.Auswerten:58:8)Gibt es einen alternativen Pfad, der auch vom Web-Server erreichbar ist? 
- 
					
					
					
					
 Ich antworte mal selbst: Ich lasse die CSV per Javascript im Verzeichnis /home/iobroker/export erstellen. In dem Verzeichnis lasse ich einen Python HTTP Server laufen python3 -m http.server 8083Das ganze kann man noch mit systemd als Service erstellen, damit der HTTP-Server auch beim Neustart läuft. Dazu ein .sh Script z.B. im Admin Verzeichnis erstellen: nano /home/admin/start_http_server.sh#!/bin/bash cd /home/iobroker/export python3 -m http.server 8083Skript ausführbar machen: chmod +x /home/admin/start_http_server.shService Datei erstellen: sudo nano /etc/systemd/system/httpserver.service[Unit] Description=Python HTTP Server After=network.target [Service] ExecStart=/home/admin/start_http_server.sh WorkingDirectory=/home/iobroker/export StandardOutput=inherit StandardError=inherit Restart=always User=admin [Install] WantedBy=multi-user.targetSystemd neu laden: sudo systemctl daemon-reloadStatus prüfen: sudo systemctl status httpserver.service
- 
					
					
					
					
 Das ist doch nicht nötig. Wenn Du ein Javascript Anhänger bist, dann bist doch sicher auch Blockly Fan und damit kannst Du doch einfach unter 0-userdata.0 die Datei schreiben und auch wieder einlesen:  Hier der Import:   Wenn ich mir den JS Code anschaue, dann schaut der auch ganz simple aus: writeFile('0_userdata.0' /* Stammordner für Benutzerobjekte und Dateien */, String('demo.json'), 'Spalte1;Spalte2;Spalte3', (err) => { if (err) { console.error(err); } }); readFile('0_userdata.0' /* Stammordner für Benutzerobjekte und Dateien */, String('demo.json'), (err, data, mimeType) => { if (err) { console.error(err); } console.info(data); });Das ist auf jeden Fall wesentlich resourcenschonender als einen zustätzlichen Webserver zu basteln. Im Übrigen kann man sich über die Schaltfläche den Ordner gleich raus suchen: 
  Siehe auch hier: https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#writefile Anscheinend kann man auch über den internen Webserver 8082 auf die Datei zugreifen und das funktioniert problemlos:  
- 
					
					
					
					
 Wahrscheinlich war Dein Fehler nur den vollständigen Pfad - anstatt nur den relativen Pfad ab files zu nutzen. 
- 
					
					
					
					
 Ah super danke für die Info. In der Doku steht: The file that looks like '/subfolder/file.txt' will be stored under "/javascript/subfolder/file.txt" and can be accessed over web server with "http://ip:8082/javascript/subfolder/file.txt" const fs = require('node:fs'); writeFile(null, '/subfolder/file.txt', data, (error) => { log('file written'); });
- 
					
					
					
					
 Man muss halt das Node FS Modul nehmen  
 
		
	 
		
	