Hallo,
ich habe jetzt dem Benutzer "homebridge" ein Passwort zugewiesen, sodass ich direkt via SSH agieren kann. Natürlich weiterhin nur im Rahmen der Nutzerrechte. Hier direkt eine Frage: Muss ich jetzt irgendetwas beachten, seitdem "homebridge" ein Passwort erhalten hat? Irgendwelche Änderungen in der json.config oder anderen Konfigurationsdateien von Homebridge?
Dann ging es wieder los. Pip3 und pyatv hatte ich mit dem Nutzer "pi" installiert und vorerst keine Bibliotheken kopiert/verschoben. Alles ist quasi im Urzustand, jede Datei befindet sich dort, wo sie sein soll. Anschließend habe ich mich mit dem User "homebridge" eingeloggt und probiert pyatv auszuführen.. mit dem Ergebnis: "keine Berechtigung".
homebridge@raspberrypi:/ $ python3 /home/pi/.local/lib/python3.7/site-packages/pyatv
python3: can't open file '/home/pi/.local/lib/python3.7/site-packages/pyatv': [Errno 13] Permission denied
Der gleiche Befehl mit "sudo" führt zu einer Fehlermeldung. Ich weis auch gar nicht ob diese Kombination "sudo python3 .." überhaupt funktioniert, war lediglich ein Versuch. Den gleichen Fehler erhalte ich im Übrigen auch, wenn ich pyatv mit sudo und eingeloggt als User "pi" ausführe. Ohne sudo geht es aber mit dem User "pi".
homebridge@raspberrypi:/ $ sudo python3 /home/pi/.local/lib/python3.7/site-packages/pyatv
Traceback (most recent call last):
File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/pi/.local/lib/python3.7/site-packages/pyatv/__main__.py", line 11, in <module>
from pyatv import (const, exceptions, interface, scan, connect, pair)
ModuleNotFoundError: No module named 'pyatv'
Nun wollte ich mal probieren, pyatv mit dem User "homebridge" zu installieren. Zunächst musste pyatv aber erstmal deinstalliert werden:
pi@raspberrypi:~/.local/lib/python3.7/site-packages $ pip3 uninstall pyatv
Uninstalling pyatv-0.4.0a10:
Would remove:
/home/pi/.local/bin/atvremote
/home/pi/.local/lib/python3.7/site-packages/examples/*
/home/pi/.local/lib/python3.7/site-packages/pyatv-0.4.0a10.dist-info/*
/home/pi/.local/lib/python3.7/site-packages/pyatv/*
Proceed (y/n)? y
Successfully uninstalled pyatv-0.4.0a10
Anschließend folgte die Neuinstallation mit User "homebridge":
homebridge@raspberrypi:~ $ pip3 install pyatv==0.4.0a10
Successfully installed aiohttp-3.6.2 aiozeroconf-0.1.8 async-timeout-3.0.1 attrs-19.3.0 curve25519-donna-1.3 ecdsa-0.14.1 ed25519-1.5 multidict-4.7.3 netifaces-0.10.9 protobuf-3.11.2 pyatv-0.4.0a10 srptools-1.0.0 tlslite-ng-0.7.5 yarl-1.4.2
Atvremote und pyatv befinden sich jetzt im Unterverzeichnis von homebridge und diesmal habe ich (auch ohne sudo) Zugriffsrechte auf pyatv:
homebridge@raspberrypi:~ $ sudo find / -name atvremote
/home/homebridge/.local/bin/atvremote
homebridge@raspberrypi:~ $ sudo find / -name pyatv
/home/homebridge/.local/lib/python3.7/site-packages/pyatv
homebridge@raspberrypi:~ $ python3 /home/homebridge/.local/lib/python3.7/site-packages/pyatv
usage: pyatv [-h] [-i ID] [-n NAME] [--address ADDRESS] [--protocol PROTOCOL]
[--port PORT] [-t TIMEOUT] [--version]
[--remote-name REMOTE_NAME] [-p PIN]
[--pairing-guid PAIRING_GUID] [-m]
[--dmap-credentials DMAP_CREDENTIALS]
[--mrp-credentials MRP_CREDENTIALS]
[--airplay-credentials AIRPLAY_CREDENTIALS] [-v] [--debug]
command [command ...]
Alles anzeigen
So weit war ich allerdings auch schon mal, als ich pyatv und alle benötigten Bibliotheken per Hand in der Unterverzeichnis von homebridge kopiert habe. Nun erfolgte die Installation des Plugins:
homebridge@raspberrypi:~ $ sudo npm install https://github.com/lukasroegner/homebridge-atvremote.git -g
npm ERR! code 128
npm ERR! Command failed: git clone --mirror -q https://github.com/lukasroegner/homebridge-atvremote.git /root/.npm/_cacache/tmp/git-clone-aac48261/.git
npm ERR! fatal: Konnte führende Verzeichnisse von '/root/.npm/_cacache/tmp/git-clone-aac48261/.git' nicht erstellen.
npm ERR!
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2020-01-02T15_35_22_697Z-debug.log
Wie auch mit dem User "pi", lässt sich das Plugin mit dem User "homebridge" nicht installieren (trotz sudo). Nur der Wechsel zu "root" führt bei mir zum Erfolg:
homebridge@raspberrypi:~ $ sudo su
root@raspberrypi:/home/homebridge# sudo npm install https://github.com/lukasroegner/homebridge-atvremote.git -g
+ [email protected]
added 1 package in 4.58s
Ich habe Homebridge anschließend neu gestartet, nach meinem Apple TV gescannt und den Pairing-Prozess eingeleitet. Diesmal mit User "homebridge" statt mit User "pi", vielleicht ist das ja auch wichtig?
Zum Schluss wurde die json.config entsprechend editiert:
{
"platform": "AtvRemotePlatform",
"apiPort": 40222,
"apiToken": "test",
"atvremoteCommand": "python3 /home/homebridge/.local/lib/python3.7/site-packages/pyatv",
"appleTvs": [
{
"name": "Wohnzimmer",
"ipAddress": "192.168.2.xxx",
"mrpPort": 49152,
"mrpCredentials": "b8879e871cbf809...."
}
]
}
Alles anzeigen
Versuche ich nun irgendwelche Befehle über das Plugin an den Apple TV zu senden, stürzt bei mir Homebridge ab. Hier ist ein Auszug aus dem log:
Jan 02 16:57:20 raspberrypi homebridge[19936]: [2020-1-2 16:57:20] TypeError: commands.splice is not a function
Jan 02 16:57:20 raspberrypi homebridge[19936]: at Socket.<anonymous> (/usr/local/lib/node_modules/homebridge-atvremote/src/atv-remote-api.js:154:53)
Jan 02 16:57:20 raspberrypi homebridge[19936]: at Socket.emit (events.js:210:5)
Jan 02 16:57:20 raspberrypi homebridge[19936]: at addChunk (_stream_readable.js:309:12)
Jan 02 16:57:20 raspberrypi homebridge[19936]: at readableAddChunk (_stream_readable.js:286:13)
Jan 02 16:57:20 raspberrypi homebridge[19936]: at Socket.Readable.push (_stream_readable.js:224:10)
Jan 02 16:57:20 raspberrypi homebridge[19936]: at Pipe.onStreamRead (internal/stream_base_commons.js:182:23)
Jan 02 16:57:20 raspberrypi homebridge[19936]: [2020-1-2 16:57:20] Got SIGTERM, shutting down Homebridge...
Ich habe also ein neues Fehlerbild und bin wenigstens froh, dass diesmal überhaupt etwas angezeigt wird, wenn es schon nicht funktioniert
Offensichtlich gibt es hier wohl ein Problem mit der Definition "commands.splice" innerhalb deiner java Programmierung. Sehe ich das soweit richtig? Liegt es in diesem Fall also an deinem Plugin oder wieder irgendwie an pyatv oder irgendwelchen Nutzerrechten? Ich wundere mich blos, warum mir dieser Fehler früher nicht angezeigt wurde. Ich meine selbst wenn irgendwelche Rechte zum Ausführen von pyatv gefehlt haben, sollte doch trotzdem dein JavaScript ausgeführt worden sein (ich habe ja schließlich auch entsprechende Fehlermeldungen erhalten, wenn ich absichtlich den header falsch eingegeben habe...).
Viele Grüße