Autor Thema: 98_FireTV: Fernbedienung eines Amazon FireTV per adb  (Gelesen 775 mal)

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 734
    • FTUI Live Demo
98_FireTV: Fernbedienung eines Amazon FireTV per adb
« am: 09 März 2017, 18:04:40 »
Ich habe die im Thread Amazon Fire TV gesammelten Funktionen zur Fernbedienung eines Amazon Fire TVs gesammelt und in ein Modul gepackt. Voraussetzung zur Nutzung ist ein Fire TV mit aktiviertem ADB-Debugging und ein adb binary auf dem Fhemserver (Details/Links dazu in der Doku). Das Modul kann:

  • die Fernbedienung des FireTVs (träge) emulieren
  • Apps starten und stoppen
  • einige der Buildins starten (Music, Fotos, Settings)
  • eine Textsuche starten
  • Dateien hochladen und Anzeige/Abspielen anstoßen (abhängig von installierten Apps die Anzeige/Abspielen übernehmen)
  • den Bildschirm in den Sleepmode schicken oder wecken
  • Screenshots aufnehmen und herunter laden (nur ausserhalb von Amazon Video)
  • PRESENCE checken
  • Apps installieren (sideload)
  • adb Befehle senden

Das Modul kann nicht: Informationen zu grade abgespielten Medien wieder geben

Darüber hinaus bringt es eine grafische Fernbedienung für FHEMWEB mit, die um eigene Tasten erweiterbar ist. Der Screenshot im Anhang zeigt die Fernbedienung. Der Teil unter der Querlinie ist die individuelle Erweiterung.

Weitere Details in der Doku unter https://github.com/nesges/Fhem-Modules/wiki/98_FireTV.pm bzw. nach Installation in der lokalen Commandref.

Installation direkt aus Fhem heraus per:
update add https://raw.githubusercontent.com/nesges/Fhem-Modules/master/controls_nesges-fhem-modules.txt
update 98_FireTV
oder
update all https://raw.githubusercontent.com/nesges/Fhem-Modules/master/controls_nesges-fhem-modules.txt
update all bringt zusätzlich zwei weitere Module (98_ApacheStatus, 98_Hello) und eine contrib/99_Utils_FireTV.pm mit, die die Funktion ftv_active() zum finden eines aktiven FireTV Devices implementiert.

oder Download unter: https://raw.githubusercontent.com/nesges/Fhem-Modules/master/FHEM/98_FireTV.pm

Achtung: Ich habe das Modul selbst seit ca. zwei Wochen im Einsatz, ansonsten ist es weitest gehend ungetestet. Daher bitte ich darum es entsprechend mit Vorsicht zu genießen und mir Fehlerberichte (inkl. list DEVICE und verbose 5 Log) zukommen zu lassen. Konkrete Ideen zur Weiterentwicklung sind gern gesehen.
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline VB90

  • Tester
  • Sr. Member
  • ****
  • Beiträge: 521
    • mein kleines Blog
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #1 am: 09 März 2017, 22:37:21 »
auch wenn ich derzeit absolut keine Zeit habe es zu nutzen oder gar zu testen, möchte ich mich doch trotzdem bedanken.
Wenn ich meine aktuelle Baustelle zu Hause fertig habe, werde ich es mir zu Gemüte führen und nutzen.

Dazu gleich eine Frage/Idee:

Ich schaue über meinen FireTV sehr oft über eine App den TV-Stream meiner VU+-Sat-Receiver.
Die App zu starten soll ja schon gehen, wie große sind die Chancen, das man dann auch in der App navigieren kann?

Würde gern ein Szenario bauen, bei dem zu bestimmten Zeiten und Anwesenden verschiedene Sender eingestellt werden.

vb
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

Odroid C1 als FHEM-Server, sowie RPi via FHEM2FHEM
Homematic LAN-Adapter, 2x HM-SEC-SC-2, 1x HM-LC-SW1-FM, 1x HM-PB-2-WM55, 2x HM-LC-SW1-BA-PCB (in Arbeit)
Brennenstuhl LAN-Gateway; Infratec Powermodul 4-I

Offline Hauswart

  • Sr. Member
  • ****
  • Beiträge: 696
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #2 am: 10 März 2017, 08:06:04 »
Einrichtung etc. ging alles sehr schnell und problemlos.

@nesges willst du noch schnell die Schritt für Schritt Anleitung zur Installation von ADB (siehe meine 2. oder 3. PN) im ersten Beitrag einfügen? Dann können zumindest Debian User dies relativ einfach nachinstallieren.

Die Datei 99_Utils_Fire.pm listet mittels ftv_active() alle aktiven FireTV und gibt diese aus. Ist dies eine Vorbereitung für Multi-Room?
« Letzte Änderung: 10 März 2017, 09:56:53 von Hauswart »
Derzeitiges Setup unter Anderem:
* HM-CFG-USB
* nanoCUL868 (SlowRF)
* MySensors
* SIGNALduino 433

Offline mahowi

  • Sr. Member
  • ****
  • Beiträge: 533
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #3 am: 10 März 2017, 09:23:02 »
Hallo,

Zitat
Get adb for your fhem-server. Depending on your system, you have several options:
  • Win/Mac/Linux: Android SDK Platform-Tools
  • Raspbian: adb-arm

Es gibt für Raspbian auch ein Paket android-tools-adb. Damit reicht ein sudo apt-get install android-tools-adb
Oder gibt es Probleme mit der Version?
CUBe (MAX): HT, WT+, FK, EcoTaster | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 734
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #4 am: 10 März 2017, 09:32:45 »
Die App zu starten soll ja schon gehen, wie große sind die Chancen, das man dann auch in der App navigieren kann?

Theoretisch ist es möglich eine App per Intents zu steuern, allerdings ist adb in der im Modul implementierten Form äusserst träge. Andere Lösungen (AMAD) sind dafür wahrscheinlich sinnvoller. Falls keine Intents zur Verfügung stehen (oder bekannt sind), kann man natürlich auch per Button-Sequence steuern. FireTV implementiert set search/searchonly so. Das ist allerdings noch träger und braucht einen definierten Startpunkt - also wirklich nur als Notlösung wenn sonst gar nichts geht zu gebrauchen.

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 734
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #5 am: 10 März 2017, 09:43:26 »
Die Datei 99_Utils_Fire.pm listet mittels ftv_active() allen aktiven FireTV und gibt diese aus. Ist dies eine Vorbereitung für Multi-Room?

Nicht alle, sondern eines. Deshalb nutzt sie neben dem PRESENCE state das userattr priority um eine Entscheidung herbei zu führen. Anwendung dafür: Ich sage zB einem Echo-Gerät: "Alexa, sag Fire starte Kodi" und nutze ftv_active() um heraus zu finden welches FireTV damit gemeint ist. Meistens läuft nur eines, wenn mehrere laufen ist per priority geregelt, dass zB Wohnzimmer > Schlafzimmer gilt

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 734
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #6 am: 10 März 2017, 09:45:34 »
Es gibt für Raspbian auch ein Paket android-tools-adb. Damit reicht ein sudo apt-get install android-tools-adbOder gibt es Probleme mit der Version?

Habe ich offenbar übersehen, danke für den Hinweis! Werde ich testen und ggf. oben einfügen. Damit ist

@nesges willst du noch schnell die Schritt für Schritt Anleitung zur Installation von ADB (siehe meine 2. oder 3. PN) im ersten Beitrag einfügen? Dann können zumindest Debian User dies relativ einfach nachinstallieren.

evtl nicht mehr notwendig.

Offline Tedious

  • Sr. Member
  • ****
  • Beiträge: 742
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #7 am: 10 März 2017, 09:46:35 »
Klingt definitiv spannend, teste ich gerne sobald ich Zeit dafür finde  :)
FHEM auf Brix N3150/4GB/500GB, CUL433 + CUL868 mit A-CULFw, Jeelink, HUE, MiLight und Max!, RPI2 mit 1Wire via Fhem2Fhem

Offline xanker

  • New Member
  • *
  • Beiträge: 11
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #8 am: 13 März 2017, 22:53:08 »
@nesges vielen Dank für das Modul! Selbiges hatte ich auch schon geplant, bin aufgrund von Zeitmangel aber nicht dazu gekommen.
Ich habe dein Modul bereits in Verwendung, da ich aber 2 FireTV Sticks habe, muss an deinem Modul noch etwas geändert werden. Damit die ADB Bridge weiß welchem Stick sie ein Kommando schicken soll, muss bei jedem Kommando explizit die IP mit angegeben werden. Zeile 523 muss dazu wie folgt geändert werden:
$hash->{helper}{$name}{lastadbcmd} = $hash->{ADB}." -s $hash->{IP}:5555 $cmd";Der Port sollte nicht nötig sein, bzw. könnte auch als Internal ausgelagert werden.

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 734
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #9 am: 13 März 2017, 23:38:29 »
da ich aber 2 FireTV Sticks habe, muss an deinem Modul noch etwas geändert werden. Damit die ADB Bridge weiß welchem Stick sie ein Kommando schicken soll, muss bei jedem Kommando explizit die IP mit angegeben werden. Zeile 523 muss dazu wie folgt geändert werden:
$hash->{helper}{$name}{lastadbcmd} = $hash->{ADB}." -s $hash->{IP}:5555 $cmd";Der Port sollte nicht nötig sein, bzw. könnte auch als Internal ausgelagert werden.

Danke für den Hinweis! Baue ich so in die nächste Version ein. Den Port lasse ich weg, erweitere aber die Prüfung auf den IP-Parameter im Define so, dass man dort den Port mitgeben könnte.

Offline Hauswart

  • Sr. Member
  • ****
  • Beiträge: 696
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #10 am: 14 März 2017, 12:25:51 »
Über die Remotehtml habe ich Probleme den FireTV in den Schlaf zu schicken. Via set FireTV screen sleep funktioniert es. Einzelfall bei mir?

Die Icons aus dem Beispiel sind nehme ich an standardmässig nicht vorhanden?
    #             <tr>
    #                 <td><a onClick=\"$cmd appstart org.xbmc.kodi')\">".FW_makeImage("kodi", "Kodi", "rc-button")."</a></td>
    #                 <td><a onClick=\"$cmd appstart com.spotify.tv.android')\">".FW_makeImage("spotify", "Spotify", "rc-button")."</a></td>
    #                 <td><a onClick=\"$cmd appstart tv.twitch.android.viewer')\">".FW_makeImage("twitch", "twitch", "rc-button")."</a></td>
    #             </tr>
Derzeitiges Setup unter Anderem:
* HM-CFG-USB
* nanoCUL868 (SlowRF)
* MySensors
* SIGNALduino 433

Offline BillyPbg

  • New Member
  • *
  • Beiträge: 40
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #11 am: 14 März 2017, 14:48:21 »
Über die Remotehtml habe ich Probleme den FireTV in den Schlaf zu schicken. Via set FireTV screen sleep funktioniert es. Einzelfall bei mir?

Hallo NESGES,

Vielen Dank für die neue FIRE-TV-Remote! - Teste noch...

Auch ich habe bis jetzt keine Button-Variante gefunden, den Sleep-Modus zu aktivieren. Wäre echt toll... ;)

Auffälligkeiten beim Neustart(LOG) des Raspi-3:
"PERL WARNING: keys on reference is experimental at ./FHEM/98_FireTV.pm line 130, <$fh> line 3314."
und
"PERL WARNING: Use of uninitialized value $packages in concatenation (.) or string at ./FHEM/98_FireTV.pm line 392."

Zur Konfiguration:
Habe einen Stick und eine Box (einmal als LAN-Gerät und WLAN-Gerät) einprogrammiert.

Das Ganze eingebunden über...
1. "update add https://raw.githubusercontent.com/nesges/Fhem-Modules/master/controls_nesges-fhem-modules.txt"
2. "update all https://raw.githubusercontent.com/nesges/Fhem-Modules/master/controls_nesges-fhem-modules.txt"
3."sudo apt-get install android-tools-adb"

VG.
BillyPbg 

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 734
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #12 am: 14 März 2017, 14:49:58 »
Über die Remotehtml habe ich Probleme den FireTV in den Schlaf zu schicken. Via set FireTV screen sleep funktioniert es. Einzelfall bei mir?

Zeig mal den Inhalt deines remotehtml-Attributes, evtl. hast du vergessen my $device = 'FIRETV'; anzupassen. Wenn's das nicht ist, dann bitte auch ein list DEVICE und ein verbose 5 Log.

Zitat
Die Icons aus dem Beispiel sind nehme ich an standardmässig nicht vorhanden?

Diese nicht, die sind selbst aus den http://fontawesome.io/ Icons erstellt. Um die in Fhem zu verwenden muss man die SVGs nur leicht nachbearbeiten und den fett gedruckten Teil einfügen: <svg ... ><g fill="#000000"><path ... /></g></svg>

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 734
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #13 am: 14 März 2017, 14:54:05 »
Auffälligkeiten beim Neustart(LOG) des Raspi-3:
"PERL WARNING: keys on reference is experimental at ./FHEM/98_FireTV.pm line 130, <$fh> line 3314."
und
"PERL WARNING: Use of uninitialized value $packages in concatenation (.) or string at ./FHEM/98_FireTV.pm line 392."

Danke, sind beide in der nächsten Version korrigiert. Wegen Zusatzbuttons: Bitte das gleiche prüfen, wie ich Hauswart grade geschrieben habe. Da ihr euch beide auf "sleep" bezieht: Andere selbst definierte Buttons funktionieren?

Offline BillyPbg

  • New Member
  • *
  • Beiträge: 40
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #14 am: 14 März 2017, 15:37:12 »
Hallo NESGES,

Danke für das prompte Feedback.

Kann leider erst am Wochenende "creativ" testen...
Melde mich dann nächste Woche wieder.

VG.
BillyPbg