NEWS
Javascript-Adapter Script-Mirror
-
Hi,
ich würde gerne den Script-Mirror vom Javascript-Adapter nutzen, verstehe aber nicht so recht wie der funktioniert. Den Link zu den Skripten auf dem Filesystem habe ich eingegeben.
Wenn ich nun ein Skript dort ändere, so verschwindet das ganze Skript aus iobroker.
Ich nutzte zur Zeit den JS2FS-Adapter, würde den aber gerne einsparen, um RAM zu sparen. Von dort kenne ich das so, dass die Änderung des Skripts in iobroker gespiegelt wird. Diese Funktion hätte ich nun hier auch erwartet.
Gibt es dazu eine kleine Anleitung, wie der JavaScript Screen-Mirror zu verwenden ist?Danke schon mal!
-
@Unterstedter Manchmal ist es einfacher, als man denkt. In der Konfiguration von der Javascript-Instanz wird der Pfad für den Mirror auf dem ioBroker angeben. Dieser kann zum Beispiel mit SMB im Netzwerk zur Verfügung gestellt werden.
-
du musst es aber UNBEDINGT in der javascript.0 instanz eintragen.. und nur da.. von da aus werden alle Scripte dann gespiegelt
-
wie werden die Skripte dann gespeichert? Sprich wie kann man aus den gespiegelten Datein einen Restore machen ?
-
@Kuddel
Als .js Datei. Wie man die dann restored weis ich aber nicht.Edit: über die Import Funktion des JS Adapters jedenfalls nicht
-
@FredF okay, dann ist das ja genau so wie mit dem JS2FS Adapter.
Für JS sicherlich gut, nur für Blockly leider nicht.
-
@Kuddel sagte in Javascript-Adapter Script-Mirror:
Für JS sicherlich gut, nur für Blockly leider nicht.
Stimmt, es bleibt nur javascript übrig, allerdings mit dem Blockly Ende. Lässt sich nicht importieren .
-
Gibt es da schon eine Lösung, dass man auch Blockly importieren kann?
Oder eine Lösung das man js2fs zum Laufen bekommt?Habe heute den js-controller Update gemacht. Da läuft js2fs nicht mehr
js2fs.0 2020-10-10 16:26:49.363 error at processTicksAndRejections (internal/process/task_queues.js:97:5) js2fs.0 2020-10-10 16:26:49.363 error at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:8147:76 js2fs.0 2020-10-10 16:26:49.363 error at Object.options.ready (/opt/iobroker/node_modules/iobroker.js2fs/node_modules/soef/soef.js:1365:13) js2fs.0 2020-10-10 16:26:49.363 error at checkIfUpdated (/opt/iobroker/node_modules/iobroker.js2fs/node_modules/soef/soef.js:1239:20) js2fs.0 2020-10-10 16:26:49.363 error (25740) TypeError: Cannot read property 'getState' of undefined js2fs.0 2020-10-10 16:26:49.360 error (25740) unhandled promise rejection: Cannot read property 'getState' of undefined
-
@Bongo sagte in Javascript-Adapter Script-Mirror:
Gibt es da schon eine Lösung, dass man auch Blockly importieren kann?
wie genau hast du denn die Datei, welche du importieren möchtest, vorliegen?
-
@fastfoot sagte in Javascript-Adapter Script-Mirror:
wie genau hast du denn die Datei, welche du importieren möchtest, vorliegen?
Zum Test habe ich eine kleine Blockly Datei gemacht. Das steht dann im Filesystem mit der Dateiendung .js:
// BlocklyTest //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjIoJTNBYXFxNzV6MU5UIW9pUCUyRiUyNEUlMjU1JTIyJTIweCUzRCUyMjMxMyUyMiUyMHklM0QlMjIxMzglMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFQmxvY2tseVRlc3QlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGeG1sJTNF
Wenn ich das importiere in ein neues, leeres Blockly sehe ich nichts.
Bei js2fs hat es zu einem Blockly eine .js und eine .blockly gegeben.Aber ich sehe gerade, das .blockly kann man auch nicht importieren. Hmm ...
Aha, wenn ich das .js aus der Spiegelung kopiere ist es im Javascript Adapter wieder als Blockly vorhanden.
Mir geht es um eine zusätzliche Sicherung der Skripte. Das würde mit der Spiegelung funktionieren.
Ich denke, ich bin damit zufrieden -
@Bongo sagte in Javascript-Adapter Script-Mirror:
Habe heute den js-controller Update gemacht. Da läuft js2fs nicht mehr
nutze doch den von JS selber .
-
@Bongo sagte in Javascript-Adapter Script-Mirror:
Mir geht es um eine zusätzliche Sicherung der Skripte. Das würde mit der Spiegelung funktionieren.
Ich denke, ich bin damit zufriedenIch mache immer ein komplettes Backup der Skripte, bei Bedarf kopiere ich dann das benötigte Skript und erstelle mir davon den XML Import. Das zurück kopieren in den Mirror Ordner ist etwas tricky, je nachdem ob es dort noch existiert und man nur eine ältere Version einspielen will.
-
@Glasfaser sagte in Javascript-Adapter Script-Mirror:
nutze doch den von JS selber .
Danke, das mache ich jetzt auch.
-
@Bongo sagte in Javascript-Adapter Script-Mirror:
Zum Test habe ich eine kleine Blockly Datei gemacht. Das steht dann im Filesystem mit der Dateiendung .js:
Wenn ich das importiere in ein neues, leeres Blockly sehe ich nichts.
Bei js2fs hat es zu einem Blockly eine .js und eine .blockly gegeben.hier mal ein kleines Skript, welche eine solche Datei in ein XML zum Import umwandelt. Zeile 2+3 anpassen!
const fs = require('fs'); const fn = '/opt/iobroker/restore/Test.js' const fnOut = '/opt/iobroker/restore/Test.xml' getData(); function getData(){ try { var data = fs.readFileSync(fn, 'utf8') const pos = data.lastIndexOf('\n'); if (pos !== -1) { data = data.substring(pos + 3); if(data.indexOf('JTNDeG1sJTIweG1') !== -1) { data = decodeURIComponent(Buffer.from(data, 'base64').toString('utf8')); fs.writeFile(fnOut, data, err => { if(err) { return console.log(err); } log('Done!'); }); } } }catch(e){ return log(e); } }
-
Wie und wann werden denn die Skripte gespiegelt.
ich hab alles eingetragen aber der Orderner bleibt leer.Ich hätte jetzt erwartet dass dort die scripte als xxxx.js erscheinen.
-
@andrease112 sollte eigentlich sofort erscheinen. Allerdings darf nur eine Instanz synchronisieren. Die musst du in den Instanzsettings noch auswählen (direkt neben dem Pfad). Das ist das einzige (und das der Pfad irgendwie nicht stimmt / nicht schreibbar ist) sind die einzigen dinge, die mir noch einfallen.
-
@garfonso !!
Hallo Garfonso hier sind ein paar Screenshots wie ich es eingestellt hab:fällt Dir etwas auf das ich falsch gemacht hab ?
Grüße
Andreas
-
@andrease112
Der iobroker darf nicht in /home/Javascript schreiben, der gehört root (und ist auch falsch an der Stelle).Leg ein Verzeichnis in /home/iobroker (als iobroker) an. Dann passt das auch.
sudo -u iobroker mkdir /home/iobroker/backup_skripte
-
@thomas-braun sagte in Javascript-Adapter Script-Mirror:
/home/iobroker/backup_skripte
Vielen dank !!! jetzt gehts