Ohje, das heist ja nicht nur curve, das sind ja wirklich kryptokurven
Da hat bubffm nicht zu viel versprochen, bei dem Thema bin ich allerdings auch raus.
Ich steuere meinen ATV derzeit ausschließlich über pyatv (via shell). Es dauert zwar 6 Sekunden, bis ein Befehl ankommt.. aber letztendlich:
Fernseher an + Apple TV an (command: "menu"):
Der Fernseher braucht zum "Hochfahren" so lange (ist bereits älter als 10 Jahre), dass mich die 6 Sekunden, ehe der Befehl am ATV angekommen ist, nicht stören. Der Apple TV braucht dann zwar auch nochmal seine Zeit, letztendlich ist dann aber Fernseher und Apple TV nahezu zeitgleich einsatzbereit. In der Realität stehe ich meistens auch noch in der Küche, gebe den Sprachbefehl "Apple TV und Fernseher einschalten" und eh ich dann auf der Couch sitze sind die 6 Sekunden schon lange vorbei..
Fernseher aus + Apple TV aus (command: "home_hold" + "select"):
Der Fernseher geht aus, wie lange dann noch der ATV braucht, interessiert mich nicht.
Apple TV play / pause (command: "play" / "pause":
Nutze ich eigentlich nicht wirklich. Würde dafür normalerweise die Fernbedienung nehmen, statt App oder Sprache. Hab "pause" lediglich in die Automation meiner Türklingel eingebunden. Allerdings muss ich gestehen: Wenn ich mal eine Serie auf dem Apple TV schaue, dann abends.. Da klingelt in der Regel aber niemand mehr. Ich hätte "pause" ja auch gerne via Shortcuts eingebunden, wenn ich einen eingehenden Anruf auf dem Iphone erhalte.. Habe aber bisher noch keine Möglichkeit zur Umsetzung gefunden.
Netflix starten (command: "top_menu" + "top_menu" + "select"):
Läuft auch bei mir innerhalb einer Automation: Lichter alle aus, Ambilight an, TV an, Apple TV an.. und da ist wieder der Knackpunkt "TV" mit dabei, welcher die 6 Sekunden irrelevant erscheinen lassen.
Mit Overclocking auf dem Pi konnte ich die Dauer zum Senden des Befehls auf 5 Sekunden drücken. Die eine Sekunde ist es mir aber nicht wert. Ich bin also mit meinem bisherigen Setup ganz zufrieden, muss aber auch gestehen, dass ich keine Ahnung habe wie ich CLI nutzen kann. In der Shell ist es mir klar, allerdings nicht wenn ich mit einem CMD - Schalter auf eine bash zugreife bzw. die Kommandos direkt im Schalter eintrage. Daher habe ich es beispielsweise so gelöst (Netflix starten):
python3 /usr/local/lib/python3.7/dist-packages/pyatv --manual --address 192.168.2.xxx --port 49152 --protocol mrp --id xx:xx:xxxx:xx:xx top_menu &
sleep 1
python3 /usr/local/lib/python3.7/dist-packages/pyatv --manual --address 192.168.2.xxx1 --port 49152 --protocol mrp --id xx:xx:xxxx:xx:xx top_menu &
sleep 1
python3 /usr/local/lib/python3.7/dist-packages/pyatv --manual --address 192.168.2.xxx --port 49152 --protocol mrp --id xx:xx:xxxx:xx:xx select
Die Programmierer unter euch bekommen dabei bestimmt graue Haare, aber ich wusste mir nicht anders zu helfen. Habe wie gesagt von Linux, Java, Python, Bash... nicht wirklich Ahnung und probiere so lange rum, bis es funktioniert.. oder kaputt ist. Damit wird meines Erachtens pyatv 3x hintereinander ausgeführt, jeweils zeitversetzt um eine Sekunde. Ich erhalte also das commando: "top_menu" nach 6 Sekunden am Apple TV, eine Sekunde später erneut "top_menu" und schließlich nach insgesamt 8 Sekunden "select". Klappt.
Um ehrlich zu sein wüsste ich jetzt auch gar nicht, ob für mich ein neues Plugin überhaupt wichtig wäre. In deinem ersten Plugin hast du keine Schalter vorgesehen. Tatsächlich bräuchte man mit pyatv aber auch nicht wirklich eine API, da mit shortcuts auch Skipte über SSH ausgeführt werden können (ob CLI auch geht, weis ich nicht). Die +/- 6 Sekunden für den Sendebefehl mögen ein Argument sein, stören mich aber letztendlich gar nicht. Der Zustand des Apple TV könnte bei externer Schaltung über die Fernbedienung relevant sein, sofern man beispielsweise Automationen damit auslösen möchte. Dafür fehlt es mir dann aber wieder an Kreativität. Daher sind mir die Schalterstellungen von an/aus und play/pause eigentlich auch egal. Natürlich überschneiden sich die Eingaben via Fernbedienung mit der Darstellung in der App. Solange ich allerdings via Sprachbefehl einen virtuell "angeschaltenen" Apple TV erneut anschalten kann, damit er dann auch "mechanisch" an geht, bin ich glücklich. Allerdings ist das nur meine Sichtweise und ursprünglich hattest du das Plugin ja auch nur für dich entwickelt. Ich hoffe nur das die nötige Entwicklungsarbeit für ein neues Plugin letztendlich nicht den resultierenden Nutzen deutlich übersteigt. Da es aber auch eine Art Hobby zu sein scheint, bei dem dich möglicherweise der Ehrgeiz packt, kann ich das völlig nachvollziehen.
Viele Grüße