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

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 754
    • 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: 697
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: 586
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: 754
    • 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: 754
    • 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: 754
    • 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: 761
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: 754
    • 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: 697
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: 754
    • 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: 754
    • 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

Offline BillyPbg

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

lade Dir doch mal MAGINE-TV auf den FireTV.
Dann bekommst Du in den Packages 'com.magine.aliceoid' ausgeworfen.

Wenn Du es dann aber startest (z.B. 'Set FireTV appstart com.magine.aliceoid',
bzw. über remotehtml:'<a onClick=\"$cmd appstart com.magine.aliceoid')\">".FW_makeImage("Magine", "Magine-TV", "rc-button")."</a>' )
fehlt die FireTV-Anpassung, sieht aus als würde es ganz ordinär "Android"-mäßig starten, was jedoch für den FireTV nicht ausreicht. :(

Idee - Lösungsansatz ???

VG.
BillyPbg

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #16 am: 15 März 2017, 15:54:57 »
sieht aus als würde es ganz ordinär "Android"-mäßig starten, was jedoch für den FireTV nicht ausreicht

Ich starte Apps mit dem Standard-Launch-Intent android.intent.category.LAUNCHER (bzw: shell monkey -p $package -c android.intent.category.LAUNCHER 1). Nach dem was du beschreibst gibt es offenbar noch einen speziellen Intent oder Parameter für einen "TV-Modus". Dazu habe ich allerdings keine Infos. Wenn du heraus finden kannst, wie die App gestartet werden muss um in diesen Modus zu gelangen, bau ich's gerne ein.

Offline xanker

  • New Member
  • *
  • Beiträge: 11
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #17 am: 15 März 2017, 17:25:42 »
Ich starte Apps mit dem Standard-Launch-Intent android.intent.category.LAUNCHER (bzw: shell monkey -p $package -c android.intent.category.LAUNCHER 1). Nach dem was du beschreibst gibt es offenbar noch einen speziellen Intent oder Parameter für einen "TV-Modus". Dazu habe ich allerdings keine Infos. Wenn du heraus finden kannst, wie die App gestartet werden muss um in diesen Modus zu gelangen, bau ich's gerne ein.
Ich habe es nicht getestet, aber es müsste folgender Launch-Intent sein:
android.intent.category.LEANBACK_LAUNCHERQuelle: https://developer.android.com/training/tv/start/start.html

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #18 am: 15 März 2017, 18:11:29 »
Ich habe es nicht getestet, aber es müsste folgender Launch-Intent sein:
android.intent.category.LEANBACK_LAUNCHERQuelle: https://developer.android.com/training/tv/start/start.html

Sieht gut aus, vielen Dank!

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #19 am: 15 März 2017, 19:07:40 »
Habe grade Version 0.5 auf github gepusht. Die hier im Thread bisher angesprochenen Änderungen sollte alle enthalten sein, im einzelnen:

2017-03-15
 Version 0.5
2017-03-15
 added LEANBACK_LAUNCHER
 added PORT internal
 added deviceid to adb calls
 added hint to 'apt-get install android-tools-adb' to documentation
 some minor bugfixes

@BillyPbg: Probier bitte appstart mit deiner App aus, sollte jetzt im "TV-Modus" starten

Offline Hauswart

  • Sr. Member
  • ****
  • Beiträge: 697
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #20 am: 15 März 2017, 23:01:58 »
Bekomme nun folgendes:
2017.03.15 22:54:52 1: reload: Error:Modul 98_FireTV deactivated:
 Global symbol "$response" requires explicit package name at ./FHEM/98_FireTV.pm line 763.

2017.03.15 22:54:52 0: Global symbol "$response" requires explicit package name at ./FHEM/98_FireTV.pm line 763.
Derzeitiges Setup unter Anderem:
* HM-CFG-USB
* nanoCUL868 (SlowRF)
* MySensors
* SIGNALduino 433

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #21 am: 15 März 2017, 23:32:46 »
2017.03.15 22:54:52 0: Global symbol "$response" requires explicit package name at ./FHEM/98_FireTV.pm line 763.

Ah, last minute changes... Korrigiert! Bitte nochmal updaten.

Offline BillyPbg

  • New Member
  • *
  • Beiträge: 40
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #22 am: 16 März 2017, 08:38:08 »
Hallo NESGES,

Vollzugsmeldung:
   "Magine-TV" läuft jetzt (V.0.5) korrekt!!! :)
Danke.

VG.
BillyPbg

@Dank auch an XANKER für seine Mitarbeit.

Offline BillyPbg

  • New Member
  • *
  • Beiträge: 40
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #23 am: 16 März 2017, 09:44:40 »
Hallo NESGES,

Verbesserungswunsch:
- Anprechzeiten der Richtungs-Buttons

Beschreibung:
Speziell bei Mehrfachauslösung sehr langsames, unsynchrones Verhalten,
was bei der Navigation (siehe Anhänge) äußerst lästig ist...

Idee:
Erst nach einer "Ruhezeit" (z.B. 0.5s) kontrolliertes Übertragen an die Box/Stick

VG
BillyPbg

Offline BillyPbg

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

nach Durchsicht des RESTART-LOGs fand ich...
. 2017.03.16 10:35:26.253 1: PERL WARNING: keys on reference is experimental at ./FHEM/98_FireTV.pm line 142, <$fh> line 3331.
2017.03.16 10:35:26.254 1: stacktrace:
2017.03.16 10:35:26.254 1: main::__ANON__ called by ./FHEM/98_FireTV.pm (142)
2017.03.16 10:35:26.254 1: (eval) called by fhem.pl (2342)
2017.03.16 10:35:26.254 1: (eval) called by fhem.pl (2341)
2017.03.16 10:35:26.255 1: main::CommandReload called by fhem.pl (1751)
2017.03.16 10:35:26.255 1: main::LoadModule called by fhem.pl (1813)
2017.03.16 10:35:26.255 1: main::CommandDefine called by fhem.pl (1109)
2017.03.16 10:35:26.255 1: main::AnalyzeCommand called by fhem.pl (978)
2017.03.16 10:35:26.256 1: main::AnalyzeCommandChain called by fhem.pl (1244)
2017.03.16 10:35:26.256 1: main::CommandInclude called by fhem.pl (523)
2017.03.16 10:35:27.050 1: Including ./log/fhem.save


