Stelle Sie sich vor, Sie hätten eine Flurlicht-Steuerung, die auf allen Etagen gleich ist. Diese möchten Sie natürlich ungern 3x programmieren müssen.
Sie könnten jetzt also 3x ihr Skript per Copy&Paste in die einzelnen Skripte kopieren, was für den Anfang auch eine gute Lösung ist. Wenn Sie jetzt aber unglücklich sind und zu der Kategorie User gehören, die Redundanz vermeiden wollen und/ oder ein System zum Code-Reusing zwischen Projekten brauchen, können Sie folgende Idee verwenden:
Sie haben ein Skript mit dem Namen "Lichtsteuerung (xComfort, Flur, Bewegungsmelder, Helligkeitsregelung)". Der Name sollte Ausdrücken, was es tut und welche Systeme/ Geräte/ Stati es verwendet.
Folgender Code könnte der Inhalt sein:
Dieses Skript muss von einem "Auslösenden Ereigniss" aufgerufen werden - hier normalerweise von einem/ mehreren Bewegungsmelder. Das Licht wird dann abhängig von der Tageszeit auf eine unterschiedliche Dimmstufe gestellt. Sobald der Bewegungsmelder keine Bewegung mehr erkennt und den FALSE Impuls sendet, schaltet das Gerät ab.
Sie habe nun die Logik ausgelagert und brauchen nur noch Skripte zu erstellen, die die fehlenden Variablen setzen und von einem Ereignis aufgerufen werden. Nachfolgend ein Beispiel:
Sie können also "Funktionsvorlagen" erstellen und diese dann nur noch mit den nötigen IDs füttern. In diesen Skripten sind dann die IDs der Geräte/ Variablen, zu denen IP-Symcon aber immer vollständige und aussagekräftige Namen erstellt. (Sofern man seine Baumstruktor vernünftig erstellt hat)
Wer es will/ braucht, kann das Szenario auch für FS20 anpassen und dynamisch anhand der übergebenen InstanzID die richtigen Funktion aufrufen oder die Systemabhängigen Änderungen vornehmen.