NEWS
Speicherort für Objects / States / Folders
-
Hallo zusammen,
ich nutze ioBroker zusammen mit Redis und musste schon mehrmals in Redis händisch etwas anpassen. Dabei ist mir aufgefallen, dass das, was in Redis gespeichert ist, nicht unbedingt dem Inhalt des "Objects"-Tab im ioBroker entspricht.
Daher stellt sich die Frage für mich: Wie wird der Objektbaum im ioBroker gebildet? Die Daten scheinen ja nicht ausschließlich aus Redis zu kommen - gibt es eine Datei oder interne Datenbank, die parallel geführt wird?
Wie wird die Baumstruktur erzeugt? Gibt es für jeden Node irgendwo einen Eintrag in einer Datenbank oder werden diese aus der ID beim Einlesen erzeugt?Vielleicht kann mir jemand helfen, die Internas zu verstehen - ich denke das hilft bei der Lösung des ein oder anderen Problems...
-
Hallo zusammen,
ich nutze ioBroker zusammen mit Redis und musste schon mehrmals in Redis händisch etwas anpassen. Dabei ist mir aufgefallen, dass das, was in Redis gespeichert ist, nicht unbedingt dem Inhalt des "Objects"-Tab im ioBroker entspricht.
Daher stellt sich die Frage für mich: Wie wird der Objektbaum im ioBroker gebildet? Die Daten scheinen ja nicht ausschließlich aus Redis zu kommen - gibt es eine Datei oder interne Datenbank, die parallel geführt wird?
Wie wird die Baumstruktur erzeugt? Gibt es für jeden Node irgendwo einen Eintrag in einer Datenbank oder werden diese aus der ID beim Einlesen erzeugt?Vielleicht kann mir jemand helfen, die Internas zu verstehen - ich denke das hilft bei der Lösung des ein oder anderen Problems...
wenn redis-cli installiert ist, kannst du es selbst prüfen.
ich hab iobroker als docker-service laufen und redis in einem eigenen container dazu.redis ist eine key/value datenbank
d.h. ein eintrag hat einen eindeutigen schlüssel und dazu wird ein beliebiger wert gespeichert.auf dem rechner auf dem redis läuft und redis-cli installiert ist, kannst du
die interaktive shell von redis mitredis-clistarten.
danach kannst du mit
keys *alle schlüssel ausgeben.
den wert eines schlüssels kann man mitget <key>abrufen.
Da redis auch in einem cluster laufen kann und sich gegenseitig synchronisieren oder spezielle datentypen behandeln kann. gibt es noch viel mehr befehle.
Alle weiteren Befehle
https://redis.io/commands/ -
Ich habe mir die Datenbank angeschaut - finde aber dazu keine Einträge für Verzeichnisse.
Es gibt Einträge für Objekte und States, aber quasi auch nur die komplette ID (wenn ich mich nicht irre).
Also z.B. 0_userdata.0.folder.subfolder.device.channel.stateIch könnte aber z.B. 0_userdata.0.folder.subfolder anlegen - habe ich einfach nur nicht gesehen, dass dazu was in der Redis-DB steht, oder gibt es noch einen anderen Ablageort?
Momentan habe ich das Problem, dass durch einen Programmierfehler ziemlich viele Einträge unter 0_userdata.0.home.devices gibt - wenn ich mir die Eigenschaften ansehe, dann sehe ich aber sowas:
{ "type": "channel", "common": { "name": "power", "desc": "", "role": "", "icon": "" }, "from": "system.adapter.javascript.1", "user": "system.user.admin", "ts": 1648589645246, "_id": "alias.0.home.devices.1.power", "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }Man beachte die ID - die gar nicht dazupasst...
Erst habe ich gedacht, dass die ganzen Einträge im Cache des Clients gehalten werden, aber auch auf einem anderen PC sehe ich diese Phantom-Objekte, obwohl ich schon alles bei Redis rausgelöscht habe, was mit der obigen Objekt-ID anfängt...
Habt Ihr noch Tipps, wo ich suchen kann?
-
was meinst du mit "Verzeichnisse"?
also es gibt objects (beginnt in redis mit cfg.o.datenpunktname)
und states (beginnt in redis mit io.datenpunktname)objects können typen haben (channel, device, state, es gibt aber auch directory)
die Darstellung im objektbaum in iobroker wird anhand des Punktes im Datenpunktnamen erstellt. Das könntest du als Verzeichnis bezeichnen?
In der Objektbaumansicht gibt es "Verzeichnisse", die ein eigenes Objekt darstellen (erkennbar, das in spalte type etwas drin steht)
Alle anderen "Verzeichnisse" sind nur visueller Natur (wie schon erwähnt erzeugt aufgrund des Punktes im Datenpunktnamen) -
@oliverio sagte in Speicherort für Objects / States / Folders:
Ah okay, ich hab das grad nachgeschaut - ich meinte Objekte vom Typ "folder". Mich hatte es gewundert, dass es Einträger im admin gab, die man nicht bearbeiten kann und dachte dass es irgendwelche internen Strukturen gäbe.Dann ist mir jetzt klar, wie die Struktur aufgebaut wird, danke für die Aufklärung! :)
Wo könnten denn die ganzen seltsamen Einträge herkommen?
Wenn ich "KEYS cfg.o.*" im redis-cli eingebe, erhalte ich 28692 Einträge, im admin sehe ich 29699 Einträge... wo kommt dann die Diskrepanz her?Und wie kann es sein, dass im admin ein Eintrag unter "0_userdata.0.home.devices.01 - sunrise.power" angezeigt wird, der als "_id" einen Wert "alias.0.home.devices.01 - sunrise.power" drin stehen hat?
Ich habe im Redis alle möglichen Varianten dafür gesucht, aber unter 0_userdata und auch unter alias findet er keine entsprechenden Einträge...
-
@oliverio sagte in Speicherort für Objects / States / Folders:
Ah okay, ich hab das grad nachgeschaut - ich meinte Objekte vom Typ "folder". Mich hatte es gewundert, dass es Einträger im admin gab, die man nicht bearbeiten kann und dachte dass es irgendwelche internen Strukturen gäbe.Dann ist mir jetzt klar, wie die Struktur aufgebaut wird, danke für die Aufklärung! :)
Wo könnten denn die ganzen seltsamen Einträge herkommen?
Wenn ich "KEYS cfg.o.*" im redis-cli eingebe, erhalte ich 28692 Einträge, im admin sehe ich 29699 Einträge... wo kommt dann die Diskrepanz her?Und wie kann es sein, dass im admin ein Eintrag unter "0_userdata.0.home.devices.01 - sunrise.power" angezeigt wird, der als "_id" einen Wert "alias.0.home.devices.01 - sunrise.power" drin stehen hat?
Ich habe im Redis alle möglichen Varianten dafür gesucht, aber unter 0_userdata und auch unter alias findet er keine entsprechenden Einträge...
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden