Projekt: Philips Hue mit HomeMatic steuern
Neue Kategorie. In diesem Bereich möchte ich kleinere, abgeschlossene, Projekte vorstellen. Diese setzen ein wenig mehr Vorwissen voraus, sind aber am Ende fertig und ergeben einen Anwendungsfall. Also nicht einfach nur eine “blinde” Integration von Komponenten, sondern die Logik hinter dem ganzen in Zusammenspiel mit anderen Komponenten. In diesem Projekt möchte ich also einfach mal vorstellen, wie man mit einem HomeMatic-Taster eine oder mehrere Philips Hue Lampen ansteuern kann. Die Idee: Oben einschalten, unten ausschalten. Oben länger drücken heller, unten dunkler.
Was wird benötigt?
- Eine FHEM-Installation
- Ein HomeMatic-Taster
- Philips Hue mit ein paar Leuchtmitteln
Video
Befehle
define n_SZ_BettButton notify SZ_BettButton_Btn_(Unten|Oben):(Short|Long).* {}
SZ_BettButton_Btn_(Unten|Oben):(Short|Long).* {
Log3($SELF, 5, $EVENT);
if ($EVENT =~ qr/(Short|Long) ([0-9]*)_.*/p) {
my $targetDevs = "SZ_.*BettLicht";
my $maxBri = 254;
my $duration = $1;
my $counter = $2;
Log3($SELF, 5, 'Duration: ' . $duration . ' / Counter: ' . $counter);
if ($NAME =~ /.*_Oben$/ && $duration eq 'Short') {
# Kurz oben = Licht an
fhem("set $targetDevs bri $maxBri; setreading $SELF bri-calc 100");
} elsif ($NAME =~ /.*_Unten$/ && $duration eq 'Short') {
# Kurs unten = Licht aus
fhem("set $targetDevs off; deletereading $SELF bri-calc");
} elsif ($duration eq 'Long') {
# Lang unten = Licht dunkler
my $addition = ($NAME =~ /.*_Unten$/ ? -10 : 10);
my $currentBrightness = ReadingsNum($SELF, 'bri-calc', 100);
my $targetBrightness = $currentBrightness + $addition;
# Grenzen korrigieren
$targetBrightness = 100 if ($targetBrightness > 100);
$targetBrightness = 10 if ($targetBrightness < 10);
my $targetBri = ceil($maxBri / 100 * $targetBrightness);
fhem("set $targetDevs bri $targetBri; setreading $SELF bri-calc $targetBrightness");
}
}
}