Objektorientierte Programmierung - Wiederverwendung von Scripten

Hallo zusammen,

eine Verständnisfrage:
die Vorgänge bei der Steuerung sind ja immer dieselben: es müssen ständig durch verschiedenen Ereignisse Lampen, Rolläden oder Heizungen ein- und ausgeschaltet werden.

Ich habe also verschiedene Geräte, aber immer denselben Vorgang… wie kann ich jetzt am besten, sagen wir, fünf Lampen einschalten?
Wäre es sinnvoll, die Geräte-IDs in ein Array zu schreiben und dann fünfmal ein Einschaltscript mit der Geräte-ID als übergebene Variable aufrufen? Könnte ich das Script noch universaler gestalten, indem ich das „aus“ oder „ein“ auch noch als Variable übertrage?

Wie könnte das als Beispiel aussehen?

Danke schonmal im voraus

Indy

Hi …

ich lege unter meine jeweilige FS20-Instanz das folgende „Universal-Skript“, z.B. mit Namen „Zustandsänderung“

 $objectArray = IPS_GetObject($IPS_SELF);
 $deviceID = $objectArray['ParentID'];
 $objectIDStatus = @IPS_GetObjectIDByName("Status",$deviceID);
 FS20_SwitchMode($deviceID,!GetValue($objectIDStatus));

Danach einfach unterhalb des Skripts ein Event anlegen, welches z.B. Tasterzustandsvariablen (bei Aktualisierung) abfragt und das übergeordnete Skript triggert …

auch einfache Sachen können genial sein. :):slight_smile:

Super squeeezer!!

ich mag diese Logic. Simpel, übersichtlich und effektiv. Kann ausgelagert werden und wo nötig includiert. Zero overhead ;).


function SzeneAbendessen()
{
  WAC_Play (42425);
  WAC_SetVolume (42425, 20);
  DimmWohnzimmer(10);
  DimmKüche(4);
}


function DimmWohnzimmer($Value)
{
  FS20_SetIntensity(12345, $Value, 3);
  FS20_SetIntensity(12346, $Value, 3);
  LCN_SetIntensity(45678, $Value*6, 4);  //16 = 96%
}

Toni

Danke, jetzt wird mir einiges klarer… nun wartet viel Arbeit auf mich :slight_smile:

Gruß
Indy