Détection de téléphone

Hello,
J’ai pour ma part 4 téléphones sur une antenne sur un nuc (sur une VM dédiée), donc avec le plugin en bêta pour avoir le multi-antennes (avec 3 rpi en plus)
Je n’ai pas de problème comme je l’avais expliqué plus tôt. Avez vous des traces en debug à fournir, voir ce qui se passe quand le mobile est connecté puis déconnecté ?
Benoit

1 « J'aime »

Hello,

Oui c’est super pénible car pour moi aussi, ce plugin est dans mon top 3 des meilleurs plugins indispensables sur Jeedom! :heart_eyes:
Je m’en sers également pour désactiver les alarmes pour les 4 membres de la famille, ainsi que pour la gestion de présence qui est parfaite avec ça…c’est d’ailleurs la solution la plus fiable que j’ai trouvé (et de loin)

Donc j’ai bien les boules car ça tournait parfaitement sur mon RPI 3 et maintenant que j’ai un NUC dédié à Jeedom (pas de VM), y’a pas moyen.

Je viens encore de le réinstaller après une fresh install depuis l’image officielle puis restauration du backup et c’est toujours pareil: jusqu’à 2 téléphones (Android pour ma part) c’est nickel et dès l’ajout d’un troisième mobile: tous les téléphones apparaissent définitivement déconnectés.
J’ai supprimé le 3ème portable et HOP > les 2 autres apparaissent aussitôt connectés!
Je comprends plus rien lol

Salut @benoit5672

OK, je rajoute un troisième téléphone pour essayer de choper le log en debug…

@benoit5672

Alors ça y’est, après un bon moment avec les 4 téléphones connectés (j’ai failli y croire…)
la déconnexion vient d’avoir lieu.

Voici le log en debug…ça n’a pas l’air très parlant :roll_eyes:

[2021-02-26 20:49:04][DEBUG] : value: 0
[2021-02-26 20:49:04][DEBUG] : Device Name: [Smartphones][Luc - Bluetooth]
[2021-02-26 20:49:04][DEBUG] : State property name: [Smartphones][Luc - Bluetooth][Etat]
[2021-02-26 20:49:04][INFO] : updateGlobalDevice()
[2021-02-26 20:49:34][DEBUG] : id: 431
[2021-02-26 20:49:34][DEBUG] : id: 430
[2021-02-26 20:49:34][DEBUG] : value: 0
[2021-02-26 20:49:34][DEBUG] : value: 0
[2021-02-26 20:49:34][DEBUG] : Device Name: [Smartphones][Virgilie - Bluetooth]
[2021-02-26 20:49:34][DEBUG] : Device Name: [Smartphones][Kim  Bluetooth]
[2021-02-26 20:49:34][DEBUG] : State property name: [Smartphones][Kim  Bluetooth][Etat]
[2021-02-26 20:49:34][DEBUG] : State property name: [Smartphones][Virgilie - Bluetooth][Etat]
[2021-02-26 20:49:34][INFO] : updateGlobalDevice()
[2021-02-26 20:49:34][INFO] : updateGlobalDevice()
[2021-02-26 20:58:21][DEBUG] : id: 428
[2021-02-26 20:58:21][DEBUG] : value: 0
[2021-02-26 20:58:21][DEBUG] : Device Name: [Smartphones][Jarod - Bluetooth]
[2021-02-26 20:58:21][DEBUG] : State property name: [Smartphones][Jarod - Bluetooth][Etat]
[2021-02-26 20:58:21][INFO] : updateGlobalDevice()

EDIT

Du coup, j’ai désactivé 2 téléphones du plugin (sans les effacer) et instantanément, les 2 autres sont repassés connectés!

[2021-02-26 21:05:58][DEBUG] : callDeamon remove_device Array (     [0] => 431     [1] => Virgilie - Bluetooth     [2] => 7C:D6:61:3C:11:2C )
[2021-02-26 21:05:58][DEBUG] : error 0 :
[2021-02-26 21:05:58][DEBUG] : result callDeamon Array (     [result] => Remove OK     [success] => 1 )
[2021-02-26 21:06:10][DEBUG] : postUpdate()
[2021-02-26 21:06:10][DEBUG] : callDeamon remove_device Array (     [0] => 430     [1] => Kim  Bluetooth     [2] => 4C:63:71:80:30:6F )
[2021-02-26 21:06:10][DEBUG] : error 0 :
[2021-02-26 21:06:10][DEBUG] : result callDeamon Array (     [result] => Remove OK     [success] => 1 )
[2021-02-26 21:06:18][DEBUG] : id: 426
[2021-02-26 21:06:18][DEBUG] : value: 1
[2021-02-26 21:06:18][DEBUG] : Device Name: [Smartphones][Luc - Bluetooth]
[2021-02-26 21:06:18][DEBUG] : State property name: [Smartphones][Luc - Bluetooth][Etat]
[2021-02-26 21:06:18][INFO] : updateGlobalDevice()
[2021-02-26 21:06:18][DEBUG] : id: 428
[2021-02-26 21:06:18][DEBUG] : value: 1
[2021-02-26 21:06:18][DEBUG] : Device Name: [Smartphones][Jarod - Bluetooth]
[2021-02-26 21:06:18][DEBUG] : State property name: [Smartphones][Jarod - Bluetooth][Etat]
[2021-02-26 21:06:18][INFO] : updateGlobalDevice()

@Xboss06
Il y a effectivement des informations intéressantes dans les logs. Dans le premier cas la valeur (value) est toujours à 0 ce qui indique que le téléphone n’est pas détecté. Quand tu en enlèves 2, alors on voit des valeurs à 1.
1/ Est ce que tu utilises BLEA sur la même antenne bluetooth que phone détection ?
2/ garde tes 2 téléphones qui fonctionnent et ensuite exécute la commande suivante à interval régulier (le plugin exécute cette commande toute mes 10 secondes)
Remplace hci0 par ton antenne et mac par la mac adresse du bluetooth de ton téléphone

sudo hciconfig -i <hci0> name <mac>

Je pense qu’il y a un conflit sur la gestion de l’antenne qui crée le problème. Regarde donc si tu as des informations différentes en répétant la commande plusieurs fois.

Benoit5672

Merci pour ton aide précieuse :+1:

Alors non, je n’ai jamais installé ni utilisé BLEA et je n’ai donc qu’une seule antenne Bluetooth…
Je n’ai donc que le chipset bluetooth 4.2 intégré à mon NUC.
J’avais fait des essais avec une clé bluetooth qui trainait à la maison et j’avais exactement le même soucis.
Je vais faire ce que tu préconises et je reviens te dire ça.

1 « J'aime »

@benoit5672 alors j’obtiens ce message:

- bash : erreur de syntaxe près du symbole innatendu << newline >>

Bonjour!

Alors voici les infos du jour…
J’ai encore fait de nombreux essais et pas moyen…jusqu’à 2 téléphones connectés, tout marche parfaitement.
A partir du 3ème, ça finit forcément par une déconnexion définitive de tous les téléphones.
Il me suffira de désactiver les 3e et 4e téléphones pour que les 2 premiers soient à nouveau opérationnels.

Même résultat avec une clé bluetooth.

Voici l’extrait du log en debug, juste après une déconnexion:

