Achtung: Diese Seite enthält Partner- und Werbe-Links. Daher ist diese Seite im Gesamten als Werbeanzeige zu verstehen!
Ich habe in Artikeln wie Mein Smarthome mit OpenHAB 2 und Teufel Raumfeld Boxen mit OpenHAB ans Smart Home anbinden schon ausführlich berichtet, wie ich meine Raumfeld-Boxen mit OpenHAB in mein Smart-Home integriert habe. Da ich im täglichen Gebrauch aber meist nur Musik mit Spotify höre und alle sonstigen Smart-Home-Bedienungen per Sprachbefehl an meine Echo Dots delegiere, war die einzige Aktion, die ich tatsächlich noch manuell über meinen Browser erledigt habe, das Setzen der Lautstärke der Boxen in meinem Büro. Hier war die Sprachsteuerung per Echo Dot keine Option, da ich öfter auch telefoniere und zügig die Lautstärke der Musik regeln muss.
Da mir die Steuerung über den Browser und die Tatsache, dass ich dafür auch ständig einen Browser-Tab mit geöffneter OpenHAB-Steuerzentrale geöffnet haben musste, zu umständlich war, habe ich mir eine Lösung über meine in meinem MacBook verbaute TouchBar entwickelt. Aufgrund meines Artikels TouchBar auf neuen MacBooks sinnvoll(er) nutzen hatte ich ohnehin schon das Zusatzprogramm BetterTouchTool installiert.
So konnte ich letztlich einfach ein sogenanntes "Slider-Widget" über BetterTouchTool konfigurieren, das beim Drücken der Alt (⌥) -Taste einen Slider anzeigt, der bei jeder Änderung über 1% sofort eine HTTP-Anfrage an in Teufel Raumfeld Boxen mit OpenHAB ans Smart Home anbinden beschriebenen Raumserver sendet. Die Grafiken für die Icons rechts und links des Sliders habe ich von thenounproject.com kopiert.
Konkret heißt das, dass in meinem Netzwerk folgende URL mit einem Lautstärke-Wert zwischen 0
und 100
für den Parameter value
aufgerufen werden muss:
http://192.168.0.38:8080/raumserver/controller/setVolume?id=B%C3%BCro&value=40
Auf das BetterTouchTool adaptiert, resultiert das in folgendem AppleScript:
on bttWidgetSliderMoved(sliderValue)
set raumfeldUrl to "http://192.168.0.38:8080/raumserver/controller/setVolume?id=B%C3%BCro&value=" & (sliderValue * 100)
do shell script "curl " & quoted form of raumfeldUrl
end bttWidgetSliderMoved
Damit der Slider auch immer an der richtigen Position steht, muss natürlich auch die aktuelle Lautstärke der Box ausgelesen und entsprechend gesetzt werden. In meinem Fall finde ich den entsprechenden Wert für die Box mit der uuid
9175f1a5-152f-428f-aeb0-9110736061d3
unter folgender URL:
http://192.168.0.38:8080/raumserver/data/getRendererState?id=b%C3%BCro
Mit diesem, sehr einfach gestrickten, AppleScript lese ich die Lautstärke aus, indem ich die Antwort des Raumserver ein paar Mal zerteile. Leider war weder die Nutzung von JSONPath( $.[?(@.roomUdn=='uuid:9175f1a5-152f-428f-aeb0-9110736061d3')].volume
) noch regulären Ausdrücken einfach im AppleScript abzubilden.
on split(theString, theDelimiter)
set oldDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to theDelimiter
set theArray to every text item of theString
set AppleScript's text item delimiters to oldDelimiters
return theArray
end split
set raumfeldUrl to "http://192.168.0.38:8080/raumserver/data/getRendererState?id=b%C3%BCro"
set jsonString to do shell script ("curl " & raumfeldUrl)
set split1 to my split(jsonString, "uuid:9175f1a5-152f-428f-aeb0-9110736061d3")
set split2 to my split(last item of split1, ",\"transportState")
set split3 to my split(first item of split2, ":")
return (last item of split3) / 100
Mit dieser Konfiguration kann ich nun einfach die Alt (⌥) -Taste drücken und ohne mühsames Bedienen der Maus schnell unud bequem die Lautstärke meiner Büro-Box steuern: