SetValue/GetValue sind nur neue Funktionen. Die alten GetValueBoolean… werden nicht verschwinden. Es wird nur nicht mehr Empfohlen die Namen zu verwenden, sondern nur noch die IDs. Es wird früher oder später Warnings dafür geben, wenn man die Funktion mit dem Namen aufruft.
Dann zum Thema. Dein Ansatz bietet für dein Einsatzgebiet wahrscheinlich das passende. Trotzdem will ich auch mal ein Problem darstellen.
Beispiel:
FS20_A_EZ01
FS20 als System kann sich ja auch ändern. Ist also ein ungünstiges Prefix.
01 sagt soviel aus wie 12345 als ID und damit ist dein System für einen externen noch weniger aussagend als wenn dort die ID stehen würde + dem Auto-Kommentar von IP-Symcon.
Ich löse das Problem wie folgt:
Stelle wir uns vor, wir hätten eine Flurlicht steuerung, die auf alles Etagen gleich ist. Wir brauchen sie also z.B. 3x.
Wir könnten jetzt also 3x das Skript per Copy&Paste in das Skript tun, was für die meisten auch OK ist. Wer jetzt aber Redundanz vermeiden will und/oder ein System zum CodeReusing zwischen Projekten braucht, kann das relevante Skript ja auslagern.
So erstellen wir ein schönes Skript „Lichtsteuerung (xComfort, Flur, Bewegungsmelder, Helligkeitsregelung)“.
In diesen steht dann z.B.:
if(!$IPS_VALUE) { //Wenn keine Bewegung - siehe Handbuch für Spezialvariable
MXC_SwitchMode($lampenID, false);
} else {
if(!GetValueBoolean($istTag)) { //Nur nach Sonnenuntergang
if((time() > strtotime("22:30")) || (time() < strtotime("06:00"))) {
MXC_DimSet($lampenID, 15);
} else {
MXC_DimSet($lampenID, 50);
}
}
}
Dann brauchen wir noch ein Skript für jeden Flur.
//Trigger durch Bewegungsmelder Variable!
//Eindeutige Geräte-ID
$lampenID = 53013 /*[Erdgeschoss\Flur\Deckenlampe]*/;
//Tag/Nacht Variable
$istTag = 31753 /*[IstTag]*/;
includeScript(12345 /*[Szenarien\Lichtsteuerung (xComfort, Flur, Bewegungsmelder, Helligkeitsregelung)]*/
//Copy&Paste aus der Skript-Library
function includeScript($scriptID)
{ $s = IPS_GetScript($scriptID);
include($s['ScriptFile']);
}
Wir können uns also „Funktionsvorlagen“ erstellen und diese dann nur noch mit den nötigen IDs füttern. In diesen Skripten sind dann die IDs, zu denen IP-Symcon immer vollständige und aussagekräftige Namen erstellt. (Sofern man seinen Baum vernünftig erstellt)
Wenn man es will/braucht, kann man das Szenario auch für FS20 anpassen und dynamisch anhand der übergebenen InstanzID die richtige Funktion aufrufen. Soweit will ich es aber hier nicht treiben.
Ich würde also keine kryptischen Namen vergeben, sondern klare und beschreibende Namen und diese in den Baum einordnen. Nach dem Prinzip Etage\Zimmer\Gerät. Die Namen der Status Variablen würde ich, sofern nicht unbedingt benötigt, garnicht anfassen.
Wenn ihr die IDs nutzt, nimmt euch IPS die Arbeit ab, wenn sich ein Name ändert, da die Kommentare im Skripteditor automatisch aktualisiert werden bei jedem öffnen des Skriptes!
paresy