NEWS
$-Operator liefert nicht alles
-
Hallo,
mir ist aufgefallen, dass der $-Operator nur dann etwas zurückliefert, wenn sich innerhalb der angefragten Struktur States befinden.
Beispiel: 0_userdata.0.home.devices.nas ist als "device" angelegt.
Ein$('0_userdata.0.home.devices.*').each(function(id, i) { log(id); });
sollte etwas zurückliefern - das tut es aber nur, wenn z.B. 0_userdata.0.home.devices.test als State angelegt wurde.
Auch ein $('device[id=...]')... liefert nichts, obwohl das doch alle Objekte vom Typ "device" zurückliefern sollte, oder?
Eigentlich wollte ich unter 0_userdata.0.home.devices jeweils ein "leeres" Device anlegen, das dann per Skript mit einer vordefinierten Struktur befüllt werden soll. Aber das scheitert daran, dass mein Skript den Eintrag nicht findet...
Hat jemand eine Idee, woran das liegt und wie ich das Problem beheben oder zumindest umgehen kann (ohne manuell States anzulegen
)?
-
@antimon sagte in $-Operator liefert nicht alles:
Beispiel: 0_userdata.0.home.devices.nas ist als "device" angelegt.
ordnungsgemäß als Objekt?
-
@homoran definiere "ordnungsgemäß"
Ich habe es über admin angelegt - daher gehe ich aus, dass es "ordnungsgemäß" istBeispiel:
{ "common": { "name": "pve", "desc": "Manuell erzeugt", "role": "", "icon": "" }, "type": "device", "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1648676318434, "_id": "0_userdata.0.home.devices.pve", "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
@antimon sagte: woran das liegt
Der $-Selektor erfasst nur Datenpunkte.
Geräte ohne Datenpunkte sind für ioBroker sinnfrei. -
@paul53 Okay - das heisst... entweder einen "Dummy"-Datenpunkt anlegen, damit das device "visible" wird?
Oder gibt es eine andere Methode, den Objektbaum auszulesen? -
@antimon sagte: gibt es eine andere Methode, den Objektbaum auszulesen?
Ich kenne keine. Vielleicht eine Aufzählung, unter die man die Geräte packt?
-
@antimon Wofür brauch man denn die Geräte, wenn sie keine Datenpunkte haben?
Da muss ichPaul zustimmen@paul53 sagte in $-Operator liefert nicht alles:
Geräte ohne Datenpunkte sind für ioBroker sinnfrei.
-
@homoran Naja wie schon gesagt sollen die Datenpunkte durch ein Skript angelegt werden. Das ist ein paar Sekunden "sinnfrei", bis das Skript seine Arbeit erledigt hat - das leere Device dient nur als "Template" oder "Container", damit das Skript weiß, wo es eine Struktur hinlegen soll.
Warum sollte ich alle Datenpunkte von Hand anlegen, wenn das auch automatisiert erledigt werden kann?
@paul53 sagte in $-Operator liefert nicht alles:
Ich kenne keine. Vielleicht eine Aufzählung, unter die man die Geräte packt?
Wenn du keine kennst, dann gibts keine
Die Idee gefällt mir - eigentlich brauche ich ja nur eine Liste mit Gerätenamen, die dann entsprechend befüllt werden... -
@antimon sagte: die Datenpunkte durch ein Skript angelegt werden.
Weshalb dann nicht auch das zugehörige Gerät?
-
@paul53 Das hat sich jetzt etwas überschnitten...
Ja, wenn ich die Liste der Geräte woanders herbekomme, passt das. Meine Idee war ursprünglich, einfach die Objekte anzulegen und dann befüllen zu lassen.
In den Metadaten der Objekte sollen nämlich auch noch Abhängigkeiten erfasst werden (Gerät x ist von Gerät y abhängig, z.B. PC ist von geschalteter Steckdose abhängig), um Geräte in einer bestimmten Reihenfolge hoch-/runterfahren zu können. Da muss ich eh in die Eigenschaften des Objekts um das zu bearbeiten - oder ich lege mir in JS eine Struktur mit den benötigten Informationen an, das wäre auch noch eine Idee...