Ajouter le bluetooth à Gladys 4

Ok, j’ai fais des tests, au final cette solution est une bonne première solution @AlexTrovato ! C’est sur ça ne catchera pas tout, mais au moins pour les problèmes de style “incompatibilité hardware”, ça fait le boulot.

J’ai mis juste une remarque sur une migration que tu as supprimé, je ne suis pas sur qu’on veuille ça dans cette PR, mais sinon je suis d’accord pour merge.

Par contre, il faudra trouver un moyen de réactiver les intégrations dans l’UI, parce que là sinon elles sont “brickée” à vie.

Pour info j’ai tenter de lancer Gladys hors Docker, même erreur

Edit: Problème résolu avec un dongle branché

Sur l’hôte

 sudo rfkill unblock all
 sudo hciconfig hci0 up

Avec ça Gladys se lance ( y’ un truc qui va pas mais au moins ça tourne )

<info> index.js:20 (Object.start) Starting Open Weather service
<info> index.js:16 (Object.start) Starting zwave service
<info> index.js:15 (Object.start) Starting Bluetooth service
<info> index.js:13 (Object.start) Starting usb service
<info> index.js:19 (Object.start) Starting telegram service
<error> bluetooth.connectDevices.js:37 () Could not start scanning, state is unknown (not poweredOn)
<error> bluetooth.connectDevices.js:37 () Could not start scanning, state is unknown (not poweredOn)
<error> bluetooth.connectDevices.js:37 () Could not start scanning, state is unknown (not poweredOn)
<info> connect.js:38 (MqttClient.<anonymous>) Connected to MQTT server mqtt://127.0.0.1:1883
<info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic stat/+/+
<info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic tele/+/+
<info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic gladys/master/#
<info> index.js:63 (Server.<anonymous>) Server listening on port 80

Puis lors d'un scan....

<error> bluetooth.connectDevices.js:37 () Bluetooth: peripheral node_id not found
<error> bluetooth.connectDevices.js:37 () Bluetooth: peripheral 001788286ece not found
<error> bluetooth.connectDevices.js:37 () Bluetooth: peripheral bridge not found
<error> bluetooth.connectDevices.js:37 () Bluetooth: Peripheral undefined not connectable
<error> bluetooth.connectDevices.js:37 () Bluetooth: peripheral 001788286ece not found

en cli sur l’hôte c’est ok
image

Problème résolu pour toi, mais ce n’est pas normal que ce crash soit arrivé. Cette issue reste une issue critique pour moi.

La solution de @AlexTrovato est bien pour prévenir des crash inattendu sur certains services nouveaux, mais ce bug reste là, brancher un dongle n’est pas une solution.

@AlexTrovato Tu sais ce qui pourrait résoudre ce bug ? C’est du côté de Noble à 100% ou c’est une issue qu’on pourrait résoudre de notre côté ? ( quitte à ne pas lancer le service bluetooth dans certains cas, la solution peut être de tout simplement désactiver le service bluetooth dans certains cas – sans restart de Gladys, car un reboot peut prendre plusieurs minutes sur un Pi, ce n’est pas une solution. )

Juste au niveau de la roadmap, j’ai fini toutes les tâches qui restaient avant la RC, et pour moi il me reste uniquement des todos documentation/site/marketing pour le lancement de la RC.

Donc toute cette semaine je vais travailler sur le site/la doc/contacter les bloggeurs, et ensuite dès que tout est prêt je lancerais Gladys v4.

La stabilité est du coup assez importante vu qu’on va avoir un afflux de nouveaux utilisateurs dans les prochaines semaines :smiley:

J’ai jamais dit le contraire :confused: , j’aurai dû écrire “j’ai résolu mon problème” . Les issues github reste ouverte

1 Like

Pour le souci, j’ai créé un ticket sur noble, je pense qu’en jouant avec de la config noble, on peut peut-être éviter le problème, mais le code est assez complexe et très spécifique à l’architecture hôte.
J’attends des réponses sur le github noble.

Je comprends !

Et tu sais si il y aurait moyen, hors Noble, de détecter la présence ou non de bluetooth sur l’hôte, et de désactiver le service si le Bluetooth n’est pas présent ?

@VonOx J’ai trouvé la PR “graal” pour nous sur le repo de watchtower, qui résoudra même les crashs les plus graves !

1 Like

Ah yes c’est tout frais en plus , je vais mettre un pouce en l’air pour que ça merge vite ^^

1 Like

J’ai fait 5 recherches de matériels bluetooth :

  • le casque JBL apparaît autant de fois que j’ai fait de recherches, avec des adresses différentes :
    bluetooth:5fcf91887a7e bluetooth:7592c20fbffa bluetooth:72274a02287e bluetooth:4534f2918e7b bluetooth:70d66dcd52a0
  • mon robot tonseuse Automower apparaît avec son nom.
  • 5 autres appareils sans nom.
    Mon téléphone n’est pas détecté. Son adresse bluetooth n’est pas dans la liste, et inversement, il ne détecte pas Gladys.
    Mon PC non plus.
    Mon porte clé nut mini non plus

Beau travail !

Pour ma part les recherches bluetooth avec le nom :
[TV] Samsung Q80 Series (75)
Nut

J’ai 4 appareils détectés en plus mais je ne sais pas à quoi ils correspondent (surement téléphone, enceinte connectée …)

C’est quoi les cas d’utilisation du service déjà prévus ? A prévoir ?
Par ex, je n’ai pas l’impression que je peux tester la présence du porte clé nut

Non en effet, la présence d’un device n’est pas géré, la présence d’un utilisateur via un device non plus… c’est assez limité pour le moment : niveau de batterie et température si thermomètre… mais ça permet surtout d’ouvrir la voie aux autres services plus spécifiques.

2 Likes

Oups j’ai loupé celui-là. Non je ne sais pas, pas poussé l’investigation sur ce point. Ce qui ne m’empêche pas de le faire. Je vais tout de meme surveiller les évolutions sur la lib et voir intégrer nouvelles features et fixes.

Je vous invite à créer un topic dédié dans la catégorie dev en cas de besoin. Je clos cette feature request pour que les jetons de votes soit libérés.

1 Like

@pierre-gilles @Albenss

Je reprend le sujet du bug Bluetooth (tracé dans un topic “Bluetooth: Xiaomi”).

Après quelques échanges, le problème venait d’une image docker custom d’ayant pas le bon paramètre --network=host.

Donc problème résolu.

A savoir que cette information est inscrite dans le README (dans le service Bluetooth).

1 Like

Ok top bon à savoir !

Est-ce que ça vaudrait pas le coup de mettre un bandeau warning dans le service Bluetooth si ce n’est pas le cas ? (le container n’est pas en NetworkMode=host?)

Pas bête, mais peut-etre en low-effort. Mais on peut garder ça dans la backlog :wink:

1 Like

Ou désactiver le service si docker et si network n’est pas en mode host

ça risque de ralentir lourdement le démarrage de l’appli…

Mm c’est vrai

Une première étape est de communiquer au moins dans l’UI, là actuellement l’utilisateur est un peu perdu.