FireTV Modul [Testversion]

Hi,
ich bin gerade ein wenig auf einem Waipu-Trip. Letzt Woche kam ich zufällig dahinter das die App auch direkte Senderwahl per Ziffern erlaubt. Leider bietet die Harmony bei FireTV keine Ziffern an. Im Modul kann man mit FireTV_Key_4 z.B. den Druck auf Taste 4 simulieren. Es wird mit adb shell gearbeitet und das ist leider zu langsam um z.B. einen Sender 24 auszuwählen. Ich habe das Modul bei mir um FireTV_Number erweitert das ganze Zahlen an FireTV sendet. Da ein Text übertragen wird könnte man es auch einsetzen um z.B. Mail-Adresse oder Passwörter senden zu lassen.

Hier FireTV_Number:

	public function Number($number)
	{
		$command = "input text " . $number;
		$os = $this->ReadPropertyInteger('system');
		$folder = $this->ReadPropertyString('folder');
		if ($os == 0) {
			shell_exec("adb shell " . $command);
		} elseif ($os == 1) {
			shell_exec($folder . "adb shell " . $command);
		}
	}


Ralf

Das ist ja prima, so was suche ich schon lange. Ich nutzte nur inzwischen Waipu auf einem Apple TV. Hast Du vielleicht eine Idee wie man einem Apple TV so eine Zahl übergibt bzw. ob das da auch funktionieren könnte? Ist zwar eine andere Baustelle wollte deshalb aber keinen neuen Thread aufmachen.

Die function kann ich so mal im Modul ergänzen. Klappt bei Dir denn damit das umschalten direkt auf einen Waipu TV Sender zuverlässig?

Moin Fonzo,
sorry nein. Bei FireTV benutze ich jetzt obiges adb, Bei Shield Pro kann ich es direkt mit dem Harmony Hub machen. Ich habe eben mal Apple TV 5gen (vielleicht mal ältere Versionen testen) bei mir eingebunden und da bietet Logitech leider keine Ziffern an. Man kann doch bestimmt auch ein Keyboard mit dem ATV pairen und damit vielleicht erstmal schauen ob die Waipu App auch bei Apple TV Ziffern unterstützt. Wenn das geklappt hat in der mobilen Harmony App mal schauen ob die für ATV Texteingabe aktivieren läßt und damit vielleicht mehr Befehle zur Verfügung stellt. Falls Harmony keine Texteingabe erlaubt könnte man mit dem Harmony Keyboard und einem der USB-Dongles da vielleicht was machen.

Ralf

ich will noch nichts versprechen… weil die Zeit immer begrenzt ist, aber ich arbeite gerade an einer Erweiterung von fonzo FireTV-Modul zu einem universellen Android-Modul mit mehr Support für andere Funktionen. Wenn ihr also weitere Wünsche habt, könnt ihr sie hier ruhig mal aufführen, vielleicht kann ich das ein oder andere berücksichtigen.

Moin,
schön zu hören. Im Moment kann ich leider (noch) nicht mit Wünschen dienen da ich mich letzte Woche wunschlos glücklich gemacht habe.

Oder vielleicht doch.
mit

LHD_Send(42618, "Home");
IPS_Sleep(1500);
LHD_Send(42618, "DirectionRight");
IPS_Sleep(200);
LHD_Send(42618, "DirectionRight");
IPS_Sleep(200);
LHD_Send(42618, "DirectionRight");
IPS_Sleep(200);
LHD_Send(42618, "OK");

kann man bei Fire TV die 1. Lieblings-App auswählen. Mit einem weiteren DirectionRight wäre es die 2. usw. bis 6 glaube ich. Bei Android TV fängt es bei mir (Shield Pro) mit

            LHD_Send(10684, "Home");
            IPS_Sleep(1000);
            LHD_Send(10684, "Home");
            IPS_Sleep(1000);
            LHD_Send(10684, "OK");

an und dann weitere DirectionRight zwischen Home und OK für die weiteren Apps. Mit einem Mehrkommando adb Befehl könnte man diese Nettigkeit vielleicht auch nicht Harmony-Benutzern zugänglich machen.

Ralf

Moin Ralf,
ich glaube wir müssen irgendwann mal wieder bei einem guten Stückchen Kuchen fachsimpeln … :cake: :coffee:

Da ich auch immer mal wieder etwas anderes als meine „lieblinks-App“ nutze, verschieben sich die Buttons auf der Startseite auch immer mal wieder. Von daher ‚treffe‘ ich mit Tastendrücken nicht zwangsweise den gewünschten Sender.
Da aber IPTV mit den derzeitigen 3,5Mbit/DSL auch keinen 100%igen Spaßfaktor hat, ist das aber auch nicht wirklich eilig.

  1. Frage dazu: bringe ich die adb auch auf einer SymBox in Gang?

