NEWS
Alias-Manager Adapter
-
@micklafisch said in Alias-Manager Adapter:
über Scripte geht es zwar ist aber nicht intuitiv
nach 200 stk gehts schon...
aber hast recht, wenn man das grundgerüst mal verstanden hat erleichtet der adapter das leben ungemein... -
@micklafisch
Ich kann mich Deiner Meinung nur anschließen - für mich war das viel zu unflexibel auch wenn ich erkenne, dass man hier ein Gerüst für bestimmte Gerätetypen vorgegeben werden soll.Insofern fand ich die Entwicklung des Aliasadapters gut.
@s-bormann Beim Einlesen habe ich nur festgestellt, dass die bedingte Zuweisung bei einem Read oder Write nicht richtig erkannt wird.
Hier mal meine Orginaldefinition des Alias:
{ "_id": "alias.0.schalter.sz_schrankbeleuchtung.on", "type": "state", "common": { "name": "on", "role": "", "type": "boolean", "read": true, "write": true, "desc": "Manuell erzeugt", "def": false, "alias": { "id": "mqtt.1.tasmota.szSchrankbeleuchtung.stat.POWER", "read": "val === 'ON' ? true : false" } }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1597497847675, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Die Zuweisung; "read": "val === 'ON' ? true : false" wird vom Adapter leider nicht richtig übernommen:
-
@mickym sagte in Alias-Manager Adapter:
Orginaldefinition
Deine Quell DP hast doch read und write = true, wie dein Alias. Was soll da falsch sein? Habe ich deine Frage missverstanden?
-
"read": "val === 'ON' ? true : false"
Der Read ist mit einer bedingten Zuweisung verknüpft, die wird im Adapter aber abgeschnitten:
da steht nur noch
val ===
Der Adapter hat aber zum Glück nicht die Orginaldefinition überschrieben.
Das heißt irgendwie kommt der Adapter mit der bedingten Zuweisung
'ON' ? true : false"
nicht zurecht.
Das heißt im Orginalpunkt seht ON/OFF (und nicht true und false), dann soll im Alias true stehen, andernfalls false.
-
@mickym sagte in Alias-Manager Adapter:
"read": "val === 'ON' ? true : false"
Der Read ist mit einer bedingten Zuweisung verknüpft, die wird im Adapter aber abgeschnitten:
da steht nur noch
val ===
Der Adapter hat aber zum Glück nicht die Orginaldefinition überschrieben.
Das heißt irgendwie kommt der Adapter mit der bedingten Zuweisung
'ON' ? true : false"
nicht zurecht.
Das heißt im Orginalpunkt seht ON/OFF (und nicht true und false), dann soll im Alias true stehen, andernfalls false.
Stimmt, es liegt an dem Anführungszeichen.
Ein Bugfix lädt gerade hoch.
Danke für die Rückmeldung! -
Moin. Cooler adapter, sehr brauchbar, vielen Dank für die Arbeit!
Allerdings sind mir zwei, drei Dinge aufgefallen:
-
wenn man auf solch einen adapter umsteigt, müssen alle Datenpunkte in allen anderen adaptern entsprechend angepasst werden, z.B. in den ganzen JavaScripts/Blocklys, in allen Visualisierungen usw. Diese Anpassungen macht dieser adapter hier jedoch nicht automatisch sondern müssen manuell vorgenommen werden, oder täusche ich mich?
-
wenn mal ein Quellgerät ausfällt, möchte man ja ggf. dieses auf einfache Weise durch ein neues ersetzen. Wenn ich es richtig verstehe, muss dazu jeder Datenpunkt des Gerätes einzeln erneuert werden oder gibt es auch eine Möglichkeit, alle Datenpunkte nach Austausch des Quellgerätes automatisch auf einmal aktualisieren zu lassen?
-
ich habe versucht, eine Ordnerstruktur in die Aliase hineinzubekommen. Dieses habe ich manuell versucht, durch anlegen von Datenpunkten mit "Unternamen", z.B. alias.0.Keller.Decklicht, wobei es da zu einem Bug kam, bei dem sich der Unterordner bzw. die gesamte Struktur nicht mehr löschen ließen. Ist eine Ordnerstruktur nicht gewollt?
Ansonsten nochmal hertlichen Dank für die super Arbeit an diesem Adapter!
Grüße.
-
-
@smartnoob sagte in Alias-Manager Adapter:
Moin. Cooler adapter, sehr brauchbar, vielen Dank für die Arbeit!
Allerdings sind mir zwei, drei Dinge aufgefallen:
- wenn man auf solch einen adapter umsteigt, müssen alle Datenpunkte in allen anderen adaptern entsprechend angepasst werden, z.B. in den ganzen JavaScripts/Blocklys, in allen Visualisierungen usw. Diese Anpassungen macht dieser adapter hier jedoch nicht automatisch sondern müssen manuell vorgenommen werden, oder täusche ich mich?
Richtig - das ist einmalig ein ziemlicher Umstellungsaufwand.
- wenn mal ein Quellgerät ausfällt, möchte man ja ggf. dieses auf einfache Weise durch ein neues ersetzen. Wenn ich es richtig verstehe, muss dazu jeder Datenpunkt des Gerätes einzeln erneuert werden oder gibt es auch eine Möglichkeit, alle Datenpunkte nach Austausch des Quellgerätes automatisch auf einmal aktualisieren zu lassen?
Ja und Nein eigentlich musst Du nur den Link zum Quellgerät erneuern. Das ist ja der Sinn des Alias. Der Vorteil ist aber das, was DU oben beschrieben hast, Du musst dann Deinen JavaScripts und Blocklies nicht mehr anfassen, da die ja auf den Alias-Datenpunkt verweisen. Allerdings JA DU musst jeden Link zu jedem Datenpunkt des Gerätes erneuern. Ist aber vielleicht einfacher oder übersichtlicher es an dieser Stelle zu tun, als sämtliche Scripts zu durchsuchen.
- ich habe versucht, eine Ordnerstruktur in die Aliase hineinzubekommen. Dieses habe ich manuell versucht, durch anlegen von Datenpunkten mit "Unternamen", z.B. alias.0.Keller.Decklicht, wobei es da zu einem Bug kam, bei dem sich der Unterordner bzw. die gesamte Struktur nicht mehr löschen ließen. Ist eine Ordnerstruktur nicht gewollt?
Doch sowas habe ich auch. Du legest den Alias an - das kann auch ein Ordner sein - schaut bei mir so aus:
Wenn Du so einen Alias angelegt hast, kannst Du einzelne Datenpunkte unter dem alias anlegen:
Das geht mit dem 2. Menüpunkt Alias editieren - da kann man dann eigene Datenpunkte anlegen.
-
@mickym sagte in Alias-Manager Adapter:
@smartnoob sagte in Alias-Manager Adapter:
- wenn mal ein Quellgerät ausfällt, möchte man ja ggf. dieses auf einfache Weise durch ein neues ersetzen. Wenn ich es richtig verstehe, muss dazu jeder Datenpunkt des Gerätes einzeln erneuert werden oder gibt es auch eine Möglichkeit, alle Datenpunkte nach Austausch des Quellgerätes automatisch auf einmal aktualisieren zu lassen?
Ja und Nein eigentlich musst Du nur den Link zum Quellgerät erneuern. Das ist ja der Sinn des Alias. Der Vorteil ist aber das, was DU oben beschrieben hast, Du musst dann Deinen JavaScripts und Blocklies nicht mehr anfassen, da die ja auf den Alias-Datenpunkt verweisen. Allerdings JA DU musst jeden Link zu jedem Datenpunkt des Gerätes erneuern. Ist aber vielleicht einfacher oder übersichtlicher es an dieser Stelle zu tun, als sämtliche Scripts zu durchsuchen.
Hi,
hierzu noch eine kleine Ergänzung: Mit dem ButtonAlias umbenennen
öffnet sich dieser Dialog:
Hier kann man unten, bei (3) eine "suchen und ersetzen"-Funktion nutzen, mit der man mit einem Klick in allen Datenpunkten des Aliases die ID des alten (kaputten) Gerätes mit der neuen ID tauschen lassen kann.
LG
-
Zu 1) Eigentlich schade, dass die Umstellung dann nicht automatisch geht. Müsste doch eigentlich iwie machbar sein. Letztendlich ist doch im Hintergund eh alles string/text-artig in irgendwelchen Dateien gespeichert. Vom Ablauf wäre es dann etwa so:
- Alias manuell anlegen
- Alle Datenpunkte.desaltenGerätename durch Datenpunkte.desneuenAlias in allen ioBroker-Dateien austauschen.
Aber das wäre das sicherlich eine Zusatzherausforderung für den Entwickler des Alias-Managers
Zu 2) Wäre doch auch iwie toll, wenn man alle zugehörigen Datenpunkte automatisch ausgetauscht bekäme, wenn man ein altes (zb defektes) Quellgerät durch ein neues ausgetauscht bekäme. Man würde z.B. auf "Quellgerät-Austausch" klicken; der Adapter würde dann einfach alle Datenpunkte des Alias Gerätes austauschen durch Verweis auf das neue (z.b. nicht mehr defekte Gerät). Dann müsste man nicht alle Datenpunkte anpassen, sondern lediglich dem Adapter einen Hinweis durch "Austausch" oder "Reparatur" darauf geben, dass ein Quellgerät ausgetausch wurde.
Sicher auch ne Zusatzherausforderung für den Coder, lol.
Zu 3) Ich habe es nun mit der Ordnerstruktur hinbekommen. Allerdings stellt sich mir hier eine Frage: Teilweise haben meine Altgeräte (wegen der Geräteanmeldung über Phoscon) zweigeteilte Namen, z.B. "Decke Schlaf" oder "Bettlampe links". Diese Namen wurden so ja noch nie in ioBroker verwendet sondern waren lediglich "Name". Der Alias-Manager allerdings übernimmt jetzt für den neuen Gerätedatenpunkt den alten Geräte-"Namen", was dazu führt, dass es dann Pfade wie z.B. "alias.0.Schlaf.Decke Schlaf.level" gibt, mit einem LEERZEICHEN in der Pfadangabe. Das führt doch im weiteren Verlauf sicher zu Problemen, oder?
-
@smartnoob sagte in Alias-Manager Adapter:
Zu 1) Eigentlich schade, dass die Umstellung dann nicht automatisch geht. Müsste doch eigentlich iwie machbar sein. Letztendlich ist doch im Hintergund eh alles string/text-artig in irgendwelchen Dateien gespeichert. Vom Ablauf wäre es dann etwa so:
- Alias manuell anlegen
- Alle Datenpunkte.desaltenGerätename durch Datenpunkte.desneuenAlias in allen ioBroker-Dateien austauschen.
Aber das wäre das sicherlich eine Zusatzherausforderung für den Entwickler des Alias-Managers
Zu 2) Wäre doch auch iwie toll, wenn man alle zugehörigen Datenpunkte automatisch ausgetauscht bekäme, wenn man ein altes (zb defektes) Quellgerät durch ein neues ausgetauscht bekäme. Man würde z.B. auf "Quellgerät-Austausch" klicken; der Adapter würde dann einfach alle Datenpunkte des Alias Gerätes austauschen durch Verweis auf das neue (z.b. nicht mehr defekte Gerät). Dann müsste man nicht alle Datenpunkte anpassen, sondern lediglich dem Adapter einen Hinweis durch "Austausch" oder "Reparatur" darauf geben, dass ein Quellgerät ausgetausch wurde.
Sicher auch ne Zusatzherausforderung für den Coder, lol.
Zu 3) Ich habe es nun mit der Ordnerstruktur hinbekommen. Allerdings stellt sich mir hier eine Frage: Teilweise haben meine Altgeräte (wegen der Geräteanmeldung über Phoscon) zweigeteilte Namen, z.B. "Decke Schlaf" oder "Bettlampe links". Diese Namen wurden so ja noch nie in ioBroker verwendet sondern waren lediglich "Name". Der Alias-Manager allerdings übernimmt jetzt für den neuen Gerätedatenpunkt den alten Geräte-"Namen", was dazu führt, dass es dann Pfade wie z.B. "alias.0.Schlaf.Decke Schlaf.level" gibt, mit einem LEERZEICHEN in der Pfadangabe. Das führt doch im weiteren Verlauf sicher zu Problemen, oder?
Ja, Punkt 1) und 2) wäre sehr wünschenswert, allerdings kaum umsetzbar, da es ja beliebig viele Adapter gibt, die auf die Daten zugreifen können. Wäre es von Anfang an eine Core-Funktion von ioBroker gewesen, die alle Adapter hätten implementieren müssen, wäre das sicher anders gewesen. Aber so ist das eben mit gewachsenen Systemen. Ich denke, hier ist die (ja noch recht junge) Alias-Funktion von ioBroker ein sehr guter Kompromiss. Und mit der Suchen und Ersetzen-Funktion des Alias-Managers ist ein Gerätetausch binnen weniger Sekunden erledigt.
Zu 3) Ich nutze viele Pfade mit Leerzeichen - bislang ohne Probleme. LG
-
@s-bormann na war ja klar, kaum ist was extrem einfaches zur verfügung, wollen ein paar die eierlegende wollmilchsau...
gerade erst die suchen/ersetzen funktion mitbekommen. affengeil, was braucht man mehr? achja, der adapter soll selbständig das defekte gerät erkennen und ein neues automatisch gleich anlegen/ändern!
sorry, aber einfacher geht ja wirklich nicht mehr...
ich hab voriges jahr noch ca. 65 geräte per script händisch angelegt! rechne das mal min. 5 DP...
mit dem adapter hab ich jetzt im handumdrehn einige alias angepasst, die mir nach heutiger sicht nicht mehr so gefallen haben. ratzfatz, erledigt. per hand hätte das die 5fache zeit gekostet! -
@s-bormann Danke für die Rückmeldung. Sollte auch keine Kritik sein, sondern eher eine Anregung. Und da ich nicht wirklich Coding-Erfahrung habe, kann ich die Ausmaße meiner Hirngespinste auch immer kaum abschätzen
Also nochmal vielen Dank, für diesen wirklich netten und sehr brauchbaren Adapter!
Grüße!
-
@smartnoob war auch von mir nicht böse gemeint!
aber deine "Hirngespinste" sind mit der größten coding erfahrung eigentlich unmöglich.
und mit der suchen/ersetzen möglichkeit an einfachheit bei hardware tausch nicht zu überbieten.
auch in einem ausgereiften (gibts das?) smart home gehört ein bißchen pflege schon noch dazu...
-
@da_woody [...] gehört ein bißchen pflege schon noch dazu [...]
Klar, weiß ich doch. Im Prinzip ist es ja gerade das, was vermutlich den meisten hier den größten Spaß bereitet
-
@smartnoob sagte in Alias-Manager Adapter:
@da_woody [...] gehört ein bißchen pflege schon noch dazu [...]
Klar, weiß ich doch. Im Prinzip ist es ja gerade das, was vermutlich den meisten hier den größten Spaß bereitet
Und aus Hirngespinsten erwachsen die besten Ideen. Also bloß keine Scheu, immer her mit den kreativen Gedanken
-
@s-bormann said in Alias-Manager Adapter:
Und aus Hirngespinsten erwachsen die besten Ideen. Also bloß keine Scheu, immer her mit den kreativen Gedanken
klingt nach meinem damaligem job motto:
unmögliches wird sofort erledigt,
wunder dauern etwas länger,
hexen kostet extra...
-
@s-bormann sagte in Alias-Manager Adapter:
Zu 3) Ich nutze viele Pfade mit Leerzeichen - bislang ohne Probleme. LG
Auch wenn es (heute) möglich ist, ist es wirklich "best practices" Leerzeichen und Großbuchstaben in IDs zu nutzen? Hier möchten wir doch alles vermeiden was später zu Probleme kommen könnte?
Leider steht nichts in die Entwickler Dokumentation: https://www.iobroker.net/#de/documentation/dev/objectsschema.md?ids
-
@videonisse lass es sein mit den Leerzeichen wenn dan nimm ein Unterstrich _ genauso wie sonderzeichen oder Umlaute
GROSSklein ist dagegen kein problem.. -
@s-bormann Hallo zusammen! Ich finde den Adapter auch super! Besonders die "AUTO - erstellen" Funktion ist eine sehr tolle Idee! Wenn man jetzt noch die Aliasse nach Räumen filtern könnte (so wie beim Adapter : Device Manager) dann würde ich auch sofort mit dem einrichten von Aliassen beginnen ! Kann man auch eine Unterkategorie erstellen ? z.B Raum = Küche .... Dann im gewünschten Raum die einzelnen Geräte anlegen mit den diversen Alias Datenpunkten ??
-
@martink na sicher geht das, nur eine frage der eingabe...
musst nur die aliasID dementsprechend eingeben.