NEWS
Admin5: Ich kann keine Objekte mehr manuell anlegen
-
@paul53 said in Admin5: Ich kann keine Objekte mehr manuell anlegen:
Nur noch? Das kann viel Aufwand sein. Visualisierungen nicht zu vergessen.
Ich weiß auch das ist noch eine Menge arbeit aber man hat sich das anlegen unter 0_userdata schon mal gespart. In den Scripten kann man ja gut suchen und ersetzen.
VIS ist natürlich auch noch mal großer Aufwand.Was das Thema array und object betrifft: Ab JavaScript Adapter Version 5.2.0 werden die Werte der Objekttypen "object" und ",array" automatisch konvertiert! Das bedeutet, dass beim Lesen solcher Zustandswerte kein "JSON.parse", mehr benötigt wird. Wenn ein JSON-Parse verwendet wird, kann das Skript abstürzen und muss angepasst werden - einfach das JSON.parse entfernen. Auch ein JSON.stringify wird beim Schreiben solcher Zustandswerte nicht mehr benötigt. Dies betrifft nur Zustandswerte von Objekten vom Typ "Array" oder "Objekt".
Also muss man u. U. dort auch noch etwas machen…
-
@paul53
script lief - ohne fehler
ich kann keine datenpunkt in meiner struktur anlegen - liegt das daran, dass der typ von controll-own falsch ist ?wenn ja - kann ich noch was tun - oder nur als expert arbeiten bzw mit der alten benutzeroberfläche für den objecte-tab
das umstellen der struktur nach userdata ist eher keine option - dp unter controll-own: 771, scripte: sehr viele - vis : sehr viele
-
@liv-in-sky sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
liegt das daran, dass der typ von controll-own falsch ist ?
ja. Das ist das klassische Problem
@liv-in-sky sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
kann ich noch was tun
ebenfalls ja - @paul53 hatte das irgendwo beschrieben.
man musste irgendwo / irgendwie dieses "Verzeichnis" mit identischem Namen nochmal als "folder" anlegen -
@liv-in-sky sagte: oder nur als expert arbeiten
So ist es, wenn manuell Datenpunkte unter "controll-own" erstellt werden sollen (hatte ich oben nachträglich geschrieben).
Weshalb ist "controll-own.0" ein Folder-Objekt? Ändere es in den Eigenschaften in "meta".
-
@homoran sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
ebenfalls ja - @paul53 hatte das irgendwo beschrieben.
man musste irgendwo / irgendwie dieses "Verzeichnis" mit identischem Namen nochmal als "folder" anlegenich kann auf der eben ja nix anlegen- wäre ja die unterste ebene - bei der alten benutzeroberfläche hat man einfach nichts ausgewählt und dann etwas angelegt - jetzt funktioniert das nicht mehr
ok - doof für mich - danke
das umstellen ist viel aufwand - man bräuchte ein script (für die objecte) welche die objekte liest (mit history,usw) und die states und diese dann neu anlegt und die states setzt- dann müßte auch für die aliase ein korrektur script gemacht werden - für die vis muss jede view in jedem project angefasst werden und die dp ersetzt werden. js-scripte einzeln zu verändern ist viieel zu aufwendig - da müßte man doch über die linux ebene arbeiten und mit einem bash script alles durchgehen - blockly/rules würden nur einzeln zu ändern sein, flot muss einzeln geändert werden.adapter wie smart control und iqontrol sind auch noch da
sehe ich das falsch und/oder habe ich noch was vergessen ? -
@paul53 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
Weshalb ist "controll-own.0" ein Folder-Objekt? Ändere es in den Eigenschaften in "meta".
das habe ich von hand geändert - ich habe mich nicht "getraut" meta daraus zu machen - da ich nicht weiß, ob das irgendwelche auswirkungen haben kann, wenn ich ein solches, selbstangelegtes object zu meta mache
-
@liv-in-sky sagte: irgendwelche auswirkungen haben kann, wenn ich ein solches, selbstangelegtes object zu meta mache
Es hat keine Auswirkung, entspricht aber dem Standard, dass Objekte der zweiten Punkt-Ebene ("xyz.0") vom Typ "meta" sind.
-
habe nur das geändert - sollte so ok sein
-
@dr-bakterius Ja Du kannst den JavaScript code Anpassen aber das ändert nichts an den Daten in den Blocklies ... Sobald du das Blockly dann im Editor anfassen würdest wäre alles zurückgestellt. Das geht nicht
-
@liv-in-sky Typ Meta??? Warum? Wozu? Das ist an sich falsch
-
@apollon77 was soll ich da reinschreiben ? was hälst du für besser
-
@cash sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
Bzw gibt es eine Möglichkeit einfach alle Objekte von "eigene Objekte" nach 0_userdata zu kopieren.
Hatten wir weiter oben schonmal: Objekt-Export im Admin, texteditor Search&Replace, Object Import im Admin
-
@apollon77 sagte: Typ Meta??? Warum? Wozu? Das ist an sich falsch
Was ist daran falsch? "0_userdata.0", "0_test.0", "admin.0", "alias.0" ... haben auch den Typ "meta".
-
@liv-in-sky Ich denke das wird faktisch nicht funktionieren weil Admin denkt das das ein Adapter ist und deren Objekte darf keiner ändern. Vllt im Expertenmodus? Ansonsten halt zum anlegen von neuen Objekten dort mit ner zweiten Admin Instanz mit alter UI arbeiten so lange bis Du umgestellt hast
-
@paul53 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
Weshalb ist "controll-own.0" ein Folder-Objekt? Ändere es in den Eigenschaften in "meta".
Nee bitte nicht meta ... Das ist für was anderes
-
@apollon77 sagte: Vllt im Expertenmodus?
Ja, nur im Expertenmodus.
-
@paul53 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
Ob man aus der letzten Zeile wieder ein Blockly machen kann?
Man kann, ich habe dazu auch schon verschiedene Beiträge gepostet. Die Behandlung ist etwas unterschiedlich je nachdem woher die Daten kommen(Extract aller Skripte, Blockly.js, backup.json). Hier mal für ein Beispiel für eine Blocklydatei im Mirrorpfad. Man könnte diese auch gleich ins System einlesen, ist hier aber nicht gemacht sondern wird als Datei zur Verfügung gestellt. Ist ein Skript aus meiner ersten Zeit mit Javascript.
Pfad und Filename sind in den Zeilen 8 + 9 anzugeben, die Importdaten liegen dann als Datei.xml vor/** * Zweck: Extrahiert XML Datei aus Blockly.js im Mirror-Pfad * Datum: 08.08.2021 * Autor: @fastfoot */ var fs = require('fs'); var scriptPath = '/opt/iobroker/scripts/'; var inFile = 'TestXY' var scriptName1 = scriptPath + inFile + '.js'; var scriptName2 = scriptName1.replace('.js','.xml'); function getXML() { fs.readFile(scriptName1, 'utf8', function(error, data) { if(error) log('Fehler beim Lesen von ' + scriptName1, 'error'); else { const pos = data.lastIndexOf('\n'); if (pos !== -1) { data = data.substring(pos + 1); if (data[0] === '/' && data[1] === '/') { data = decodeURIComponent(Buffer.from(data.substring(2), 'base64').toString('utf8')); if (data.startsWith('<xml xmlns')) { fs.writeFile(scriptName2, data, function(err) { if(err) return console.log(err); }); } } } } }); } getXML();
-
@apollon77 said in Admin5: Ich kann keine Objekte mehr manuell anlegen:
Nee bitte nicht meta ... Das ist für was anderes
Wofür ist meta? Und warum ist 0_userdata dann meta?
-
@apollon77 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
Ansonsten halt zum anlegen von neuen Objekten dort mit ner zweiten Admin Instanz mit alter UI arbeiten so lange bis Du umgestellt hast
sorry - aber das ist wie von neu anzufangen
- vis
- nodered
- blockly
- aliase
- alle js scripte
- flot
- smart controll adapter setting
- iqontrol setting
- eventlist adapter setting
muss alles umgestellt werden und soll am ende auch noch funktionieren
ich hoffe einfach, dass wird in der zukunft keine auswirkungen haben - ich kann damit leben, dass ich keine objecte mehr anlegen kann bzw nur im expert modus - neue sachen kann ich unter userdata machen -aber das alte alles umzustellen wäre etwas zuviel verlangt
-
@cash Ein meta Objekt ist die Grundlage um im ioBroker.eigenen File-Storage Dateien ablegen zu können.
0_userdata.0 hat es weil man auch unter dem Namespace Visu-Files ablegen können soll das man nicht immer alles in die Namespaces der Visu Adapter legen muss.