LIST-Definition:
Internals:
ADB                      /usr/bin/adb
ADBVERSION         Android Debug Bridge version 1.0.31
ADDRESS              192.168.178.95
DEF                       192.168.178.95
IP                          192.168.178.95
MODE                     lan-ping
NAME                     FIRE_TV_BOX_WLAN
NOTIFYDEV             global,FIRE_TV_BOX_WLAN
NR                         1917
NTFY_ORDER          50-FIRE_TV_BOX_WLAN
PORT                      5555
STATE                     present
TIMEOUT_NORMAL   30
TIMEOUT_PRESENT   30
TYPE                        FireTV
VERSION                  0.5
adbconnected           1

Readings:
2017-03-16 08:06:39 .absenceThresholdCounter 0
2017-03-16 10:52:40 .presenceThresholdCounter 0
2017-03-16 10:52:40 presence present
2017-03-16 08:44:50 screenshot /home/pi/FHEM/FireTVPictures/mqcxtu6332.png
2017-03-16 10:52:40 state present

Helper:
 CURRENT_STATE present
 PRESENT_COUNT 0
 Fire_tv_box_wlan:
   PRESENCE_loaded 1
   lastadbcmd /usr/bin/adb connect 192.168.178.95
   lastadbresponse connected to 192.168.178.95:5555
   packages air.tv.spiegel.sptv,ch.bitspin.timely,com.amazon.rialto.cordova.webapp.webapp8be5ccd1280c44039ec216e972aaa5d7,com.amazon.rialto.cordova.webapp.webappec05e04162864e9eb91f32c39320e864,com.amazon.rialto.cordova.webapp.webappf975b35f76e34a959ec469eeef9d77b1,com.amazon.rialto.cordova.webapp.webappfadfbcbf64f948e3895eaad792c36493,com.daserste.daserste,com.deepsgamestudio.iptvplayer,com.dooblou.WiFiFileExplorerPRO,com.earthcam.earthcamtv,com.estrongs.android.pop,com.eurosport.player,com.ghisler.android.TotalCommander,com.ghisler.tcplugins.wifitransfer,com.guidology.android.remotemouseforfiretv,com.jigawattlabs.signal,com.kyy.tvtube,com.macropinch.axe,com.magine.aliceoid,com.mautilus.servus.amazonfiretv,com.mekmedia.AntenneBayern,com.mekmedia.N24nexT,com.mekmedia.RockAntenne,com.mg.meteoearth,com.onlinetvrecorder.SchoenerFernsehen3,com.rtli.clipfish,com.schuldenuhr,com.screenview.amazontoastyfireplace,com.semperpax.spmc16,com.snapwood.shutterfolio,com.solarlog.app,com.tuxera.streambels.receiver,com.zattoo.player.firetv,com.zdf.android.mediathek,de.br.dg.melina.firetv,de.br.sep.news.br24.firetv,de.cellular.focus,de.cellular.tagesschau,de.cyberdream.firenotifications.amazon,de.equinux.tvproapp.tvpro,de.haraldhenning.droidlauncherrcserver,de.idg.pc.video.android.amazon,de.lineas.ntv.firetv,de.metamorph.bild,de.o2online.tv,de.prosiebensat1digital.kabeleins,de.prosiebensat1digital.kabeleinsdoku,de.prosiebensat1digital.prosieben,de.prosiebensat1digital.prosiebenmaxx,de.prosiebensat1digital.sat1,de.prosiebensat1digital.sat1gold,de.prosiebensat1digital.seventv,de.prosiebensat1digital.sixx,de.spon.smarttv,de.sport1.firetv.video,de.swr.ard.avp.mobile.android.amazon,de.tvspielfilm,eu.siptv.video,fm.daf.smarttv,nalic.app.wifishare,net.simpletechs.firetv.netzkino,org.chromium.youtube_apk,org.videolan.vlc,se.ollan.kodiupdater,tv.arte.plus7

Attributes:
group FIRE-TV
remotehtml
{ my $device = 'FIRE_TV_BOX_WLAN'; my $cmd = "FW_cmd('$FW_ME$FW_subdir?XHR=1&cmd.$device=set $device "; return "<tr><td colspan='3'><hr></td></tr> <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> <tr> <td><a onClick=\"$cmd screen sleep')\">".FW_makeImage("rc_TV\@red", "sleep", "rc-button")."</a></td> <td><a onClick=\"$cmd screen wakeup')\">".FW_makeImage("rc_TV", "wakeup", "rc-button")."</a></td> <td><a onClick=\"$cmd window settings')\">".FW_makeImage("rc_SETUP", "settings", "rc-button")."</a></td> </tr> <tr> <td><a onClick=\"$cmd appstart com.magine.aliceoid')\">".FW_makeImage("Magine", "Magine-TV", "rc-button")."</a></td> <td><a onClick=\"$cmd com.zattoo.player.firetv')\">".FW_makeImage("Zattoo", "Zattoo", "rc-button")."</a></td> <td><a onClick=\"$cmd appstart com.onlinetvrecorder.SchoenerFernsehen3')\">".FW_makeImage("Schöner Fernsehen", "Schöner Fernsehen", "rc-button")."</a></td> </tr> <tr> <td><a onClick=\"$cmd org.chromium.youtube_apk')\">".FW_makeImage("Youtube", "Youtube", "rc-button")."</a></td> <td><a onClick=\"$cmd com.zattoo.player.firetv')\">".FW_makeImage("Zattoo", "Zattoo", "rc-button")."</a></td> <td><a onClick=\"$cmd appstart com.onlinetvrecorder.SchoenerFernsehen3')\">".FW_makeImage("Schöner Fernsehen", "Schöner Fernsehen", "rc-button")."</a></td> </tr> <tr> <td><a onClick=\"$cmd appstart com.magine.aliceoid')\">".FW_makeImage("Magine", "Magine-TV", "rc-button")."</a></td> <td><a onClick=\"$cmd com.zattoo.player.firetv')\">".FW_makeImage("Zattoo", "Zattoo", "rc-button")."</a></td> <td><a onClick=\"$cmd appstart com.onlinetvrecorder.SchoenerFernsehen3')\">".FW_makeImage("Schöner Fernsehen", "Schöner Fernsehen", "rc-button")."</a></td></tr>"; }

room SYSTEM
screenshotpath /home/pi/FHEM/FireTVPictures
verbose 3


RAW-Definition:
defmod FIRE_TV_BOX_WLAN FireTV 192.168.178.95
attr FIRE_TV_BOX_WLAN group FIRE-TV
attr FIRE_TV_BOX_WLAN remotehtml { my $device = 'FIRE_TV_BOX_WLAN';; my $cmd = "FW_cmd('$FW_ME$FW_subdir?XHR=1&cmd.$device=set $device ";; return "<tr><td colspan='3'><hr></td></tr> <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> <tr> <td><a onClick=\"$cmd screen sleep')\">".FW_makeImage("rc_TV\@red", "sleep", "rc-button")."</a></td> <td><a onClick=\"$cmd screen wakeup')\">".FW_makeImage("rc_TV", "wakeup", "rc-button")."</a></td> <td><a onClick=\"$cmd window settings')\">".FW_makeImage("rc_SETUP", "settings", "rc-button")."</a></td> </tr>  <tr> <td><a onClick=\"$cmd appstart com.magine.aliceoid')\">".FW_makeImage("Magine", "Magine-TV", "rc-button")."</a></td> <td><a onClick=\"$cmd com.zattoo.player.firetv')\">".FW_makeImage("Zattoo", "Zattoo", "rc-button")."</a></td> <td><a onClick=\"$cmd appstart com.onlinetvrecorder.SchoenerFernsehen3')\">".FW_makeImage("Schöner Fernsehen", "Schöner Fernsehen", "rc-button")."</a></td>  </tr>  <tr> <td><a onClick=\"$cmd org.chromium.youtube_apk')\">".FW_makeImage("Youtube", "Youtube", "rc-button")."</a></td> <td><a onClick=\"$cmd com.zattoo.player.firetv')\">".FW_makeImage("Zattoo", "Zattoo", "rc-button")."</a></td> <td><a onClick=\"$cmd appstart com.onlinetvrecorder.SchoenerFernsehen3')\">".FW_makeImage("Schöner Fernsehen", "Schöner Fernsehen", "rc-button")."</a></td> </tr>  <tr> <td><a onClick=\"$cmd appstart com.magine.aliceoid')\">".FW_makeImage("Magine", "Magine-TV", "rc-button")."</a></td> <td><a onClick=\"$cmd com.zattoo.player.firetv')\">".FW_makeImage("Zattoo", "Zattoo", "rc-button")."</a></td> <td><a onClick=\"$cmd appstart com.onlinetvrecorder.SchoenerFernsehen3')\">".FW_makeImage("Schöner Fernsehen", "Schöner Fernsehen", "rc-button")."</a></td></tr>";; }
attr FIRE_TV_BOX_WLAN room SYSTEM
attr FIRE_TV_BOX_WLAN screenshotpath /home/pi/FHEM/FireTVPictures
attr FIRE_TV_BOX_WLAN verbose 3

setstate FIRE_TV_BOX_WLAN present
setstate FIRE_TV_BOX_WLAN 2017-03-16 08:06:39 .absenceThresholdCounter 0
setstate FIRE_TV_BOX_WLAN 2017-03-16 11:08:55 .presenceThresholdCounter 0
setstate FIRE_TV_BOX_WLAN 2017-03-16 11:08:55 presence present
setstate FIRE_TV_BOX_WLAN 2017-03-16 08:44:50 screenshot /home/pi/FHEM/FireTVPictures/mqcxtu6332.png
setstate FIRE_TV_BOX_WLAN 2017-03-16 11:08:55 state present


VG.
BillyPbg

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #25 am: 16 März 2017, 23:36:54 »
2017.03.16 10:35:26.253 1: PERL WARNING: keys on reference is experimental at ./FHEM/98_FireTV.pm line 142, <$fh> line 3331.

Bitte erstmal ignorieren, aber ich werde schauen ob ich's unterdrücken kann.

Zitat
2017.03.16 10:35:26.254 1: stacktrace:
2017.03.16 10:35:26.254 1: main::__ANON__ called by ./FHEM/98_FireTV.pm (142)
2017.03.16 10:35:26.254 1: (eval) called by fhem.pl (2342)
2017.03.16 10:35:26.254 1: (eval) called by fhem.pl (2341)
2017.03.16 10:35:26.255 1: main::CommandReload called by fhem.pl (1751)
2017.03.16 10:35:26.255 1: main::LoadModule called by fhem.pl (1813)
2017.03.16 10:35:26.255 1: main::CommandDefine called by fhem.pl (1109)
2017.03.16 10:35:26.255 1: main::AnalyzeCommand called by fhem.pl (978)
2017.03.16 10:35:26.256 1: main::AnalyzeCommandChain called by fhem.pl (1244)
2017.03.16 10:35:26.256 1: main::CommandInclude called by fhem.pl (523)
2017.03.16 10:35:27.050 1: Including ./log/fhem.save