[2021-02-27 09:21:45][DEBUG][root](Thread-3) : Get phone information 430
[2021-02-27 09:21:45][DEBUG][root](Thread-4) : Get phone information 426
[2021-02-27 09:21:45][DEBUG][root](Thread-5) : Get phone information 431
[2021-02-27 09:22:10][DEBUG][root](Thread-2) : 428 is absent
[2021-02-27 09:22:10][DEBUG][root](Thread-2) : lastStateDate: 2021-02-27 08:40:40
[2021-02-27 09:22:10][DEBUG][root](Thread-2) : thresholdDate: 2021-02-27 08:41:40
[2021-02-27 09:22:10][DEBUG][root](Thread-2) : datetime.utcnow(): 2021-02-27 08:22:10.684302
[2021-02-27 09:22:10][DEBUG][root](Thread-2) : is datetime.utcnow() > thresholdDate ? False
[2021-02-27 09:22:10][DEBUG][root](Thread-2) : 428 is up to date
[2021-02-27 09:22:10][DEBUG][root](Thread-3) : 430 is absent
[2021-02-27 09:22:10][DEBUG][root](Thread-3) : lastStateDate: 2021-02-27 09:19:58
[2021-02-27 09:22:10][DEBUG][root](Thread-3) : thresholdDate: 2021-02-27 09:20:58
[2021-02-27 09:22:10][DEBUG][root](Thread-3) : datetime.utcnow(): 2021-02-27 08:22:10.704049
[2021-02-27 09:22:10][DEBUG][root](Thread-3) : is datetime.utcnow() > thresholdDate ? False
[2021-02-27 09:22:10][DEBUG][root](Thread-3) : 430 is up to date
[2021-02-27 09:22:10][DEBUG][root](Thread-4) : 426 is absent
[2021-02-27 09:22:10][DEBUG][root](Thread-4) : lastStateDate: 2021-02-27 09:19:57
[2021-02-27 09:22:10][DEBUG][root](Thread-4) : thresholdDate: 2021-02-27 09:20:57
[2021-02-27 09:22:10][DEBUG][root](Thread-4) : datetime.utcnow(): 2021-02-27 08:22:10.711563
[2021-02-27 09:22:10][DEBUG][root](Thread-4) : is datetime.utcnow() > thresholdDate ? False
[2021-02-27 09:22:10][DEBUG][root](Thread-4) : 426 is up to date
[2021-02-27 09:22:10][DEBUG][root](Thread-5) : 431 is absent
[2021-02-27 09:22:10][DEBUG][root](Thread-5) : lastStateDate: 2021-02-26 23:14:41
[2021-02-27 09:22:10][DEBUG][root](Thread-5) : thresholdDate: 2021-02-26 23:15:41
[2021-02-27 09:22:10][DEBUG][root](Thread-5) : datetime.utcnow(): 2021-02-27 08:22:10.719608
[2021-02-27 09:22:10][DEBUG][root](Thread-5) : is datetime.utcnow() > thresholdDate ? True

Je rencontre un problème similaire avec mon nuc, que ce soit avec le bluetooth interne ou bien la clé sena. Je n’avais pas ce problème sur le RPI3+.

1 « J'aime »

Bonsoir,

hier soir, je me suis trompe de commande :scream:

1/ Pour connaitre le device bluetooth:

sudo hcitool dev

2/ Pour connaitre le statut du mobile:

sudo hcitool -i <device> name <mac>
echo $?

Par exemple, pour moi, quand mon mobile n’est pas present, la commande hcitool name ne retourne rien. Si mon mobile est present, alors cette commande retourne le nom de mon mobile (benoit)

benoit@VM-JEEDOM-DEV:~$ sudo hcitool dev
Devices:
	hci0	00:1A:XX:XX:XX:XX

benoit@VM-JEEDOM-DEV:~$ sudo hcitool -i hci0 name BC:A5:XX:XX:XX:XX
Benoit
benoit@VM-JEEDOM-DEV:~$ echo $?
0

benoit@VM-JEEDOM-DEV:~$ sudo hcitool -i hci0 name BC:A5:XX:XX:XX:XX
benoit@VM-JEEDOM-DEV:~$ echo $?
0
benoit@VM-JEEDOM-DEV:~$

je dirai que comme cela fonctionnait bien avec un RPI3+ (ce qui est mon cas aussi), c’est plutôt lie au NUC et a sa gestion des acces concurrent aux resources bluetooth.
Le probleme n’est pas dans le php du plugin, mais dans le demon python qui recupere de facon reguliere l’etat du mobile.

Est ce que vous pourriez recommencer le test avec 4 mobiles et,
1/ Est-ce que quand cela ne fonctionne plus, les commandes (sudo hcitool -i x… suivi de echo $?) fonctionne, et qu’est ce quelle te retourne ?
2/ est-ce que quand cela ne fonctionne plus, vous avez des messages dans ‹ dmesg › ?

