98_FireTV: Fernbedienung eines Amazon FireTV per adb

Begonnen von nesges, 09 März 2017, 18:04:40

Vorheriges Thema - Nächstes Thema

duke-f

Gut, kann ich versuchen. Seltsam ist ja nur, dass ich (ist schon wieder länger her) über ADB durchaus mal ran komme, aber die Anbindung nicht stabil ist bzw. FirTV sie selber gar nicht aufbaut. Aber trotzdem, es sich sicher der richtige Ansatz, nochmal einige Schritte zurück und nochmal das ganze. - vor allem, da ich offensichtlich der Einzige mit dem Problem bin:)
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

Markus M.

Ich hatte das Problem erst auch wieder.
ADB ist da wohl wirklich etwas empfindlich - auf dem FireTV scheint es da keinen wirklichen Timeout zu geben und so blockiert adb recht leicht.
Da ich meinen FireTV normalerweise abschalte ist mir das nur nicht oft aufgefallen.
Aber auch wenn ich KODI manuell update und das Modul vor einem FireTV Restart deaktiviere brauche ich immer mehrere Versuche.

Im Anhang noch eine Version mit ein paar Bugfixes und Verbesserungen bei den Readings.
@nesges Bitte bei Gelegenheit mal übernehmen ;)
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

duke-f

So, habe auf dem Raspberry adb herunter geschmissen und neu installiert, auf dem Fite TV debugging deaktiviert und wieder aktiviert und trotzdem geht es nach wie vor nicht, die Steuerung durch FHEM zu übernehmen.

Muss ich hier wohl erst mal kapitulieren
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

MadMax-FHEM

Gibt es irgendwelche Meldungen?
Fhem-log?

Kannst du per adb auf der Console verbinden!?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

duke-f

Nein, im FHEM-Log habe ich diesmal gar keine Meldungen. Und hinsichtlich des direkten Zugriffs per ADB auf der Konsole muss ich nochmal prüfen. Muss mich da wieder etwas einlesen, aber viel Hoffnung habe ich da eigentlich nicht. Wahrscheinlich ist das wieder wie gehabt.
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

MadMax-FHEM

Auf die Schnelle:

adb start-server

Bzw. prüfen, ob adb läuft:

ps -ax | grep adb | grep -v grep

adb connect IP-FireTV

adb shell input keyevent 22

Oder was ähnliches senden...

Wenn das geht sollte es auch mittels fhem gehen...
...wenn nicht, dann ist irgendwas an adb "quer"...

Neuerdings muss man ja die Erlaubnis zur Steuerung auf dem FireTV "bestätigen" (also nicht nur "aktivieren")...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

duke-f

#141
Hi Joachim, danke für die schnelle Reaktion - so schnell komme ich nicht mal hinterher. Also adb läuft, ps liefert:


1731 ?        Sl   189:00 adb -P 5037 fork-server server


adb connect:


already connected to 192.168.178.173:5555


aber leider gibt's beim letzten Befehl:


error: device offline


Dann mache ich folgendes:

root@pi:~# adb devices
List of devices attached
192.168.178.173:5555 offline

root@pi:~# adb kill-server
root@pi:~# adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
root@pi:~# adb shell input keyevent 22
error: device not found
root@pi:~# adb connect 192.168.178.173
connected to 192.168.178.173:5555
root@pi:~# adb shell input keyevent 22
root@pi:~# adb shell input keyevent 20
root@pi:~# adb shell input keyevent 22


und alles scheint zu funktionieren. Aber nicht aus FHEM heraus. Interessanterweise habe ich jetzt auch plötzlich vieles im FHEM-Log stehen, das gestern aber nicht da war. Allerdings ist in deser Installation von FHEM das Log äußerst seltsam, es gibt immer jede Menge Leerzeilen. Und die Ausgabe hier hat keine Zeitangabe. Ich packe es mal vollständig hier rein, auch wenn ich zweifle, dass man so viel anfangen kann damit, außer eben, dass die Kommunikation mit adb nicht läuft.


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 *
cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
* 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
* daemon not running. starting it now on port 5037 *
cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
* 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
* daemon not running. starting it now on port 5037 *
cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
* 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
* 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
* daemon not running. starting it now on port 5037 *
cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
* 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
* daemon not running. starting it now on port 5037 *
cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
* 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
* 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
* daemon not running. starting it now on port 5037 *
cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
* 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
* daemon not running. starting it now on port 5037 *
cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
* 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
* daemon not running. starting it now on port 5037 *
cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
* 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
* 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
* daemon not running. starting it now on port 5037 *
cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
* 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
* daemon not running. starting it now on port 5037 *
cannot bind 'local:5037'
ADB server didn't ACK
* failed to start daemon *
* 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
* daemon not running. starting it now on port 5037 *
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

MadMax-FHEM

#142
Arbeitest du IMMER als ROOT auf deinem System!?

Mit welchem User hast du "meine" Befehle eingegeben!?

Hast du für den User "fhem" einen Eintrag in sudoers!?
Damit fhem die adb-Befehle mittels sudo und OHNE Passwort ausführen kann/darf!?

Welches System hast du?
Also (HW), OS!?

EDIT: und nun (besser) nicht einfach "wo" suchen und "irgendwas" mit sudoers machen!

EDIT2: was passiert, wenn du folgendes tust: sudo -su fhem bash  und dann sudo adb "irgendwas" ausführst, also mal die oben genannten Befehle? (wobei wenn du eh als root "arbeitest", dann ginge wohl auch "nur" -su fhem bash ;)  / und wenn du "fertig" bist ein "exit" nicht vergessen, um auf deine ursprüngliche "Console" zurück zu kommen)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

duke-f

Ja, ich mache praktisch auf allen Geräten immer alles als Root. Also auch Deine Befehle.

Und nein, fhem ist auf diesem Gerät nicht bei den sudoers. Sollte das so sein? Habe ich bei meinem Hauptsystem auch nicht.


root@pi:~# sudo -su fhem bash
fhem@pi:/root$ sudo devices

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for fhem:



Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

87insane

Also ich musste am Anfang auch über ein putty einfach mal "adb devices" und dann poppte am TV schon die Meldung auf, zum bestätigen.

duke-f

Teil zwei der Antwort habe ich vergessen:


root@pi:~# cat /etc/issue
Raspbian GNU/Linux 8 \n \l


auf einem Raspberry Pi Version B

@87insane
Über die Konsole kann ich ja zugreifen.
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

MadMax-FHEM

#146
Zitat von: duke-f am 16 Februar 2019, 10:41:57
Ja, ich mache praktisch auf allen Geräten immer alles als Root. Also auch Deine Befehle.

OT:

Dir ist aber bewusst wie gefährlich das ist!!!!!!!!!

EDIT: und dass dann u.U. manche Sachen NICHT funktionieren (wenn z.B. ein "normaler" User [z.B. fhem ;)  ] dann was ausführen soll) ist dir auch klar!

END-OT

Hmm, wenn meine Befehle auch (und die waren doch die selben die du danach eingegeben hast), eigenartig, dass es mal geht und mal nicht...


Zitat von: duke-f am 16 Februar 2019, 10:41:57
Und nein, fhem ist auf diesem Gerät nicht bei den sudoers. Sollte das so sein? Habe ich bei meinem Hauptsystem auch nicht.

Auf dem Hautpsystem geht die FireTV-Steuerung!? Oder was soll dieses Anmerkung bedeuten?

Wenn du von dort auch den FireTV steuern solltest: es geht immer nur EINE adb-Verbindung!


Ich habe halt in den code geschaut und dort wird (wenn ich mich nicht verkuckt habe) eben sudo verwendet.
Wenn nun der fhem-User nicht in sudoers OHNE Passwortabfrage (für zumindest adb) drin steht, dann wird das Modul immer scheitern...
...weil eben auf eine Passworteingabe gewartet wird, die nat. nie erfolgt.


Zitat von: duke-f am 16 Februar 2019, 10:41:57

root@pi:~# sudo -su fhem bash
fhem@pi:/root$ sudo devices

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for fhem:


Was soll "sudo devices" bewirken!?
Und wie du siehst: es wird auf eine Passworteingabe gewartet...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

duke-f

Da habe ich das adb vor devices vergessen.

Die Risiken sind mir absolut klar, daher habe ich immer für die wirklich wichtigen Dinge Backups. Mit dem Hauptsystem meine ich mein FHEM auf dem Cubietruck. Da läuft praktisch erst mal alles FHEM betreffend. Aber FireTV habe ich erst ausgelaert auf den Raspberry Pi, weil da ein neueres Linux gefordert wurde und ich den Cubie nicht anfassen will in der Beziehung. Die Verknüpfung geht dann über FHEM2FHEM und RFHEM, aber natürlich erst dann, wenn es direkt am Raspberry Pi funktioniert.

Was die ganzten Rechte und sudoers betrifft: Es hat doch anfangs genau in dieser Konstellation funktioniert. Dann hatte ich dies einige Wochen nicht genutzt und dann ging es plötzlich nicht mehr. Aber ich werde als nächstes (nicht jetzt, habe keine Zugriffserlaubnis auf den TV) den user fhem mal den sudoers zuordnen. Melde mich dan
Gruß und Dank
duke-f
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

MadMax-FHEM

#148
Wenn es schon mal gelaufen ist (ohne sudoers), dann liegt es (wohl) nicht daran.

Läuft bzw. laufen deine fhem überhaupt unter dem User fhem?

Nachdem du ja scheinbar alles als root machst...

OT-Again:

Und Backup hin oder her: alles als ROOT ist trozdem KEINE gute Idee... Weil neben den Gefahren (durch "Unachtsamkeit" sich das komplette System "zerschießen" eben auch alles was du tust und "anfasst" ROOT "gehört" und somit für andere User nicht [so einfach] zugreifbar ist! Und daher manche Dinge einfach nicht funktionieren...)

EDIT: und ganz nebenbei: es ist total unnötig! Genau dazu gibt es den "sudo-Mechanismus", damit für die Dinge, die wirklich "root" benötigen auch für den "Normal-User" machbar sind. Und man merkt so gleich wann root nötig ist und wann unnötig...

(aber: freies Land, jedem sein System)

End-OT

Was bei FireTV umgestellt wurde (ist aber schon lange/länger her): neben der Freigabe von adb-Debugging-Zugriff muss man auch noch das steurende Gerät (in deinem Fall den PI mit adb) "bestätigen". Da kommt dann normalerweise eine Meldung auf dem FireTV und dann muss man das bestätigen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

87insane

Das muss er ja schon getan haben, wenn es mal lief. ADB muss mittlerweile bei allen Geräten bestätigt werden. Das ist einfach ein etwas sichererer Debug Zugriff.
Über seine Konsole soll es ja auch gehen....

Würde gerne mal einen Auszug von Putty sehen indem du adb devices eingibst. Da steht auch direkt ob du erlaubt bist oder nicht.