NEWS
[Skript] Namespace für Datenpunkte in Skripten abändern
-
@fastfoot sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
@sigi234 Der Fehler lag in Zeile 26(nach 'Verbesserung' von Variablennamen. Setze dennoch dbg auf false, da wird sehr viel Müll geloggt
Du hast den Namespace in Zeile 11 nicht geändert, das wird dir keine Änderungen zeigen, ist aber für die Auflistung deiner Skripte völlig ok
Ok, Zeile 11 muss ich da auch einen Ordner anlegen? Wenn ich const replaceInSystemsDB = false auf true ändere wird ja sofort ins System geschrieben. Ist der Pfad für Windows Systeme?
Info:
Tabelle wird Richtig im Verzeichnis angelegt.LOG:
javascript.0 2021-08-18 08:35:56.416 info script.js.Sigi.Namespace1: registered 0 subscriptions and 0 schedules javascript.0 2021-08-18 08:35:56.415 warn at script.js.Sigi.Namespace1:189:3 javascript.0 2021-08-18 08:35:56.415 warn at script.js.Sigi.Namespace1:186:1 javascript.0 2021-08-18 08:35:56.415 warn at switchDPs (script.js.Sigi.Namespace1:116:8) javascript.0 2021-08-18 08:35:56.415 warn at setState (C:\Program Files\iobroker\Home\node_modules\iobroker.javascript\lib\sandbox.js:1439:20) javascript.0 2021-08-18 08:35:56.414 warn You are assigning a array to the state "0_userdata.0.scriptCheck" which expects a string. Please fix your code to use a string or change the state type to array. This warning might become an error in future versions. javascript.0 2021-08-18 08:35:56.410 warn at script.js.Sigi.Namespace1:189:3 javascript.0 2021-08-18 08:35:56.410 warn at script.js.Sigi.Namespace1:186:1 javascript.0 2021-08-18 08:35:56.410 warn at switchDPs (script.js.Sigi.Namespace1:25:14) javascript.0 2021-08-18 08:35:56.409 warn at Object.result.each (C:\Program Files\iobroker\Home\node_modules\iobroker.javascript\lib\sandbox.js:819:29) javascript.0 2021-08-18 08:35:56.409 warn at script.js.Sigi.Namespace1:27:24 javascript.0 2021-08-18 08:35:56.409 warn getState "javascript.0.scriptEnabled.global.messages" not found (3) states[id]=null javascript.0 2021-08-18 08:35:56.409 warn at script.js.Sigi.Namespace1:189:3 javascript.0 2021-08-18 08:35:56.408 warn at script.js.Sigi.Namespace1:186:1 javascript.0 2021-08-18 08:35:56.408 warn at switchDPs (script.js.Sigi.Namespace1:25:14) javascript.0 2021-08-18 08:35:56.408 warn at Object.result.each (C:\Program Files\iobroker\Home\node_modules\iobroker.javascript\lib\sandbox.js:819:29) javascript.0 2021-08-18 08:35:56.408 warn at script.js.Sigi.Namespace1:27:24 javascript.0 2021-08-18 08:35:56.407 warn getState "javascript.0.scriptEnabled.global.linkeddevices.linkeddevices0" not found (3) states[id]=null javascript.0 2021-08-18 08:35:56.407 warn at script.js.Sigi.Namespace1:189:3 javascript.0 2021-08-18 08:35:56.407 warn at script.js.Sigi.Namespace1:186:1 javascript.0 2021-08-18 08:35:56.406 warn at switchDPs (script.js.Sigi.Namespace1:25:14) javascript.0 2021-08-18 08:35:56.406 warn at Object.result.each (C:\Program Files\iobroker\Home\node_modules\iobroker.javascript\lib\sandbox.js:819:29) javascript.0 2021-08-18 08:35:56.406 warn at script.js.Sigi.Namespace1:27:24 javascript.0 2021-08-18 08:35:56.405 warn getState "javascript.0.scriptEnabled.global.function_event" not found (3) states[id]=null javascript.0 2021-08-18 08:35:56.405 warn at script.js.Sigi.Namespace1:189:3 javascript.0 2021-08-18 08:35:56.405 warn at script.js.Sigi.Namespace1:186:1 javascript.0 2021-08-18 08:35:56.405 warn at switchDPs (script.js.Sigi.Namespace1:25:14) javascript.0 2021-08-18 08:35:56.405 warn at Object.result.each (C:\Program Files\iobroker\Home\node_modules\iobroker.javascript\lib\sandbox.js:819:29) javascript.0 2021-08-18 08:35:56.405 warn at script.js.Sigi.Namespace1:27:24 javascript.0 2021-08-18 08:35:56.404 warn getState "javascript.0.scriptEnabled.global.Skript_1" not found (3) states[id]=null javascript.0 2021-08-18 08:35:56.404 warn at script.js.Sigi.Namespace1:189:3 javascript.0 2021-08-18 08:35:56.404 warn at script.js.Sigi.Namespace1:186:1 javascript.0 2021-08-18 08:35:56.404 warn at switchDPs (script.js.Sigi.Namespace1:25:14) javascript.0 2021-08-18 08:35:56.404 warn at Object.result.each (C:\Program Files\iobroker\Home\node_modules\iobroker.javascript\lib\sandbox.js:819:29) javascript.0 2021-08-18 08:35:56.404 warn at script.js.Sigi.Namespace1:27:24 javascript.0 2021-08-18 08:35:56.403 warn getState "javascript.0.scriptEnabled.global.Material_sendTo" not found (3) states[id]=null javascript.0 2021-08-18 08:35:56.400 warn at script.js.Sigi.Namespace1:189:3 javascript.0 2021-08-18 08:35:56.400 warn at script.js.Sigi.Namespace1:186:1 javascript.0 2021-08-18 08:35:56.400 warn at switchDPs (script.js.Sigi.Namespace1:25:14) javascript.0 2021-08-18 08:35:56.400 warn at Object.result.each (C:\Program Files\iobroker\Home\node_modules\iobroker.javascript\lib\sandbox.js:819:29) javascript.0 2021-08-18 08:35:56.400 warn at script.js.Sigi.Namespace1:27:24 javascript.0 2021-08-18 08:35:56.399 warn getState "javascript.0.scriptEnabled.global.MaterialDesignWidgets.vis-materialdesign0" not found (3) states[id]=null javascript.0 2021-08-18 08:35:56.399 warn at script.js.Sigi.Namespace1:189:3 javascript.0 2021-08-18 08:35:56.399 warn at script.js.Sigi.Namespace1:186:1 javascript.0 2021-08-18 08:35:56.399 warn at switchDPs (script.js.Sigi.Namespace1:25:14) javascript.0 2021-08-18 08:35:56.398 warn at Object.result.each (C:\Program Files\iobroker\Home\node_modules\iobroker.javascript\lib\sandbox.js:819:29) javascript.0 2021-08-18 08:35:56.398 warn at script.js.Sigi.Namespace1:27:24 javascript.0 2021-08-18 08:35:56.397 warn getState "javascript.0.scriptEnabled.global.Datum_holen" not found (3) states[id]=null javascript.0 2021-08-18 08:35:56.001 warn at script.js.Sigi.Namespace1:189:3 javascript.0 2021-08-18 08:35:56.001 warn at script.js.Sigi.Namespace1:186:1 javascript.0 2021-08-18 08:35:56.001 warn at switchDPs (script.js.Sigi.Namespace1:25:14) javascript.0 2021-08-18 08:35:56.001 warn at Object.result.each (C:\Program Files\iobroker\Home\node_modules\iobroker.javascript\lib\sandbox.js:819:29) javascript.0 2021-08-18 08:35:56.001 warn at script.js.Sigi.Namespace1:27:24 javascript.0 2021-08-18 08:35:55.998 warn getState "javascript.0.scriptEnabled.Rules.Skript_1" not found (3) states[id]=null javascript.0 2021-08-18 08:35:55.208 info Start javascript script.js.Sigi.Namespace1 javascript.0 2021-08-18 08:35:54.862 info Stop script script.js.Sigi.Namespace1Konfig:
/** * Zweck: Ändert Namespace von Datenpunkten in Skripten * Datum: 17.08.2021 * Author: @fastfoot * Forum: https://forum.iobroker.net/topic/47113/skript-namespace-f%C3%BCr-datenpunkte-in-skripten-abändern */ let dbg = false; // Zusatzausgaben fürs Debugging const newNamespace = '0_userdata.0'; //neuer Namespace für DP // Eigene Einstellungen const oldNamespace = '0_userdata.0.oldNamespace'; //Ordner für Namespace welcher ersetzt wird const replaceInSystemsDB = false;// lädt geänderte Dateien sofort ins System(ACHTUNG! *** auf eigenes Risiko ***) const writeToFileSystem = true;// Geänderte Dateien ins Filesystem schreiben const pathToRestore = 'C:/Program Files/iobroker/Home/backups/switched/'; // <=== Pfad eintragen mit abschliessendem / const extChanged = 'Chg'; // Wird im Falle einer Änderung an ID und Name angehangen@sigi234 sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
Ok, Zeile 11 muss ich da auch einen Ordner anlegen? Wenn ich const replaceInSystemsDB = false auf true ändere wird ja sofort ins System geschrieben. Ist der Pfad für Windows Systeme?
Du musst Zeile11 nur dann verändern, wenn Du einen Namespace, der jetzt nicht mehr erlaubt ist, verändern willst. Etwa wenn du jetzt zB MeineDatenpunkte.0 benutzt und sie nach 0_userdata.0 migrieren willst. Schreib da wieder oldNamespace.0 rein wenn das nicht der Fall ist. Ansonsten nutze das Skript halt nur um deine Skripte zu listen.
Der Fehler bei setState() kommt weil ich einen DP mit type array vorausgesetzt habe. Lasse deinen Type auf string und ändere Zeile 116 in
setState('0_userdata.0.scriptCheck',JSON.stringify(changesResult)); -
@liv-in-sky sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
die states müssen auch noch "kopiert" werden !
Das habe ich auch schon gemerkt, nur wie kopiert man die states?
ich hab ein script, welches einen object-pfad aussliest und eine datei erstellt, die lauter "setState(...) " befehle beinhaltet - damit könnte man das lösen
momentan habe ich aber noch ein problem damit - wenn ein state einen string enthält. da das script "uralt" ist, muss ich es erst ändern und anpassen - so das es gleich in den neuen state geschrieben wird
ich poste es, wenn fertig
-
@liv-in-sky sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
die states müssen auch noch "kopiert" werden !
Das habe ich auch schon gemerkt, nur wie kopiert man die states?
eigentlich sollte das reichen
var fs = require('fs'); let oldObjectPath="controll-own.0.AAATEST" let newObjectPath="0_userdata.0.CONTROL-OWN.AAATEST" var cacheSelectorState = $(`state[state.id=${oldObjectPath}.*]`); cacheSelectorState.each(function (id, i) { var val1 = getState(id).val; if (val1 == null ) {log(id + " hat keinen state");} else { setState(id.replace(oldObjectPath,newObjectPath),getState(id).val ) };});du mußt fs in das javascript instanz setting eintragen und den alten und neuen pfad
- hier im script habe ich einen unterordner eingetragen - zum testen - da könnte auch
let oldObjectPath="controll-own.0" let newObjectPath="0_userdata.0.CONTROL-OWN"drinstehen
-
man müßte doch auch ein script machen können, das die einnzelnen vis views ändert

das script könnte die vis-view.json in vis-view.json.new anlegen (mit geänderten werten) ,dann könnte man iobroker abschalten und diesse files ersetzen/umbenennen - bin mir nicht mehr sicher, ob es reicht nur den vis-adapter zu deaktivieren
dann müßte nur noch unter dem scripte-tab und dem css-stab im vis-editor überprüft werden, ob da auch noch was drin steht, was geändert werden muss
-
eigentlich sollte das reichen
var fs = require('fs'); let oldObjectPath="controll-own.0.AAATEST" let newObjectPath="0_userdata.0.CONTROL-OWN.AAATEST" var cacheSelectorState = $(`state[state.id=${oldObjectPath}.*]`); cacheSelectorState.each(function (id, i) { var val1 = getState(id).val; if (val1 == null ) {log(id + " hat keinen state");} else { setState(id.replace(oldObjectPath,newObjectPath),getState(id).val ) };});du mußt fs in das javascript instanz setting eintragen und den alten und neuen pfad
- hier im script habe ich einen unterordner eingetragen - zum testen - da könnte auch
let oldObjectPath="controll-own.0" let newObjectPath="0_userdata.0.CONTROL-OWN"drinstehen
@liv-in-sky :+1: Das werde ich testen
-
@sigi234 sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
Ok, Zeile 11 muss ich da auch einen Ordner anlegen? Wenn ich const replaceInSystemsDB = false auf true ändere wird ja sofort ins System geschrieben. Ist der Pfad für Windows Systeme?
Du musst Zeile11 nur dann verändern, wenn Du einen Namespace, der jetzt nicht mehr erlaubt ist, verändern willst. Etwa wenn du jetzt zB MeineDatenpunkte.0 benutzt und sie nach 0_userdata.0 migrieren willst. Schreib da wieder oldNamespace.0 rein wenn das nicht der Fall ist. Ansonsten nutze das Skript halt nur um deine Skripte zu listen.
Der Fehler bei setState() kommt weil ich einen DP mit type array vorausgesetzt habe. Lasse deinen Type auf string und ändere Zeile 116 in
setState('0_userdata.0.scriptCheck',JSON.stringify(changesResult));die änderungen für die vis - alle views auf einmal - habe mal ein script gemacht - wärst du so nett, mal drüber zu sehen - ob dir etwas auffällt
für den test, habe ich eine noch eine einschränkung drin, damit nur ein file bearbeitet wird
ergebnis:

script:
-
die änderungen für die vis - alle views auf einmal - habe mal ein script gemacht - wärst du so nett, mal drüber zu sehen - ob dir etwas auffällt
für den test, habe ich eine noch eine einschränkung drin, damit nur ein file bearbeitet wird
ergebnis:

script:
@liv-in-sky sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
wärst du so nett, mal drüber zu sehen - ob dir etwas auffällt
klar mache ich, wird aber etwas dauern, bin unterwegs
-
die änderungen für die vis - alle views auf einmal - habe mal ein script gemacht - wärst du so nett, mal drüber zu sehen - ob dir etwas auffällt
für den test, habe ich eine noch eine einschränkung drin, damit nur ein file bearbeitet wird
ergebnis:

script:
@liv-in-sky warum in allen Dateien suchen? Die vis-views.json sollte es doch tun.
Bei deinen Funktionen habe ich nicht recht durchgeblickt, deshalb so:hier für Mutige, habe nicht einmal die Vis gestoppt. Seltsamerweise funktioniert readFileAsync() hier nicht, mit keinem meiner Files kommt da was zurück, deswegen mit Callback. Trau Dich:grimacing:
/** * Zweck: Ändert Namespace in VIS */ const visPath = "vis.0"; let oldObjectPath = "controll-own.0"; let newObjectPath = "0_userdata.0.CONTROL-OWN"; let re = new RegExp(oldObjectPath, "g"); readFile(visPath, 'main/vis-views.json', function (e,visData){ if(e){ log('Fehler: ' + e); return; } //Backup writeFileAsync(visPath, 'main/vis-views.json.bak', visData); //just switch :-) writeFileAsync(visPath, 'main/vis-views.json', visData.replace(re,newObjectPath)) }); -
@liv-in-sky warum in allen Dateien suchen? Die vis-views.json sollte es doch tun.
Bei deinen Funktionen habe ich nicht recht durchgeblickt, deshalb so:hier für Mutige, habe nicht einmal die Vis gestoppt. Seltsamerweise funktioniert readFileAsync() hier nicht, mit keinem meiner Files kommt da was zurück, deswegen mit Callback. Trau Dich:grimacing:
/** * Zweck: Ändert Namespace in VIS */ const visPath = "vis.0"; let oldObjectPath = "controll-own.0"; let newObjectPath = "0_userdata.0.CONTROL-OWN"; let re = new RegExp(oldObjectPath, "g"); readFile(visPath, 'main/vis-views.json', function (e,visData){ if(e){ log('Fehler: ' + e); return; } //Backup writeFileAsync(visPath, 'main/vis-views.json.bak', visData); //just switch :-) writeFileAsync(visPath, 'main/vis-views.json', visData.replace(re,newObjectPath)) });die vis muss gestoppt sein, ansonsten wird beim neustart alles überschrieben (was im cache ist)
danke -bin etwas verwirrt - es gibt doch pro vis-view eine datei - also brauch ich eine schleife, die alle vis-view-verzeichnisse durchgeht
-
die vis muss gestoppt sein, ansonsten wird beim neustart alles überschrieben (was im cache ist)
danke -bin etwas verwirrt - es gibt doch pro vis-view eine datei - also brauch ich eine schleife, die alle vis-view-verzeichnisse durchgeht
@liv-in-sky sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
die vis muss gestoppt sein, ansonsten wird beim neustart alles überschrieben (was im cache ist)
danke -bin etwas verwirrt - es gibt doch pro vis-view eine datei - also brauch ich eine schleife, die alle vis-view-verzeichnisse durchgeht
writeFile() schreibt direkt ins System(und danach auch ins Filesystem). ich habe nur eine einzige Datei in main(plus die css). Nach einem Browserreload waren die neuen Dateipunkte aktiv. Ich hatte nur von 0_userdata.0 zu 0_userdata.1 geswitcht, woraufhin die VIS die natürlich moniert hatte. Dann wieder zurück und reload und alles war wieder da.
writeFile() nicht verwechseln mit fs.writeFile(), zweitere schreibt ins Dateisystem und würde einen Upload erfordern!
-
@liv-in-sky sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
die vis muss gestoppt sein, ansonsten wird beim neustart alles überschrieben (was im cache ist)
danke -bin etwas verwirrt - es gibt doch pro vis-view eine datei - also brauch ich eine schleife, die alle vis-view-verzeichnisse durchgeht
writeFile() schreibt direkt ins System(und danach auch ins Filesystem). ich habe nur eine einzige Datei in main(plus die css). Nach einem Browserreload waren die neuen Dateipunkte aktiv. Ich hatte nur von 0_userdata.0 zu 0_userdata.1 geswitcht, woraufhin die VIS die natürlich moniert hatte. Dann wieder zurück und reload und alles war wieder da.
writeFile() nicht verwechseln mit fs.writeFile(), zweitere schreibt ins Dateisystem und würde einen Upload erfordern!
@fastfoot ah ok - ich muss writefile ändern - guter tipp
ich wollte halt die alten files behalten und bei gestoppter vis die dateien einzeln umbenennen - danach vis wieder starten - so mache ich es, wenn ich in einer view "zombie"-widgets habe und diese rauslöschen muss (aus der vis-view.json) - kommt ab und an vor.
bin mir noch nicht sicher, ob ich direkt ins system schreiben soll, nicht das bei der konvertierung etwas schief geht - evtl mach ich einen file rename mit*.bak und erzeuge dann die neuen files mit dem richtigen namen
hier siehst du die ordnerstruktur für alle views https://forum.iobroker.net/post/666097 - jeder ordner unter vis.0 ist eine view - ist nicht wie bei den objects, wo alles in einer datei steht
werd mir morgen wieder zeit dafür nehmen und nochmal drüber nachdenken
-
@fastfoot ah ok - ich muss writefile ändern - guter tipp
ich wollte halt die alten files behalten und bei gestoppter vis die dateien einzeln umbenennen - danach vis wieder starten - so mache ich es, wenn ich in einer view "zombie"-widgets habe und diese rauslöschen muss (aus der vis-view.json) - kommt ab und an vor.
bin mir noch nicht sicher, ob ich direkt ins system schreiben soll, nicht das bei der konvertierung etwas schief geht - evtl mach ich einen file rename mit*.bak und erzeuge dann die neuen files mit dem richtigen namen
hier siehst du die ordnerstruktur für alle views https://forum.iobroker.net/post/666097 - jeder ordner unter vis.0 ist eine view - ist nicht wie bei den objects, wo alles in einer datei steht
werd mir morgen wieder zeit dafür nehmen und nochmal drüber nachdenken
@liv-in-sky Ah jetzt verstehe ich, ich habe nur eine kleine rudimentäre VIS :-) Dennoch kamen mir deine Funktionen etwas suspekt vor, hatte auch nur rot im Editor, lief allerdings.
In meinem Beispiel wird ja auch ein Backup der vis-views.json gemacht, die findet sich auch im Filesystem wieder.
Dennoch wüsste ich nicht wie man alle Files direkt im System findet(so wie man DP mit Selektor findet), da braucht es dann wohl das Dateisystem so wie du es gemacht hast. Wenn du die Dateien nur im Filesystem abänderst und zusätzlich eine .bak Datei anlegst, dann ändert sich an der VIS aber erstmal garnichts. Damit es das tut musst du nur in Adaper auf Upload Files klicken, dann erst ändert sich die VIS. Wenns dann nicht klappt die .bak umbenennen, neuer Upload und gut ist. writeFile() ist quasi der Upload für eine einzelne Datei.
-
@liv-in-sky Ah jetzt verstehe ich, ich habe nur eine kleine rudimentäre VIS :-) Dennoch kamen mir deine Funktionen etwas suspekt vor, hatte auch nur rot im Editor, lief allerdings.
In meinem Beispiel wird ja auch ein Backup der vis-views.json gemacht, die findet sich auch im Filesystem wieder.
Dennoch wüsste ich nicht wie man alle Files direkt im System findet(so wie man DP mit Selektor findet), da braucht es dann wohl das Dateisystem so wie du es gemacht hast. Wenn du die Dateien nur im Filesystem abänderst und zusätzlich eine .bak Datei anlegst, dann ändert sich an der VIS aber erstmal garnichts. Damit es das tut musst du nur in Adaper auf Upload Files klicken, dann erst ändert sich die VIS. Wenns dann nicht klappt die .bak umbenennen, neuer Upload und gut ist. writeFile() ist quasi der Upload für eine einzelne Datei.
@fastfoot sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
Dennoch kamen mir deine Funktionen etwas suspekt vor,
mir auch - hatte ich aus dem internet - für etwas anderes genutzt und einfach mal kopiert - es macht , was es soll - geht sicher einfacher
-
@liv-in-sky Ah jetzt verstehe ich, ich habe nur eine kleine rudimentäre VIS :-) Dennoch kamen mir deine Funktionen etwas suspekt vor, hatte auch nur rot im Editor, lief allerdings.
In meinem Beispiel wird ja auch ein Backup der vis-views.json gemacht, die findet sich auch im Filesystem wieder.
Dennoch wüsste ich nicht wie man alle Files direkt im System findet(so wie man DP mit Selektor findet), da braucht es dann wohl das Dateisystem so wie du es gemacht hast. Wenn du die Dateien nur im Filesystem abänderst und zusätzlich eine .bak Datei anlegst, dann ändert sich an der VIS aber erstmal garnichts. Damit es das tut musst du nur in Adaper auf Upload Files klicken, dann erst ändert sich die VIS. Wenns dann nicht klappt die .bak umbenennen, neuer Upload und gut ist. writeFile() ist quasi der Upload für eine einzelne Datei.
@fastfoot sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
hatte auch nur rot im Editor
seltsam - bei mir ist da nix rot
ist mit wieder eingefallen - ich wollte in der vis das filesystem abbilden - um evtl mp3's asuszuwählen und diese an einen audio-streamer zu senden - dabei habe ich diesen code gefunden
-
@liv-in-sky sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
@fastfoot sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
seltsam - bei mir ist da nix rotmein Editor zickt des Öfteren, aber da war zB ein callback mit return, was eig. keinen Sinn macht
ist mit wieder eingefallen - ich wollte in der vis das filesystem abbilden - um evtl mp3's asuszuwählen und diese an einen audio-streamer zu senden - dabei habe ich diesen code gefunden
hier eine etwas aufgräumtere Version. Es wird ein Backup angelegt und eine neue Datei mit Endung .new. Die css wird nicht angefasst, kannst Du in Zeile 22 ändern.
Nach dem Lauf des Skripts muss wie schon erwähnt ein Upload erfolgen(Nach Rename) oder der auskommentierte Teil benutzt werden.
-
@liv-in-sky sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
@fastfoot sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
seltsam - bei mir ist da nix rotmein Editor zickt des Öfteren, aber da war zB ein callback mit return, was eig. keinen Sinn macht
ist mit wieder eingefallen - ich wollte in der vis das filesystem abbilden - um evtl mp3's asuszuwählen und diese an einen audio-streamer zu senden - dabei habe ich diesen code gefunden
hier eine etwas aufgräumtere Version. Es wird ein Backup angelegt und eine neue Datei mit Endung .new. Die css wird nicht angefasst, kannst Du in Zeile 22 ändern.
Nach dem Lauf des Skripts muss wie schon erwähnt ein Upload erfolgen(Nach Rename) oder der auskommentierte Teil benutzt werden.
danke - das schaut doch sehr gut aus
dieses script für sich wäre schon einen thread wert :-) hätte ich gut brauchen können als trashschedule die adapter-object-werte geändert hatte
meine ersten test sehen sehr gut aus - vis und vis-editor zeigen alles richtig an
- habe noch eine whitelist hinzugefügt - falls du dies anders "coden" würdest - einfach ändern - eine einschränkung ist besser beim testen und für den "tägl" gebrauch kann es auch sinnvoll sein, wenn man nur bestimmte vis-projekte ändern kann
- habe auch das backup file unbenannt (datum-uhrzeit) -damit es nicht überschrieben wird
- wenn direkt ins system geschrieben wird, braucht es eigentlich keine new datei
-
@liv-in-sky sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
@fastfoot sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
seltsam - bei mir ist da nix rotmein Editor zickt des Öfteren, aber da war zB ein callback mit return, was eig. keinen Sinn macht
ist mit wieder eingefallen - ich wollte in der vis das filesystem abbilden - um evtl mp3's asuszuwählen und diese an einen audio-streamer zu senden - dabei habe ich diesen code gefunden
hier eine etwas aufgräumtere Version. Es wird ein Backup angelegt und eine neue Datei mit Endung .new. Die css wird nicht angefasst, kannst Du in Zeile 22 ändern.
Nach dem Lauf des Skripts muss wie schon erwähnt ein Upload erfolgen(Nach Rename) oder der auskommentierte Teil benutzt werden.
das eigentliche thema - habe mal dein script vom ersten post laufen lassen
das sind meine settings:
let dbg = false; // Zusatzausgaben fürs Debugging const newNamespace = '0_userdata.0.CONTROL-OWN'; //neuer Namespace für DP // Eigene Einstellungen const oldNamespace = 'controll-own.0'; //Ordner für Namespace welcher ersetzt wird const replaceInSystemsDB = false;// lädt geänderte Dateien sofort ins System(ACHTUNG! *** auf eigenes Risiko ***) const writeToFileSystem = false;// Geänderte Dateien ins Filesystem schreiben const pathToRestore = '/opt/iobroker/scripte-switch/'; // <=== Pfad eintragen mit abschliessendem / const extChanged = 'Chg'; // Wird im Falle einer Änderung an ID und Name angehangen let changes = 0; // Zählt Änderungen in einem Skript let changesResult = []; // Zussammenfassung der Ergebnisse, wird in DP geschriebenmit diesen settings sollte ich doch im json widget etwas bekommen bzw. sehen?
mach ich was falsch ?
-
das eigentliche thema - habe mal dein script vom ersten post laufen lassen
das sind meine settings:
let dbg = false; // Zusatzausgaben fürs Debugging const newNamespace = '0_userdata.0.CONTROL-OWN'; //neuer Namespace für DP // Eigene Einstellungen const oldNamespace = 'controll-own.0'; //Ordner für Namespace welcher ersetzt wird const replaceInSystemsDB = false;// lädt geänderte Dateien sofort ins System(ACHTUNG! *** auf eigenes Risiko ***) const writeToFileSystem = false;// Geänderte Dateien ins Filesystem schreiben const pathToRestore = '/opt/iobroker/scripte-switch/'; // <=== Pfad eintragen mit abschliessendem / const extChanged = 'Chg'; // Wird im Falle einer Änderung an ID und Name angehangen let changes = 0; // Zählt Änderungen in einem Skript let changesResult = []; // Zussammenfassung der Ergebnisse, wird in DP geschriebenmit diesen settings sollte ich doch im json widget etwas bekommen bzw. sehen?
mach ich was falsch ?
@liv-in-sky sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
mit diesen settings sollte ich doch im json widget etwas bekommen bzw. sehen?
ja solltest du, Ich hatte gestern plötzlich und aus heiterem Himmel ähnliche Fehler, obwohl im Selektor werden die IDs in der forEach angemault. Für mich sah es so aus dass in jacascript.x.scriptEnabled DPs waren für die es keine Skripte mehr gab(ich verschiebe alte Versionen immer in einen Ordner Löschen). Als Abhilfe habe ich jeweils die kompletten scriptEnabled und scriptProblem gelöscht und nach Neustart der JS-Instanzen aufbauen lassen. Danach waren die Fehler weg. Allerdings hatte ich trotzdem Daten im JSON, ich hatte nicht geprüft ob es alte Daten waren.
Leider kenne ich keinen anderen Weg um Skripte zu listen, als den indirekten Weg über scriptEnabled, zum Glück bleiben dann die Pfade in script.js so erhalten. Der Selektor findet ja nur DP und in script.js(wo die eig. Skripe sind) gibt es keine DP.
-
danke - das schaut doch sehr gut aus
dieses script für sich wäre schon einen thread wert :-) hätte ich gut brauchen können als trashschedule die adapter-object-werte geändert hatte
meine ersten test sehen sehr gut aus - vis und vis-editor zeigen alles richtig an
- habe noch eine whitelist hinzugefügt - falls du dies anders "coden" würdest - einfach ändern - eine einschränkung ist besser beim testen und für den "tägl" gebrauch kann es auch sinnvoll sein, wenn man nur bestimmte vis-projekte ändern kann
- habe auch das backup file unbenannt (datum-uhrzeit) -damit es nicht überschrieben wird
- wenn direkt ins system geschrieben wird, braucht es eigentlich keine new datei
@liv-in-sky deine Änderungen machen alle Sinn, ganz speziell der timestamp!. Beim Schreiben ins System hatte ich manchmal Fehler, dennoch war die Datei anschliessend vorhanden. Diese Option ist also wirklich nichts für Anfänger, evtl. darf und sollte man das nicht tun :-)
-
@liv-in-sky sagte in [Skript] Namespace für Datenpunkte in Skripten abändern:
mit diesen settings sollte ich doch im json widget etwas bekommen bzw. sehen?
ja solltest du, Ich hatte gestern plötzlich und aus heiterem Himmel ähnliche Fehler, obwohl im Selektor werden die IDs in der forEach angemault. Für mich sah es so aus dass in jacascript.x.scriptEnabled DPs waren für die es keine Skripte mehr gab(ich verschiebe alte Versionen immer in einen Ordner Löschen). Als Abhilfe habe ich jeweils die kompletten scriptEnabled und scriptProblem gelöscht und nach Neustart der JS-Instanzen aufbauen lassen. Danach waren die Fehler weg. Allerdings hatte ich trotzdem Daten im JSON, ich hatte nicht geprüft ob es alte Daten waren.
Leider kenne ich keinen anderen Weg um Skripte zu listen, als den indirekten Weg über scriptEnabled, zum Glück bleiben dann die Pfade in script.js so erhalten. Der Selektor findet ja nur DP und in script.js(wo die eig. Skripe sind) gibt es keine DP.
@fastfoot thema script enabled
durch meine 3 instanzen kam es da schon immer zu einem extremen wildwuchs (script-enabled) - vorallem, wenn man scripte verschiebt
ich hatte mich nie getraut, script eabled zu löschen - aber du sagst, die legen sich neu an - verstehe ich das richtig ?
ein anderer weg für die scripte - dachte anfangs, dass du das darüber machen wirst:
ich habe mal ein script gemacht um mir alle scripte anzusehen - da nutzte ich die scripte-spiegel function vom js-adapter und ging auch durch das directory - ich glaube das nutzen auch einige, die mit einem anderen/externen script editor arbeitensieht so aus:

