Jump to content

WheelDash - App Garmin


Blkfri

Recommended Posts

Merci @deadubed, super initiative.

Par contre, je ne sais pas comment tu vas t'y prendre , l'idéal serait d'implémenter la roue dans une nouvelle activité  (comme l'activité  marche , l'activité  course et après  l'activité  roue 😉 ) et non dans un programme séparé. 

Car si tu fais cela dans un programme séparé,  ça voudra dire qu'on ne pourra plus  suivre une trace pre enregistrée par exemple. Et plus accès à la cartographie de la garmin pendant tout le temps d'exécution  du programme.

Car par défaut,  une garmin permet déjà  de faire tout cela:

Ce qui limiterait l'intérêt.  A moins que tu ai prévu une autre option.

En tout cas, je serai heureux d'être  Bêta................................testeur 😉.

Nb: j'ai déjà exécuté plusieurs  programmes sur ma montre et je n'ai pas l'impression que les programmes sont capable de travailler en tâche de fond sur une garmin.

Par contre par l'intermédiaire  des cadrans de montres  j'ai l'impression  qu'il y a d'avantages de possibilités. 

Edited by elric
Link to comment
Share on other sites

A dire vrai je n'ai pas encore la vision exacte de ce qui est possible.

Pour ce qui suit, je pars du principe que mes interlocuteurs sur ce sujet ont un minimum de connaissances en génie logiciel.

En GRAS les infos principales pour ceux qui parlent surtout le langage naturel.

Dans l'idéal je souhaite proposer une librairie ARCHITECTURÉE qui permette au client (ici l'app de la montre) de communiquer avec un ensemble de roues de manière transparente (avec e.g un factory X strategy et probablement des couches d'adapter). En d'autres termes ça reviendrait à proposer une librairie dont le seul objectif est d'encapsuler les communications avec les roues à travers une interface unique et derrière c'est l'app qui gère les données qu'elle envoie/reçoit comme elle l'entend. La délégation ne se fait donc pas sur le fond mais sur la forme.


Selon les limitations / contraintes du protocole BLE, il est possible en effet que ce soit faisable ou pas, impliquant peut-être des contournements architecturaux pour e.g assurer que c'est bien l'app qui réifie les instances de communication pour garder le contrôle dessus et éviter les timeout ou échecs de handshake.
 

Edited by deadubed
  • Like 1
Link to comment
Share on other sites

Il y a 3 heures, elric a dit :

Par contre, je ne sais pas comment tu vas t'y prendre , l'idéal serait d'implémenter la roue dans une nouvelle activité  (comme l'activité  marche , l'activité  course et après  l'activité  roue 😉 ) et non dans un programme séparé. 

Car si tu fais cela dans un programme séparé,  ça voudra dire qu'on ne pourra plus  suivre une trace pre enregistrée par exemple. Et plus accès à la cartographie de la garmin pendant tout le temps d'exécution  du programme.

C'est précisément ce que j'ai fait (mais pour le moment uniquement pour Begode), je n'ai peut être pas été assez clair dans mon explication 😉

  • Like 1
Link to comment
Share on other sites

Il y a 3 heures, deadubed a dit :

Selon les limitations / contraintes du protocole BLE, il est possible en effet que ce soit faisable ou pas, impliquant peut-être des contournements architecturaux pour e.g assurer que c'est bien l'app qui réifie les instances de communication pour garder le contrôle dessus et éviter les timeout ou échecs de handshake.

J'espère juste qu'il n'y a pas de trame de plus de 20 bytes dans les standards de com des différentes roues, parceque Garmin tronque les trames sinon (enfin si le "bug" est toujours d'actualité, cf : https://forums.garmin.com/developer/connect-iq/i/bug-reports/messages-from-btle-gatt-server-truncated-at-20-bytes?CommentId=ea4ee967-7c1f-4cbe-9b53-936f7b883ea5). Dans mon cas ça n'a pas posé problème parce-que Begode utilise (utilisait?) un  MTU de 20.

Link to comment
Share on other sites

Il y a 17 heures, Blkfri a dit :

J'espère juste qu'il n'y a pas de trame de plus de 20 bytes dans les standards de com des différentes roues, parceque Garmin tronque les trames sinon (enfin si le "bug" est toujours d'actualité, cf : https://forums.garmin.com/developer/connect-iq/i/bug-reports/messages-from-btle-gatt-server-truncated-at-20-bytes?CommentId=ea4ee967-7c1f-4cbe-9b53-936f7b883ea5). Dans mon cas ça n'a pas posé problème parce-que Begode utilise (utilisait?) un  MTU de 20.

C'est très Meh cette affaire.

Si pour toutes les roues les infos de base : voltage, vitesse, temp rentrent dans les 20 premiers octets, alors on s'en contentera. Vaut mieux du minimal fonctionnel que vouloir tout faire mais mal. Pour le reste, à voir le code, sans connaissance préalable du protocole bluetooth. C'est incompréhensible (wheelLog tout autant que le companion garmin d'origine et même que ton app (en parciulier le profile manager 🫣) sans y passer vraiment du temps à tête reposée, et là j'ai pas le temps tout de suite.

Link to comment
Share on other sites

La taille du MTU ne devrait pas être un problème. le MTU est négocié entre les 2 équipements lors de l'établissement de la communication, si Garmin limite son MTU à 20, l'équipement distant enverra plusieurs paquets de 20 octets pour transmettre toutes les données.

Link to comment
Share on other sites

il y a 47 minutes, Cobalt a dit :

La taille du MTU ne devrait pas être un problème. le MTU est négocié entre les 2 équipements lors de l'établissement de la communication, si Garmin limite son MTU à 20, l'équipement distant enverra plusieurs paquets de 20 octets pour transmettre toutes les données.

Ce n'est pas tout a fait clair, visiblement il y a quand même un bug qui limite les données reçues aux 20 premiers bytes, c'est à vérifier. J'ai regardé très rapidement et sauf erreur de ma part pour les roues Kingsong ça devrait être OK (a priori pas plus de 20 bytes utilisés), par contre inmotion c'est une autre histoire... 

Link to comment
Share on other sites

il y a une heure, Cobalt a dit :

La taille du MTU ne devrait pas être un problème. le MTU est négocié entre les 2 équipements lors de l'établissement de la communication, si Garmin limite son MTU à 20, l'équipement distant enverra plusieurs paquets de 20 octets pour transmettre toutes les données.

J'ai pas pensé en effet que lors du handshake initial les 2 parties puissent définir le cadre de communication mais ça ferait sens.

Si qqn a un cours / tuto BLE accessible (i.e pas une doc technique ou du raw code commenté. etc) ça pourrait être cool, j'ai rien trouvé d'utilisable immédiatement et lire les cahiers de specs franchement c'est en dernier recours.

Link to comment
Share on other sites

il y a 30 minutes, deadubed a dit :

J'ai pas pensé en effet que lors du handshake initial les 2 parties puissent définir le cadre de communication mais ça ferait sens.

Si qqn a un cours / tuto BLE accessible (i.e pas une doc technique ou du raw code commenté. etc) ça pourrait être cool, j'ai rien trouvé d'utilisable immédiatement et lire les cahiers de specs franchement c'est en dernier recours.

J'avais trouvé ça quand j'ai commencé à regarder, c'est propre au dev android mais néanmoins ça explique la commincation BLE

https://punchthrough.com/android-ble-guide/

Sinon dans l'API Garmin, aucune trace de méthode pour négocier un MTU... 

Link to comment
Share on other sites

Lien intéressant, mais du coup j'ai noté "If our app performs a write that exceeds the connection’s ATT MTU, the write will fail" il n'est donc pas garanti que l'application puisse transmettre ou recevoir 40 octects par exemple à l'aide de 2 paquets de 20 octets

Link to comment
Share on other sites

Les tests en extérieur sont plutôt positif j'ai du revoir ma méthode de calcul de vitesse moyenne à partir des données de la roue mais c'est complètement fonctionnel.

À voir pour implémenter d'autres valeurs. Je ne suis pas bien sûr des valeurs que je sors pour le "phase current", je ne sais pas si c'est le courant d'une phase du moteur ou la somme des courants des trois phases (ou encore autre chose  🤔). Si quelqu'un peut m'éclairer là dessus je suis preneur

Screenshot_20230601-232640_Connect.thumb.png.0fdc1b06e8a35549b52e319cfb1cb1ce.png

Screenshot_20230601-232750_Connect.thumb.png.1f1be7d4c1869b1f38013d710504ef77.pngScreenshot_20230601-232823_Connect.thumb.png.69a0ff5ebb7ba1f74f63edd43df24b74.png

Edited by Blkfri
Link to comment
Share on other sites

  • 3 weeks later...
J'ai envie de communiquer un peu sur mon app donc voici donc les nouvelles fraîches ! Vous m'excuserez (enfin c'est vous qui voyez) mais j'ai eu un peu eu la flemme de traduire la version anglaise que j'avais rédigée pour un post sur electric unicycle forum, c'est donc chatgpt qui s'en charge (on frole l'irrespect), d'où le style d'écriture un peu différent :)
 
J'ai publié une nouvelle mise à jour pour wheelDash, comprenant différentes fonctionnalités de personnalisation et une réorganisation par groupe des paramètres de l'application via Garmin IQ . Si cela pose trop de problèmes je reviendrais à une version non organisée, car Garmin Connect IQ sur le téléphone peut être un peu récalcitrant et lent. Pour être sûr que les paramètres sont correctement configurés et sauvegardés, suivez ces étapes : configurez tout en une seule fois, appuyez sur Enregistrer, fermez complètement l'application (pas seulement la fermer), redémarrez-la et vérifiez si les paramètres sont configurés comme vous le souhaitez.
 
Voici les principales mises à jour :
 
Paramètres de la roue :
 
- Action lorsque le bouton OK est pressé (précédemment implémentée) : Vous pouvez maintenant définir une action pour le bouton OK. Actuellement, les deux options disponibles sont "cycle des modes d'éclairage" ou "aucune". Si vous avez des suggestions pour d'autres actions utiles, n'hésitez pas à les partager.
 
- Ajout d'un facteur de correction de vitesse : Si vous savez que la vitesse indiquée par votre roue est incorrecte ou si vous avez apporté des modifications nécessitant une correction de vitesse, vous pouvez désormais utiliser ce facteur pour corriger la vitesse affichée.
 
Paramètres de l'interface utilisateur de l'application :
 
- Taux de rafraîchissement : Vous pouvez désormais personnaliser la durée en millisecondes entre deux rafraîchissements d'écran. Cela détermine à quelle fréquence les valeurs affichées seront mises à jour. Un taux de rafraîchissement plus lent (valeur plus grande) devrait entraîner une utilisation moindre de la batterie de la montre (confirmation nécessaire).
 
Paramètres des alarmes :
 
- Vous pouvez désormais définir une alarme PWM et/ou une alarme de vitesse en définissant un seuil de déclenchement pour chaque alarme. Mettre le seuil à 0 désactivera l'alarme.
 
Activités :
 
- Ajout de l'enregistrement automatique des activités : L'application commencera désormais automatiquement l'enregistrement d'une activité lorsque la roue est connectée et la sauvegardera à la fermeture de l'application.
- Ajout de la sauvegarde automatique des activités : Cette fonctionnalité permet de sauvegarder automatiquement l'activité à la fermeture (non nécessaire si l'enregistrement automatique est activé). Cependant, vous devez toujours démarrer manuellement l'enregistrement de l'activité.
- Même avec ces fonctionnalités activées, vous pouvez toujours démarrer/arrêter manuellement l'activité en accédant à la vue d'activité (glissez vers le haut).
 
Informations actuelles sur la balade :
 
- Vous pouvez désormais choisir les statistiques de la balade qui seront affichées dans la partie inférieure de l'écran. Si vous en sélectionnez plusieurs, chaque élément sélectionné sera affiché pendant 2 secondes en boucle. Actuellement, il y a 3 statistiques disponibles : vitesse moyenne en mouvement (lorsque vous vous déplacez à plus de 3 km/h), vitesse maximale et utilisation de la batterie de la montre (en %/heure). N'hésitez pas à suggérer ou demander d'autres statistiques de balade.
 