Wenn du die Stacktraces nicht im Log haben willst: attr global stacktrace 0 (siehe http://fhem.de/commandref.html#global). Anscheinend ist das Defaultverhalten in einem der letzten Updates geändert worden.

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #26 am: 16 März 2017, 23:46:01 »
Verbesserungswunsch:
- Anprechzeiten der Richtungs-Buttons

Beschreibung:
Speziell bei Mehrfachauslösung sehr langsames, unsynchrones Verhalten,
was bei der Navigation (siehe Anhänge) äußerst lästig ist...

Idee:
Erst nach einer "Ruhezeit" (z.B. 0.5s) kontrolliertes Übertragen an die Box/Stick

Du meinst eine Sendqueue in der Keys und Text gepuffert werden? Oder willst du Mehrfachklicks filtern? Letzteres würde ich ablehnen, das kann nur schief gehen. Über eine Sendqueue kann man nachdenken, muss ich mir in Ruhe anschauen aber erstmal vertagen - nächste Woche Urlaub ;-)

Offline BillyPbg

  • New Member
  • *
  • Beiträge: 40
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #27 am: 17 März 2017, 10:53:19 »
Hallo NESGES,

ich sag' schon mal SCHÖNEN URLAUB, während Du über die Sendqueue nachdenkst... ;)

VG.
BillyPbg

PS:
Als Anhang noch meine fhem.pl falls Du sie zur Recherche brauchst (fhem.pl:13700/2017-03-14)

Offline Hauswart

  • Sr. Member
  • ****
  • Beiträge: 697
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #28 am: 17 März 2017, 11:17:18 »
Ah, last minute changes... Korrigiert! Bitte nochmal updaten.
Ging nun ohne Probleme. Der Sleep Button funktioniert bei mir weiterhin nicht, andere Buttons gehen... Log habe ich leider noch nicht erstellen können.
Derzeitiges Setup unter Anderem:
* HM-CFG-USB
* nanoCUL868 (SlowRF)
* MySensors
* SIGNALduino 433

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #29 am: 26 März 2017, 16:15:06 »
2017.03.16 10:35:26.253 1: PERL WARNING: keys on reference is experimental at ./FHEM/98_FireTV.pm line 142, <$fh> line 3331

Die Meldung erscheint jetzt nicht mehr.

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #30 am: 26 März 2017, 16:16:32 »
Als Anhang noch meine fhem.pl falls Du sie zur Recherche brauchst (fhem.pl:13700/2017-03-14)

Wüsste jetzt nicht wozu; die fhem.pl ist - abgesehen vom Updatestand - überall gleich. Falls du die fhem.cfg senden wolltest: Bitte nicht :-)

Offline mahowi

  • Sr. Member
  • ****
  • Beiträge: 586
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #31 am: 29 März 2017, 10:38:57 »
Ich habe jetzt gestern auch mal meinen FireTV Stick mit Deinem Modul eingebunden. Das hat auch soweit funktioniert. Aber beim Neustart verfällt FHEM in eine Start-Schleife. Geholfen hat bei mir nur, adb aus dem Suchpfad zu nehmen, so daß es nicht gefunden wird. Danach startet FHEM auch wieder normal.

Fehlermeldungen im Log von 98_FireTV:
Use of uninitialized value $apk[0] in sort at ./FHEM/98_FireTV.pm line 172.
Use of uninitialized value $apk[1] in sort at ./FHEM/98_FireTV.pm line 172.
Use of uninitialized value $apk[2] in sort at ./FHEM/98_FireTV.pm line 172.
Use of uninitialized value $apk[0] in sort at ./FHEM/98_FireTV.pm line 172.
Use of uninitialized value $apk[1] in sort at ./FHEM/98_FireTV.pm line 172.
Use of uninitialized value in sort at ./FHEM/98_FireTV.pm line 172.
Use of uninitialized value in sort at ./FHEM/98_FireTV.pm line 172.
Use of uninitialized value in sort at ./FHEM/98_FireTV.pm line 172.
Use of uninitialized value $apk[1] in sort at ./FHEM/98_FireTV.pm line 172.
Use of uninitialized value $apk[0] in join or string at ./FHEM/98_FireTV.pm line 173.
Use of uninitialized value $apk[1] in join or string at ./FHEM/98_FireTV.pm line 173.
Use of uninitialized value $apk[2] in join or string at ./FHEM/98_FireTV.pm line 173.
Use of uninitialized value $apk[0] in join or string at ./FHEM/98_FireTV.pm line 174.
Use of uninitialized value $apk[1] in join or string at ./FHEM/98_FireTV.pm line 174.
Use of uninitialized value $apk[2] in join or string at ./FHEM/98_FireTV.pm line 174.

Die letzten Zeilen im Log, bevor FHEM sich wieder (und wieder) neu startet, sind:
2017.03.29 09:00:01.051 0: Server shutdown
2017.03.29 09:00:06.379 1: BlockingInformParent (BlockingStart): Can't connect to localhost:7072: IO::Socket::INET: connect: Verbindungsaufbau abgelehnt
2017.03.29 09:00:06.382 1: BlockingInformParent (PRESENCE_ProcessLocalScan): Can't connect to localhost:7072: IO::Socket::INET: connect: Verbindungsaufbau abgelehnt
2017.03.29 09:00:14.150 1: BlockingInformParent (BlockingStart): Can't connect to localhost:7072: IO::Socket::INET: connect: Verbindungsaufbau abgelehnt
2017.03.29 09:00:14.153 1: BlockingInformParent (PRESENCE_ProcessLocalScan): Can't connect to localhost:7072: IO::Socket::INET: connect: Verbindungsaufbau abgelehnt
connect error: Connection refused (111)
connect error: Connection refused (111)
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: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #32 am: 29 März 2017, 11:06:14 »
Anscheinend werden keine Packages gefunden - ist ein Fall den ich nicht Bedacht habe, ich sehe aber auch noch nicht weshalb der Start blockiert wird. Sind das alle Logmeldungen zum FireTV beim Start? Werden sie wiederholt? Kannst du mir bitte die Ausgaben von

