Beiträge von lukas.roegner

    Nastra Super! Freut mich, dass es geklappt hat.


    Ich nutze Postman im täglichen (beruflichen) Leben immer, wenn es um APIs geht. Man kann einfach super damit rumprobieren und hat eine History aller gemachten Requests.


    Wenn ich einen neuen Shortcut in meine Automationen integriere dann probiere ich erst mit Postman herum, weil man dann die Daten schnell ändern kann und die vielen Sonderzeichen nicht mühsam auf der iOS-Tastatur eingeben muss.

    Die Eintragung der Werts für den Authorization Header sieht mir nicht richtig aus. Ich kenne das Tool nicht, welches du verwendest, aber ich gehe davon aus, dass du auf den "Authorization" Button geklickt hast. Anstatt den Button zu verwenden, nutze die Tabelle darunter und füge manuell einen Eintrag mit "Header Field" "Authorization" und "Header Value" "DeinGeheimnis" (also den Wert für apiToken) hinzu. Eventuell vorher den vorhandenen Eintrag entfernen.

    Also, das Plugin hat 2 Möglichkeiten, mit dem AppleTV zu interagieren:

    1. Du kannst isOnOffSwitchEnabled und/oder isPlayPauseSwitchEnabled auf true setzen, das Plugin erstellt dann jeweils einen Switch für On/Off und Play/Pause in HomeKit

    2. Du kannst die API aktivieren


    Warum die API? -> Du kannst "Makros" zum Steuern des AppleTV über HomeKit Shortcut Automation oder Shortcuts auf iDevices nutzen. Hierzu die Shortcut-Aktion "Inhalt von URL abrufen" verwenden.


    Zitat

    Bekomme immer 401 als Fehler also nicht autorisiert.

    Hast du den Authorization Header gesetzt? Der Wert des Headers muss mit dem Wert im Konfigurationsfeld apiToken übereinstimmen.

    Schritt 1: Apple TV Credentials erstellen

    Code
    npm install -g node-appletv-x --unsafe-perm

    Die Installation dauert leider nochmal so lange. Anschließend hast du das Command appletv auf der Kommandozeile verfügbar. Einfach appletv pair auf der Kommandozeile eingeben und den Pairing-Prozess abschließen. Du erhältst einen ganz langen string, das sind die Credentials für den Apple TV.


    Schritt 2: Plugin konfigurieren

    Die Werte für name und apiToken kannst du beliebig festlegen. Damit bist du startklar für API.


    Um ein Command an den AppleTV zu senden, mache einen POST-Request an http://XXX.XXX.XXX.XXX:40304/DerNameDesAppleTv, wobei XXX.XXX.XXX.XXX die IP-Adresse des Homebridge-Hosts ist. Als Header setzt du Authorization auf DeinGeheimnis. Als Request Body verwendest du JSON, z.B.

    Code
    {
        "commands": [
            {
                "key": "topmenu"
            }
        ]
    }

    um die Menü-Taste zu drücken.


    Zum Testen von APIs verwende ich das Tool "Postman", ist ein grafischer HTTP-Request-Composer. Alternativ kannst du die Daten auch testweise als Kurzbefehl mit dem Aktionstyp "Inhalte von URL abrufen" einrichten.

    Ich habe jetzt die Dependency auf node-appletv-x umgestellt. Auf dem Mac konnte ich jetzt sowohl node-appletv-x als auch mein Plugin homebridge-appletv ohne --unsafe-perm und sudo installieren. Gleiches gilt für den Raspberry.


    Falls einer von euch Zeit hat und auf Node 12 ist, würde ich mich über eine Info freuen, ob es bei euch auch funktioniert (npm install -g https://github.com/lukasroegner/homebridge-appletv.git).

    So, ein kurzes Update: Die homebridge-appletv Implementierung läuft bei mir seit einer Woche, heute noch eine Optimierung durchgeführt und ich muss sagen...es funktioniert gut. Das neue Plugin hält die Verbindung dauerhaft aufrecht und das funktioniert soweit mit meinen AppleTVs.


    Da ihr Probleme mit dem neuen Plugin habt (ich vermute nach einiger Recherche, dass es tatsächlich an Node >= 12 liegt), würde ich, falls gewünscht, die Features in das homebridge-atvremote Plugin rückführen. Dann kann man je nachdem, was für einen am Besten funktioniert, auf das eine oder andere Plugin gehen.

    Das würde konkret bedeuten:

    - ich baue die Schalter in das homebridge-atvremote ein

    - ich würde (auf einem dev-Branch erstmal testweise) auch die dauerhafte Verbindung implementieren, sodass die die Befehle dann viel schneller ausgeführt werden können (was vor allem bei Nutzung der Schalter Sinn macht)


    hyxamp würde dir das helfen? Falls daran kein Interesse besteht, bin ich auch nicht böse darüber, da noch einige Issues bei anderen Plugins auf meine Freizeit warten ;)

    Sodium wurde laut Log korrekt installiert. Ganz unten findest du den Fehler:


    Also ist curve25519-n2 der Übeltäter. Das sollte hyxamp Hoffnung machen.

    bubffm Fehlermeldungen oder Output vom sodium Build? Während des Builds bekommst du seitenweise Output, das müssen aber keine Fehler sein. Wenn ein Fehler auftritt, dann ist der relativ weit unten zu finden. Kannst du da mal nachsehen?

    hyxamp Hatte auch alle diese Probleme. Daher habe ich auch erstmal auf pyatv gesetzt. Das von dir angegebene Plugin nutzt aber die Standard-Variante von node-appletv, welche sodium 2.0.3 benötigt, das habe ich auch nicht zum Laufen bekommen. Ich nutze einen Fork, welcher die Package Dependencies geupdated hat, also im Fall von sodium die Version 3.0.2 verwendet. Das hat auf jeden Fall bei mir zum Erfolg geführt. Welche Fehlermeldung bekommst du ohne sudo nach der langen Warterei?

    Welcher Befehl wird denn beim Ausschalten des ATV über den von dir implementieren Schalter gesendet? Ich hatte es immer mit "suspend" probiert aber auch die Erfahrung gemacht, dass sich der Apple TV danach nicht mehr starten lässt. Da hat bloß noch ein hard-reset geholfen. Inzwischen schalte ich den Apple TV über die Kombination: "home_hold" + "select" aus.

    Der Schalter ist über home + select implementiert, da der suspend die HDMI CEC Geräte nicht beachtet.

    Ohne sudo bleibt er komplett hängen. Habe Terminal gekillt und neugestartet.


    sudo su - und dann das andere direkt dran oder mit Leerzeile?

    Lass ihn mal ruhig weiter laufen...man meint, dass es hängt, aber er tut was. Der Build für die Dependency sodium dauert lange, einfach mal 10 Minuten laufen lassen