NEWS
Admin5: Ich kann keine Objekte mehr manuell anlegen
-
@liv-in-sky sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
@fastfoot vielen dank - ich muss das script mal in ruhe ansehen - schaut interessant aus
ist kein Hexenwerk.
- Es wird jedes Objekt geprüft, ob es ein Skript ist(type == 'script'). Wenn ja, wird das Skript so wie es ist in das System übernommen, mit der Endung .bak. Allerdings nur wenn es nicht vorhanden ist und die Variable zum Einlesen ins System gesetzt ist(restoreToSystemDb == true). Diese Funktionalität eignet sich nur für ein Restore bei verlorenem Skript
- Soll das Skript als File gespeichert werden(restoreAsFile == true) dann wird der Typ bestimmt(blockly, js, ts) und entsprechend der Source extrahiert und mit der passenden Endung ins Dateisystem geschrieben
- Im zweiten Fall kann man ein einfaches replace einbauen, um die Datenpunkte zu ändern. Für js Files könnte man entsprechend den Punkt 1 aufbohren, für Blocklys jedoch nicht da hier nur das XML extrahiert wird, der vorangestellte js code jedoch nicht behandelt wird, das ist also ungeeignet zum direkten Import ins System
- Für alle Skripte wird eine Summary gebildet und ins Dateisystem geschrieben, so als Übersicht was man alles an Skripten hat. Dies passiert unabhängig davon ob man Skripte importiert oder als Datei schreibt
Zum Spielen damit ist halt ein Testsystem sehr gut geeignet. Da ich Docker verwende ist ein solches in wenigen Minuten erstellt und auch schnell wieder gelöscht. Wobei, wenn man nur ins Dateisystem exportiert kann man absolut nichts falsch machen, die einzulesende objects.json muss ja eh eine Kopie des Originals sein, das geht auch wenn man nur ein System zur Verfügung hat
-
das habe ich sicherlich übersehen.
-
dann suche ich mir das mal mir raus. Vielleicht kann man das ja irgendwann nochmal gebrauchen.
-
@falke69 Das ist doch oben in dem 1. Beitrag hier in dem Thread von apollon77 verlinkt
-
Danke! Muss ich übersehen haben.
-
@falke69 sagte: dann suche ich mir das mal mir raus.
Diese Variante erzeugt eine bessere Struktur.
-
Dann teste ich die Variante auch gleich mal auf meinem Testsystem.
-
@paul53 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
@falke69 sagte: dann suche ich mir das mal mir raus.
Diese Variante erzeugt eine bessere Struktur.
Ohne jetzt eine Riesendiskussion anzuschmeißen - aber ich persönlich bevorzuge nur den type Folder für bislang nicht existierende Objekte. Gerade bei selbst angelegten Strukturen, sind das eben oft keine Geräte oder Kanäle. Sobald ich die letzten Ebenen nicht als Folder, sondern als Gerät oder Kanäle anlege beschränke ich mich dann doch von vorneherein bzw. zukünftig auf die Hiearchietiefe und das ist oft nicht gewünscht.
-
Welche Variante ist jetzt iob (admin) konform?
-
@sigi234 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
Welche Variante ist jetzt iob (admin) konform?
Alles was oben in dem ToolTipp aufgeführt ist.
Und dazu gehört auch Ordner => Zustand
Ich hab mich ja nur etwas an dem Wort "besser" gestört - aber wie gesagt wollte keine Diskussion anwerfen, Nachteile habe ich ja schon gesagt und sieht man ja oben. Sobald ein Datenpunkt in der Hierarchie ein Kanal ist gehts nicht mehr tiefer und man kann nur noch Zustände anlegen.
-
Kann man im Skript auch einbauen ob und wie viele Daten geändert wurden?
-
@mickym sagte: Ich hab mich ja nur etwas an dem Wort "besser" gestört
Das bezieht sich auf eine Struktur, in der man im Trigger z.B. auf den Kanalnamen oder Gerätenamen zugreifen will.
-
@sigi234 sagte: Kann man im Skript auch einbauen ob und wie viele Daten geändert wurden?
Du meinst, einen Änderungszähler?
-
@paul53 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
@sigi234 sagte: Kann man im Skript auch einbauen ob und wie viele Daten geändert wurden?
Du meinst, einen Änderungszähler?
Jupp
-
@paul53 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
@mickym sagte: Ich hab mich ja nur etwas an dem Wort "besser" gestört
Das bezieht sich auf eine Struktur, in der man im Trigger z.B. auf den Kanalnamen oder Gerätenamen zugreifen will.
Gut, aber halt der Nachteil dass ich dann in der Art meiner Typen der Kinder beschränke. Wie gesagt - gibt in meinen Augen hier nicht den "Königsweg" und sobald ein Objekt ja existiert, kann man es ja auch nachträglich manuell wieder ändern.
Ich würde deshalb sagen:
Wenn Kanal oder Geräte: Vorteil über diese zu Triggern
Wenn Folder: Keine Beschränkung in der Hierarchietiefe -
@sigi234
Mit einer Zählvariablen sollte es funktionieren.// In den Settings der Javascript-Instanz muss setObject erlaubt sein!!! const ids = $('javascript.1.*'); // Anpassen!! var arr = []; var cnt = 0; function correctObject(id, arr, level){ if(arr.length === 2) return; let type = 'folder'; if(level == 1) type = 'device'; else if(level == 0) type = 'channel'; if(!existsObject(id)) { const obj = { type: type, common:{ name: arr[arr.length - 1] }, native: {} } setObject(id, obj, e => { if (e) log('Fehler beim Schreiben des Objektes: '+ id + ' ' + e); else cnt++; }); } arr.pop(); id = arr.join('.'); level++; correctObject(id, arr, level); } ids.each(id => { arr = id.split('.'); arr.pop(); id = arr.join('.'); if(arr[0] === '0_userdata' || arr[0] === 'javascript' || arr[0] === 'alias') { correctObject(id, arr, 0); } }); setTimeout(function() { log('Anzahl Änserungen: ' + cnt) }, 1000);
-
@sigi234 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
Welche Variante ist jetzt iob (admin) konform?
Beide wurden von appolon verlinkt und sind also konform
@mickym hat da aber einen guten Punkt. Hat man sich zB einen DP MeinHaus.Obergeschoss.LichtAn angelegt dann kann man mit Pauls Variante keine weitere Hierarchie unterhalb Obergeschoss (z.B. Kinderzimmer, Schlafzimmer) mehr hinzufügen, da MeinHaus als Device eingestellt ist und Obergeschoss als Channel. Unter Channels können jedoch nur noch States eingefügt werden, keine weiteren 'Ordner'. Mit meiner ursprünglichen Variante dass alles(ausser LichtAn) ein folder wird, ist man da nicht eingeschränkt. Für die meisten Nutzer, welche mit Device und Channel eh nichts anzufangen wissen(ich zähle mich dazu bzw. brauche das schlicht nicht) dürfte mein Ursprungsskript völlig ausreichend sein. Für Leute welche ihre Strukturen gut kennen, ist Pauls Alternative eine gute Lösung. Wobei, wer Devices und Channels tatsächlich braucht, der hat seinen DP von vornherein nicht so angelegt, denn mit der alten UI hatte man diese Zuordnung ja auch nicht
-
-
@sigi234 sagte: Anzahl Änderungen: 0
Ich habe noch eine Verzögerung von 1 s ergänzt (s.o.). Das Script enthält nur Schleifen, deshalb am Ende mit Verzögerung.
-
Ich habe auch gerade festgestellt, dass außer unter userdata, der admin auch im Expertenmodus sowieso verbietet, Verzeichnisse anzulegen.
Im mqtt-Adapter kann man so keine Ordner mehr anlegen (nur im userdata)
das wurde aber generell im Parallelthread schon diskutiert - das man das sowieso zukünftig ganz unterbinden will und künftig eigene Datenpunkte und Datenstrukturen (Folder) ausserhalb von userdata und alias nur noch über die Adapterkonfiguration erlaubt.
Und für die mqtt Freunde: Zukünftig muss man eigene Hierachien dann über seinen Broker machen - indem man dann halt über NodeRed (mqtt-out) oder mosquitto client weitere Hierachien durch eigene Topics erstellt - auch wenn man den mqtt Adapter als mqtt-Broker betreibt!
Aber wie gesagt für die 0_userdata Strukturen ist das Argument bzgl. der Hierarchieebenen vielleicht doch zu bedenken!