thomaskekeisen.de

Aus dem Leben eines Bildschirmarbyters

Neue Farbe alle zwei Sekunden

Ich fand es witzig, in unserer Wohnung eine Art "Party-Modus" in mehreren Variationen zu implementieren. Eine tragende Rolle hierbei spielt das andauernde Iterieren der Farben aller Lampen. Nachfolgend eine Anleitung, wie sich das ständige Durchwechseln aller Birnen - in meinem Fall Birnen von Philips Hue- mit OpenHAB einrichten lässt. In meinem Artikel Mein Smarthome mit OpenHAB 2 habe ich meine zugrundeliegende Installation erklärt.

Neue Items anlegen

Um den Farbverlauf zu aktivieren habe ich zwei neue Items angelegt. item_party_modus für die allgemeine Aktivierung und Deaktivierung sowie item_party_modus_dark um den Farbverlauf nochmals etwas dunkler schalten zu können.

            items/party.items
            
                Switch item_party_modus      "Party-Modus"        ["Switchable"]
                Switch item_party_modus_dark "Party-Modus-Dunkel" ["Switchable"]
            
        

Script für Farbverlauf

Um die Farben meiner Lampen regelmäßig durchzuschalten, habe ich ein Script implementiert, das, sobald es ausgeführt wird, die aktuelle Farbe des Itemsitem_buero_buero_hinter_monitoren_color ausließt und um einen Wert erhöht. Die Helligkeit der Lampen wird dabei auf 65 oder 30 gesetzt, abhängig davon, ob das zuvor erstellte Itemitem_party_modus_dark aktiviert oder deaktiviert ist. Das taktgebende Item ( item_buero_buero_hinter_monitoren_color ) kann natürlich frei gewählt werden, muss aber Teil der Party-Modus-Animation sein.

            scripts/hue_fade.script
            
                var hsb             = item_buero_buero_hinter_monitoren_color.state as HSBType
                var DecimalType hue = new DecimalType(hsb.hue.intValue % 360 + 1)
                var PercentType sat = new PercentType(hsb.saturation.intValue)
                var brightValue     = 65;

                if (item_party_modus_dark.state == ON) {
                    brightValue = 30;
                }

                var PercentType bright = new PercentType(brightValue)
                var HSBType     newHsb = new HSBType(hue, sat, bright)

                sendCommand(item_buero_buero_fitnessgeraet_color,    newHsb);
                sendCommand(item_buero_buero_hinter_monitoren_color, newHsb);
                sendCommand(item_buero_buero_lampe_decke_color,      newHsb);
                sendCommand(item_buero_buero_unter_tisch_color,      newHsb);
                sendCommand(item_buero_buero_unter_regal_color,      newHsb);
                // ...
            
        

Regel erstellen

Abschließend habe ich eine Regel erstellt, die alle zwei Sekunden ausgeführt wird und prüft, ob das Itemitem_party_modus aktiviert ist. Falls ja, wird das gerade definierte Script mit dem Namen hue_fade (Dateipfad: scripts/hue_fade.script ) aufgerufen. Im Wiki von ubuntuusers.de findet sich eine schöne Erklärung zu Cronjobs, aus der auch das Format der Ausführungszeiten ( */2 * * * * ? ) genauer beschrieben wird.

            rules/party.rules
            
                rule "Party time"
                when
                    Time cron "*/2 * * * * ?"
                then
                    if (item_party_modus.state == ON) {
                        callScript("hue_fade");
                    }
                end
            
        

Das Ergebnis

Anbei ein kleines Video, wie der beschriebene Party-Modus in unserer Wohnung aussieht. Nach spätestens zwei Sekunden - egal ob per OpenHAB-App oder Echo Dot-Routine gestartet - fangen alle Lampen an, gemächlich ihre Farben zu wechseln. Ergänzend dazu kann ich das item_party_modus_dark - Item zum Abdunkeln aller Lampen durch ein "Alexa, ganz schön hell hier" und "Alexa, ganz schön dunkel hier" aktivieren sowie deaktivieren.

Openhab-Fade-Crontab

OpenHAB 10. Juli 2018 Video öffnen

Teilen

Kommentare