Problème de configuration en USB

Bonjour @mika-nt28

Tout d’abord, un très grand merci pour ce plugin et tous les autres :slight_smile:

Jeedom 4.3.17
AndroidTV beta 2023-03-22 08:28:40 (j’ai essayé en stable avant et même problème)
Mi TV Box S
Cable USB Male Male home maid

root@xxxxxxxxxx:~# adb --version
Android Debug Bridge version 1.0.41
Version 28.0.2-debian

j’utilisai activement le plugin AndroidTV il y a environ 6 mois, puis, lassé de ne pas pouvoir allumer la TV avec la fonction ON ; j’ai fini par abandonner le sujet.

Très récemment, j’ai migré mon serveur Jeedom juste à coté de la TV. Je me suis alors souvenu qu’une connexion directe en USB devrait me permettre de piloter ma TV tout en couvrant le démarre de la TV

J’ai donc réinstaller ton plugin puis configuré en USB. Il demande une IP malgré tout, ok je donne.
Les commandes fonctionnent toutes mais pas les retours d’infos.
en clair, la commande : adb shell dumpsys power -h | grep « Display Power » ne fonctionne pas.

du coup je regarde et je constate que j’ai 2 devices connectés :

List of devices attached
18554284498151  device                            << Connexion USB
192.168.1.24:5555       device-                    << Connexion TCP/IP

Comme indiqué dans ton plugin, il n’est possible de piloter qu’un seul périphérique en USB.
car sinon, les commandes adb rencontrent l’erreur suivante :

root@xxxxxxxxxx:~# adb shell
error: more than one device/emulator

Si je déconnecte la connexion TCPIP, la commande fonctionne correctement, mais le plugin la reconnecte à la prochaine commande.

Je creuse le code et je constate que dans le fichier AndroidTV.class.php à la ligne 102 :

public function runcmd($_cmd) {
                try{
                        $type_connection = $this->getConfiguration('type_connection');
                        $ip_address = $this->getConfiguration('ip_address');
                        $sudo = exec("\$EUID");
                        if ($sudo != "0") {
                                $sudo_prefix = "sudo ";
                        }
                        if ($type_connection == "TCPIP") {
                                $data = shell_exec($sudo_prefix . "adb -s ".$ip_address.":5555 " . $_cmd);
                                return $data;

                        }elseif ($type_connection == "**TCPIP**") {
                                $data = shell_exec($sudo_prefix . "adb " . $_cmd);
                                return $data;
                        }
                } catch (Exception $e) {
                        log::add('AndroidTV','error','Exception reçue : ',  $e->getMessage());
                }

il me semble que pour avoir une vrai connexion USB, le elseif devrait être en type_connection == « USB », non ?
ça n’a pas fonctionné tout de suite car j’ai aussi enlever le :5555 aux lignes 535 et 537.

try{
                        log::add('AndroidTV', 'info',$this->getHumanName() . ' Command "' . $commande . '" sent to android device at ip address : ' . $ip_address);
                        if ($delais!=0)
                                shell_exec($sudo_prefix . "adb -s ".$ip_address."**:5555** " . $commande . "&& sleep ".$delais);
                        else {
                                shell_exec($sudo_prefix . "adb -s ".$ip_address."**:5555** " . $commande);
                        }
                        $ARC->updateInfo();
                } catch (Exception $e) {
                        log::add('AndroidTV','error','Exception reçue : ',  $e->getMessage());
                }

Pour cette derniere modification, je pense que ma solution de contournement casse la methode de connexion en TCP/IP et qu’il faudrait remplacer le bout de code.

J’ai fais de l’admin sys dans ma vie, mais je suis incapable de corriger le code.

En l’état, après ces modifications et la déconnexion forcée de l’adb en TCP/IP, voici ma configuration sous Jeedom qui fonctionne (en true USB) :

List of devices attached
18554284498151  device

image



image

j’imagine que les utilisateurs de la fonction USB ne sont pas nombreux, mais je veux bien t’aider à tester et debug si tu veux :slight_smile:

A+