NEWS
js-controller 2 jetzt für alle im Stable
-
@bahnuhr sagte:
Wir möchten 0_userdata.0 gern als neuen Standardplatz forcieren
Das gilt für Einsteiger in ioBroker, nicht für bestehende Installationen.
@bahnuhr sagte in js-controller 2 jetzt für alle im Stable:
Warum kann man da nicht mit create State etwas anlegen.
Ist in Planung.
-
@paul53 sagte in js-controller 2 jetzt für alle im Stable:
Ist in Planung.
Danke, diese Antwort ist gut und zielführend.
Stellt sich für mich nur die Frage warum man dies nicht gleich macht. Denn gerade Einsteiger brauchen doch einen einfachen Befehl.Wenn ich darf, noch ne Frage:
Warum beschränkt man die fs Befehle auf den ..data.. Ordner.?
Was ist, wenn man eine Datei im lokalen Netzwerk speichern möchte ?
Warum geht der copy Befehl nicht mehr (Lösung ist ja read und write); aber warum beschränkt man dies?Gibt für mich (aus meiner Logik) auch keinen Sinn für diese Einschränkung.
mfg
Dieter -
@bahnuhr Wie paul geschrieben hat oder nach einem kommenden JavaScript Update
-
@bahnuhr Jetzt bitte mal gaaaaaaaanz langsam ...
Zu 0_userdata.0: Zitat aus Post #3 dieses Threads mit den Infos zum Feature:
Wichtig Wer seine States bisher in javascript.X ablegt und das für die eigenen Bedürfnisse ausreicht, kann dies weiterhin ohne Probleme tun. Wer jedoch seine Skripte auf mehrere JavaScript-Instanzen verteilt möchte ggf. einen besseren Platz, wie 0_userdata.0, nutzen Ebenso eigene Ordner auf oberster Ebene (z.B. MeineObjekte.0.x) können weiterhin genutzt werden - so lange halt bis ein Adapter mit diesem Namen kommt ...
Also niemand zwingt irgend jemanden das zu nutzen!
Es ist korrekt das der JavaScript Adapter bisher noch kein Update bekommen hat dies auch vollständig zu unterstützen. Ein Schritt nach dem anderen Bitte. Es wird kommen. Wir versuchen alles um Sinnvolle Pakete für Euch zu schnüren, aber auch wir haben nur begrenzte Zeit zur Verfügung!
Stimmt doch im zugehörigen GitHub Issue ab und Zeit so das es Euch unter den Nägeln brennt das Feature zu haben ... hat aktuell nur 3 Stimmen ... https://github.com/ioBroker/ioBroker.javascript/issues/429
Weiterhin: NIEMAND beschränkt "fs-Befehle" auf den data Ordner. Das können wir gar nicht weil die "fs" Library von nodejs auf das Filesystem zugreift. Da hast Du was komplett falsch verstanden.
Die Beschränkung gilt nur für Daten die im iobroker-data/files Ordner gespeichert sind - diese dürfen nicht mehr per direkten Filesystemzugriffen manipuliert werden. Das das früher ging war keine Absicht und eigentlich schon damals "am System vorbei".Für "copy" (bzw "rename" um was es bisher ging) gibt es die Funktion im js-controller, sie ist aber im JavaScript Adapter noch nicht eingebaut weil Sie bisher wohl niemand gebraucht hat. Issue dazu was gern Eure Stimmen nimmt: https://github.com/ioBroker/ioBroker.javascript/issues/451 . Falls "copy" gebraucht wird wäre das ein ein js-controller Request.
Der Grund für die Limitierung sind einerseits Sicherheitsüberlegungen und das ist wie immer ein Trade-Off zwischen "Einfachheit" und "Sicherheit". Alles was im ioBroker-Store Liegt ist generell per web/vis/admin u.ä. Adapter direkt abrufbar. Es gibt leider einige Installationen die frei im Internet erreichbar sind.
Wir wollen sicherstellen das es eine bewusste Entscheidung ist welche Daten hier verfügbar sind und das auch hier das ioBroker-User- und Rechtesystem vollständig greift und genutzt werden kann. Das geht allerdings nur wenn alle Dateien sauber "offiziell" hochgeladen wurden.Ein weiterer Grund ist das bei der Nutzung von Redis als Objects/File Store das Filesystem irrelevant ist und damit nur die Daten abgerufen werden können die auch im Redis hochgeladen wurden. Das heisst hier würden auch sämtliche Skripte die mit den nodejs-Filesystem-Funktionen arbeiten nicht mehr funktionieren. Da uns aber für alle Funktionen die Einheitlichkeit wichtig ist und, wie oben erwähnt, an den offiziellen Funktionen vorbei zu arbeiten niemals offiziell unterstützt war, haben wir uns dafür entschieden.
-
Danke apollon für die ausführliche Antwort.
Aber vielleicht noch ne Ergänzung bzw. Frage zu fs.
Bisher hatte ich im Script die Zeile :
fs.copyFile("//ASUS-BUERO/ioBroker/node_modules/iobroker.sayit/sayit.2.say.mp3","//ASUS-BUERO/...mp3", (err) => {Grund:
Ich kopiere die aktuell durch sayit erzeugte mp3 in einen anderen Ordner im Netzwerk.Und dieser copy Befehl geht ja zukünftig nicht mehr.
Also Lösung lt. hier im Forum ist:
read und dann writeDies funktioniert auch; jedoch mit der Einschränkung dass der write Befehl nur Ordner akzeptiert die im ...data.. Ordner liegen.
Somit ist write im Netzwerk nicht mehr möglich.Oder gibt es für sowas eine andere Lösung.
Also ganz konkret:
Welcher Befehl muss man nehmen damit die Datei in einen anderen "Netzwerk"-Ordner kopiert wird.mfg
Dieter -
@bahnuhr wer sagt denn das das was du da tust nicht mehr geht?!
Ließ nochmal genau was ich geschrieben habe. Von der Limitierung sind nur Daten betroffen die in iobroker-data/files liegen.
Ist das bei dir der Fall? Ich glaube nicht.
Also geht das alles weiter wie bisher auch.
-
@apollon77 sagte in js-controller 2 jetzt für alle im Stable:
@bahnuhr wer sagt denn das das was du da tust nicht mehr geht?!
Ließ nochmal genau was ich geschrieben habe. Von der Limitierung sind nur Daten betroffen die in iobroker-data/files liegen.
Ist das bei dir der Fall? Ich glaube nicht.
Also geht das alles weiter wie bisher auch.
Dann lies bitte auch mal genau was ich geschrieben habe.
Der write Befehl geht nicht !Es wird ein Verzeichnis verlangt unterhalb von ...data/files...
mfg
-
Hallo zusammen,
mal ne doofe Anfängerfrage, welchen Befehl muss ich ins Terminal eingeben, damit ich auf die Version 2.1.1 updaten kann, mit dem Befehl "iobroker upgrade self"
klappt es nicht.Ich habe ioBroker auf einer Qnap in der Docker Station installiert.
-
@bahnuhr ich verstehe nicht was du meinst? Wenn du außerhalb des iobroker-data/files Verzeichnisses und damit außerhalb der iobroker Stores arbeitest dann nutzt die weiterhin fs.writeFileSync oder so ... hat doch dann mit dem iobroker store nichts zu tun.
-
@Oli definiere bitte „Klappe nicht“ etwas näher. Hast du vorher „iobroker update“ gemacht und da wird der js-Controller als updatable angezeigt?
-
ioBroker Update habe ich gemacht, der js-Controller wird nicht als update angezeigt.
-
sorry falscher Alarm, anscheinend war die Version 2.1.1 schon installiert.
-
@apollon77 sagte in js-controller 2 jetzt für alle im Stable:
fs.writeFileSync
Danke für die Info.
1 x hat es klappt. Danach leider nicht mehr.
anbei Script:var fs = require('fs'); const datei= fs.readFileSync("C:/ioBroker/node_modules/iobroker.sayit/sayit.2.say.mp3"); setTimeout(function(){ fs.writeFileSync('c:/tmp/test.mp3', datei, function (error) { }); }, 500);
endet mit Fehler mit log:
javascript.1 2019-11-24 16:38:28.530 error at Timer.listOnTimeout (timers.js:290:5) javascript.1 2019-11-24 16:38:28.530 error at tryOnTimeout (timers.js:323:5) javascript.1 2019-11-24 16:38:28.530 error at ontimeout (timers.js:511:34) javascript.1 2019-11-24 16:38:28.530 error at Timeout._onTimeout (C:\ioBroker\node_modules\iobroker.javascript\lib\sandbox.js:1869:34) javascript.1 2019-11-24 16:38:28.530 error at Object.<anonymous> (script.js.Scripte.test4:147:12) javascript.1 2019-11-24 16:38:28.530 error at ProtectFs.writeFileSync (C:\ioBroker\node_modules\iobroker.javascript\lib\protectFs.js:31:37) javascript.1 2019-11-24 16:38:28.530 error at fs.writeFileSync (fs.js:1299:33) javascript.1 2019-11-24 16:38:28.530 error at Object.fs.openSync (fs.js:646:18) javascript.1 2019-11-24 16:38:28.530 error Error in callback: Error: EPERM: operation not permitted, open 'c:\tmp\test.mp3' javascript.1 2019-11-24 16:38:28.530 info script.js.Scripte.test4: C:/tmp/test.mp3
...operation not permitted...
versteh ich nicht. Warum soll dieses Verzeichnis nicht erlaubt sein.
Bzw. warum hat es 1x geklappt und danach nicht mehr.Windows oder/und iob BUG ?
mfg
-
Ist es eigentlich korrekt dass die Logfiles unter /opt/iobroker/log/ nicht mehr wöchentlich rotieren?
Ich habe mittlerweile 16 Logfiles, logischerweise der letzten 16 Tage. Am 15.11. hatte ich das Update auf JS-Controller 2 gemacht. Seit dem haben die Logfiles Berechtigung 664, alle davor haben 777. Aber das sollte ja erst recht keine Probleme beim Weglöschen machen. -
@Diginix sagte in js-controller 2 jetzt für alle im Stable:
Ist es eigentlich korrekt dass die Logfiles unter /opt/iobroker/log/ nicht mehr wöchentlich rotieren?
Korrekt, bzw. wohl eher nicht korrekt.
Durch den Betatest sind es bei mir noch paar mehr
-
@bahnuhr prüfe mal die Rechte vom File, Verzeichnis und so ... EPERM ist ein Permission/Rechte Problem beim Zugriff. Würde ich jetzt erst einmal "bei Dir" am System sehen.
-
@SBorg Hm. Bisher nicht aufgefallen. Bitte legt mal ein Issue im js-controller an. Danke
-
-
Hallo zusammen,
verfolge das Forum schon sehr lange. Bis dato passiv immer sehr erfolgreich ;).
Erstmal zu meiner Lage:
iobroker läuft im Docker auf einer Synology.
Vorgestern den js-controller von 1.15.XX auf 2.1.1 geupdatet.
Nach dem Update ist der Dienst nicht mehr gestartet. Hatte dann durch 1000 Tipps im Netz das System wieder zum Laufen gebracht.
Hier im Forum habe ich dann gelesen erstmal node.js zu aktualisieren. (ja Schande über mein Haupt)Habe node.js aktualisiert auf 12.13.1
(ja ich habe gelesen, zu spät, dass Version 10 stabiler ist. Ich habe allerdings keine Ahnung wie ich es wieder "downgrade" und ob es wirklich nötig ist)
Und im Anschluss den js-controller auf 2.1.1iobroker läuft nun wieder.
Jetzt zu meinem Problem:
Ich habe heute Morgen nun festgestellt das viele meiner Scripte (Java und Blockly) nicht mehr richtig laufen.
Bewegungsmelder und Lichter verhalten sich eigenartig. Heizung wurde nicht geschaltet.
Telegram Scripte laufen allerdings. Auch ein Script welches die Gartenbeleuchtung schaltet läuft.
Finde kein Zusammenhang und bin etwas verwirrt.Gibt es sowas wie ein Java Cache der geleert werden sollte/kann?
Oder hat jemand einen anderen Tipp?Gruß
Oli -
@BigUsh sagte in js-controller 2 jetzt für alle im Stable:
Oder hat jemand einen anderen Tipp?
Hast du mal die gesamte Maschine sauber neu gestartet?