Grüße, Uwe

Warum so umständlich, die kannst per ADB direkt die App starten per Namen… egal was wo wie gerade läuft

Moin,
weil ich es aktuell mit der Harmony mache. Wenn es direkt geht wäre das ein Wunsch von mir:-)

Ralf

Hi,
ich habe es bei mir mal gemacht:

	public function ARD()
	{
		$this->Send_App("de.swr.ard.avp.mobile.android.amazon");
	}

	public function ZDF()
	{
		$this->Send_App("com.zdf.android.mediathek");
	}

	public function Waipu()
	{
		$this->Send_App("de.exaring.waipu.firetv.live");
	}

	public function Netflix()
	{
		$this->Send_App("com.netflix.ninja");
	}

	public function Kodi()
	{
		$this->Send_App("org.xbmc.kodi");
	}

	public function YouTube()
	{
		$this->Send_App("com.amazon.firetv.youtube");
	}

	protected function Send_App($app)
	{
		$os = $this->ReadPropertyInteger('system');
		$folder = $this->ReadPropertyString('folder');
		if ($os == 0) {
			shell_exec("adb shell monkey -p " . $app . " 1");
		} elseif ($os == 1) {
			shell_exec($folder . "adb shell monkey -p " . $app . " 1");
		}
	}

Mit FireTV_ARD(Instanz vom richtigen Fire TV); kann man umschalten. Ist aber noch nicht getestet aber die App-Namen stimmen wenn ich mich nicht verschrieben habe.

Namen und ob man mit dem Modul so schon Android (TV) steuern kann habe ich noch nicht probiert btw. mein Shield hat nicht um Erlaubnis gefragt oder ich habe nicht auf den Bildschirm gesehen.

Ralf

ja, das ist der selbe Befehl den ich auch verwende… wobei ich da noch nen Launcher mitgebe, aber das müsste nicht viel ausmachen.

Moin,
also die Apps habe ich gestern so gestartet. Bei Prime Video wäre vielleicht „Meine kostenlose Inhalte“ ganz interessant aber bei einem Fire TV gibt es ja kein Prime Video. Nachher werde ich mal meine Shield fragen ob sie mich auch zugreifen lässt und schauen wie die Pakete da heißen. Obige Befehle habe ich in einem meiner Zimmer jetzt mal aktiviert und beim Essen nachher werde ich sehen wie es klappt.

Ist auf jeden Fall eine neue, nette Spielwiese für mich :smile:

Ralf

falls du IP-Cams hast, empfehle ich dir noch com.rcreations.WebCamViewerPaid (oder halt die kostenlose Variante) mit aufzunehmen, dann kannst du dir die auch auf dem FireTV ansehen… das war meine erste und einfachste Lösung das Bild der Klingel dort anzuzeigen… IP Cam Viewer ist eh eine geniale App, wenn man eine IP Cam irgendwie anzeigen konnte, die App konnte es…

Hi,
irgendeine App für meine Cams habe ich schon drauf. Mal schauen.

Edit:Bis auf ARD funktionieren obige Funktionen anscheinend. ARD benötigt vielleicht eine Startaktivität. Ich werde mal versuchen ob generell das intent LAUNCHER auch geht.

Ralf

Hi,
so bin ein wenig weiter. Die für mich interessanten Apps heißen:

//Fire TV
com.amazon.firebat
com.amazon.firetv.youtube
de.swr.ard.avp.mobile.android.amazon
de.exaring.waipu.firetv.live
com.netflix.ninja
org.xbmc.kodi
com.zdf.android.mediathek

//Android TV
com.amazon.amazonvideo.livingroom
de.swr.avp.ard.tv
de.exaring.waipu
com.google.android.youtube.tv
com.zdf.android.mediathek
com.netflix.ninja
org.xbmc.kodi

ein Teil ist also identisch und ein paar nicht. ARD/Prime Video habe ich bisher weder mit FireTV noch mit Android TV zum Starten gebracht.

Ich habe die Funktionen von oben so umgebaut das es noch einen Bool Parameter gibt und bei true wird FireTV und bei False Android genommen.

Zu adb und Android konnte ich mein Problem klären. Ich benutze IPS im Docker und das basiert glaube ich auf einer älteren Ubuntu LTS. Installiert man hier adb bekommt man Version 28.x. Neuere Android Versionen benötigen auch ein neueres adb. Ich habe im Docker die 28.x durch 33.x ersetzt und schon konnte ich mich mit meiner Shield (Android 11) verbinden und das Modul läuft damit auch.

