FHEM Forum

FHEM => Sonstiges => Thema gestartet von: zap am 12 Mai 2021, 14:12:47

Titel: Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 12 Mai 2021, 14:12:47

Es gibt nun einen Beitrag im FHEM WIKI zu diesen Modulen: https://wiki.fhem.de/wiki/AndroidDB

Die Module 89_AndroidDB und 89_AndroidDBHost erlauben die Steuerung von Android Devices über die Android Debug Bridge (ADB). Man kann Shell-Befehle auf Android Geräten ausführen, Android Geräte neu starten oder aber Tastendrücke an Android Geräte senden und so eine Fernbedienung simulieren. Getestet habe ich das mit

- Samsung Android Tablet
- SONY Android TV AF9
- Magenta TV Stick
- NVidia Shield


Installation

Voraussetzungen für FHEM:

- Installation des Perl Moduls IPC::Open3
- Installation der Android Plattform Tools

Die Installation des Perl Moduls erledigt man wie gehabt mit CPAN. Die Android Plattform Tools werden unter Debian/Raspbian mit dem folgenden Befehl installiert:

apt-get install android-sdk-platform-tools

Für andere Plattformen (Windows, Linux x86, MacOS) findet man die Tools hier: https://developer.android.com/studio/releases/platform-tools

Bei der manuellen Installation der Tools von developer.android.com (MacOs und Linux) muss man darauf achten, dass der Nutzer, unter dem der FHEM Prozess läuft, den Befehl 'adb' ausführen darf. Dazu ggf. die Rechte auf read und execute für alle setzen:

chmod 755 adb

Definition eines I/O Device (das gibt es nur 1x je FHEM Instanz)

Nach der Installation aller notwendigen Komponenten definiert man zunächst ein I/O Device, das den ADB-Server repräsentiert:

define myADBServer AndroidDBHost

Wenn sich der ADB Befehl (der mit den Android Platform Tools installiert wurde) nicht im Pfad befindet, muss man den Pfad zum Befehl als Parameter angeben:

define myADBServer AndroidDBHost adb=/usr/local/platform-tools/adb

Defintion von Android Devices in FHEM

Voraussetzung: Auf jedem Android Device, das über AndroidDB gesteuert werden soll, muss der Entwicklermodus aktiviert und das USB Debugging eingeschaltet sein. Das Gerät muss nicht(!) gerootet sein.
Die Aktivierung des Entwicklermodus kann sich von Gerät zu Gerät etwas unterscheiden, ist aber meist ähnlich. Bei Android TV Geräten geht man so vor (einmalige Aktion je Gerät):

- Geräteeinstellungen > Info auswählen
- Ganz nach unten scrollen bis zu einer Angabe, die meistens "Build" oder "Version" heißt
- Auf diese Angabe wiederholt drücken. Android zeigt dann irgendwann "in X Schritten bist Du Entwickler" an. Dann noch X Mal drücken bis "Du bist jetzt Entwickler" angezeigt wird
- Nun unter Geräteeinstellungen > Entwickleroptionen das USB-Debugging einschalten (heißt zwar USB, die Verbindung erfolgt aber über das Netzwerk)

Nun kann man ein AndroidDB Gerät in FHEM definieren:

define myTV AndroidDB 192.168.1.100

Einziger Parameter ist die IP-Adresse des Android-Geräts (man sollte eine feste IP zuordnen). Beim ersten Zugriff auf das Gerät kann es sein, dass man auf dem Gerät einmal die Verbindung von FHEM zulassen muss. In dem Fall sollte man den Haken bei "Zugriff immer erlauben" setzen.

Nun kann man sein Android Gerät steuern. Eine der nützlichsten Funktionen dürfte das Senden von Tastendrücken sein. So kann man in FHEM eine Fernbedieung realisieren.

Beispiel: Home-Taste drücken

set myTV sendKey KEYCODE_HOME

Beispiel: Umschalten auf Programm 12

set myTV sendKey KEYCODE_0 KEYCODE_0 KEYCODE_1 KEYCODE_2
(die beiden führenden 0en könnte man weglassen, dann dauert das Umschalten aber länger, da das Gerät wartet, ob weitere Tasten kommen)

Eine Liste der Keycodes findet man hier: https://developer.android.com/reference/android/view/KeyEvent

Presets

