Best practice "alle Geräte mit Merkmal xy" ansprechen?

Hallo Forum,

da meine Installation so langsam wächst, komme ich an den Punkt, dass ich auch mal alle Geräte mit gemeinsamem Merkmal ansprechen will.

Beispiele:

  • alle Fenster
  • alle Rollläden
  • alle Fenster und Rollläden im Süden
  • alle Lampen
  • alle Bewegungsmelder
  • alle Batterieinstanzen im Erdgeschoss

Was ich gesucht habe, ist eine Art Merkmalsverwaltung/Tags, die in den Eigenschaften an die jeweilige Instanz gehängt werden. Zugriff könnte dann über $Array=IPS_GetInstanceListByTag(„Fenster“, „Süden“) oder so erfolgen.

Was ich gefunden bzw. mir überlegt habe:

  • Kategorien anlegen. Damit sind die Instanzen dann aber nicht kreuzweise verknüpfbar (meine Bsp. 1-3)
  • Manuell Array anlegen. Irgendwie nicht das, was ich mir beim Thema Automatisierung vorstelle.
  • per Variable unterhalb der Instanz. Dies dürfte zügig den Variablenverbrauch in die Höhe treiben.
  • per Profil. Eigentlich schick, aber wieder nur eine Ebene und keine kreuzweise Verknüpfung abbildbar.
  • automatisiert eine SQLite füllen. Sieht für mich momentan nach dem brauchbarsten Weg aus. Allerdings drängt sich für mich hier die Frage auf, ob so etwas nicht auch im Standard Sinn machen würde.

Vielleicht habe ich ja auch einfach nur einen Knopf übersehen. Auf jeden Fall würde ich mich über weitere Denkanstöße sehr freuen.

Beste Grüße und ein schönes Wochenende.
Steffen

Schau Dir mal die IPSLibrary an, warum das Rad neu erfinden :wink:

Gruß
Bruno

Hallo Bruno, Danke für deinen Hinweis. Da muss ich wohl meine Liste von oben erweitern:

  • IPSComponent (aus IPSLibrary). Wenn ich den Doku-Thread richtig verstanden habe, ermöglicht dies in der Tat in erster Ebene die gerätenahe Gruppierung („Alle Lichtschalter“). Was ich aber noch nicht finden konnte sind künstliche Gruppen („Batteriegeräte“) sowie die Erweiterung um ein weiteres Merkmal ("… im Süden").

Gibt was für Beschattung (IPSShadowing) Rolläden, usw. mit dem Merkmal Süden. Was Du mit den Fenstern im Süden machen willst verstehe ich nicht. Für Homematic-Komponenten gibt es ein Skript und ein paar alte Skripte für Batteriegeräte bzw. Warnmeldungen davon (nicht Library).

Start der Library mit dem BaseLoader-Skript.

IPSComponent ist eine reine Abstraktions Ebene für den Hardware Layer. Er ermöglicht den IPSLibrary Modulen einen einheitlichen Zugriff auf die Hardware Instanzen der diversern Hersteller. Ist also eher keine Gruppierung - für das gibts IPSLight, IPSShadowing usw…

Hallo MutschlMan,

ich würde dir dafür eine einfache Sache vorschlagen, die aber sicherlich nicht besonders elegant ist.
Es ähnelt der Variante „Variable“, ist jedoch für jedes Objekt bereits vorhanden.

Schau mal unter „IPS_SetInfo“ in der Doku nach. Hier kannst Du alle Eigenschaften hinterlegen, die Du brauchst und dann einfach eine Schleife über alle Objekte mit „IPS_GetObject“ und „ObejctInfo“ und einem Stringvergleich sicherlich alle betreffenden Objekte bzw. deren IDs in ein Array packen.

Aber automatisiert ist das auch nicht, da das Taggen je doch irgendwie manuell gemacht werden muss. Woher sonst weiß IPS die Himmelsrichtung oder ob es sich um eine Schrank-, Raum-, Haus bzw. Wohnungstür handelt. Da ist es sicher einfacher ein Include-Script zu nehmen, wo du noch schön den ObjectIDs Konstantennamen zuordnen kannst.

Beispiel aus meinem Squeezeboxen Script:

// definiere DeviceIDs auf verständliche Namen
define(‚SQSchlafzimmerID‘, 53258);
define(‚SQWohnzimmerID‘, 30996 );
define(‚SQControllerID‘, 53127);
define(‚SQBadezimmerID‘, 53951 );
define(‚SQKinderzimmerID‘, 25212);
define(‚SQGaestezimmerID‘, 10834);
define(‚SQArbeitszimmerID‘, 28760);
$allPlayerIDs = array(SQSchlafzimmerID, SQWohnzimmerID, SQControllerID, SQGaestezimmer,
SQBadezimmerID, SQKinderzimmerID, SQArbeitszimmer);

Diese Info einfach in ein Script welches Du immer in dein Script inkludierst. So kannst du einfach = leserlich über die Klarnamen auf die IDs bzw. ein Array drauf zugreifen.

Beste Grüße
Kevin