Edit: Ich bin der Meinung das ich jetzt die 7 Apps sowohl unter Android als auch FireOS starten kann:

	public function PrimeVideo($fire)
	{
		if ($fire){
			$this->Send_Activity("com.amazon.firebat/.deeplink.DeepLinkRoutingActivity");
		}
		else{
			$this->Send_Activity("com.amazon.amazonvideo.livingroom/com.amazon.ignition.IgnitionActivity");
		}
	}

	public function ARD($fire)
	{
		if ($fire){
			$this->Send_Activity("de.swr.ard.avp.mobile.android.amazon/.TvActivity");
		}
		else{
			$this->Send_Activity("de.swr.avp.ard.tv/.TvActivity");
		}
	}

	public function ZDF($fire)
	{
		if ($fire){
			$this->Send_Activity("com.zdf.android.mediathek/.ui.splash.SplashActivity");
		}
		else{
			$this->Send_Activity("com.zdf.android.mediathek/.ui.splash.SplashActivity");
		}
	}

	public function Waipu($fire)
	{
		if ($fire){
			$this->Send_App("de.exaring.waipu.firetv.live");
		}
		else{
			$this->Send_App("de.exaring.waipu");
		}
	}

	public function Netflix($fire)
	{
		if ($fire){
			$this->Send_App("com.netflix.ninja");
		}
		else{
			$this->Send_App("com.netflix.ninja");
		}
	}

	public function Kodi($fire)
	{
		if ($fire){
			$this->Send_App("org.xbmc.kodi");
		}
		else{
			$this->Send_App("org.xbmc.kodi");
		}
	}

	public function YouTube($fire)
	{
		if ($fire){
			$this->Send_App("com.amazon.firetv.youtube");
		}
		else{
			$this->Send_App("com.google.android.youtube.tv");
		}
	}

	protected function Send_App($app)
	{
		$os = $this->ReadPropertyInteger('system');
		$folder = $this->ReadPropertyString('folder');
		if ($os == 0) {
			shell_exec("adb shell monkey -p " . $app . " 1");
		} elseif ($os == 1) {
			shell_exec($folder . "adb shell monkey -p " . $app . " 1");
		}
	}

	protected function Send_Activity($app)
	{
		$os = $this->ReadPropertyInteger('system');
		$folder = $this->ReadPropertyString('folder');
		if ($os == 0) {
			shell_exec("adb shell am start -n " . $app);
		} elseif ($os == 1) {
			shell_exec($folder . "adb shell am start -n " . $app);
		}
	}

Ach ja true in den Funktionen bedeutet FireTV und false AndroidTV.

Edit: Wenn man mit mehreren Feuern gleichzeitig spielen möchte muss eine Terminal-/Seriennummer in adb einbauen damit das richtige Feuer getroffen wird. Das würde dann in etwa so aussehen:

	protected function Send_Key($command)
	{
		$ip = $this->ReadPropertyString('IPFireTV');
		$os = $this->ReadPropertyInteger('system');
		$folder = $this->ReadPropertyString('folder');
		$string = "adb -s " . $ip . ":5555 shell input keyevent " . $command;
		if ($os == 0) {
			shell_exec($string);
		} elseif ($os == 1) {
			shell_exec($folder . $string);
		}
	}


Ralf

Hi,
ziemlich spät aber ich interessiere mich erst seit ein paar Wochen für FireTV/AndroidTV. In den App-Stores gibt es die App „Package Browser“ und da kann man eine Liste aller Aktivitäten bekommen. Wenn vorne public steht kann man diese Aktivität für den direkten Start benutzen.

Ralf

adb shell pm list packages -f

tut es auch

Hi,
package browser kann ich aber schön im Bett benutzen:-)

btw. Wenn man bei sich die beiden Funktionen Send_App und Send_Activity public macht kann man schön schnell in IPS ausprobieren ob es geklappt hat indem man einfach die vermeintlich gefundenen Apps/Activities als String übergibt.

Ralf

…vielleicht zur weiteren Ergänzung:
Hier hatte ich weitere Entwicklungen einfließen lassen, u.a. auch eine Status-Abfrage.

Joachim

Hi,
ScreenShot finde ich eine nette Idee. Was gibt Status aus? Dank Neeo kann ich bei mir alles schön auf eine Taste einer Fernbedienung legen.

Ralf

Magst du einen Satz dazu schreiben was dein Modul macht. Die Readme spricht nicht so viel :wink: