Beiträge von lukas.roegner

    Also, neuer Versuch: ich habe jetzt das node Package node-appletv zum Laufen bekommen (ein spezieller Fork hat die Fehler behoben). Bei mir läuft es sowohl auf macOS als auch auf dem Raspberry Pi. Auf dem Mac konnte ich es ohne sudo nicht installieren, auf dem Pi hat es ohne sudo funktioniert.


    Die Verbindung wird wesentlich schneller aufgebaut als bei dem Python Package. Das neue Plugin hat in der Config Einstellungen, um einen On/Off Switch und einen Play/Pause Switch in HomeKit zu erstellen. Den Status zum Apple TV zu erhalten habe ich noch nicht hinbekommen.


    Das neue Plugin ist hier zu finden: https://github.com/lukasroegner/homebridge-appletv

    Aufgrund des neuen Aufbaus und der neuen Grund-Library habe ich mich dazu entschieden, ein neues Repo zu machen und nicht das Alte zu verwenden.


    Ich freue mich über Feedback.

    bubffm Deshalb ist das Plugin auch nicht im NPM Repo, sondern nur über GitHub zu installieren. Ich habe das Plugin einfach nur für mich persönlich geschrieben und war verwundert, dass es überhaupt jemand verwendet :D


    Die Alternative zu pyatv wäre das node-appletv Package, das bekomme ich (und alle Anderen, wenn man die Issues auf GitHub betrachtet) aber nicht zum Laufen, da eine Dependency nicht funktionieren möchte. Vielleicht tut sich da in Zukunft etwas, dann könnte man auf die Python-Implementierung verzichten.


    hyxamp Aktuell ist das Plugin so geschrieben, dass bei jedem HTTP Call die Verbindung zum Apple TV aufgebaut, die Commands geschickt und dann die Verbindung geschlossen wird. Man könnte ausprobieren, ob eine dauerhafte Verbindung zum Apple TV möglich ist...dann würden die Commands sofort (Millisekunden) ausgeführt werden können.

    hyxamp Die Info mit dem Wert logicalDeviceCount hört sich ganz vielversprechend an, ich werde das nach meinem Urlaub mal am Apple TV checken und testweise implementieren.


    Zu den Problemen mit den Berechtigungen: Hast du schon mal ausprobiert, dich als homebridge User per SSH mit dem Raspberry Pi zu verbinden und pyatv über diesen User per pip zu installieren?

    Falls ihr Wünsche für das Plugin habt (z.B. Switch für wakeup und sleep), kann ich das gerne implementieren. Ich habe in den Docs vonpyatv leider nichts darüber gefunden, ob man den aktuellen Status des Apple TV auslesen kann (um beim Einschalten des Apple TV über Fernbedienung den Status in HomeKit zu aktualisieren), habt ihr da etwas gelesen?

    bubffm jetzt verstehe ich das mit dem App-Shortcut...ich hatte mich schon gefragt, ob man eventuell mit HomePod als Steuerzentrale auch Apps in den HomeKit Shortcuts verwenden kann. Das Plugin habe ich genau aus diesem Grund geschrieben, da ich keine Möglichkeit gefunden habe, den Apple TV über HomeKit Automationen zu steuern.


    hyxamp Ich hatte bei der Installation von pyatv auch vergessen, explizit Python 3 zu verwenden, daher habe ich im ersten Anlauf die aktuellste Version von pyatvfür Python 2.X installiert (und das wird schon länger nicht mehr gewartet). Mit pip3 install pyatv==0.4.0a10 hat es dann wie gewünscht funktioniert.


    Allerdings wurde bei mir während der Installation das Command atvremote nicht eingerichtet (war auch nach reload der Bash nicht verfügbar). Das ist aber kein Problem, da man ja einfach die main des Packages verwenden kann, je nach Python 3 Version und Nutzer z.B. python3 ./home/pi/.local/lib/python3.7/site-packages/pyatv.


    hyxamp hast du bereits ausprobiert, pyatv ohne sudo auszuführen? Hast du einen eigenen Nutzer für Homebridge eingerichtet oder nutzt du den pi User?



    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