Ich habe einige Presets hinterlegt (am Beispiel eines Magenta TV Sticks). Ein Preset kann mit dem Attribut 'preset' eingestellt werden. Alternativ kann man mit dem Attribut 'macro' eigene RemoteControl Befehle definieren. Ein solcher Befehl kann mehrere Tastendrücke senden.

Nach der Auswahl eines Presets kann man Befehle etwas abkürzen, z.B.:

set myTVStick remoteControl APPS
set myTVStick remoteControl EPG


Mit Macros:

attr myTV macros DasErste:KEYCODE_0,KEYCODE_0,KEYCODE_0,KEYCODE_1
set myTV remoteControl DasErste


In Arbeit:

- Laden eigener Presets aus Dateien
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: delMar am 13 Mai 2021, 10:46:07
Geniale Idee dieses Modul.
Vor allem die Makros find ich spitze

Danke
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 14 Mai 2021, 20:34:23
Es gibt noch 1-2 Bugs. Im Moment noch eher zum Testen. Aber och werde in den nächsten Tagen hin und wieder ein Update hochladen.
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: steffen83 am 17 Mai 2021, 13:09:01
Hallo,

ich klinge mich hier mal rein, da ich auch schon ein Problem habe:

Nach
"define myADBServer AndroidDBHost adb=/usr/local/platform-tools/adb"

habe ich diese Fehlermeldung
ADB command not found or is not executable in

Er zieht sich auch nicht selbst den Pfad....

Gruß
Steffen
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: gamauf am 17 Mai 2021, 15:09:23
Da würde ich auf ein Rechte Problem tippen:
Hat der Linux User unter dem FHEM läuft ("fhem"?) das Recht (xr) abd auszuführen?
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: steffen83 am 17 Mai 2021, 15:21:54
Das könnte natürlich sein. Wie muss der Befehl denn genau dazu lauten? Das stand natürlich oben nicht in der Besschreibung :-)
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 18 Mai 2021, 13:31:14
Weißt Du denn, wo die Plattform-Tools installiert sind? Diesen Pfad musst Du natürlich angeben. Die Angabe in der Doku/Beschreibung ist nur ein Beispiel.

Wenn der adb Befehl in einem Verzeichnis /mytools/adb liegt, kannst Du die notwendigen Rechte so ändern:

chmod 755 /mytools/adb

im define heißt der Parameter adb=/mytools/adb
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 21 Mai 2021, 10:50:32
Ich habe eine neue Version der beiden Module eingecheckt. Morgen per FHEM Update verfügbar.

Behobene Fehler:

Neue Funktionen:
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 30 Mai 2021, 19:24:08
Ein Fehler in 89_AndroidDBHost wurde behoben, der das Laden des Moduls verhinderte. Update steht morgen per FHEM Update zur Verfügung.
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: steffen83 am 18 November 2021, 10:45:15
Hallo, es ist schon eine weile her, geht dieses Projekte noch weiter?
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: TWART016 am 11 Dezember 2021, 04:54:50
Hallo zap,

sehr cooles Modul. Ich habe es die letzten Tage ein wenig getestet.

1) Wie kann ich ein eigenes preset erstellen? Ich habe eine Nokia Streaming Box 8000. Mit den Macros kann ich zwar senden, wenn kein preset attr gesetzt ist taucht unter set kein remoteControl und somit nicht die Makros auf.

2) Kann ich auch Shell Befehle in Makros hinterlegen?

3) Ich möchte gerne Apps über shell Befehle senden. Ist dies in Makros auch möglich?

4) Ich würde gerne prüfen ob eine App läuft. Mit dem Befehl adb shell pidof de.bluegaspode.squeezeplayer
bekomme ich eine ID zurück, falls das Package laufen sollte. Diesen Wert (läuft/nicht) hätte ich gerne als Reading

Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 22 Januar 2022, 15:55:40
Ich werde bald wieder etwas Zeit in dieses Modul investieren.
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 23 Januar 2022, 12:43:45
Zitat von: TWART016 am 11 Dezember 2021, 04:54:50
Hallo zap,

sehr cooles Modul. Ich habe es die letzten Tage ein wenig getestet.

1) Wie kann ich ein eigenes preset erstellen? Ich habe eine Nokia Streaming Box 8000. Mit den Macros kann ich zwar senden, wenn kein preset attr gesetzt ist taucht unter set kein remoteControl und somit nicht die Makros auf.

Siehe commandref zum Attribut "preset".

Zitat
2) Kann ich auch Shell Befehle in Makros hinterlegen?

Nein. Aber man kann sich solche Makros einfach per FHEM Attribut "eventMap" zusammenbauen. Siehe auch commandref zu "eventMap". So kann man sich z.B einen Alias für einen "set xy shell" Befehl zusammenbauen, der dann unter "set" auftaucht (FHEM Basics, also kein AndroidDB Thema).

Zitat
3) Ich möchte gerne Apps über shell Befehle senden. Ist dies in Makros auch möglich?

Was meinst Du mit "Apps senden"? Installieren?
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 23 Januar 2022, 12:44:56
Zitat von: steffen83 am 18 November 2021, 10:45:15
Hallo, es ist schon eine weile her, geht dieses Projekte noch weiter?

Welches Feature fehlt denn bzw. welches hättest Du gerne?
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: TWART016 am 29 Januar 2022, 15:28:16
Zitat von: zap am 23 Januar 2022, 12:43:45
Siehe commandref zum Attribut "preset".
In der Commandref seht
preset {<PresetName>|@<PresetFileName>}
Wenn ich das Attribut auswähle kann ich nur die 2 vorhandenen Presets auswählen. Wie kann ich ein eigenes erstellen und wo liegen die Vorlagen?

Zitat von: zap am 23 Januar 2022, 12:43:45
Nein. Aber man kann sich solche Makros einfach per FHEM Attribut "eventMap" zusammenbauen. Siehe auch commandref zu "eventMap". So kann man sich z.B einen Alias für einen "set xy shell" Befehl zusammenbauen, der dann unter "set" auftaucht (FHEM Basics, also kein AndroidDB Thema).

Im Prinzip müsste ich mit dem EventMap ein anderes set von dem Gerät ausführen. Ich habe dazu nichts gefunden.
eventmap reagiert doch auf das Event. Wenn ich set remoteControl mache, taucht davon nichts im Event Monitor auf

Zitat von: zap am 23 Januar 2022, 12:43:45

Was meinst Du mit "Apps senden"? Installieren?
Apps haben von Aktivitäten, welche gestartet werden können

#Alle Aktivitäten eines Packages anzeigen
adb shell dumpsys package | grep com.ultrastreams.velocity | grep Activity

#Aktivität starten
adb shell am start -n com.ultrastreams.velocity/com.ultrastreams.ultrastreamsiptvbox.view.activity.SplashActivity

#Aktuelle Aktivität anzeigen
adb shell "dumpsys activity activities | grep ResumedActivity"



4. Sind readings geplant?
z.B. Läutstärke vom Gerät abfragen oder prüfen ob ein Prozess läuft?
adb shell pidof de.bluegaspode.squeezeplayer
über adb shell bekommt man einen Output des Ergebnisses, dieses könnte man in ein Reading schreiben.


Sobald ich das Android Gerät neu starte, ist das FHEM Device Disconnected. Probiert das Modul automatisch ein adb connect nach einem Interval zu machen?
Ist event-on-change reading geplant? Das state reading sendet jede Minute ein 2022-01-29 15:27:35 AndroidDBHost myADBServer running
2022-01-29 15:27:35 AndroidDB AndroidDB connected

Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 04 Februar 2022, 15:52:46
Ich habe gerade ein Update eingecheckt. Es gibt nun ein separates Attribut "presetFile" um ein Key-Code-Mapping aus einer Datei zu laden. Voraussetzung: FHEM muss Lesezugriff auf diese Datei haben.
Das Format einer Preset-Datei ist in der Commanref beschrieben.

@TWART016:

Bisher konnte man persets aus Dateien nur laden, wenn man den "attr" Befehl per Kommandozeile eingegeben hat. Das ist nun mit "presetFile" auch aus dem UI möglich.

Man kann eventMap auch verwenden, um eigene Befehle zu bauen. Beispiel:

Ein Gerät lässt sich mit "set xy remoteControl POWEROFF" ausschalten und mit POWERON einschalten. Dann kann man sich einen eigene "set xy off/on" Befehle so bauen:

eventMap /remoteControl POWEROFF:off/remoteControl POWERON:on/