a) list <FIRETV-DEVICE>
b) in der Shell:
adb connect <FIRETV-IP>
adb shell pm list packages -f -3

posten?


Offline mahowi

  • Sr. Member
  • ****
  • Beiträge: 586
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #33 am: 29 März 2017, 12:00:00 »
Ok, es gibt da gleich mehrere Probleme.

- Da der Stick keine statische IP hat, hatte sich die IP geändert und er war nicht mehr erreichbar.

- adb verbindet sich scheinbar nur als root:
pi@raspberrypi:~ $ adb connect 192.168.1.102
* daemon not running. starting it now on port 5037 *
cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
error: cannot connect to daemon
pi@raspberrypi:~ $ sudo adb connect 192.168.1.102
connected to 192.168.1.102:5555

Dann gibt's auch eine Liste der Packages:
pi@raspberrypi:~ $ sudo adb shell pm list packages -f -3
package:/data/app/de.prosiebensat1digital.seventv-2.apk=de.prosiebensat1digital.seventv
package:/data/app/de.swr.ard.avp.mobile.android.amazon-1.apk=de.swr.ard.avp.mobile.android.amazon
package:/data/app/de.belu.firestarter-2.apk=de.belu.firestarter
package:/data/app/com.magine.aliceoid-1/base.apk=com.magine.aliceoid
package:/data/app/mekmedia.dmax.firetv-1/base.apk=mekmedia.dmax.firetv
package:/data/app/com.zdf.android.mediathek-1.apk=com.zdf.android.mediathek
package:/data/app/com.daserste.daserste-1/base.apk=com.daserste.daserste
package:/data/app/org.chromium.youtube_apk-2/base.apk=org.chromium.youtube_apk
package:/data/app/de.exaring.waipu.firetv.live-2/base.apk=de.exaring.waipu.firetv.live

Logauszüge mit verbose 5:
2017.03.29 11:50:01.852 4: [FireTV] FireTV_adb response: cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
error: cannot connect to daemon
* daemon not running. starting it now on port 5037 *
2017.03.29 11:50:01.853 4: [FireTV] FireTV_connect (connect): cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
error: cannot connect to daemon
* daemon not running. starting it now on port 5037 *

2017.03.29 11:50:15.303 5: PRESENCE (FireTV) - stopping timer
2017.03.29 11:50:15.304 5: PRESENCE (FireTV) - starting blocking call for mode lan-ping
2017.03.29 11:50:15.349 5: PRESENCE (FireTV) - starting ping scan: FireTV|192.169.1.102|0|4
2017.03.29 11:50:28.467 5: PRESENCE (FireTV) - ping command returned with output:
PING 192.169.1.102 (192.169.1.102) 56(84) bytes of data.

--- 192.169.1.102 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3082ms

2017.03.29 11:50:28.487 5: PRESENCE (FireTV) - blocking scan result: FireTV|0|absent
2017.03.29 11:50:28.517 4: PRESENCE (FireTV) - rescheduling next check in 30 seconds

Ach ja, noch die Definitionen meines FireTV:
defmod FireTV FireTV 192.169.1.102
attr FireTV group TV
attr FireTV room Schlafzimmer
attr FireTV verbose 5

setstate FireTV absent
setstate FireTV 2017-03-29 11:52:38 .absenceThresholdCounter 0
setstate FireTV 2017-03-29 11:52:38 presence absent
setstate FireTV 2017-03-29 11:52:38 state absent

list:
Internals:
   ADB        /usr/bin/adb
   ADBVERSION Android Debug Bridge version 1.0.31

   ADDRESS    192.169.1.102
   CFGFN
   DEF        192.169.1.102
   IP         192.169.1.102
   MODE       lan-ping
   NAME       FireTV
   NOTIFYDEV  global,FireTV
   NR         273
   NTFY_ORDER 50-FireTV
   PORT       5555
   STATE      absent
   TIMEOUT_NORMAL 30
   TIMEOUT_PRESENT 30
   TYPE       FireTV
   VERSION    0.5.1
   adbconnected 1
   Readings:
     2017-03-29 11:53:23   presence        absent
     2017-03-29 11:53:23   state           absent
   Helper:
     ABSENT_COUNT 0
     Firetv:
       PRESENCE_loaded 1
       lastadbcmd /usr/bin/adb  connect 192.169.1.102
       lastadbresponse cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
error: cannot connect to daemon
* daemon not running. starting it now on port 5037 *
       packages   ,,,,
Attributes:
   group      TV
   room       Schlafzimmer
   verbose    5
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: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #34 am: 29 März 2017, 13:13:50 »
- Da der Stick keine statische IP hat, hatte sich die IP geändert und er war nicht mehr erreichbar.

Wenn adb die IP nicht erreicht blockiert's in der Regel eigentlich nicht:

fhem@wopr:~$ adb connect 192.168.178.23
unable to connect to 192.168.178.23:5555

Bitte beobachten ob das öfter und unter welchen Voraussetzungen auftritt.

Zitat
- adb verbindet sich scheinbar nur als root:
pi@raspberrypi:~ $ adb connect 192.168.1.102
* daemon not running. starting it now on port 5037 *
cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
error: cannot connect to daemon

