Tagging-Support für Instanzen

Hallo zusammen,

meiner Meinung nach wäre es hilfreich, wenn man Module-Instanzen mit tags versehen könnte, und dann nach diesen Tags suche kann. Eventuell macht es auch für alle Objekttypen Sinn.

Ich habe z.B. diverse Z-Wave-Module. Manche sind im Erdgeschoss, manche im ersten Stock, u.s.w. Manchen hängen am Normalstromzähler, manche am Heiszstromzähler. Manche sind auf L1, manche auf L2, manche auf L3.

Im Moment habe ich separate LookupTabellen, die ich aber immer pflegen muss. Ich würde diese Informationen gerne direkt an die Instanzen anhängen, um mir dann schnell eine Auflistung geben lassen zu können, etwas so in der Art:

$tags = Array("Normalstrom","L2")
print_r(IPS_GetInstanceListByTag($tags));

Du kannst doch den Infobereich der Instanz/ des Objekts benutzen.
Da kannst Du reinschreiben was Du willst.

$ID = 12345;
$Info = IPS_GetObject($ID)['ObjectInfo'];
echo $Info;

Ja, aber ich will ja über die Tags suchen.

D.h. ich müsste erst mal durch alle Objekte iterieren, und dann die ObjectInfo auslesen. Im Anschluss muss ich dann tag für tag aussieben, bis nur noch der gefundene Bereich übrig bleibt.

Das geht, ist aber auch nicht komfortabler als meine aktuelle Lookup-Lösung.

Es sind an sich zwei use cases:
ObjectInfo: Beschreibungstext zur konkreten Instanz
Tags: Array von Attributen zur schnellen Identifikation einer Teilflotte von Instanzen.

Ich finde die Idee der Verschlagwortung sehr gut.
Damit ließe sich in Verbindung mit Suchfunktionen sicherlich eine Menge machen.
So könnte man Objekte nach beliebigen Begriffen (Raumnamen, Gewerken oder irgendwelchen Eigenschaften) klassifizieren und Aktionen wie „alle Lampen eines Raumes schalten“ etc. leicht umsetzen.

1 „Gefällt mir“

Ich würde dafür tatsächlich auch die Beschreibung empfehlen. Zum Suchen könnte ich mir gut vorstellen, dass man den Schnellfilter im Objektbaum erweitert, damit dieser auch den Beschreibungstext durchsucht. Dann könntest du dort deinen Tag eingeben und bekommst alle dazugehörigen Objekte aufgelistet.

Was ist denn die maximale Länge des Beschreibungsfeldes? Ich konnte dazu in der Doku keine Angabe finden, konnte da aber recht viel reinpacken. Gibt es bestimmte Zeichen, die da nicht erlaubt sind?

Die Suche über die Konsole wäre damit nicht erschlagen, da die Idee von Tags ja explizit die Suche nach mehreren Attributen ist (also z.B. alle Instanzen mit den Tags „Licht“, „Wohnzimmer“) um alle Lichter im Wohnzimmer abzufragen. Um das per String zu identifizieren muss ich entweder die Tag-Reihenfolgen immer penibel gleich halten oder es werden ziemlich üble Regex-Werte.

Wie gesagt: Ich habe derzeit eine Lösung. Der Sinn eines PFRs ist ja auch, dass er erst mal da steht, um zu prüfen wie viele Benutzer daran Interesse haben.

Als Behelf könntest du das Tagging mit Kategorien und verlinkten Objekten nachempfinden. Du legst für jedes Tag eine Kategorie an und verlinkst die betroffenen Objekte darunter.

So wäre auch eine einfache Suche in Skripten über IPS_GetChildrenIDs() möglich. Nur als Idee - auch wenn ich ein Tagging (wie in Bildersammlungen etc.) für besser halte.