NEWS
Blockly und FTP
-
Hallo
Ich habe mal da mal eine Frage zu Blockly.
Zur Vorgeschichte:
Ich wollte Datenpunkte in Datein Speichern um die Später verarbeiten zu können.
Als Speicherort habe ich Textfile gewählt.
Diese können leicht verarbeitet werden.Da meine Kenntnisse in Java gleich 0 sind, habe ich nach einer Lösung gesucht.
Gelöst habe ich es mit einem ESP32 der Daten vom ioBroker-MQTT abholt
und diese auf einem FTP-Server in Textfiles anfügt oder Neu Textfiles erzeugt.
Das war nicht weiter schwierig da C für mich kein Hexenwerk ist.
Darum diese umständliche Lösung.
Das läuft momentan ohne Problem.Jetzt zur Frage, wie kann man so etwas mit Blockly lösen oder muss ich auch noch Java lernen?
Ja ich weis eine Datenbank gibt es auch aber auch hier sind die Kenntnisse eher Rudimentär.
Hat einer so etwas schon mal gemacht?Folgendes benötige ich :
Anmelden am FTP-Server
Verzeichnis wechseln
Feststellen ob ein File vorhanden ist
Neues File erzeugen
Schreibe Textzeile
Füge eine Textzeile anGrüße aus dem Sauerland
Frank -
ich hatte mal ein paar tests gemacht, ob da was passiert - zugriff auf meine fritzbox - hier das ergebnis
https://www.npmjs.com/package/basic-ftpdu musst im der javascript instanz setting das "basic-ftp" und "fs" als node hinzufügen
vielleicht kannst du da was daraus brauchen - ordner , filenamen müssen angeglichen werden
//https://forum.iobroker.net/post/676313 const fs = require("fs") const ftp = require("basic-ftp") example() async function example() { const client = new ftp.Client() client.ftp.verbose = true try { await client.access({ host: "192.168.178.1", user: "user", password: "passwort", secure: false }) await client.cd('test') //hier directory eintragen log(await client.list()) await checkFile(await client.list()) await client.append(fs.createReadStream('/Daten/append.txt'),'filmstatus.txt') // /Daten ist ein pfad auf dem iobroker server //console.log(await client.list()) await client.download(fs.createWriteStream("/Daten/downloaded.txt"), "filmstatus.txt", 0); } catch(err) { console.log(err) } client.close() } async function checkFile(vari) { let fileTrue=vari; log(" Länge: "+fileTrue.length) for (let i=0;i<fileTrue.length;i++) { log(fileTrue[i].name+" Type: "+fileTrue[i].type) if (fileTrue[i].name=="filmstatus.txt") log("File filmstatus.txt ist da") } }
so sieht das ftp-dir aus