Um eine Aktivität zu starten bzw. einen Intent aufzurufen, müsste das gehen:

set xy shell "am start -n com.ultrastreams.velocity/com.ultrastreams.ultrastreamsiptvbox.view.activity.SplashActivity"

Readings: Da denke ich mal drüber nach, was da sinnvoll ist. Wenn, dann allgemeine Android Dinge, sicher keine App-spezifischen Readings.

Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: TWART016 am 12 Februar 2022, 12:56:58
Kann ich aus dem Modul ein adb connect machen? Nach einem Neustart von FHEM ist das Gerät disconnected und fliegt auch auf dem Host aus adb devices -l

Zitat von: zap am 04 Februar 2022, 15:52:46
Ich habe gerade ein Update eingecheckt. Es gibt nun ein separates Attribut "presetFile" um ein Key-Code-Mapping aus einer Datei zu laden. Voraussetzung: FHEM muss Lesezugriff auf diese Datei haben.
Das Format einer Preset-Datei ist in der Commanref beschrieben.
Ich habe nun eine Datei direkt in /opt/fhem/ erstellt
-rw-r--r--  1 fhem dialout     71 Feb 12 01:25  adb_preset_nokia8000


und das eingetragen:
# Comment
PresetName1
Enter:66
Back:4

PresetName2
lauter:24
leiser:25


attr AndroidDB presetFile adb_preset_nokia8000

In dem Modul wird aber unter remoteControl nichts angezeigt


Zitat von: zap am 04 Februar 2022, 15:52:46
Man kann eventMap auch verwenden, um eigene Befehle zu bauen. Beispiel:
Ein Gerät lässt sich mit "set xy remoteControl POWEROFF" ausschalten und mit POWERON einschalten. Dann kann man sich einen eigene "set xy off/on" Befehle so bauen:

eventMap /remoteControl POWEROFF:off/remoteControl POWERON:on/
Um eine Aktivität zu starten bzw. einen Intent aufzurufen, müsste das gehen:
set xy shell "am start -n com.ultrastreams.velocity/com.ultrastreams.ultrastreamsiptvbox.view.activity.SplashActivity"
On/Off funktioniert mit dem EventMap, dieses starten jedoch nicht.
/shell am start -n com.ultrastreams.velocity/com.ultrastreams.ultrastreamsiptvbox.view.activity.SplashActivity:StartAppTV
Fehler:
Unknown argument com.ultrastreams.ultrastreamsiptvbox.view.activity.splashactivity, choose one of reboot sendKey shell remoteControl
In dem Befehl ist ein slash. Ist das ein Problem?

Mit Separierung über Komma anstatt Slash wird der Befehl ausgeführt
,shell am start -n com.ultrastreams.velocity/com.ultrastreams.ultrastreamsiptvbox.view.activity.SplashActivity:StartAppTV

Nach dem Ausführen wird das Device in FHEM verlassen und öffnet eine neue Seite mit dem Output
Starting: Intent { cmp=com.ultrastreams.velocity/com.ultrastreams.ultrastreamsiptvbox.view.activity.SplashActivity }

Könnte man hier ggf. in dem Device drin bleiben?



Zitat von: zap am 04 Februar 2022, 15:52:46
Readings: Da denke ich mal drüber nach, was da sinnvoll ist. Wenn, dann allgemeine Android Dinge, sicher keine App-spezifischen Readings.
Ja, denke allgemeine Android Dinge wie Volumen wäre gut.

Die beiden Befehle öffnet ein neues Fenster mit dem Ergebnis. Wäre das möglich in einem Reading lastShell anzuzeigen oder besser noch eigene Befehle per attr zu hinterlegen und automatisch nach einem interval abzufragen
set xy shell dumpsys package | grep com.ultrastreams.velocity | grep Activity
set xy pidof com.mobisystems.fileman

Im Modul WINCONNECT kann mein ein Befehl set checkprocess durchführen. Dieser prüft im Hintergrund alle aufgeführten Prozesse.

Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 24 Februar 2022, 13:45:43
Ich habe gerade ein Update für die Module AndroidDB und AndroidDBHost eingecheckt.

- Das Preset-/Makro-Handling wurde komplett überarbeitet
- Man kann remotecontrol Devices erzeugen und so eine Fernbedienung abbilden
- Mit dem Attribut "connect" kann direkt nach dem FHEM Start automatisch eine Verbindung zu einem Device aufgebaut werden
- Makros (und Preset-Files) können nun auch neben KeyCode-Sequenzen auch ADB-Befehle enthalten