Der Fehler kommt vor, Ursache ist mir nicht klar geworden, aber ich fang ihn im Modul mit adb kill-server && adb start-server und anschließend neuem connect ab. Dein Logauszug zeigt aber noch etwas anderes:

2017.03.29 11:50:15.349 5: PRESENCE (FireTV) - starting ping scan: FireTV|192.169.1.102|0|4
2017.03.29 11:50:28.467 5: PRESENCE (FireTV) - ping command returned with output:
PING 192.169.1.102 (192.169.1.102) 56(84) bytes of data.

--- 192.169.1.102 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3082ms

2017.03.29 11:50:28.487 5: PRESENCE (FireTV) - blocking scan result: FireTV|0|absent

Der Stick ist nicht unter der IP 192.168.1.102 erreichbar. Prüf die IP bzw. die Verbindung zum Stick bitte nochmal.

Sollte auch nichts mit root zu tun haben, zumindest kann ich adb hier auch als unprivilegierter User nutzen:

fhem@wopr:~$ whoami
fhem
fhem@wopr:~$ which adb
/usr/bin/adb
fhem@wopr:~$ ls -la /usr/bin/adb
-rwxr-xr-x 1 root root 134048 Nov 30  2014 /usr/bin/adb
fhem@wopr:~$ adb version
Android Debug Bridge version 1.0.31
fhem@wopr:~$ adb kill-server
fhem@wopr:~$ adb connect 192.168.178.41
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
connected to 192.168.178.41:5555

Offline mahowi

  • Sr. Member
  • ****
  • Beiträge: 586
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #35 am: 29 März 2017, 13:55:37 »
2017.03.29 11:50:15.349 5: PRESENCE (FireTV) - starting ping scan: FireTV|192.169.1.102|0|4
2017.03.29 11:50:28.467 5: PRESENCE (FireTV) - ping command returned with output:
PING 192.169.1.102 (192.169.1.102) 56(84) bytes of data.

--- 192.169.1.102 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3082ms

2017.03.29 11:50:28.487 5: PRESENCE (FireTV) - blocking scan result: FireTV|0|absent

Der Stick ist nicht unter der IP 192.168.1.102 erreichbar. Prüf die IP bzw. die Verbindung zum Stick bitte nochmal.
Das ist die richtige IP. Auf der Konsole ist der Stick auch anpingbar:
pi@raspberrypi:~ $ ping 192.168.1.102
PING 192.168.1.102 (192.168.1.102) 56(84) bytes of data.
64 bytes from 192.168.1.102: icmp_seq=1 ttl=64 time=20.5 ms
64 bytes from 192.168.1.102: icmp_seq=2 ttl=64 time=42.5 ms
64 bytes from 192.168.1.102: icmp_seq=3 ttl=64 time=64.6 ms
^C
--- 192.168.1.102 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 20.506/42.554/64.649/18.022 ms

Sollte auch nichts mit root zu tun haben, zumindest kann ich adb hier auch als unprivilegierter User nutzen:

fhem@wopr:~$ whoami
fhem
fhem@wopr:~$ which adb
/usr/bin/adb
fhem@wopr:~$ ls -la /usr/bin/adb
-rwxr-xr-x 1 root root 134048 Nov 30  2014 /usr/bin/adb
fhem@wopr:~$ adb version
Android Debug Bridge version 1.0.31
fhem@wopr:~$ adb kill-server
fhem@wopr:~$ adb connect 192.168.178.41
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
connected to 192.168.178.41:5555

Hier nochmal die Ausgaben als User fhem:
fhem@raspberrypi:~$ whoami
fhem
fhem@raspberrypi:~$ groups
dialout plugdev
fhem@raspberrypi:~$ ls -la `which adb`
-rwxr-xr-x 1 root root 134048 Mär 29 11:29 /usr/bin/adb
fhem@raspberrypi:~$ adb version
Android Debug Bridge version 1.0.31
fhem@raspberrypi:~$ adb kill-server
fhem@raspberrypi:~$ adb connect 192.168.1.102
* daemon not running. starting it now on port 5037 *
cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
error: cannot connect to daemon
fhem@raspberrypi:~$ ping 192.168.1.102
PING 192.168.1.102 (192.168.1.102) 56(84) bytes of data.
64 bytes from 192.168.1.102: icmp_seq=1 ttl=64 time=161 ms
64 bytes from 192.168.1.102: icmp_seq=2 ttl=64 time=74.8 ms
^C
--- 192.168.1.102 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 74.833/118.132/161.431/43.299 ms

Laut netstat läuft auch nichts anderes auf Port 5037.


Als root kann ich problemlos verbinden:
root@raspberrypi:~# whoami
root
root@raspberrypi:~# adb kill-server
root@raspberrypi:~# adb connect 192.168.1.102
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
connected to 192.168.1.102:5555
root@raspberrypi:~# adb devices -l
List of devices attached
192.168.1.102:5555     device product:montoya model:AFTM device:montoya
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: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #36 am: 29 März 2017, 14:53:55 »
Das ist die richtige IP. Auf der Konsole ist der Stick auch anpingbar:

Funktionieren normale PRESENCE-Devices? Kannst du bitte ein PRESENCE-Device mit der IP des FireTV testen?

Offline mahowi

  • Sr. Member
  • ****
  • Beiträge: 586
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #37 am: 29 März 2017, 15:24:59 »
Als normales PRESENCE-Device funktioniert es:
Internals:
   ADDRESS    192.168.1.102
   CFGFN
   DEF        lan-ping 192.168.1.102
   MODE       lan-ping
   NAME       firetest
   NOTIFYDEV  global
   NR         3870
   NTFY_ORDER 50-firetest
   STATE      present
   TIMEOUT_NORMAL 30
   TIMEOUT_PRESENT 30
   TYPE       PRESENCE
   Readings:
     2017-03-29 15:02:43   presence        present
     2017-03-29 15:02:43   state           present
   Helper:
     CURRENT_STATE present
Attributes:

shutdown restart hat jetzt auch wieder ohne Blockieren funktioniert. Aber der PRESENCE-ping geht immer noch nicht durch:
2017.03.29 15:14:40.547 5: PRESENCE (FireTV) - ping command returned with output:
PING 192.169.1.102 (192.169.1.102) 56(84) bytes of data.

--- 192.169.1.102 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3046ms

2017.03.29 15:14:40.562 5: PRESENCE (FireTV) - blocking scan result: FireTV|0|absent

Gibt es noch irgendwelche Möglichkeiten, zu testen, woran es liegt?

Ist es möglich, das Modul so zu ändern, daß man auch den Hostnamen statt der IP für die DEF nutzen kann? Und könnte man ähnlich wie im Nmap-Modul auch optional per Attribut einstellen, daß adb mit sudo genutzt wird?


Edit: Ich habe jetzt mal für adb das SUID-Bit gesetzt (chmod 4755). Damit kann ich als User connecten. FHEM verfällt aber wieder in eine Restart-Schleife. Wenn ich das Log mit tail -f und gleichzeitig die Prozesse mit htop im Auge behalte, kann ich beobachten, wie FHEM erstmal steht, wenn adb gestartet wird (2 Prozesse adb -P 5037 fork-server server).

Wenn ich adb aus dem Pfad lösche, startet FHEM sofort einwandfrei durch.
« Letzte Änderung: 29 März 2017, 15:39:17 von mahowi »
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: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #38 am: 29 März 2017, 15:44:31 »
Ist es möglich, das Modul so zu ändern, daß man auch den Hostnamen statt der IP für die DEF nutzen kann?

Ändert sich die IP denn immernoch?

Zitat
Und könnte man ähnlich wie im Nmap-Modul auch optional per Attribut einstellen, daß adb mit sudo genutzt wird?

Kann ich machen, aber ich bezweifle, dass das viel bringen wird. Offensichtlich gehen die Probleme ja über den reinen Aufruf hinaus. Du kannst testweise aber mal in 98_FireTV.pm diese Zeile suchen:

$hash->{ADB}        = $param[3] || '/usr/bin/adb';
und sudo ergänzen:

$hash->{ADB}        = $param[3] || 'sudo /usr/bin/adb';
Danach shutdown restart

Offline nesges

  • Sr. Member
  • ****
  • Beiträge: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #39 am: 29 März 2017, 16:00:35 »
Edit: Ich habe jetzt mal für adb das SUID-Bit gesetzt (chmod 4755). Damit kann ich als User connecten. FHEM verfällt aber wieder in eine Restart-Schleife. Wenn ich das Log mit tail -f und gleichzeitig die Prozesse mit htop im Auge behalte, kann ich beobachten, wie FHEM erstmal steht, wenn adb gestartet wird (2 Prozesse adb -P 5037 fork-server server).

Wenn ich adb aus dem Pfad lösche, startet FHEM sofort einwandfrei durch.

Interessant! Wie lange blockt Fhem beim Start und ist das Modul danach normal verwendbar? Wird Presence jetzt richtig angezeigt? Die Version deines adb sieht nach dem normalen Raspbian-Package aus. Kannst du bitte die Version von https://github.com/DeepSilence/adb-arm testen. Ggf. wären noch adb shell cat /proc/version und die FireOS-Version (getprop ro.build.version.name) interessant.


« Letzte Änderung: 29 März 2017, 16:12:54 von nesges »

Offline mahowi

  • Sr. Member
  • ****
  • Beiträge: 586
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #40 am: 29 März 2017, 16:59:34 »
Ich muß mal grad mein System reparieren.  ::)
Nach über 20 Jahren Linux habe ich doch noch eine neue Methode gefunden, mich aus dem System auszusperren. Ein Syntaxfehler in einer sudoers-Datei und kein gesetztes root-Paßwort reichen, und schon komm ich an keine Systemdateien mehr dran.  :o
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 mahowi

  • Sr. Member
  • ****
  • Beiträge: 586
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #41 am: 29 März 2017, 17:33:35 »
Also, die Blockierung dauert so ca. 1-1,5 Minuten. Solange geht gar nix mehr in FHEM. Außerdem ignoriert das Modul das disable-Attribut. Trotz disable=1 startet es adb, sobald ich die Device-Seite aufrufe. adb blockiert auch mit sudo solange, wenn die IP falsch ist.

Mit der Änderung im Modul, so daß adb über sudo aufgerufen wird, klappt der connect:
2017.03.29 17:21:24.595 4: [FireTV] FireTV_adb command: sudo /usr/bin/adb  connect 192.168.1.102
2017.03.29 17:21:24.702 4: [FireTV] FireTV_adb response: connected to 192.168.1.102:5555
2017.03.29 17:21:24.703 4: [FireTV] FireTV_connect (connect): connected to 192.168.1.102:5555

PRESENCE-ping funktioniert jetzt auch:
2017.03.29 17:21:32.137 5: PRESENCE (FireTV) - stopping timer
2017.03.29 17:21:32.138 5: PRESENCE (FireTV) - starting blocking call for mode lan-ping
2017.03.29 17:21:32.185 5: PRESENCE (FireTV) - starting ping scan: FireTV|192.168.1.102|0|4
2017.03.29 17:21:35.244 5: PRESENCE (FireTV) - ping command returned with output:
PING 192.168.1.102 (192.168.1.102) 56(84) bytes of data.
64 bytes from 192.168.1.102: icmp_seq=1 ttl=64 time=40.4 ms
64 bytes from 192.168.1.102: icmp_seq=2 ttl=64 time=62.6 ms
64 bytes from 192.168.1.102: icmp_seq=3 ttl=64 time=84.4 ms
64 bytes from 192.168.1.102: icmp_seq=4 ttl=64 time=24.2 ms

--- 192.168.1.102 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 24.230/52.929/84.403/22.724 ms
2017.03.29 17:21:35.262 5: PRESENCE (FireTV) - blocking scan result: FireTV|0|present
2017.03.29 17:21:35.290 4: PRESENCE (FireTV) - rescheduling next check in 30 seconds

auch ein get FireTV packages funktioniert jetzt.

Hier noch die Ausgaben zum Stick:
fhem@raspberrypi:~$ sudo adb shell cat /proc/version
Linux version 3.0.31+ (build@ip-10-11-19-147) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #3 SMP PREEMPT Thu Dec 29 02:09:34 UTC 2016
fhem@raspberrypi:~$ sudo adb shell getprop ro.build.version.name
Fire OS 5.2.1.2 (562254320)

Was den Hostnamen als Alternative zur IP angeht, über firetv ist der Stick immer erreichbar. Die IP kann sich wegen DHCP ändern. Kann ich dem Stick eine feste IP vergeben? Ich bin leider auf den Telekom-Router angewiesen wegen Hybrid und habe keine Fritz-Box. und im Speedport kann ich keine IPs vergeben.
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: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #42 am: 29 März 2017, 17:42:53 »
Außerdem ignoriert das Modul das disable-Attribut. Trotz disable=1 startet es adb, sobald ich die Device-Seite aufrufe. adb blockiert auch mit sudo solange, wenn die IP falsch ist.

Ja, disable ist nicht konsequent implementiert, da muss ich noch nachbessern.

Zitat
Mit der Änderung im Modul, so daß adb über sudo aufgerufen wird, klappt der connect:

Ich versteh's nicht, aber wenn das hilft, bau ich ein Attribut dafür ein :-)

Zitat
Hier noch die Ausgaben zum Stick:
fhem@raspberrypi:~$ sudo adb shell cat /proc/version
Linux version 3.0.31+ (build@ip-10-11-19-147) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #3 SMP PREEMPT Thu Dec 29 02:09:34 UTC 2016
fhem@raspberrypi:~$ sudo adb shell getprop ro.build.version.name
Fire OS 5.2.1.2 (562254320)

Entspricht meinem

Zitat
Was den Hostnamen als Alternative zur IP angeht, über firetv ist der Stick immer erreichbar.


An und für sich spricht da nichts gegen, adb geht mit Namen und PRESENCE scheint auch keine Probleme mit Namen statt IP zu haben. Ich schau's mir an.

Offline mahowi

  • Sr. Member
  • ****
  • Beiträge: 586
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #43 am: 29 März 2017, 18:42:55 »
Das wäre super, wenn Du die beiden Änderungen einbaust.  :)  Danke!

Ich habe im Netz nur Anleitungen gefunden, um über udev-Rules die Rechte zu vergeben, wenn das Android-Gerät über USB angeschlossen wird. Warum es bei mir nur mit sudo und bei Dir ohne geht, ist mir auch ein Rätsel. Bei mir läuft FHEM auf einem Pi mit aktuellem Raspbian Jessie und Kernel 4.9.17.

In den Netzwerkeinstellungen des Sticks findet sich kein Punkt, um die IP manuell zu vergeben. Daher bin ich leider auf DHCP angewiesen und der FireTV bekommt beim Einschalten eine zufällige neue IP. Den Netzwerknamen konnte ich aber im Router vergeben, und der ändert sich auch nicht.
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: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #44 am: 29 März 2017, 23:04:31 »
Ich habe grade Version 0.5.2 auf github veröffentlicht. Neben einigen kleineren Änderungen (verbessertes Logging, einige neue Internals mit Infos über das FireTV) gibt es jetzt die Möglichkeit statt IP einen Hostname zu verwenden und den adb call mit sudo durchzuführen. Ich habe die sudo Option nicht in ein Attribut sondern die Definition gepackt, sie ändert sich wie folgt:

define <name> FireTV <HOST[:PORT]> [sudo] [<ADB_PATH>] [<PRESENCE_TIMEOUT_ABSENT>] [<PRESENCE_TIMEOUT_PRESENT>] [<PRESENCE_MODE>] [<PRESENCE_ADDRESS>]
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline mahowi

  • Sr. Member
  • ****
  • Beiträge: 586
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #45 am: 29 März 2017, 23:30:28 »
Super, funktioniert jetzt einwandfrei.  :)

Einen kleinen Schönheitsfehler hätte ich da noch. In OSNAME, OSVERSION und SERIAL stehen Fehlermeldungen von adb statt der entsprechenden Werte:
   OSNAME     error: device not found

   OSVERSION  error: device not found
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

   SERIAL     error: device not found
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: 754
    • FTUI Live Demo
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #46 am: 30 März 2017, 00:19:47 »
Super, funktioniert jetzt einwandfrei.  :)

Fein :-)

Zitat
Einen kleinen Schönheitsfehler hätte ich da noch. In OSNAME, OSVERSION und SERIAL stehen Fehlermeldungen von adb statt der entsprechenden Werte:

... Version 0.5.3 wäre dann jetzt verfügbar. Ich hoffe es ist damit gefixt. Ggf. bleiben die Internals leer, aber ein Fehler sollte dort nicht mehr auftauchen.
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline mahowi

  • Sr. Member
  • ****
  • Beiträge: 586
Antw:98_FireTV: Fernbedienung eines Amazon FireTV per adb
« Antwort #47 am: 30 März 2017, 09:01:41 »
Ja, jetzt sind auch die Internals richtig.  :)
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