Guten Morgen,
"pyatv" ist das python package und stellt die Bibliothek zur Steuerung des Apple TV dar. "atvremote" ist ein command line tool, welches dann auf diese Bibliothek zurückgreift. Ich denke Lukas sein Plugin greift ebenfalls auf die pyatv - Bibliothek zurück und ersetzt sozusagen "atvremote", weshalb in der config auch der entsprechende Pfadt gewählt werden muss. Schreibe ich dort irgendetwas anderes rein (falscher Pfad oder sogar den Pfad von atvremote), lässt sich homebridge nicht mehr starten.
Ich wüsste jetzt ehrlich gesagt nicht, was ich an der config noch ändern kann oder sollte. Mir ist aufgefallen, dass falsche mrpCredentials ebenfalls zu keiner Fehlerausgabe führen.. Habe diese aber mehrmals überprüft und sie stimmen (auch wenn meine Credentials verglichen mit den Beispielen von pyatv unglaublich lang sind: 4 Blöcke a 64 Zeichen).
Ein ähnliches Verhalten konnte ich über shell - Komandos mit zwei unterschiedlichen plugins und "atvremote" feststellen. Ich habe 3 Vorgehensweisen getestet, der Raspberry wurde zuvor mit dem ATV gepaart (ein paar Zeichen wurden durch x ersetzt).
pi@raspberrypi:~ $ atvremote scan
Scan Results
========================================
Name: Wohnzimmer
Address: 192.168.2.xxx
Identifiers:
- A7334xxx-0xxx-4xxx-8xxx-242B12590xxx
- Cx:6x:Cx:2x:Dx:7x
Services:
- Protocol: MRP, Port: 49152, Credentials: None
- Protocol: AirPlay, Port: 7000, Credentials: None
Alles anzeigen
pi@raspberrypi:~ $ atvremote --id Cx:6x:Cx:2x:Dx:7x --protocol mrp pair
Enter PIN on screen: 8177
Pairing seems to have succeeded, yey!
You may now use these credentials: b8879e871cbf80909ebcec4b492ef684a10f854870e57bf4d2a27a4050ebxxxx:94a15265d06a63346127e9333a645b08078ee210daf24f07ea99a9cdafc7xxxx:38396431313365342d343964382d343965632d383136322d38623931653734343561xxxx:64346361326134622d626566662d343234342d613962632d38623131623638393262xxxx
1. Eingabe von Kommandos via SSH mit user Pi: funktioniert
2. Eingabe von Kommandos mit dem Plugin homebridge cmd und folgender json.config:
{
"accessory": "CMD",
"name": "Apple TV test",
"on_cmd": "/home/pi/.local/bin/atvremote --id Cx:6x:Cx:2x:Dx:7x play",
"off_cmd": "/home/pi/.local/bin/atvremote --id Cx:6x:Cx:2x:Dx:7x pause"
}
Als Resultat im Homebridge Debug-Monitor erhalte ich:
Dez 29 09:53:05 raspberrypi homebridge[30886]: [2019-12-29 9:53:05] [Apple TV test] Setting power state to on
Dez 29 09:53:05 raspberrypi homebridge[30886]: [2019-12-29 9:53:05] [Apple TV test] power function failed: /bin/sh: 1: /home/pi/.local/bin/atvremote: Permission denied
3. Eingabe von Kommandos mit dem Plugin homebridge cmdtrigger und folgender json.config:
{
"accessory": "CmdTrigger",
"name": "Apple TV play",
"command": "/home/pi/.local/bin/atvremote --id Cx:6x:Cx:2x:Dx:7x play",
"delay": "500",
"execAfterDelay": false
}
Als Resultat im Homebridge Debug-Monitor erhalte ich:
Dez 29 09:56:43 raspberrypi homebridge[30886]: [2019-12-29 9:56:43] [Apple TV play] Setting 'Apple TV play' true
Dez 29 09:56:43 raspberrypi homebridge[30886]: [2019-12-29 9:56:43] [Apple TV play] Command executed: '/home/pi/.local/bin/atvremote --id Cx:6x:Cx:2x:Dx:7x play'
Dez 29 09:56:44 raspberrypi homebridge[30886]: [2019-12-29 9:56:44] [Apple TV play] Setting 'Apple TV play' false
Mit der letzten Variante erhalte ich keine Rückmeldung, dass der Befehl nicht ausgeführt werden konnte, was aber vermutlich am Plugin liegt. Anhand vom "homebridge cmd" konnte ich aber sehen, dass mir offensichtlich Nutzerrechte fehlen (was für mich auch nachvollziehbar ist). Deshalb würde ich darauf schließen, dass gleiches Problem beim Zugriff auf die pyatv Bibliothek innerhalb Lukas seines Plugins besteht.
Ich kann dem Befehl in "homebridge cmd" aber auch noch ein sudo davor setzen, dann erhalte ich folgende Meldung im Debug-Monitor:
Dez 29 10:09:32 raspberrypi homebridge[31412]: [2019-12-29 10:09:32] [Apple TV test] power function failed: usage: atvremote [-h] [--name NAME] [--address ADDRESS] [-t TIMEOUT]
Dez 29 10:09:32 raspberrypi homebridge[31412]: [--version] [--remote-name REMOTE_NAME] [-p PIN]
Dez 29 10:09:32 raspberrypi homebridge[31412]: [--pairing-guid PAIRING_GUID] [-a | --login_id LOGIN_ID]
Dez 29 10:09:32 raspberrypi homebridge[31412]: [--airplay_credentials AIRPLAY_CREDENTIALS] [-v] [--debug]
Dez 29 10:09:32 raspberrypi homebridge[31412]: command [command ...]
Dez 29 10:09:32 raspberrypi homebridge[31412]: atvremote: error: unrecognized arguments: --id
Daran habe ich mich gestern auch schon aufgehangen. "atvremote" wird ausgeführt, aber irgendwie scheint es ein Problem mit den Übergabewerten zu geben. Das Argument "--id" existiert plötzlich nicht mehr. Es klingt vielleicht eigenartig aber irgendwie habe ich auch das Gefühl, als wenn an dieser Stelle eine ältere version von atvremote ausgeführt wird. Wäre soetwas möglich? Die Befehlssätze, welche mir mit dem User "homebridge" angezeigt werden, unterscheiden sich von denen mit User "pi" und ähneln nach meiner google Recherche eher einer älteren Version. Wie dem auch sei, das hat nix mit dem Plugin von Lukas zu tun..
Und nun zurück. Da ich aber wie gesagt absolut kein Linux - Experte bin und eigentlich auch gar nicht weis, was ich hier genau tue, habe ich natürlich auch gar keine Ahnung, wie ich dem Benutzer "homebridge" entsprechende Rechte für den Zugriff auf pyatv einräumen kann.. Alternativ würde ich ich pyatv bzw. atvremote einfach in einen Ordner schieben, in dem homebridge auch agieren darf. Weis aber auch nicht, ob ich das so einfach machen kann, ohne irgendetwas zu zerstören.