thomaskekeisen.de

Aus dem Leben eines Bildschirmarbyters

Ergänzung zu OpenHAB

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.

Steuerung per TouchBar und AppleScript

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.

Screenshot: Slider im Better-Touch-Tool

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
            
        

Et voila

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:

Video: Lautstärke-Slider mit Better-Touch-Tool

Teilen

Kommentare