Maintenant que ça prends forme, je commence à songer à aller vers le support d'autres marques. La trajectoire à laquelle je pense c'est d'aller d'abord vers un support de Leaperkim car c'est le plus proche de Begode d'un point de vue mode de communication, puis Kingsong et peut-être si j'ai le courage Ninebot et Inmotion (ce dernier ça a l'air d'être un peu plus complexe).
Le processus sera forcément compliqué car même si j'aimerai posséder une roue de chaque marque ça n'est pas possible et difficilement justifiable pour faire du developpement (et même si j'avais les finances pour je finirai sûrement avec une série de begode 🔥😁). Bref je ferais signe le temps venu mais j'aurais bien besoin de beta-testeurs si il y a des interessés !
Edited by Blkfri
  • Upvote 1
Link to comment
Share on other sites

  • 2 weeks later...

Hello à tous, je continue un peu mon monologue ! :)

Je travaille à étendre la compatibilité de wheelDash, j'ai commencé par écrire du code pour les roues Veteran. Si l'un d'entre vous a une montre Garrmin qui supporte le protocole BLE veut bien jouer les beta testeur je suis preneur !

Link to comment
Share on other sites

  • 2 weeks later...

Hello à ceux qui lisent ce topic !

Je suis à la recherche de bêta testeurs possédant des roues Veteran ou Kingsong.

Toutes les montres Garmin qui ont la fonctionnalité bluetooth sont à priori compatibles ! Contactez moi en mp ou ici !

Link to comment
Share on other sites

il y a une heure, Blkfri a dit :

Hello à ceux qui lisent ce topic !

Je suis à la recherche de bêta testeurs possédant des roues Veteran ou Kingsong.

Toutes les montres Garmin qui ont la fonctionnalité bluetooth sont à priori compatibles ! Contactez moi en mp ou ici !

Salut, pour pas que tu restes dans le monologue je possède une Vétéran OG....mais la montre Garmin c'est trop cher, ma Lemfo T me suffit bien, sorry 😉

  • Haha 1
Link to comment
Share on other sites

il y a 25 minutes, Marco73 a dit :

Salut, pour pas que tu restes dans le monologue je possède une Vétéran OG....mais la montre Garmin c'est trop cher, ma Lemfo T me suffit bien, sorry 😉

Oui je sais je suis sur un marché de niche 😁.  Merci quand même ! Après la Lemfo c'est de l'usage spécifique : c'est sympa pour la roue mais en dehors de ça c'est pas franchement la classe (se balader tous les jours avec une mini tablette au poignet mouaif ...).

Link to comment
Share on other sites

Hello, j’ai loupé ce magnifique sujet @Blkfri 😁

 

Je ne pige rien avec vos échanges abscons de dev mais je suis très intéressé par l’initiative. 
 

J’ai une EPIX Gen 2 Pro pour le moment (j’ai eu un paquet de Fenix 4,5,6 avant puis l’Epix Gen 2 et j’ai upgradé il y a peu pour l’Epix pro). 
 

J’ai une Leaperkim/Vétéran Patton et une Kingsong S22. 
 

L’idée de l’app autonome est séduisante, dispo dans connect IQ c’est top pour pas avoir à bricoler directement dans les fichiers de la dernière Garmin à 1000 balles. 

Que l’app enregistre des activités c’est top également. 
 

Le truc qui m’ennuie c’est que ce soit une app et pas une série de « data field » à intégrer dans une app (Vélo par exemple) de Garmin dans laquelle tu as tous tes paramètres d’activité habituels Garmin et surtout le guidage turn-by-turn à partir du tracé gpx de ta rando. 
A moins que cela soit dispo et que je n’ai pas pigé. 
 

Bref à dispo si tu cherches un testeur avec EPIX Pro, S22 et Patton. 

Link to comment
Share on other sites

  • Blkfri changed the title to WheelDash - App Garmin

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

arrow_upward