Ich brauch mal ein paar Ideen
Ich habe verschiedene Variablen, die als Trigger dienen, um unterschiedliche HM / HmIP Aktoren zu schalten.
Jetzt kann es vorkommen, dass die Auslösung gleichzeitig stattfindet.
- Trigger Variable löst diesen Block an Schaltbefehlen aus:
$parameter1 = @HM_WriteValueInteger($id, 'ACOUSTIC_ALARM_SELECTION', $AcousticSignal);
$parameter2 = @HM_WriteValueInteger($id, 'OPTICAL_ALARM_SELECTION', $OpticalSignal);
$parameter3 = @HM_WriteValueInteger($id, 'DURATION_UNIT', $DurationUnit);
$parameter4 = @HM_WriteValueInteger($id, 'DURATION_VALUE', $DurationValue);
Diese müssen auch zeitlich eng abgearbeitet werden und in der Reihenfolge, damit es funktioniert.
- Trigger Variable löst diesen Block an Schaltbefehlen:
$setColor = @HM_WriteValueInteger($id, 'COLOR', $Color);
$setBrightness = @HM_WriteValueFloat($id, 'LEVEL', $deviceBrightness);
@paresy:
Ich vermute, dass wenn beide Blöcken von Schaltbefehlen parallel an den Homematic I/O Socket geschickt werden, dann wird die Reihenfolge nicht mehr eingehalten und es kommt zu einer Vermischung.
Der Socket kann ja vermutlich nicht unterscheiden was zusammengehört und nimmt „stumpf“ die Befehle an, so wie sie kommen und arbeitet diese ab.
Lösungsansatz 1:
Jetzt könnte ich zwischen dem 1. Block und dem 2. Block mit einer Verzögerung arbeiten, so dass ich davon ausgehen kann, dass der 1. Block komplett abgearbeitet wurde, bevor ich den 2. Block schicke.
Diese Lösung will ich eigentlich nicht bevorzugen.
Lösungsansatz 2:
Ich baue auf der CCU eine Direktverknüpfung mit einem virtuellen Taster und schalte von IPS den virtuellen Taster.
Diese Lösung will ich eigentlich nicht bevorzugen, da ich alles in IPS machen möchte.
Könnte ich mir nicht eine Queue bauen, wo die Blöcke hingesendet werden und diesen Block in ein Semaphore packen?
Wie löst ihr das?
@Nall-chan:
Oder stellt dein Homematic Extended sowas schon zur Verfügung?
Uli