Klasse Idee, das mal zu analysieren.
Ich verwende neben den Kategorien im Namen selbst eine DOT-Notation. Das ist historisch gewachsen (aus V1). Damals habe ich mich wegen Unzweckmäßigkeit gegen eine raumbezogene, sondern für eine funktionale Struktur entschieden, um objektübergreifend arbeiten zu können. Also ein Handling-Script greift jeweils für alle Heizungen, Jalousien, Fenstergriffe, Schalter usw., per Namen (primärer Namensteil, Präfix ) gesteuert. Beispiele: Heizungen beginnen mit „hz.“, Jalousien/Fenster mit „f.“, gefolgt vom Raum bzw. konkreten Fenster („f.WzTs.“ = Fenster/Wohnzimmer/Terasse/Süd). Analog die Schalter (SST.nn = Schaltsteckdose Nr. nn) usw.
Darunter liegen dann die Werte bzw. Steuerelemente. So hat zB. jeder Schalter bei mir neben den Systemvariablen auch Steuervariablen oder sekundäre Variablen wie
…sollStatus,
…Caption (String: „an“ / „aus“),
…updated (Zeit-String),
…since (Zeit-String),
Daneben gibt es weitere sekundäre Systemvariablen, wie zB. bei allen Fenstern/Jalousien einen numerischer Auslöser-Status (Jalousie zuletzt gefahren per: manuell, Sturmwarnung, Morgen-/Abend-Event, passive Klimatisierung/Abschattung, autom. weil Fenster/Hoppe-Griff geöffnet wurde usw.), um davon abhängig reagieren zu können (wieder zufahren, wenn Fenster wieder geschlossen wird, aber nicht, wenn inzw. das Morgen-Event die Jalousien hochgefahren hat, kein Öffnen per passivKlimatisierung, solange Sturmwarnung etc.),
Das alles ist per o.g. Namens-Notation (Präfix) eindeutig dem übergeordneten Objekt (letztlich: Instanz) zugeordnet, damit ein einziges Script das objektunabhängig behandeln kann bzw. neue Instanz-Objekte nach Festlegung eines Namens sofort integriert sind.
Aber auch schon ab V1 gab es schon eine andere, eher horizontale Ebene, die davon unabhängig arbeitete. So legt eine am einzigen Script als Event registrierte Variable bei erstmaligem Event sofort eine Sekundär-Systemvariable an ("…updated", „…since“, „…sollStatus“ usw.) mit dem (Instanz-)Namens-Präfix aus der auslösenden Variable.
Mit V2.x ist vieles einfacher geworden. Namen können mehrfach existieren und statt der Präfixe sind die Sekundärvariablen direkt den Instanzen untergeordnet.
Da ich aber einerseits eher anschaulich denke, und andererseits es gewohnt bin, Projekte transferabel und nachnutzbar zu gestalten, verwende ich niemals IDs direkt, sondern immer nur als Variableninhalt. Deshalb haben alle Instanzen bei mir nach wie vor eindeutige Namen, die den initialen „funktionalen Identifikator“ bei der Bearbeitung darstellen. Ebenso darf es je Instanz-Kategorie Variablennamen nur einmal geben.
Kategorien können das nicht ersetzen, weil es keine ideale 1:1-Abbildung gibt (zB. mehrere Fenster oder Schalter je Raum). Kategorien verwende ich aber nun, um ein wenig Ordnung zu schaffen. Geografisch (Etage/Raum; Aussen/Garten, ~/Pool, ~/Tore usw.), als auch funktional (Tools/ISDN, ~/TV, ~/IPwatch, ~/Android, ~/Datenbank, ~/CAMcontrol; Wetter/Station usw.)
Gruß Gerd