TutoTools: Philips-Hue-Leuchten samt IDs auflisten
Wenn Ihr mit Euren Philips-Hue-Leuchten auf der Kommandozeile herumspielt oder mit der API eigene Anwendungen baut, braucht Ihr immer wieder die IDs der Leuchten. Mit unserem kleinen Helferlein TutoHueList könnt Ihr Euch diese sauber im Terminal auflisten lassen. Wer weiß schon auswändig, welche ID "Lampe Wohnzimmer 2" hat?
Update 11/23: Wir haben jetzt auch eine etwas aufwändigerer Version auf Python-Basis, mit Fenstern und (vermutlich) mehr Kompatibilität für neuere Hue-Versionen.
Voraussetzung ist, dass Ihr einen Nutzer für die API angelegt habt, wie wir es hier zeigen.
TutoHueList
Das Abrufen aller Informationen über alle Leuchten ist simpel:
curl -s 192.168.178.119/api/ABCDEabcde1234567890/lights
Sofern Euer Nutzername ABCDEabcde1234567890 ist. Allerdings ist das soweit nur ein großer Zeichenklumpen - die Ausgabe muss aufgehübscht werden. Also werden zunächst die Namen und dann die IDs aufgespürt, dann in zwei Spalten nebeneinander dargestellt und letztlich von überflüssigen Zeichen befreit:
#!/bin/sh
a=$(curl -s 192.168.178.119/api/$1/lights)
echo $a | grep -o -P "\"name.*?[,]" > 0
echo $a | egrep -o "\"[0-9]{1,2}\":{1}" >1
paste 1 0 | sed 's/\([":,]\|name\)//g'
rm 1 0
Damit müsst Ihr Euch aber nicht zwangsläufig befassen. Ihr könnt das Tool einfach hier herunterladen und wie folgt aufrufen:
./TutoHueList ABCDEabcde1234567890
Natürlich müsst Ihr die IP der Hue-Bridge anpassen! Auch könntet Ihr den Nutzernamen direkt eintragen (statt $1), was die Sache später deutlich einfacher macht. Oder andersrum lights durch eine Variable ersetzen und andere Dinge abfragen. Seht es als Baukasten. Die Ausgabe sieht dann etwa so aus:
Unter Linux funktioniert das Skript auf Anhieb, da die benötigten Tools in der Regel bereits vorinstalliert sind. Unter Windows könnt Ihr zum Beispiel als Terminal die Git Bash aus dem Git-for-Windows-Paket nutzen. Tools wie curl, grep und paste findet Ihr einzeln oder auch im Paket UnxUtils, das wir Euch hier näher vorstellen.
Skript-Hintergrund
Falls es Euch interessiert, hier ein paar Worte zum Skript - ohne daraus eine allgemeine Einführung in reguläre Ausdrücke zu machen. Ein regulärer Ausdruck (Regular Expression), kurz RegEx, ist im Grunde nichts weiter als ein Suchmuster: Wenn Ihr zum Beispiel alle Mail-Adressen aus einem Texthaufen ziehen wollt, könnt Ihr das so definieren, dass eine Mail-Adresse alles ist, was zwischen zwei Leerzeichen steht, mittendrin ein @ hat und auf . gefolgt von zwei oder drei Buchstaben endet.
Das Skript zieht zunächst mit curl alle Infos. Als Nutzername wird über die Variable $1 das übergeben, was Ihr beim Skript-Aufruf als Argument übergebt.
Dann werden die Namen in die Hilfsdatei 0 geschrieben (jaja, unschön): Grep sucht hier den Teil des Texts, der mit "name anfängt bis hin zum ersten Komma - und das entspricht eben dem Namen der Leuchte.
Dann werden die IDs in die Hilfsdatei 1 geschrieben: Grep sucht hier nach einer ein- bis zweistellingen Zahl in Anführungszeichen gefolgt von einem Doppelpunkt.
paste stellt beide Hilfsdateien in Spalten gegenüber und sed entfernt letztlich alle Doppelpunkte, Anführungszeichen, Kommata und die Zeichenkette name aus den Spalten.
Wenn Ihr nun Spaß an RegExes gefunden habt, haben wir noch was über faule und gierige RegExes. Und natürlich noch ganz viel zum Smart Home. Und ein paar weitere TutoTools warten auch noch auf Euch.