NEWS
Alias best practices - Wie kann man es besser machen?
-
Hallo Leute. Ich starte jetzt eine Studie über die Nutzung von Alias im ioBroker. Wie handhabt ihr das? Das wäre echt interessant und vielleicht könnten wir ein paar Ideen sammeln, wie man etwas diesbezüglich besser machen kann.
Ich habe bei mir inzwischen alles auf Alias umgebaut, denn das ist echt eine super tolle Lösung für viele Probleme der Hausautomatisierung... Für alle die nicht wissen was man mit Alias machen kann: Man erstellt eine Verlinkung zu einem Datenpunkt im ioBroker her und arbeitet dann nur noch mit der Verlinkung und nicht mit dem echten Datenpunkt. Warum sollte man nur noch so arbeiten? Es gibt viele Gründe:
- ListenpunktNehmen wir an, ein Lichtschalter geht kaputt und man ersetzt diesen. Durch das Ersetzen des Gerätes, bekommt dieser eine neue ID. Diese ID müsste in jede Visualisierung oder Skript ersetzt werden. Beim Alias müsste lediglich die Verlinkung aktualisiert werden und alles läuft auf Anhieb.
- Vereinheitlichung der Daten - Beim Verlinken, hat man auch die Möglichkeit Daten zu ändern, so dass es überall gleich funktioniert. Als Beispiel nehmen wir die Datenpunkte "available=true" und "unreach=false" - Beide Datenpunkte beschreiben die aktuelle Verfügbarkeit eines Gerätes, aber leider haben beide verschiedene Werte für die gleiche Aussage. Mit Alias kann man alle Datenpunkte die gleiche ID geben: z.B. "ERREICHBAR" und den Wert von unreach einfach negieren. Also ERREICHBAR = !unreach
- Mit Alias muss man nicht einzelne Datenpunkte irgendwo suchen. Sie befinden sich ALLE unter alias.0 und darunter ist man Frei eine eigene Struktur aufzubauen. Zum Beispiel alle Lichter in einem Ordner - Dabei ist es total egal, ob das Licht eine HUE Lampe, ein Homematic Aktor oder eine WLAN Lampe ist. Alle sind dort auffindbar.
- Die Verlinkungen können nach angepasst werden, indem man eine Einheit vergibt ober mögliche Texte Übersetzt.
Jetzt zum eigentlichen Thema: Wie nutze ICH die Alias Funktion?
Ich habe mir mit dem Device Adapter eine Ordnerstruktur erstellt, denn mir ist kein anderer Weg bekannt, einem Objekt vom Typ "folder" zu erstellen.
Darunter habe ich dann die einzelnen Geräte als "channel". Was sind Geräte für mich? Als Gerät definiere ich nicht umbedingt einem Sensor. Zum Beispiel habe ich Briefkasten als ein Gerät. Im Briefkasten habe ich ein Bewegungssensor (wurd ein Brief eingeworfen) und ein Türsensor (wurde Briefkasten geleert) eingebaut. Dazu kommen noch Datenpunkte, die vom Skript befüllt werden. Leider kann unter alias.0 NUR Alias DPs rein, so dass ich gezwungen bin ein DT außerhalb zu erstellen und diesen da rein zu verlinken.
Rollen und Räume pflege ich auch NUR unter Alias und bevor ich mit neue Geräte arbeite, ertelle ich immer eine Verknüpfung. Ist zwar anfangs mehr Arbeit, aber es ist erstens alles viel geordneter und einheitlicher und zweitens kann ich notfalls alles schnell umswitschen, ohne irgendwelche IDs überall ändern zu müssen.
Was wünsche ich mir, damit die Arbeit damit einfacher wird?
- Die Möglichkeit "folder" direkt über Admin zu erstellen (https://github.com/ioBroker/ioBroker.admin/issues/577)
- Die Möglichkeit ein Alias eines Datenpunktes über die Admin Oberfläche zu erstellen (https://github.com/ioBroker/ioBroker.admin/issues/558)
- Den Device Adapter etwas flexibler zu gestallten, damit man Geräte wie "Briefkasten" erstellen kann (https://github.com/ioBroker/ioBroker.devices/issues/18)
- Wäre schön, wenn man auch ein nicht Alias DP unter Alias speichern könnte, dann musste man nicht ein extra DP erstellen um Skript gesteuerte DPs im Gerät zu haben (https://github.com/ioBroker/ioBroker.js-controller/issues/906)
- Im Device Adapter auch Enums/Aufzählungen anlegen zu können, denn manchmal fehlen welche und man muss das Anlegen eines Gerätes abbrechen, damit man diese anlegen kann. (https://github.com/ioBroker/ioBroker.devices/issues/20)
- Im Device Adapter die Möglichkeit mehrere Räume/Funktionen auszuwählen (Mein Wohnzimmer hat als Räume Wohnzimmer und Erdgeschoss) (https://github.com/ioBroker/ioBroker.devices/issues/20)
- Im Device Adapter die Möglichkeit einzelne DPs andere Funktionen/Räume zuzuordnen (LOWBAT soll als einziges die Funktion Batterie haben) (https://github.com/ioBroker/ioBroker.devices/issues/20)
- Eine Möglichkeit die Datenstruktur zu verändern, ohne die ID anpassen zu müssen. (https://github.com/ioBroker/ioBroker.js-controller/issues/905)
Soviel zu mir... wie ist es bei euch? Alias muss auch unbedingt Anwenderfreundlicher werden. Hat jemand dafür Ideen?
-
@ldittmar sagte:
wie ist es bei euch?
Ich verwende das Script im untersten Spoiler.
Bei mir würde die Alias-ID für LOWBAT des Einwurf-Sensors so aussehen: alias.0.Vorhof.Briefkasten.Einwurf.LOWBAT.@ldittmar sagte in Alias best practices - Wie kann man es besser machen?:
Die Möglichkeit "folder" direkt über Admin zu erstellen
Man kann auch "Gerät"(device) verwenden. Es geht ja nur um eine sinnvolle Struktur unter Einhaltung der Reihenfolge (parent - child) meta.device.channel.state, wobei die Objekte vom Typ "device" und "channel" auch weggelassen werden können.
-
@paul53 sagte in Alias best practices - Wie kann man es besser machen?:
@ldittmar sagte:
wie ist es bei euch?
Ich verwende das Script im untersten Spoiler.
Bei mir würde die Alias-ID für LOWBAT des Einwurf-Sensors so aussehen: alias.0.Vorhof.Briefkasten.Einwurf.LOWBAT.@ldittmar sagte in Alias best practices - Wie kann man es besser machen?:
Die Möglichkeit "folder" direkt über Admin zu erstellen
Man kann auch "Gerät"(device) verwenden. Es geht ja nur um eine sinnvolle Struktur unter Einhaltung der Reihenfolge (parent - child) meta.device.channel.state, wobei die Objekte vom Typ "device" und "channel" auch weggelassen werden können.
Du hast aber damit ein kleines Problem: Wenn du ein DP anlegst - alias.0.Vorhof.Briefkasten.Einwurf.LOWBAT - dann wird ein DP mit der ID "Vorhof.Briefkasten.Einwurf.LOWBAT" angelegt -> in der Ordnerstruktur sieht es zunächst alles schön aus, aber es gibt kein Ordner Vorhof, Briefkasten oder Einwurf. Das merkst du bei den Objekten daran, dass du bei den "Ordnern" keine Möglichkeit hast es zu bearbeiten oder löschen. (Bleistift und Mülleimer rechts fehlen) Deswegen wurde noch ein Typ "folder" hinzugefügt.
"device" und "channel" kommen halt aus der Homematic Welt. Meine Struktur bräuchte aber kein Channel, denn ich Arbeite auf Device-Ebene. Es ist aber so, dass die States unter Channel sein sollen.Ich habe die ersten Alias über den Device Adapter angelegt. Leider ist der Adapter nicht so flexibel. Die neuen Lege ich so an, dass ich einfach ein DP bearbeite und die ID entsprechend ändere. Wenn die ID geändert wird, wird eine Kopie des Objektes an der Stelle erzeugt und damit arbeite ich dann.
-
@ldittmar sagte:
aber es gibt kein Ordner Vorhof, Briefkasten oder Einwurf
Ordner gibt es schon, aber keine Objekte zu den Ordnern. Wenn ich Objekte "device" und "channel" haben möchte, erzeuge ich sie manuell im Tab "Objekte".
@ldittmar sagte in Alias best practices - Wie kann man es besser machen?:
"device" und "channel" kommen halt aus der Homematic Welt.
Ja, ioBroker ist aus der Erfahrung mit HomeMatic entstanden. Deshalb die erwähnte Reihenfolge parent - child.
-
Ich habe ein Skript in dem ich mir alle Alias Werte anlege.
Dazu nutze ich eine von mir erweiterte Version von Paul.
diese Version erstellt auch für die zwischen Ordner einen Datenpunkt mit einem bestimmten Typ (weiß gerade nicht mehr welcher), damit auch diesen Datenpunkte Rollen etc. zugeordnet werden können.Der Vorteil wie ich finde, wenn ein neues Gerät hinzukommt und ich bereits eines der gleichen Art habe z.B. Fensterkontakt, kann ich mir die Codezeilen zum erstellen der dafür passenden Aliaswerte einfach duplizieren und den Quellpfad zum neuen Gerät anpassen.
-
@ldittmar
ich würde mir auch wünschen einen Alias aus einem Datenpunkt heraus anlegen zu können.
Alleine die ID zu suchen, diese in den Zwischenablage zu legen, manuell einen alias erstellen, die ID dort hineinkopieren, macht das alles sehr, sehr holprig.Mitunter habe ich mir auch schon eine "Massenanlage von Aliase" gewünscht, doch hier ändern sich quasi täglich meine Wünsche, wie dieses arbeiten müßte, daher stelle ich mir das schwer vor
Vielleicht könnte man in Adaptern, die ja üblicherweise eigene Datenpunkte anlegen, die gleichzeitige Anlage von Aliase mit ermöglichen lassen?
-
@BBTown sagte in Alias best practices - Wie kann man es besser machen?:
@ldittmar
ich würde mir auch wünschen einen Alias aus einem Datenpunkt heraus anlegen zu können.
Alleine die ID zu suchen, diese in den Zwischenablage zu legen, manuell einen alias erstellen, die ID dort hineinkopieren, macht das alles sehr, sehr holprig.Ja... und vor allem sehr Fehleranfällig. Hab schon einmal aus versehen die falsche ID rein kopiert.
Mitunter habe ich mir auch schon eine "Massenanlage von Aliase" gewünscht, doch hier ändern sich quasi täglich meine Wünsche, wie dieses arbeiten müßte, daher stelle ich mir das schwer vor
Dafür ist der Devices Adapter da. Er muss nur etwas flexibler werden. Damit lässt sich gleichzeitig mehrere Aliase zu einem Gerät anlegen. Ich nutze es oft, aber wie gesagt: mir fehlt die Flexibilität.
Vielleicht könnte man in Adaptern, die ja üblicherweise eigene Datenpunkte anlegen, die gleichzeitige Anlage von Aliase mit ermöglichen lassen?
Nee... Ich persönlich lege nicht alle DPs als Alias an, denn einige interessieren mich nicht oder ich mache aus mehrere Sensoren ein Gerät (bsp.: Briefkasten). Die Adaptern sollten da. meiner Meinung nach, nichts machen.
-
@CruziX sagte in Alias best practices - Wie kann man es besser machen?:
Ich habe ein Skript in dem ich mir alle Alias Werte anlege.
Dazu nutze ich eine von mir erweiterte Version von Paul.
diese Version erstellt auch für die zwischen Ordner einen Datenpunkt mit einem bestimmten Typ (weiß gerade nicht mehr welcher), damit auch diesen Datenpunkte Rollen etc. zugeordnet werden können.Der Vorteil wie ich finde, wenn ein neues Gerät hinzukommt und ich bereits eines der gleichen Art habe z.B. Fensterkontakt, kann ich mir die Codezeilen zum erstellen der dafür passenden Aliaswerte einfach duplizieren und den Quellpfad zum neuen Gerät anpassen.
Das mit dem Skript ist zwar super und echt cool, aber leider nicht für die breite Masse geeignet. Es muss definitiv einfacher für die User werden.
-
@ldittmar sagte in Alias best practices - Wie kann man es besser machen?:
Nee... Ich persönlich lege nicht alle DPs als Alias an, denn einige interessieren mich nicht oder ich mache aus mehrere Sensoren ein Gerät (bsp.: Briefkasten). Die Adaptern sollten da. meiner Meinung nach, nichts machen.
Mein Gedankengang war eher, dass das Löschen nicht benötigter Aliase womöglich einfacher/schneller ginge als das nachträgliche hinzufügen?!?
Womöglich in den Adaptern als Option "Alias anlegen ja/nein"? -
@BBTown sagte:
ich würde mir auch wünschen einen Alias aus einem Datenpunkt heraus anlegen zu können.
@Scrounger is jemand, der in Lage ist, einen passenden Adapter zu erstellen, da sein Adapter ioBroker.linkeddevices mit diesem Prinzip arbeitet. Allerdings werden dort alle custom-Eigenschaften beim Original-Datenpunkt erstellt, was im Falle von Alias nicht sein soll. Es müsste also mit Suche über alle Alias-Datenpunkte gearbeitet werden.
Vielleicht kann jemand @Scrounger zu dem Adapter überreden ?@ldittmar sagte in Alias best practices - Wie kann man es besser machen?:
Die Adaptern sollten da. meiner Meinung nach, nichts machen.
Bin da ganz Deiner Meinung.
-
@paul53 sagte in Alias best practices - Wie kann man es besser machen?:
@BBTown sagte:
ich würde mir auch wünschen einen Alias aus einem Datenpunkt heraus anlegen zu können.
@Scrounger is jemand, der in Lage ist, einen passenden Adapter zu erstellen, da sein Adapter ioBroker.linkeddevices mit diesem Prinzip arbeitet. Allerdings werden dort alle custom-Eigenschaften beim Original-Datenpunkt erstellt, was im Falle von Alias nicht sein soll. Es müsste also mit Suche über alle Alias-Datenpunkte gearbeitet werden.
Vielleicht kann jemand @Scrounger zu dem Adapter überreden ?Mit Admin 5 wird da was kommen. Linkeddevices ist ein guter Beispiel wie sowas aussehen könnte. Mal sehen was da passieren wird. Ich habe in meinem ersten Post die Github Issues verlinkt...
-
ich habe auch alles auf alias umgestellt.. und bin genau so wie @ldittmar in die Falle getappt..mit dem Script .. dass ich keine Räume angelegt bekommen habe ... Danke an dich hier für die hilfestellung
mit dem Device Adapter ist das schon ok .. nur sollte man die Objekte nicht extra umbenenen "müssen"..ich verwende lieber die orginalen Datenpunktnamen .. in Scripten kann man sich dann den Datenpunkt zusammenparsen..
-
@arteck sagte in Alias best practices - Wie kann man es besser machen?:
ich habe auch alles auf alias umgestellt.. und bin genau so wie @ldittmar in die Falle getappt..mit dem Script .. dass ich keine Räume angelegt bekommen habe ... Danke an dich hier für die hilfestellung
Gern geschehen... also noch für die, die das Problem haben: Die "Ordner" können ganz einfach nachträglich erstellt werden.
mit dem Device Adapter ist das schon ok .. nur sollte man die Objekte nicht extra umbenenen "müssen"..ich verwende lieber die orginalen Datenpunktnamen .. in Scripten kann man sich dann den Datenpunkt zusammenparsen..
Das mache ich zum Beispiel nicht. Ich möchte die Geräte vereinheitlichen. Mir ist es also egal ob ein Licht aus Homematic, Hue, tradfri, Zigbee, ZWave usw... kommt. Ich kann alle gleich ansprechen, weil alle die gleiche StateIDs haben.
-
@ldittmar sagte:
Ich kann alle gleich ansprechen, weil alle die gleiche StateIDs haben.
Ja, das ist ein wesentlicher Aspekt, der für die Verwendung von Alias spricht.
@ldittmar sagte in Alias best practices - Wie kann man es besser machen?:
Die "Ordner" können ganz einfach nachträglich erstellt werden.
Meinst Du, dass aus Ordnern einfach Objekte gemacht werden können ? Ja, das ist leicht möglich, indem man ein Objekt mit der ID eines bestehenden Ordners erzeugt, was sowohl im Tab "Objekte" als auch mit einem Script funktioniert.
-
@paul53 sagte in Alias best practices - Wie kann man es besser machen?:
Meinst Du, dass aus Ordnern einfach Objekte gemacht werden können ? Ja, das ist leicht möglich, indem man ein Objekt mit der ID eines bestehenden Ordners erzeugt, was sowohl im Tab "Objekte" wie auch mit einem Script funktioniert.
Jepp... genau das. Am Anfang habe ich auch gedacht man müsste alles neu anlegen. Es ist also nicht alles verloren und man kann die Ordnerstruktur nachträglich erstellen.
-
@paul53 sagte in Alias best practices - Wie kann man es besser machen?:
@ldittmar sagte:
Ich kann alle gleich ansprechen, weil alle die gleiche StateIDs haben.
Ja, das ist ein wesentlicher Aspekt, der für die Verwendung von Alias spricht.
@ldittmar sagte in Alias best practices - Wie kann man es besser machen?:
Die "Ordner" können ganz einfach nachträglich erstellt werden.
Meinst Du, dass aus Ordnern einfach Objekte gemacht werden können ? Ja, das ist leicht möglich, indem man ein Objekt mit der ID eines bestehenden Ordners erzeugt, was sowohl im Tab "Objekte" als auch mit einem Script funktioniert.
Also quasi einen Alias der als Quelldatenpunkt einen anderen Ordner hat?
Ich hab jetzt nochmal nachgesehen und ich hab einfach einen Datenpunkt mit dem Attribut "type": "meta.folder" erstellt. Somit fungiert er als Ordner und braucht keine Verknüpfung -
@ldittmar Bei meinem Skript kann ich sogar eine Variable auf true setzen und dann werden alle bereits bestehenden Alias Werte auf diese Ordnerfunktion konvertiert
-
Ich muss mal blöd fragen.
In #1 sieht man
Objekte ?Diesen Punkt habe ich nicht. Wo kommt dieser her?
Weiterhin fehlt mir der Punkt alias.0
Wann wird dieser angezeigt?
mfg
-
@bahnuhr sagte in Alias best practices - Wie kann man es besser machen?:
Wann wird dieser angezeigt?
Bei Einführung des alias, siehe https://forum.iobroker.net/post/315709
Glaub mit aktuellem js-controller, sollte jedoch ein Ordner mit einem Beispiel state angelegt sein
Haken vllt nicht gesetzt?
-
die objecte bekommst du nach der installation des adapters hier:
da kannst du das dann auswählen