Beispiel:

attr myDev macros listPackages:shell pm listpackes

Die wichtigsten Funktionen werden auf der Wiki Seite beschrieben: https://wiki.fhem.de/wiki/AndroidDB#Steuerung_von_Android_Devices_in_FHEM
Die commandref ist ebenfalls aktualisiert worden.
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: TWART016 am 04 März 2022, 23:46:33
Shell Befehle in macros funktioniert super. Wenn ich den Befehl ausführe
adb shell am start -n com.nathnetwork.xciptv/.SplashVideoActivity

Kommt danach der Output und es wird weitergeleitet auf http://IP:8083/fhem und bliebt nicht im Device
Starting: Intent { cmp=com.nathnetwork.xciptv/.SplashVideoActivity }


Kann ich den Output in ein Reading, z.B. von listPackages:shell pm list packages schreiben?

Nach dem Neustart von FHEM wird automatisch ein connect gemacht. Würde ein set myDev connect nicht auch Sinn machen?

Mit sendKey 26 geht das Geräte in den Standby. Kann ich diesen Status vom Gerät auslesen? Ping ist in dem Mode trotzdem da.

Wäre es möglich event-on-change einzubauen?
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 05 März 2022, 16:15:50
Zitat von: TWART016 am 04 März 2022, 23:46:33
Shell Befehle in macros funktioniert super. Wenn ich den Befehl ausführe
adb shell am start -n com.nathnetwork.xciptv/.SplashVideoActivity

Kommt danach der Output und es wird weitergeleitet auf http://IP:8083/fhem und bliebt nicht im Device

Du möchtest den output unterdrücken?

Zitat
Kann ich den Output in ein Reading, z.B. von listPackages:shell pm list packages schreiben?

Die Liste der Packages ist ja sehr lang. Die gesamte Liste soll in 1 Reading? Das dürfte das FHEM UI sprengen.

Zitat
Nach dem Neustart von FHEM wird automatisch ein connect gemacht. Würde ein set myDev connect nicht auch Sinn machen?

Das Connect sollte nur dann erfolgen, wenn Du das Attribut "connect" auf 1 gesetzt hast. Ein separater Befehl "set connect" ist eigentlich überflüssig, da sich das Modul immer erst mit dem Device verbindet, bevor ein Befehl ausgeführt wird. Das muss so sein, denn der ADB Server kann zwar zu mehreren Devices connected sein, allerdings bringt das rein gar nichts. Grund: Die ADB Befehle haben keinen Parameter zur Angabe eines bestimmten Geräts. Daher macht AndroidDB vor der Ausführung eines Befehls immer ein disconnect, sofern mehrere Geräte verbunden sind.

Zitat
Mit sendKey 26 geht das Geräte in den Standby. Kann ich diesen Status vom Gerät auslesen? Ping ist in dem Mode trotzdem da.

Könnte mit "adb shell dumpsys power" gehen. Muss ich mir anschauen. Ich denke, ich werde einige "dumpsys" Parameter als Readings einbauen.

Zitat
Wäre es möglich event-on-change einzubauen?

Wie meinst Du das? Das ist ein FHEM-Standardattribut.
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: TWART016 am 09 März 2022, 00:18:36
Zitat von: zap am 05 März 2022, 16:15:50
Du möchtest den output unterdrücken?
Ja, mit set adb macro (adb shell am start -n com.nathnetwork.xciptv/.SplashVideoActivity) wird auf die fhem URL weitergleitet und bleibt nicht im Modul. Zudem erscheint als Output (was ich in den Fall nicht brauche)
Starting: Intent { cmp=com.nathnetwork.xciptv/.SplashVideoActivity }


Zitat von: zap am 05 März 2022, 16:15:50
Die Liste der Packages ist ja sehr lang. Die gesamte Liste soll in 1 Reading? Das dürfte das FHEM UI sprengen.
Der Output für den Befehl ist lang, das ich richtig. Bei anderen Befehlen ist das nicht so lang. Ich denke FHEM limitiert hier nicht. Das SB_Server Modul kann auch ein Reading mit sehr vielen Zeichen haben.
Vorteil wäre auch hier, dass nicht auf eine andere Seite weitergeleitet wird.


