NEWS
Verständnisfrage zu Aliase / Verknüfungen
-
@codierknecht
Ja, aber so springe ich in Javaskript & Vis immer zwischen alias.0 und 0_userdata .
Bei mir ist alles unter userdata ... -
@tourer4778
Aber dafür sparst Du Dir vermutlich eine ganze Reihe Scripte und gehst vermutlich deutlich sparsamer mit Systemressourcen um.
So ist eben das Konzept.0_userdata.0
für eigene Datenpunkte, die nicht durch einen Adapter beschrieben werden.alias.0
als Referenz auf fremde DP, die zu einem Adapter gehören, damit man problemlos das zugehörige Gerät austauschen kann und/oder für einfache Konvertierungen.so springe ich in Javaskript & Vis immer zwischen alias.0 und 0_userdata
Immer noch deutlich komfortabler als zwischen
alexa
undzigbee
"springen" zu müssen -
@tourer4778 sagte in Verständnisfrage zu Aliase / Verknüfungen:
Jetzt habe ich das mit Aliase gehört und ich finde den Aufwand nicht so viel weniger und etwas mehr unübersichtlicher, da ich in unterschiedlichen Instanz Ordnern arbeite.
Ich erkläre das immer so, dass unter
alias.0
keine "echten" Daten liegen. Das sind "keine richtigen Datenpunkte", die verhalten sich aber genau so.Die Informationen werden also nur aus der Quelle "gespiegelt", wie eine Verknüpfung unter Windows im Dateisystem. Die belegen ja auch nicht nochmal den Platz auf der Festplatte. Es existiert quasi nur die Objekt-Beschreibung (Objekt-Datenbank), aber es existiert kein Zustand in der State-Datenbank. Der wird immer aus der Quelle/dessen Zustand errechnet! Wie bei der Verknüpfung unter Windows, welche zwar einen eigenen Namen, Pfad und ein eigenes Icon haben kann, aber sie hält die Daten selbst nicht, sondern zeigt nur darauf.
Wenn Du unter
0_userdata.0
einen Datenpunkt anlegst, dann wird der Wert dahinter wirklich in die Zustands-Datenbank gespeichert. Spiegelst Du nun also die Werte mit Scripts, dann hast Du jeden Wert zwei mal und eine echte Kopie davon.Ein weitere Vorteil von
alias.0
ist: Du bist unabhängig von irgendwelchen Adaptern oder laufenden Instanzen. Wenn der JavaScript-Adapter mal nicht läuft oder gerade ein Update bekommt, dann werden in der Zeit Deine Werte in0_userdata.0
nicht aktualisiert. Damit laufen die Werte eventuell auseinander. Unteralias.0
erledigt das alles derjs-controller
. Ohne dass auch nur eine Instanz laufen muss.Hier hatte ich das mal etwas zusammengeschrieben: https://iobroker.readthedocs.io/de/latest/basics/aliases.html
-
@haus-automatisierung
Okay, danke für die Erklärung.
Ich möchte mein Visu überarbeiten und sammele derzeit noch Ideen, die mir helfen können und die ich dabei gleich mit umsetze. Ganz nebenbei weiß ich seit gestern, das man seine Datenpunkte auf 0_userdata anlegen sollte und nicht auf Java... . Ist zwar viel Arbeit, aber das sollte die Struktur schon mal passen. Ich werde das mit Alias mal umsetzen.
Danke an alle, ich finde das hier echt super und ihr gebt euch sehr viel Mühe. -
@haus-automatisierung said in Verständnisfrage zu Aliase / Verknüfungen:
Ich erkläre das immer so, dass unter alias.0 keine echten Daten liegen. Das sind keine eigenen Datenpunkte, die verhalten sich nur so. Die Informationen werden also nur dahin "gespiegelt", wie eine Verknüpfung unter Windows im Dateisystem. Die belegen ja auch nicht nochmal den Platz auf der Festplatte.
Ist das wirklich so?
Die Konfigurationsmöglichkeiten eines Alias-Datenpunkt legen ja erstmal nahe, dass da mehr dahintersteckt...
Readable / Writeable
Man kann unterschiedliche IDs für Read und Write verknüpfen, und Konvertierungsfunktionen angeben ...
-
@martinp sagte in Verständnisfrage zu Aliase / Verknüfungen:
Die Konfigurationsmöglichkeiten eines Alias-Datenpunkt legen ja erstmal nahe, dass da mehr dahintersteckt...
Es gibt natürlich ein Objekt. Das ist aber was anderes als der Zustand selbst. Also ein Alias steht in der Objekt-DB, aber nicht in der State-DB.
Fürs Wording: Ein Datenpunkt ist (für viele hier) immer ein Objekt + Zustand. Daher in Anführungszeichen, weil es nur noch ein Objekt ist, und der Zustand errechnet / bzw. nur aus dem anderen Datenpunkt geholt wird. Habe den Post nochmal bearbeitet, damit es eindeutiger wird.
@martinp sagte in Verständnisfrage zu Aliase / Verknüfungen:
Man kann unterschiedliche IDs für Read und Write verknüpfen, und Konvertierungsfunktionen angeben ...
Ja, das habe ich in dem Link oben ja auch so erklärt?
Wo widerspricht das meinen Aussagen?
-
@haus-automatisierung sagte: ein Alias steht in der Objekt-DB, aber nicht in der State-DB.
Ein Alias ist ein vollständiger Datenpunkt inkl. Zustand.
-
@paul53 Ja, aber der Zustand wird nur intern berechnet und landet nicht in der Datenbank - schreibe ich so missverständlich?
-
@haus-automatisierung sagte: der Zustand wird nur intern berechnet und landet nicht in der Datenbank
Bist Du sicher?
-
Noch eine Frage.
Wenn ich einen Alias erstelle, vergebe ich eine Alias ID. kann diese Automatisch auch als DP Name vergeben werden ?
Vielleicht gewöhne ich mich ja auch noch daran, aber derzeit übernimmt er immer den vom Quell DP und der ist nicht immer verständlich. -
@tourer4778
Wie erstellst du den Alias?
Der Alias kann einen beliebigen Namen erhalten, den man natürlich eingeben muss, wenn er abweichen soll. -
@paul53 sagte in Verständnisfrage zu Aliase / Verknüfungen:
Bist Du sicher?
Ja, deswegen können viele Feature-Requests zu dem Thema nicht umgesetzt werden (z.B. manche Werte aus dem Quell-Datenpunkt zu ignorieren). Diskussion hier:
https://github.com/ioBroker/ioBroker.js-controller/issues/529#issuecomment-602863663
-
@haus-automatisierung sagte: Werte aus dem Quell-Datenpunkt zu ignorieren
Was hat das mit dem Schreiben in die States-DB zu tun?
Man kann keine Werte ignorieren, da bei jeder Aktualisierung des Zeitstempels der Alias aktualisiert wird und es keinen Zugriff auf einen "oldVal" gibt. -
Vorn den namen habe ich ja selbst eingegeben, hinten den übernimmt er vom DP. Diesen kann man nur händisch ändern, oder?
Ich frage, weil ich vorn ja schon ein für mich sinnigen Namen engebe und hinten muss ich das noch einmal machen... -
@paul53 sagte in Verständnisfrage zu Aliase / Verknüfungen:
Was hat das mit dem Schreiben in die States-DB zu tun?
Ganz einfach: Der js-controller wird neugestartet = Alias leer, weil der letzte Wert nicht in der Datenbank steht und beim Start wiederhergestellt werden kann.
Momentan ist die Voraussetzung, dass man den Wert im Alias immer und zu jeder Zeit (mit der ggf. hinterlegten Funktion) erneut berechnen kann, damit der nicht leer ist.
@paul53 sagte in Verständnisfrage zu Aliase / Verknüfungen:
und es (bisher) keinen Zugriff auf einen "oldVal" gibt.
OldVal ist ja eh nur ein Feature vom JavaScript-Adpater und existiert bei der Adapter-Entwicklung / im js-controller eh nicht. Das hält der JavaScript-Adapter alles nur im Arbeitsspeicher und merkt sich die vorherigen Werte selbst. Das ist kein js-controller-Feature.
Wird aber gerade gefühlt etwas Offtopic. Alles weiter steht ja auf GitHub.
-
@tourer4778 sagte: weil ich vorn ja schon ein für mich sinnigen Namen engebe und hinten muss ich das noch einmal machen...
Sinnig für einen Namen ist der letzte Teil der ID nur bei solch einer kurzen ID-Struktur. In allen anderen Fällen müsste der Name ohnehin manuell angepasst werden.
Beispiel: ID: "alias.0.Wohnen.Licht.Decke.ein". Der Name "ein" wäre wenig aussagekräftig, sondern eher der Name "Deckenlicht Wohnzimmer ein", den man nur manuell bilden kann. -
@codierknecht sagte in Verständnisfrage zu Aliase / Verknüfungen:
Aber vergiss für's Erste den Alias-Manager. Der legt nicht unbedingt das an was Du haben möchtest.
Lege die Aliase "von Hand" im Objektbaum an.
-
@codierknecht
Danke, ja ich hatte so ein wenig meine Probnleme.
Aber so langsam funktioniert es. -
Nicht zu vergessen sind die Read- und Write-Functions im Aliasmanager, die sind manchmal schon sehr hilfreich.
Die hat man aber nicht, wenn man nur die Datenpunkte unter 0.userdata selber anlegt. -