NEWS
[gelöst]OIDs: Manche User-Ordner nicht änderbar?
-
@iobnordlicht wie hast du die ORdner angelegt ?? da fehlt in RAW object ein state
also wie hast du diese Ordner angelegt ?
-
@arteck
"oben" über "+"?State wäre dann "Folder"?
Kann ich das irgendwie durch die Hintertür den Ordnern aufzwingen, oder muss ich nun jeden einzelnd neu anlegen?
-
@iobnordlicht sagte in OIDs: Warum kann ich nur manche meiner User-Ordner ändern?:
@arteck
"oben" über "+"?alle?
ganz sicher?nicht Datenpunkt angelegt mit Vorgabe eines neuen Verzeichnisses?
wieneuer Datenpunkt: intern.DG.actors.Heizung.Schaltzeit
? -
@iobnordlicht sagte in OIDs: Warum kann ich nur manche meiner User-Ordner ändern?:
State wäre dann "Folder"?
Kann ich das irgendwie durch die Hintertür den Ordnern aufzwingen, oder muss ich nun jeden einzelnd neu anlegen?noch'n nachträgliches edit ohne Kennzeichnung!
ja, du musst genau das im darüber liegenden Verzeichnis machen.
-
@homoran
Zu lange her.... weiß ich nimmer sicher, tut mir leid. -
@iobnordlicht sagte in OIDs: Warum kann ich nur manche meiner User-Ordner ändern?:
aber die anderen von mir angelegten Ordner nicht?
Recht einfach: Weil die anderen gar keine Objekte sind. Die existieren einfach nicht, sondern die Hierarchie wird vom Admin nur so dargestellt. Du kannst z.B. einfach ein Objekt vom Typ
state
anlegen, welches die ID0_userdata.0.bla.test.hallo.funktioniert
hat (z.B. mit dem JavaScript-Adapter). Dann stellt der Admin das so dar wie bei Dir.Dafür muss es (technisch gesehen) nicht die Objekte vom Typ
folder
geben. Diese gibt es dann nicht:0_userdata.0.bla
0_userdata.0.bla.test
0_userdata.0.bla.test.hallo
Für die Funktionalität ist es aber auch total unerheblich ob es die gibt oder nicht. Könnte man noch manuell anlegen.
-
@haus-automatisierung
ok, verstehe!
Wenn ich die per Hand hinzufügen möchte gibt es im json die Variable "ts", die so wie eine eindeutige ID aussieht.
Kann man die weglassen und es funktioniert trotzdem beim Import?Bytheway: Vielen Dank für den super tollen Youtube Channel
-
@iobnordlicht
ts
ist eine Eigenschaft vom State, nicht vom Objekt. Verstehe die Frage nicht so richtigEDIT: Ach stimmt, Objekte haben auch einen
ts
. Ist einfach nur ein Zeitstempel, wann das Objekt angelegt/bearbeitet wurde. Setz einfach den aktuellen Timestamp -
@iobnordlicht sagte in OIDs: Warum kann ich nur manche meiner User-Ordner ändern?:
die Variable "ts",
ist der timestamp
überschreib die bestehenden Folder mit identisch benannten, indem du sie aus der darüberliegenden Ebene nochmal anlegst
-
@homoran
Genau das wollte ich gerade per json, da es so viele Ordner sind, da klicke ich mich sonst wund
Ich nehme z.B."0_userdata.0.Variablen": { "common": { "name": "Variablen" }, "type": "folder", "_id": "0_userdata.0.Variablen", "acl": { "object": 1604, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1706487026455 },
und paste es als
"0_userdata.0.extern": { "common": { "name": "extern" }, "type": "folder", "_id": "0_userdata.0.extern", "acl": { "object": 1604, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1706487026455 },
Lass ich dann beim gepasteten die TS weg, oder braucht er die, damit er erkennt, dass überschrieben werden soll?
Sonst hänge ich halt einen aktuellen an, aber muss ich das zwingend?
❯ date +%s 1706525036
-
@iobnordlicht
Wenn per "+" ein Verzeichnis-Objekt erstellt wird, muss nur der Typ und der Name (identisch wie in der ID) eingegeben werden. Den Rest macht der Admin automatisch. Fummel nicht in der Objekt-Ansicht (JSON) rum!
Beispiel "extern": Selektiere "0_userdata.0" und erstelle dort ein Objekt vom Typ "Verzeichnis" mit dem Namen "extern". -
@paul53
Das Programm bietet mir Import und Export an um komplexere Veränderungen vorzunehmen und genau das nutze ich in genau diesem SinneIch habe diesen Baum aus Variablen schon mehrfach umstrukturieren müssen, wenn ich das jedesmal pro Objekt von Hand durchführen würde, werd ich ja kirre!
Und dieser Thread dient ja dazu, dass ich lerne, es richtig zu machen, nicht wahr?
-
@iobnordlicht sagte in OIDs: Warum kann ich nur manche meiner User-Ordner ändern?:
Lass ich dann beim gepasteten die TS weg, oder braucht er die, damit er erkennt, dass überschrieben werden soll?
Achso, das ist nur ein Timestamp wann das Objekt angelegt wurde. Das ist nur eine Info. Überschrieben wird nur, wenn die Objekt-ID gleich ist. Dein Objekt
0_userdata.0.Variablen
verschwindet davon also nicht. -
Ok, timestamp war noch falsch, ist in Millisekunden, alles klar. Werde den "jetzt" Timestamp hinzufügen, wird schon schiefgehen, mit Backups kenne ich mich aus.
❯ date +%s%3N 1706525543164
Liegt also an den fehlenden "folder" Objekten, die füge ich nun einmal hinzu, mal sehen, ob es so einfach wird.
-
@iobnordlicht sagte in OIDs: Warum kann ich nur manche meiner User-Ordner ändern?:
die füge ich nun einmal hinzu, mal sehen, ob es so einfach wird.
Nimm einfach ein anderes Folder-Objekt als Template und pass nur die ID an.
-
@haus-automatisierung
Eine Frage taucht gerade noch auf:
Es gibt bei den ACLs ein Objekt, hier 1604.Wie gehe ich damit bei Cut&Paste um? Bei meinen exportierten jsons scheint das überall den gleichen Wert 1604 zu haben..
-
@iobnordlicht Lies dich gern mal ein
-
@haus-automatisierung
Ach, das ist ja wie Unix Rechte, alles klar!Gut, hab mir ein kleines Python zur dynamischen Erstellung der notwendigen JSON erstellt, wer es auch nutzen möchte:
iobBuildJsonTree.pyImport hat super geklappt, alles ist nun editierbar, weil mit folder-Objekten.
Beispiel:
❯ iobBuildJsonTree.py -h usage: iobBuildJsonTree.py [-h] -o [OID] [-f] ioBroker JSON-file Tree builder based on targeted OID. Easily create multiple directories in one step based on the breadcrumb of an OID. Example: /usr/local/bin/iobBuildJsonTree.py -o 0_userdata.0.neuer.Baum Ergebnis in ioBroker: 0_userdata └0 └neuer └Baum options: -h, --help show this help message and exit -o [OID], --oid [OID] Zu beschreibende OID, kann mehrfach aufgeführt werden -f, --force Auch außerhalb von 0_Userdata zulassen ❯ iobBuildJsonTree.py -o 0_userdata.0.tste.den.Pfad { "0_userdata.0.tste": { "common": { "name": "0_userdata.0.tste" }, "type": "folder", "_id": "0_userdata.0.tste", "acl": { "object": 1604, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1706562475416 }, "0_userdata.0.tste.den": { "common": { "name": "0_userdata.0.tste.den" }, "type": "folder", "_id": "0_userdata.0.tste.den", "acl": { "object": 1604, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1706562475416 }, "0_userdata.0.tste.den.Pfad": { "common": { "name": "0_userdata.0.tste.den.Pfad" }, "type": "folder", "_id": "0_userdata.0.tste.den.Pfad", "acl": { "object": 1604, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1706562475416 } }