lukas.roegner Gerade ausprobiert, bei mir geht es nicht mit:
npm install -g https://github.com/lukasroegner/homebridge-appletv.git
nur mit:
npm install -g https://github.com/lukasroegner/homebridge-appletv.git --unsafe-perm
Ich bin auf node 12.14.1
lukas.roegner Gerade ausprobiert, bei mir geht es nicht mit:
npm install -g https://github.com/lukasroegner/homebridge-appletv.git
nur mit:
npm install -g https://github.com/lukasroegner/homebridge-appletv.git --unsafe-perm
Ich bin auf node 12.14.1
ZitatIch bin auf node 12.14.1
Habe ich oben schon geschrieben ![]()
Aber er ist noch am Installieren das dauert ja ewig ![]()
Edit: Gerade erfolgreich fertig geworden:
lukas.roegner Kannst du mal ein Beispiel machen wie die Config aussehen muss wenn ich einen
API - Send Commands befell einfügen möchte für ein Apple TV. Bin zwar noch nicht soweit aber das ist mir irgendwie noch nicht klar ![]()
Also wo muss ich das hier einfügen?
Also Pairing des AppleTV hat wunderbar geklappt ![]()
Schritt 1: Apple TV Credentials erstellen
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
{
"platform": "AppleTvPlatform",
"devices": [
{
"name": "DerNameDesAppleTv",
"credentials": "...",
"isApiEnabled": true,
"apiPort": 40304,
"apiToken": "DeinGeheimnis"
}
]
}
Alles anzeigen
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.
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.
Klasse, vielen Dank für die ausführliche Beschreibung. Muss leider jetzt erstmal los, werde nachher weitermachen und berichten bzw. nachfragen ![]()
Wie oben schon geschrieben Pairing hat wunderbar funktioniert![]()
Jetzt musste ich doch nochmal schnell weitermachen
und muss dich nochmal fragen da ich es immer noch nicht checke ![]()
Kann das Plugin über seine API Funktion zusammenhängende Befehle (Skript) an das Apple TV senden per Schalter in HK und muss ich diesen Blog
in die Config mit eintragen oder verstehe ich das falsch und ich kann durch das Plugin Ein/Aus Play und zusätzlich Befehle über die Shell ala CMD Befehl wie bei der Hue REST API senden?
Hey lukas.roegner,
ich sitze jetzt hier seit zwei Std und bekomme es nicht gebacken über einen HTTP/ REST Client ein Verbindung herzustellen mit dem Apple TV. Bekomme immer 401 als Fehler also nicht autorisiert. Werde verrückt![]()
Ich habe mittlerweile auch gecheckt das die API nur für den Zugriff über diesen gedacht ist und nichts mit einer direkten Funktion vom Plugin zutun hat.
Sag mal, es gibt doch bestimmt auch die Möglichkeit den String mit dem Befehl etc. über die Shell zu senden als cURL oder so?
Wenn ja wäre cool wenn du mal einen Beispiel string dafür bereitstellen könntest?
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.
ZitatBekomme 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.
Zitat1. 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
Habe ich beides gemacht. Über HomeKit kann ich es auch ein und ausschalten ohne Probleme über dein Plugin.
ZitatWarum 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.
Dafür muss ich doch erstmal eine Verbindung über eine URL Anfrage herstellen können was ja nicht geklappt hat bisher oder welche URL soll ich bei Shortcuts abrufen?
Hier mal ein Screen wo ich das Geheimnis eingetragen habe und der zweite von der Abfrage:
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.
Jetzt funktioniert es, kann es steuern über die API. Habe mir gerade Postman geladen und einen Account gemacht. Man man man so ein ärger. Danke lukas.roegner
lukas.roegner Ziemlich cool das Tool Postman hätte ich mal direkt auf dich gehört
, muss ich mir mal genauer anschauen. Dort gibt es eine Funktion Code wo man sich den Request umwandeln lassen kann. Habe jetzt probiert das Apple TV über die Shell zu steuern:
Mit Curl geht nicht:
curl --location --request POST 'http://192.168.XXX.XX:40304/Spiegel Flur' \
--header 'Authorization: XXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"commands": [
{
"key": "menu"
}
]
}'
Dafür aber mit wget:
wget --no-check-certificate --quiet \
--method POST \
--timeout=0 \
--header 'Authorization: XXXXXXXXX' \
--header 'Content-Type: application/json' \
--body-data '{
"commands": [
{
"key": "menu"
}
]
}' \
'http://192.168.XXX.XX:40304/Spiegel Flur'
Alles anzeigen
Und wenn ich das richtig verstehe dann müsste das hier in den Shortcut unter Inhalte abrufen oder?
POST /Spiegel Flur HTTP/1.1
Host: 192.168.XXX.XX:40304
Authorization: XXXXXXX
Content-Type: application/json
{
"commands": [
{
"key": "menu"
}
]
}
Alles anzeigen
Edit: Gerade gesehen das per Inhalte von URL abrufen auch der Header angegeben werden kann etc. war mir garnicht bekannt.
Lukas ich denke damit sollte jetzt alles klappen. Schwere Geburt Danke!
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.
Hi Everyone,
As promised, releasing my simple AppleTV On/Off plugin.
Main advantages are:
Plugin available @npmjs: https://www.npmjs.com/package/…idge-appletv-onoff-switch
and @git: https://github.com/stickpin/homebridge-appletv-onoff-switch
P.S. I think it's a first plugin that supports real on/off status. ![]()
Enjoy! ![]()
ZitatP.S. I think it's a first plugin that supports real on/off status.
lukas.roegner Unterstützt deine Plugin Version das nicht?
![]()
Nastra Ja und Nein. On/Off Switch habe ich ja bereits implementiert. Den Status des On/Off-Switch habe ich noch nicht implementiert.
stickpin hat jetzt auch den Status integriert auf Basis der Idee von hyxamp (siehe homebridge-atvremote). Ich werde den Status jetzt auch noch in die beiden Schalter On/Off und Play/Pause einbauen.
Zitatwerde den Status jetzt auch noch in die beiden Schalter On/Off und Play/Pause einbauen.
Sehr gut ![]()
![]()
Update des Plugins: Status für On/Off und Play/Pause integriert - Play/Pause funktioniert bei mir unter Netflix und Apple TV App ganz gut, bei Prime Video hängt es etwas nach. Das liegt jedoch leider an den Messages, die der Apple TV sendet. Feel free to try out!
Nochmal einen Dank an stickpin (Thank you!!!), durch sein neustes Update der node-appletv-x library hat der die Proto-Message Definitionen aus dem pyatv Projekt in das Node Package integriert und somit geupdated.