Das folgende Beispiel zeigt, wie die beiden globalen Variablen:
$IPS_SENDER und $IPS_VARIABLE sinnvoll einzusetzen sind.
Aufgabe:
Verschiedene Temperaturwerte sollen in nur einem Skript erfasst,
und in einzelne Dateien auf die Festplatte abgespeichert werden.
Lösung:
Die Variable „$IPS_SENDER” in der IF-Bedingung sorgt dafür, dass nur Daten geloggt werden,
wenn eine Variablenänderung oder Update vorliegt.
Wird das Skript manuell (Strg + E) gestartet, ist die IF-Bedingung somit nicht erfüllt und
keine Daten werden abgespeichert.
Der Variable „$IPS_VARIABLE” wird automatisch der Variablenname seitens IP-Symcon zugeordnet,
welches das Skript getriggert hat.
Diese werden in „Triggered Variables“ (Strg + T) hinzugefügt – siehe Bild
und müssen in diesem Beispiel das Format „Float“ haben.
PS:
Die im o.g. Skript verwendete Instance–ID muß für Ihre Umgebung angepasst werden.
Benutzen Sie die Tastenkombination CTRL + I um InstanceID Selector zu öffnen und wählen Sie die entsprechende Instance aus.
Bei Fragen, Unklarheiten, Anregungen usw. bitte hier posten!
In Bezug auf meinen Fehler (es war schon spät - billige Ausrede, ich weiss) müsste das von Steiner ja auch falsch sein, nicht? Hier hatte ich nämlich abgekuckt
if ($IPS_SENDER= „Variable“)…
Also, nochmal, ich habe das Grundprinzip verstanden, nur komme ich mit der Syntax nicht klar:
lauft NUR wenn der script uber eine IPS-variabele gesteuert wird.
$temperatur=GetValueFloat($IPS_VARIABLE);
wieso weisst du das da uberhaupt einem float wert kommt?
besser wäre:
switch $IPS_VARIABELE
case "schrank_ist_temp_meiner_whiskey"):
//ist ne float wert
//offne onbedingt die turen
TTS_speak([TTS-id],"Guyabano .. DU HASST DURST");
break;
case "die_frau_offnet_die_tur":
//dies ist ein boolean
SetValueBoolean("deine-frau-hat-ein-problem", "$IPS_VARIABLE");
FS20_SwitchDuration([id-des-repellenter-kicker],true,1);
break;
case "ich-binn-es":
//dies ist ein integer
SetValueString("Darf-ich-mein-haus-noch-verlassen", "Ich bin um : " . GetValueString([id-des-alco-testers (gibt %-werte raus)],$IPS_VARIABELE) . " prozent beschwippst. Neeh besser nicht ;-\)");
}
}
Danke Jungs, Paresy und Fredje. Viele tolle hilfe, und ich habe es auch total verstanden, nur leider geht es nicht. Hat jemand mal sein Script selbst getestet?
Fall genommen, du fragst die IPS_VARIABLE auf eine Bool-Variable ab, und diese Bool-Variable triggerst du aus dem IPS-Designer raus über ein Häckchen-Fenster (Check-Box), dann reagiert in deinem Script nix. Auf jeden Fall bei mir !