Zitat von: zap am 05 März 2022, 16:15:50
Könnte mit "adb shell dumpsys power" gehen. Muss ich mir anschauen. Ich denke, ich werde einige "dumpsys" Parameter als Readings einbauen.
Der Befehl gibt nur einige Parameter aus. Hier weiß ich nicht wie geschalten werden kann.
Reading für dumpsys Parameter und set wäre super.


Zitat von: zap am 05 März 2022, 16:15:50
Wie meinst Du das? Das ist ein FHEM-Standardattribut.
Richtig, allerdings kann ich die Werte nicht in der GUI auswählen. Sie stehen nicht zur Verfügung. Und es gibt jede Minute ein Event für state.
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 23 März 2022, 10:31:41
Morgen steht ein Update zur Verfügung. Danach sollten die FHEM Reading Attribute verfügbar sein.

@TWART016

Um die Ausgabe von Befehlen zu unterdrücken, könnte das helfen:

shell am start -n com.nathnetwork.xciptv/.SplashVideoActivity >/dev/null 2>&1
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 24 März 2022, 11:43:13
Und noch ein Update: Man kann nun für die Ausgabe von "adb shell" Befehlen Readings generieren lassen.

Beispiel: Die Ausgabe von dem Befehl "set shell dumpsys" soll Readings generieren.


attr myDev createReadings dumpsys
set myDev shell dumpsys power


Der Parameter von createReadings ist ein regulärer Ausdruck.
Es werden nur für die Zeilen der Befehlsausgabe Readings erzeugt, die im Format "Name=Wert" vorliegen.
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: TWART016 am 26 März 2022, 01:00:09
Zitat von: zap am 23 März 2022, 10:31:41
Morgen steht ein Update zur Verfügung. Danach sollten die FHEM Reading Attribute verfügbar sein.
Könntes du das bitte auch bei AndroidDBHost einfügen. Bei AndroidDB funktioniert es super.

Zitat von: zap am 23 März 2022, 10:31:41
Um die Ausgabe von Befehlen zu unterdrücken, könnte das helfen:

shell am start -n com.nathnetwork.xciptv/.SplashVideoActivity >/dev/null 2>&1
Das hilft, danke.


Zitat von: zap am 24 März 2022, 11:43:13
Man kann nun für die Ausgabe von "adb shell" Befehlen Readings generieren lassen.
Beispiel: Die Ausgabe von dem Befehl "set shell dumpsys" soll Readings generieren.


attr myDev createReadings dumpsys
set myDev shell dumpsys power

Das Attribut createReadings kann einen beliebigen Wert haben. Sobald das Attribut gesetzt ist, werden die Readings erstellt. Ist das gewollt?

Ich habe das gesetzt und es sieht zudeinem Beispiel genau gleich aus.
attr myDev createReadings pm
set myDev shell dumpsys power


Sobald das Reading createReadings erstellt ist, wird der Output in FHEM nicht mehr angezeigt, z.B: für den Befehl pm list packages
Der Output von dem Befehl sieht z.B. so aus
package:org.freemp.droid
package:com.apkmirror.helper.prod
package:com.droidlogic.tvinput
package:com.android.cts.priv.ctsshim
package:com.google.android.tv.axel
package:de.ozerov.fully

Das bedeutet dieses Format kann nicht als Reading angezeigt werden?

Das Ergebnis von Display Power: state=ON zeigt mir den gewünschten Zustand an. Kann auch nur der Befehl ausgeführt werden?

Werden die Readings automatisch aktualisiert, oder muss dafür ein at verwendet werden?
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 29 März 2022, 10:07:14
Zitat von: TWART016 am 26 März 2022, 01:00:09
Könntes du das bitte auch bei AndroidDBHost einfügen. Bei AndroidDB funktioniert es super.

mach ich.

Zitat
Das Attribut createReadings kann einen beliebigen Wert haben. Sobald das Attribut gesetzt ist, werden die Readings erstellt. Ist das gewollt?

Nein, ist ein Bug.

Zitat
Sobald das Reading createReadings erstellt ist, wird der Output in FHEM nicht mehr angezeigt

Gleicher Bug.

