Nachdem ich nun auch auf die V2 gewechselt habe, ich aber noch keine große Erfahrung mit den Scripten habe, bin ich auf folgendes Problem gestoßen.
Ich möchte meine Rolläden Automatisch (gesteuert mit Zeit und Helligkeit) runter und hoch fahren lassen. Das habe ich auch soweit hinbekommen.
Jetzt stellt sich mir nur ein Problem:
Bei der Terassentür möchte ich eine Sicherheitsfunktion einbauen, d.h. hier darf das Rollo nicht einfach runtergehen, da wir zu unterschiedlichen Zeiten noch draußen sitzen. Da ich nun keinen Bewegungsmelder einsetzen und auch keine Taster draußen montieren möchte, kam mir folgende Idee.
Das Rollo fährt zum ersten Zeitpunkt nur ein kleines Stück herunter, dann ist für 2 Min. Stop. Wenn innerhalb dieser Zeit kurz der innere Taster betätigt wird, wird der Schließvorgang abgebrochen und das Rollo fährt ggf. wieder hoch. Falls der Taster nicht betätigt wird, fährt das Rollo wieder ein Stück herunter so das man (zwar gebückt) immer noch die Möglichkeit hat, den inneren Taster zu erreichen und den Vorgang zu beenden. Falls innerhalb der nächsten 2 Minuten der Taster auch nicht betätigt wird, fährt das Rollo ganz runter.
Ich habe mir gedacht, das sich dieses am besten mit mehreren Scripten realisieren läßt.
Das erste wird gestartet und fährt ein kleines Stück runter.
Das zweite wird 2 Minuten später gestartet wenn nicht der Taster gedrückt wurde.
Das dritte wird wiederum 2 Minuten später gestartet wenn der Taster nicht gedrückt wurde.
Ein weiteres Script wird wird gestartet wenn der Taster betätigt wurde und das erste Script schon ausgeführt wurde, und setzt dann eine Variable die verhindert, das die folgenden Scripten (Rollo weiter runter) ausgeführt werden.
Die Abfrage und den Vergleich, der letzten Taster Betätigung und der aktuellen Zeit (daraus ergibt sich ja die verstrichene Zeit seit Tasterbetätigung) habe ich hinbekommen, jetzt habe ich nur das Problem, eine Variable im Script zu setzen und dieses an andere Scripte zu übergeben, bzw. Auszuwerten.
Kann mir jemand sagen wie ich das machen kann ?
Falls jemand eine vergleichbare Situation hat, und dafür eine andere, bessere oder einfachere Lösung gefunden hat, bin ich für Anregungen sehr Dankbar.
kennst Du den Unterschied zwischen internen und externen Variablen?
Interne Variablen (die mit dem vorangestellten Dollar-Zeichen) existieren nur zur Laufzeit eines Skripts. Ist das Skript beendet, gehen alle internen Variablen verloren. Wenn Du etwas dauerhaft speichern willst, musst du externe Variablen verwenden.
Auf externe Variablen können alle Skripte in beliebiger Weise zugreifen. Damit ist also problemlos ein Datenaustausch zu realisieren.
Externe Variablen werden mit diesen Funktionen gelesen oder geschrieben:
GetValue(VarID)
SetValue(VarID, VarWert)
super danke für den Hinweis, das werde ich gleich mal am WE probieren.
Wenn ich das richtig sehe werden Ext. Variablen außerhalb der Scripte definieren (also da wo z.B. auch die XComfort Module liegen), oder ?
das ist mein Testscript, alles bis zur Zeile 23 tut ohne Problem, nur der letzte Eintrag bringt immer Fehler, egal was ich mache. Habe schon zig verschieden Variablen außerhalb des Scriptes probiet, gehen alle nicht.
dank der Hilfe hier, laufen meine Scripte jetzt problemlos (Großen Dank noch einmal Rainer).
Jetzt habe ich nur noch einen Schönheitsfehler:
Ich sende in den beiden ersten Scripts innerhalb einer If Abfrage, mehrfach „MXC_ShutterStepDown“ hintereinander, hierbei ist mir aufgefallen, das nicht immer die richtige Anzahl an Downsteps gemacht wird. Ich vermute, das die Befehle zu schnell hintereinander verschickt werden, so das der aktor nicht alle richtig mitbekommt.
Kann das sein, und wenn ja, gibt es eine einfache Möglichkeit, den nächsten Befehl erst zu senden, wenn der andere abgearbeitet ist ?
In diesem Fall sehe ich das nur als Schönheitsfehler, da es nicht darauf ankommt, ob 2, 3, 4 Steps gemacht werden, aber in anderen Anwendungsfällen könnte ich mir das doch als kritischer vorstellen.
Jetzt habe ich nur noch einen Schönheitsfehler:
Ich sende in den beiden ersten Scripts innerhalb einer If Abfrage, mehrfach „MXC_ShutterStepDown“ hintereinander, hierbei ist mir aufgefallen, das nicht immer die richtige Anzahl an Downsteps gemacht wird. Ich vermute, das die Befehle zu schnell hintereinander verschickt werden, so das der aktor nicht alle richtig mitbekommt.
Kann das sein, und wenn ja, gibt es eine einfache Möglichkeit, den nächsten Befehl erst zu senden, wenn der andere abgearbeitet ist ?
In diesem Fall sehe ich das nur als Schönheitsfehler, da es nicht darauf ankommt, ob 2, 3, 4 Steps gemacht werden, aber in anderen Anwendungsfällen könnte ich mir das doch als kritischer vorstellen.
In welchen Scripten
Sorry, zeig sie. Wie soll jemand sonst wissen was Du meinst.
In dieser Zeit steht dein Script, solange bis dieser Befehl in (Zeit) ausgeführt wird.
Sofern nicht Zeitrelevantes anliegt kein Problem, ansonsten gibt es Timerbefehle.
Wenn ich das Script manuell über Ausführen starte, geht alles Problemlos.
Wenn ich das Script automatisch über einen Timer starte, mach das Rollo Mist.
Aber nun ist mir zu Spät, werde Morgen weiter suchen.