Input gebraucht: Variable von Skript geschaltet oder Manuell am Schalter

Hallo zusammen,

ich baue gerade an meinen Szenen, dabei bin ich auf folgendes Problem gestoßen:

Ich habe bspw. einen Homematic Wandschalter für das Licht im Raum verbaut, und habe ein Skript welches meine Szenen für den Raum steuert. Neben wenigen definierten Szenen gibt es auch eine Automatik und Manuelle Szene (als Variable mit Profil). Befindet sich der Raum in Auto möchte ich gerne das bei einer manuellen Betätigung des Schalters an der Wand die Szene auf Manuell springt.

Prinzipiell kein Thema, funktioniert auch wenn ich das Skript mit einem Ereignis auf die „STATE“ Variable des Schalters verknüpfe. Nun schalte ich in der Automatik Szene aber u.U. auch das Licht über dieses Skript ein. Dann kommt mein Problem zum tragen, ich kann nämlich nicht unterscheiden ob ich Manuell oder über das Skript geschaltet habe.
Das Endresultat ist dann, dass nach dem Schalten aus dem Skript der Raum in die Manuelle Szene geht.

Kennt ihr eine Möglichkeit zwischen Skript und Manuellem schalten zu unterscheiden ?

Wie löst ihr bei euch so etwas ?

Danke für den Input!

Gruß,
Daniel

Hallo Daniel,

dies müsste über die Systemvariablen möglich sein:

Systemvariablen — IP-Symcon :: Automatisierungssoftware
$_IPS[‚SENDER‘] enthält den Auslöser des Scriptes und es werden zusätzliche Variablen gesetzt:
$_IPS[‚VARIABLE‘] enthält hier die ID der auslösenden Variable.

Darüber solltest Du eigentlich herausfinden, wer das Script ausgelöst hat.

Gruß
Christian

Und neben der auslösenden Variablen kann man auch das aufrufende Skript ermitteln, wenn man sich an diese Methode hält.

Viele Grüsse
Harald

Habe ich auch gesagt, $_IPS ist in meinem Fall aber leider identisch weil beides Mal die Variable triggert.

Ist auch logisch, weil das Skript per Ereignis auf die Änderung der STATE Variable des Wandschalters triggert. Somit ist dann immer der Absender der Wandschalter :frowning:

Der Absender ist nicht der Schalter, sondern der Status des Aktors.
Du kannst bei HM nicht die interne Taste eines Aktoren getrennt verarbeiten.
Klar das wenn du in einem Script den Aktor schaltest, das Script dann wieder aufgerufen wird und wieder und wieder… Schöne Endlosschleife :slight_smile:
Du kannst natürlich im Script vor dem Schalten das Ereignis deaktivieren… Aber ob das was hilft?
Michael

Ganz genau das ist mein Problem.
Das Deaktivieren bringt nichts, spätestens bei den Rolladenaktoren (die ja eine Zeit zum fahren brauchen) fällt mir das dort wieder vor die Füße :frowning:

Jemand Ideen?

Einzelnen (echten) Taster verbauen :wink:
Michael

Hallo Daniel,

wie wäre es, wenn Du das Umschalten auf den manuellen Modus verhindert, indem du zwischenspeicherst, dass das Licht von der Automatik angeschalten wurde ?

Prinzip:

  • Automatik schaltet Licht und setzt Variable $m auf false
  • Script wird durch Änderung von STATE getiggert
  • Script wertet aus, das $m= false und setzt nicht den manuellen Modus. Zugleich setzt Script $m wieder auf true
  • Wird Schalter manuell betätig, ist $m= true und das Script schaltet auf manuell …

… nur so ein Gedanke …

Gruß

Swifty

Swifty, tolle Idee. Danke!