Zitat
Der Output von dem Befehl sieht z.B. so aus
package:org.freemp.droid
package:com.apkmirror.helper.prod
package:com.droidlogic.tvinput
package:com.android.cts.priv.ctsshim
package:com.google.android.tv.axel
package:de.ozerov.fully

Das bedeutet dieses Format kann nicht als Reading angezeigt werden?

Schwierig. Man könnte zwar ':' als weiteren Trenner erlauben, allerdings würden sich die Readings überschreiben, da vorne immer 'package' steht. Müsste man dann irgendwie durchnummerieren. Aufwändig.

Zitat
Das Ergebnis von Display Power: state=ON zeigt mir den gewünschten Zustand an. Kann auch nur der Befehl ausgeführt werden?

Vielleicht mit "dumpsys power | grep -iE Display.Power"

Zitat
Werden die Readings automatisch aktualisiert, oder muss dafür ein at verwendet werden?

Nur mir "at".
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 30 März 2022, 15:19:16
Ein weiteres Update steht morgen zur Verfügung:

- Ein Fehler beim createReadings Attribut wurde behoben
- Die FHEM Attribute stehen nun auch bei AndroidDBHost zur Verfügung
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: PNinBB am 03 April 2022, 08:49:16
Guten Morgen,
ich bin gerade auf das Modul gestoßen. Möglichweise kann ich damit einen "langen Traum" erfüllen: Ausgabe von Texten auf dem TV-Schirm !?
Was passiert bei:
set <name> sendText <Text>
Send Text to the Android device.

Geht das auf den Bildschirm ??
Randbedingungen:

Besten Dank im Voruas und schönen Sonntag !
Peter
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: zap am 03 April 2022, 17:52:18
Nein, das simuliert eine Eingabe per Fernbedienung. Beispiel:

sendtext "0001" schaltet auf Programm 1.

Schau Dir mal das Modul NotifyAndroidTV an.
Titel: Antw:Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: PNinBB am 06 April 2022, 18:25:40
Danke für den Tipp !
Titel: Aw: Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: dennisk am 13 April 2024, 10:28:55
Hallo zap,

ich nutze seit kurzer Zeit Dein Modul AndroidDB, soweit so gut und vielen Dank für das Modul!
Eine Kleinigkeit ist mir aufgefallen: wenn ein Device anstatt mit der IP mit dem Hostnamen angebunden wird, dann liefert der Befehl get devices eine leere Liste zurück - vermutlich bei mir leer, weil ich nur ein einziges Gerät über den Hostnamen angebunden habe. Die Verbindung funktioniert ansonsten so wie soll, d.h. ich kann auch Kommandos ausführen. Wenn ich es richtig sehe, dann liegt das daran: https://github.com/fhem/fhem-mirror/blob/b2ff85035e452e47307da30cf5f12b385fcbf9c8/fhem/FHEM/89_AndroidDBHost.pm#L485 (https://github.com/fhem/fhem-mirror/blob/b2ff85035e452e47307da30cf5f12b385fcbf9c8/fhem/FHEM/89_AndroidDBHost.pm#L485)
Auf die Schnelle denke ich, dass das hier ausreichen müsste, um auch devices mit Hostnamen statt IP zu erkennen:
my @devices = $result =~ /([a-zA-Z0-9]+:[0-9]+\s+[a-zA-Z0-9]+)|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:[0-9]+\s+[a-zA-Z0-9]+)/g;Könntest Du das übernehmen bzw. Dir natürlich vorher anschauen und dann übernehmen?

Vielen Dank schon mal und beste Grüße
dennisk
Titel: Aw: Neue Module 89_AndroidDBxx zur Steuerung von Android Devices
Beitrag von: Guenni1404 am 13 April 2024, 14:17:51
Hallo zap,
danke für das super Modul.
Ich habe aber folgendes Problem. Ich wollte mir die Powerinformationen holen:
set adb_tv shell dumpsys power
Hat einwandfrei funktioniert.

Nachdem der Fernseher in Stand-by geschaltet wurde und ich das Kommando nochmals absetzt habe,
ging das Fenster im Browser auf "laden" und lief unendlich. FHEM war nicht mehr erreichbar und musste neu gestartet werden.
Gibt es die Möglichkeit dies zu umgehen, ist natürlich nicht gut jedes mal, wenn ein ADB Kommando abgesetzt wird und nicht sauber abgearbeitet wird FHEM hängt.