Si je vous donne un script python avec plus de trace, seriez-vous en mesure de l’installer a la place de l’ancien script?

PS: je suis en conge, donc, pas toujours tres reactif aux messages.
Benoit

1 « J'aime »

Pour ma part, je confirme que lorsque cela ne fonctionne plus, la commande ne me retourne rien. Lorsque cela fonctionne, le commande me retourne bien le nom du téléphone.

Pour ce qui est du script, je ne sais pas si je saurai faire.

Exactement pareil pour moi.
Pour l’installation du script, mon fils peut m’aider car c’est davantage son secteur que le mien :slight_smile:
Merci Benoit !

Au moins ça permet de voir que nous sommes plusieurs à avoir le même soucis et effectivement, ça semble être lié à l’utilisation du NUC :face_with_raised_eyebrow:

@benoit5672

Alors je viens de faire l’essai sur mon téléphone qui a été déconnecté.
La commande me retourne le nom du téléphone (donc elle le voit bien) et la commande Echo me retourne 0 (qui doit correspondre à l’état dans Jeedom je suppose?)

En image:

2021-02-27 22_02_21-Window

@Xboss06,

Non, la commande « echo $? » Retourne 0 si la commande hcitool c’est bien passée, ou on nombre négatif en cas d’erreur (c’est ça que je voudrais surveiller, via le script ca sera plus facile).
Dans le script python, si la commande hcitool retourne le nom du téléphone alors « value : 1 » signifie que le téléphone est present dans jeedom, et tous les autres cas (même les erreurs) sont traités avec « value : 0 » dans jeedom, donc comme un téléphone absent .
Benoit

1 « J'aime »

Oui ok j’aurais dû regarder plus attentivement ton message précédent où tu as également un retour de cette commande à 0, alors que ton téléphone est bien détecté :+1:

1 « J'aime »

Bonjour @Xboss06 et @dsigmoun,

j’ai modifie le script qui realise le polling regulier des telephones. Le changement est « leger », car j’ai ajoute surtout une gestion des exceptions autour de la commande « hcitool » qui est executee a intervales reguliers. En cas d’exception, le polling des telephones ne s’arretera pas, et un message sera affiche dans le log.

Pour installer ce fichier:
1/ aller dans le repertoire ou ce trouve le fichier python

cd /var/www/html/plugins/phone_detection/resources/phone_detectiond

2/ dans le repertoire, faire une copie de l’ancien fichier, pour revenir facilement en arriere au cas ou

cp phone_detectiond.py phone_detectiond.py.org

3/ toujours dans le repertoire, modifie les droits sur le fichier pour etre sur de pouvoir le mettre a jour:

sudo chmod 777  phone_detectiond.py 

4/ Installer le nouveau fichier (tu peux le transferer via Jeexplorer ou ssh). Attention de le renommer de phone_detectiond.py.txt en phone_detectiond.py

Par exemple pour ssh

scp phone_detectiond.py.txt benoit@devmachine:/var/www/html/plugins/phone_detection/resources/phone_detectiond/phone_detectiond.py[phone_detectiond.py.txt|attachment](upload://5qRb3CGVwp1vXTSEcE4f0P9qqk1.txt) (15,4 Ko) 

En cas de mauvaise manip « desastreuse », tu peux re-installer le plugin depuis le market, tu retrouveras le fichier d’origine

Tenais moi au courant, si ca fonctionne bien, je remonterai les modifications dans la branche master.
Benoit

2 « J'aime »

Salut @benoit5672 et merci beaucoup de t’occuper de notre cas désespéré :smiley:
J’ai tout fait jusqu’à l’étape pour télécharger ton ficher…je n’y arrive pas :thinking: je dois rater un truc.

Ou est ce qu’on le trouve le script .txt ?

Bonne question, je ne le vois pas apparaître non plus dans mon post :frowning:

Je retente: phone_detectiond.py.txt (15,4 Ko)

N’oubliez pas de redémarrer le démon en allant dans le configuration du plugin puis démon → redémarrer.

Benoit

1 « J'aime »

Haaaaa super, là c’est bon Benoît :ok_hand:
Merci encore, je te tiens au courant :+1: