Aktionen auf mehreren Modulen/Geräten bewirken

Hi,

da in meinem Haus deutlich mehr Geräte ins Spiel kommen war ich jegliches Scripte anpassen und Objekt-IDs eintragen leid. Da ich die Struktur in IPS auch nutze um Geräte zu organisieren (in Form von Links), also z.B. eine Struktur mit folgendem Aufbau:
Licht
–> OG
----> Schlafzimmer
-------> Lampe1
----->Kinderzimmer
-------->Lampe1
----->EG
-------->Wohnzimmer
------------>Lampe1
------------>Lampe2

etc… also ihr wisst was ich meine…
Da hab ich mir gedacht, wäre es doch auch gut wenn man die Struktur zum schalten verwenden könnte.
Also hab ich mir ein rekursives Script gebaut, das entweder in der aktuellen Ebene oder mit allen Unterebenen die Geräte „bedient“. Da die ggf. aber unterschiedliche Befehle haben, habe ich jedem Gerät eh ein Set an Basis-Befehlen per Script verpasst. So steht z.B. bei einer Lampe ohne Dimmer
–> Lampe1
------> Script „AN“
------> Script „AUS“

und mit Dimmer
–> Lampe1
------> Script „AN“
------> Script „AUS“
------>Script „Dimmen“

dadurch kapsel ich das für An und Aus bei den Geräten mit und ohne Dimmer unterschiedliche Befehle verwendet werden.

Die will ich aber auch nicht jedesmal neu schreiben, deswegen beziehen die sich auch immer auf sich selbst und können mit der duplizier-Funktion in IPS einfach ohne Abänderung kopiert werden:


<?
 ENO_SwitchMode(IPS_GetParent($_IPS['SELF']),  true );
?>

So ein Script pro Gerät und folgendes Script schaltet alle in einer Struktur-Ebene:

<?

$Kinder = IPS_GetChildrenIDs(IPS_GetParent($_IPS['SELF']) );
foreach ($Kinder as $kind)  {
$objekt = IPS_GetObject($kind);
if ($objekt["ObjectType"] == 6) {
$newobj = IPS_GetObject(IPS_GetLink($kind)["TargetID"]);
 } else {
$newobj = $objekt;
}
$scriptAn = IPS_GetObjectIDByName("An", $newobj["ObjectID"]);
IPS_RunScript($scriptAn);

}

?>

Ich will es jetzt kein Best-Practise nennen, nur eine Art wie ich mir die Arbeit erleichtert habe, vielleicht haben ja noch andere Ideen oder Verbesserungen dazu… oder auch Beiträge warum man es so besser nicht machen sollte. Mir nimmt es bislang auf jedenfall VIEL tipperei ab.