Hier geht’s wirklich nicht darum, ein ganz tolles, super mächtiges App zu erstellen. Stattdessen soll dieses kleine Script ein bisschen ein „Framework“ darstellen, falls Du an sowas interessiert bist, und die ersten Schritte sind ja immer die schwersten.
Was wir heute machen, ist Rumps einzusetzen um einen Eintrag in die Mac Menu Bar zu machen, phue verwenden um die Hue Bridge anzusprechen, und dann einen LaunchD Agenten erstellen, damit das Script beim Reboot erhalten bleibt.
Das Script bringt das Gerüst mit sich, um
- sich in der Bridge einzuloggen
- Szenen aus der Bridge ins Script einzulesen
- Lichter an- und auszuschalten
- und Helligkeit einzustellen
Installation
Runterladen und irgendwo auspacken. Dann:
python3 -m venv venv # remember where you put it
source venv/bin/activate
pip3 install -r requirements.txt
Zum Ausführen (aber erst konfigurieren, siehe unten):
chmod +x lights.py
./lights.py
Konfigurieren
Du brauchst die IP-Addresse Deiner Hue Bridge. Diese dann im Script anpassen:
bridge = phue.Bridge('192.168.1.2')
Dann musst Du in der ersten Zeile nur noch den Pfad anpassen, in dem Dein „venv“ gelandet ist:
#! /Users/<yourusername>/path/to/venv/bin/python
Bei reboots automatisch starten:
Dazu machen wir einfach einen launchd Agenten:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.yourusername.huelights</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/your/venv/bin/python</string>
<string>/path/to/your/lights.py</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
Agent laden:
launchctl load /path/to/your/com.yourusername.huelights.plist
License / Lizenz
This is free and unencumbered software released into the public domain under the CC0-1.0 license.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, in source code form, for any purpose, commercial or non-commercial, and by any means.