Hallo Leute,
Vielen Dank an bubffm, der mich bei GitHub auf diesen Thread hingewiesen hat. Das habe ich dann auch zum Anlass genommen, mir endlich mal einen Account hier zu erstellen!
Ich erzähle euch gerne den Hintergrund zum atvremote Plugin (und hole etwas aus):
Mit dem Start von iOS13/tvOS13 hat sich meines Erachtens nach eine völlig neue Welt der Automationen aufgetan. Früher musste man für etwas komplexere Automationen Umwege über Dummy Switches und Homebridge Plugins mit Custom Characteristics gehen. Das hat mich immer etwas gestört: Dummy Switches "müllen" einen Raum in der Home App voll und können ungewollt durch die Home App verändert werden. Homebridge Plugins mit Characteristics, welche von der Apple Home App nicht unterstützt werden, haben natürlich erweiterte Steuerbarkeit, meistens sieht es aber in der Home App komisch aus, wenn ich die Helligkeit meiner Sonos-"Lampe" steuere, um lauter/leiser zu machen...ihr merkt schon, ich bin ein Verfechter der Apple Home App. Die Eve App bietet super viele Möglichkeiten, mir gefällt das Design aber nicht.
Zurück zum Thema: Mit iOS13/tvOS13 brauche ich nun endlich keine Dummies mehr in HomeKit und kann mir auch die Erstellung von Automationen über andere Apps (z.B. Controller for HomeKit) sparen, welche man benötigte, um Custom Characteristics abzurufen/zu setzen. Daher habe ich mich bei fast allen von mir geschriebenen Plugins dazu entschlossen, gleichzeitig auch eine HTTP API einzubauen, sodass man gewisse Funktionen (welche schwierig in HomeKit abzubilden sind oder dort keinen Sinn machen, weil man sie nicht manuell triggers würde) über den "Inhalte von URL abrufen" Shortcut in Automationen einbauen kann.
Ein paar Beispiele (aus meinen Repos):
homebridge-nuki
Aktuell noch auf dem development Branch, habe ich auch hier eine API eingebaut. Somit kann ich in einer Automation "wenn die letzte Person das Haus verlässt" die Wohnungstür zuschließen...ohne die nervige Sicherheitsabfrage. Ich verstehe den Hintergrund der Sicherheitsabfrage, aber nicht beim automatischen Zuschließen.
homebridge-store
Müsste nicht mal ein Homebridge Plugin sein, da es nur ein einfacher HTTP Server ist. Ich habe es aber als Homebridge Plugin geschrieben, dass der Lifecycle per Homebridge verwaltet wird. Diese Plugin ersetzt bei mir die Dummy Switches, es kann per "Inhalte von URL abrufen" Shortcut Variablen setzen und lesen.
homebridge-sonos-multiroom
Hier kann man per API ein "Force-Stop" von Sonos Playbars durchführen. Mit dem in HomeKit implementierten Switch kann man den Stream einer Playbar (TV Sound) nämlich nicht stoppen.
homebridge-atvremote
Ich habe das Plugin geschrieben, um 2 konkrete Automationen durchzuführen: wenn ich abends schlafen gehe, dann schaltet sich der TV im Schlafzimmer automatisch an). Wenn ich morgen aufwache und in das Wohnzimmer gehe, dann schaltet sich der TV im Wohnzimmer ein, startet die Welt App und startet deren Live-TV-Stream.
Die unterstützen Features von atvremote (aus pyatv) sind ja super umfangreich, ich habe das dann einfach in eine API gegossen, mit der man "schnell" mal eine Automation anlegen kann, um den Apple TV zu steuern. Es werden mehrere Commands unterstützt, die dann nacheinander ausgeführt werden. Mit dem Command "wait X" kann man Pausen zwischen den virtuellen Eingaben machen. Um also eine bestimmte App zu öffnen, muss man nur den "Navigationsweg" als Commands umsetzen (z.B. ["home", "right", "right", "bottom", "select]).
Ich habe, als ich pyatv gefunden habe, auch darüber nachgedacht, einfach die "Skript über SSH ausführen" Funktion in den HomeKit Shortcuts zu verwenden. Das Problem ist nur, dass das ausführen mehrerer Commands hintereinander im non-interactive mode von atvremote sehr langsam läuft. Daher habe ich das Plugin geschrieben, um die Commands im interactive mode ("cli") virtuell einzugeben...das ist viel schneller.
So, jetzt habe ich doch sehr weit ausgeholt. Ich hoffe, meine Ausführungen waren verständlich und aufschlussreich. Ich beantworte gerne eure Fragen hier - oder als Issue auf GitHub.
Viel Grüße
Lukas