Hallo zusammen,
aufgrund einer Nachfrage im Zigbee2MQTT Thread habe ich eine Anleitung erstellt, wie ein MDT Glastaster zum Dimmen für nicht KNX Geräte in Symcon verwendet werden kann.
Der Status wird ebenfalls an den Glastaster zurückgegeben.
Für das Vorhaben wird das KO vom relativen Dimmen benötigt, das sieht bei mir in Symcon so aus:
Unter Bewegung und Erhöhen/Erniedrigen habe ich einen Ablaufplan „Dimmen“ angelegt:
Der Ablaufplan bekommt ein Ereignis auf die Variable Bewegung und Erhöhen/Erniedrigen, welches auf eine Aktualisierung reagiert:
Danach werden zwei „Wenn …, dann (mehrfach)“ Schritte im Ablaufplan erstellt:
1. Schritt:
Wenn …, dann (mehrfach):
Bewegung und Erhöhen/Erniedrigen = Increase
Schrittunterteilung != Pause
Evaluation: „Alle Bedingungen müssen erfüllt sein“
Innerhalb der Verschachtelung gibt es ein PHP Script:
<?php
//aktueller Wert der Schrittunterteilung
$Schrittunterteilung = GetValueFormatted(18258);
//Helligkeitsvariable für zu schaltendes Gerät
$Helligkeit = 13266;
//Schleife solange ausführen bis Schrittunterteilung wieder den Wert Pause enthält
while ($Schrittunterteilung != 'Pause') {
//Value um welchen die Helligkeit erhöht werden soll
$Value = 25;
// Wenn die Helligkeit schon das Maximum erreicht hat, abbrechen.
if (GetValue($Helligkeit) == 255) {
return;
}
//Wenn die Summe aus der Helligkeitsvariable und des zu erhöhenden Values den Maximalwert überschreitet, nur noch so viel hinzuaddieren, dass der Maximalwert erreicht wird.
if (GetValue($Helligkeit) + $Value > 255) {
$Value = (GetValue($Helligkeit) -255) *-1;
}
RequestAction($Helligkeit,GetValue($Helligkeit)+$Value);
$Schrittunterteilung = GetValueFormatted(18258);
}
2. Schritt:
Bewegung und Erhöhen/Erniedrigen = Decrease
Schrittunterteilung != Pause
Evaluation: „Alle Bedingungen müssen erfüllt sein“
Innerhalb der Verschatelung gibt es ein PHP Script:
<?php
//aktueller Wert der Schrittunterteilung
$Schrittunterteilung = GetValueFormatted(18258);
//Helligkeitsvariable für zu schaltendes Gerät
$Helligkeit = 13266;
//Schleife solange ausführen bis Schrittunterteilung wieder den Wert Pause enthält
while ($Schrittunterteilung != 'Pause') {
//Value um welchen die Helligkeit verringert werden soll
$Value = 25;
// Wenn die Helligkeit schon das Minimum erreicht hat, abbrechen.
if (GetValue($Helligkeit) == 0) {
return;
}
//Wenn die Differenz aus der Helligkeitsvariable und des zu verringernden Values den Minimalwert unterschreitet, nur noch so viel subtrahieren, dass der Minimalwert erreicht wird.
if (GetValue($Helligkeit) -$Value < 0) {
$Value = ($Value -GetValue($Helligkeit)) *-1;
}
RequestAction($Helligkeit,GetValue($Helligkeit)-$Value);
$Schrittunterteilung = GetValueFormatted(18258);
}
Grüße,
Kai