René's URL Explorer Experiment


Title: Port Bodytone GATT machine type detection by michaelw · Pull Request #70 · dudanov/python-pyftms · GitHub

Open Graph Title: Port Bodytone GATT machine type detection by michaelw · Pull Request #70 · dudanov/python-pyftms

X Title: Port Bodytone GATT machine type detection by michaelw · Pull Request #70 · dudanov/python-pyftms

Description: Bluetooth Fitness Machine Service async client library. - Port Bodytone GATT machine type detection by michaelw · Pull Request #70 · dudanov/python-pyftms

Open Graph Description: Summary port the GATT data-characteristic machine type detection idea from Add Bodytone DU30-B1D8 Fitness Bike #67 expose a reusable get_machine_type_from_gatt(...) helper reuse the helper from th...

X Description: Summary port the GATT data-characteristic machine type detection idea from Add Bodytone DU30-B1D8 Fitness Bike #67 expose a reusable get_machine_type_from_gatt(...) helper reuse the helper from th...

Opengraph URL: https://github.com/dudanov/python-pyftms/pull/70

X: @github

direct link

Domain: github.com

route-pattern/_view_fragments/voltron/pull_requests/show/:user_id/:repository/:id/pull_request_layout(.:format)
route-controllervoltron_pull_requests_fragments
route-actionpull_request_layout
fetch-noncev2:0a492eb4-3bc1-3918-ce9e-c10acfd0db24
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idC678:3CB80A:106E5:14DAA:6A4C152F
html-safe-nonceb4465cdd92a78cdcb8eaa53c8f2fc9f2fd36b5f848c90dc26e105ef725de2657
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDNjc4OjNDQjgwQToxMDZFNToxNERBQTo2QTRDMTUyRiIsInZpc2l0b3JfaWQiOiIzODY1MzI5MDM2MTI2MDY1OTY3IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac399fe5f8a9e093e97ffaba25e9b79bbf3284d20ef9946d5ccab23123bc1e077f
hovercard-subject-tagpull_request:3900238178
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/pull_requests_fragments/pull_request_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/voltron/pull_requests/show/dudanov/python-pyftms/70/pull_request_layout
twitter:imagehttps://opengraph.githubassets.com/2804eac6e7dafc6db28499656df19513e5144c372b58572eeb76c6f3c85d0ce3/dudanov/python-pyftms/pull/70
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/2804eac6e7dafc6db28499656df19513e5144c372b58572eeb76c6f3c85d0ce3/dudanov/python-pyftms/pull/70
og:image:altSummary port the GATT data-characteristic machine type detection idea from Add Bodytone DU30-B1D8 Fitness Bike #67 expose a reusable get_machine_type_from_gatt(...) helper reuse the helper from th...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamemichaelw
hostnamegithub.com
expected-hostnamegithub.com
None0ccfc9e5281bfe12e38a4d632dc422843e4d5b6757917f7efda2f6567d72fea9
turbo-cache-controlno-cache
go-importgithub.com/dudanov/python-pyftms git https://github.com/dudanov/python-pyftms.git
octolytics-dimension-user_id10439739
octolytics-dimension-user_logindudanov
octolytics-dimension-repository_id795517748
octolytics-dimension-repository_nwodudanov/python-pyftms
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id795517748
octolytics-dimension-repository_network_root_nwodudanov/python-pyftms
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release17b2c8bc78100cad23202aad2074e77ead6bd1d6
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/dudanov/python-pyftms/pull/70#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdudanov%2Fpython-pyftms%2Fpull%2F70
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdudanov%2Fpython-pyftms%2Fpull%2F70
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fpull_requests_fragments%2Fpull_request_layout&source=header-repo&source_repo=dudanov%2Fpython-pyftms
Reloadhttps://github.com/dudanov/python-pyftms/pull/70
Reloadhttps://github.com/dudanov/python-pyftms/pull/70
Reloadhttps://github.com/dudanov/python-pyftms/pull/70
dudanov https://github.com/dudanov
python-pyftmshttps://github.com/dudanov/python-pyftms
Notifications https://github.com/login?return_to=%2Fdudanov%2Fpython-pyftms
Fork 17 https://github.com/login?return_to=%2Fdudanov%2Fpython-pyftms
Star 35 https://github.com/login?return_to=%2Fdudanov%2Fpython-pyftms
Code https://github.com/dudanov/python-pyftms
Issues 6 https://github.com/dudanov/python-pyftms/issues
Pull requests 12 https://github.com/dudanov/python-pyftms/pulls
Actions https://github.com/dudanov/python-pyftms/actions
Projects https://github.com/dudanov/python-pyftms/projects
Security and quality 0 https://github.com/dudanov/python-pyftms/security
Insights https://github.com/dudanov/python-pyftms/pulse
Code https://github.com/dudanov/python-pyftms
Issues https://github.com/dudanov/python-pyftms/issues
Pull requests https://github.com/dudanov/python-pyftms/pulls
Actions https://github.com/dudanov/python-pyftms/actions
Projects https://github.com/dudanov/python-pyftms/projects
Security and quality https://github.com/dudanov/python-pyftms/security
Insights https://github.com/dudanov/python-pyftms/pulse
michaelwhttps://github.com/michaelw
dudanov:mainhttps://github.com/dudanov/python-pyftms/tree/main
michaelw:mw/bodytone-gatt-machine-typehttps://github.com/michaelw/python-pyftms/tree/mw/bodytone-gatt-machine-type
Conversationhttps://github.com/dudanov/python-pyftms/pull/70
Commits20 (20)https://github.com/dudanov/python-pyftms/pull/70/commits
Checkshttps://github.com/dudanov/python-pyftms/pull/70/checks
Files changedhttps://github.com/dudanov/python-pyftms/pull/70/files
Port Bodytone GATT machine type detectionhttps://github.com/dudanov/python-pyftms/pull/70#top
michaelwhttps://github.com/michaelw
dudanov:mainhttps://github.com/dudanov/python-pyftms/tree/main
michaelw:mw/bodytone-gatt-machine-typehttps://github.com/michaelw/python-pyftms/tree/mw/bodytone-gatt-machine-type
https://github.com/michaelw
michaelwhttps://github.com/michaelw
Jun 19, 2026https://github.com/dudanov/python-pyftms/pull/70#issue-4702657424
Please reload this pagehttps://github.com/dudanov/python-pyftms/pull/70
Add Bodytone DU30-B1D8 Fitness Bike #67https://github.com/dudanov/python-pyftms/pull/67
#67https://github.com/dudanov/python-pyftms/pull/67
Please reload this pagehttps://github.com/dudanov/python-pyftms/pull/70
michaelwhttps://github.com/michaelw
March 23, 2026 19:29https://github.com/dudanov/python-pyftms/pull/70#commits-pushed-88e94ce
https://github.com/michaelw
Update Python version requirements to support 3.14https://github.com/dudanov/python-pyftms/pull/70/commits/88e94ce30cb23b56ecb05a1b3f59aa922fafe323
88e94cehttps://github.com/dudanov/python-pyftms/pull/70/commits/88e94ce30cb23b56ecb05a1b3f59aa922fafe323
https://github.com/michaelw
Implement TrainingStatusFlags and TrainingStatusCode handling for unk…https://github.com/dudanov/python-pyftms/pull/70/commits/bf047f5b7c7354f785ae60761a49b69d7f29212f
bf047f5https://github.com/dudanov/python-pyftms/pull/70/commits/bf047f5b7c7354f785ae60761a49b69d7f29212f
https://github.com/michaelw
Handle repeated disconnect callbacks without _cli errorshttps://github.com/dudanov/python-pyftms/pull/70/commits/d7243c5c7c6fadc326d509ac114f60eb56e90616
d7243c5https://github.com/dudanov/python-pyftms/pull/70/commits/d7243c5c7c6fadc326d509ac114f60eb56e90616
https://github.com/michaelw
Handle extended training status stringshttps://github.com/dudanov/python-pyftms/pull/70/commits/77c875b6b9c973e1892857d2114ca3cda4e04efd
77c875bhttps://github.com/dudanov/python-pyftms/pull/70/commits/77c875b6b9c973e1892857d2114ca3cda4e04efd
https://github.com/michaelw
Merge branch 'mw/kickr-core-v2' into mw/mainhttps://github.com/dudanov/python-pyftms/pull/70/commits/f3fde41f58979dbeb7b268e0f963961df16dd6c2
f3fde41https://github.com/dudanov/python-pyftms/pull/70/commits/f3fde41f58979dbeb7b268e0f963961df16dd6c2
https://github.com/michaelw
Merge branch 'mw/extended-status-strings' into mw/mainhttps://github.com/dudanov/python-pyftms/pull/70/commits/82054a980e3e928df33c15bc558494722c1b8e39
82054a9https://github.com/dudanov/python-pyftms/pull/70/commits/82054a980e3e928df33c15bc558494722c1b8e39
https://github.com/michaelw
Prepare fork release v0.4.15+mw.1https://github.com/dudanov/python-pyftms/pull/70/commits/514eae67213d41b924f6898bda6068aa9d466ce2
514eae6https://github.com/dudanov/python-pyftms/pull/70/commits/514eae67213d41b924f6898bda6068aa9d466ce2
https://github.com/michaelw
Preserve real nonzero-to-zero realtime updateshttps://github.com/dudanov/python-pyftms/pull/70/commits/06270d31115c3a345aba456e1f4698946eadae52
06270d3https://github.com/dudanov/python-pyftms/pull/70/commits/06270d31115c3a345aba456e1f4698946eadae52
https://github.com/michaelw
Merge branch 'mw/zero-value-realtime-updates' into mw/mainhttps://github.com/dudanov/python-pyftms/pull/70/commits/116e8fc972a58bf69901a80f2dd85998701a28bb
116e8fchttps://github.com/dudanov/python-pyftms/pull/70/commits/116e8fc972a58bf69901a80f2dd85998701a28bb
https://github.com/michaelw
Prepare fork release v0.4.15+mw.2https://github.com/dudanov/python-pyftms/pull/70/commits/10231e2f44a916da57b178b674a3d67eb36bc6f1
10231e2https://github.com/dudanov/python-pyftms/pull/70/commits/10231e2f44a916da57b178b674a3d67eb36bc6f1
https://github.com/mhamzahkhan
https://github.com/michaelw
feat: Support UUID-only FTMS devices with data-only fallback and post…https://github.com/dudanov/python-pyftms/pull/70/commits/9c4189e1ad06de8341992aa30167a5135a66e70a
9c4189ehttps://github.com/dudanov/python-pyftms/pull/70/commits/9c4189e1ad06de8341992aa30167a5135a66e70a
https://github.com/michaelw
Prepare fork release v0.4.15+mw.3https://github.com/dudanov/python-pyftms/pull/70/commits/d6639118479c314d88594b34b94506983150602f
d663911https://github.com/dudanov/python-pyftms/pull/70/commits/d6639118479c314d88594b34b94506983150602f
https://github.com/mhamzahkhan
https://github.com/michaelw
feat: Support UUID-only FTMS devices with data-only fallback and post…https://github.com/dudanov/python-pyftms/pull/70/commits/e91e8d3c5e0ee3d2f16f1f630804795d11d8764a
e91e8d3https://github.com/dudanov/python-pyftms/pull/70/commits/e91e8d3c5e0ee3d2f16f1f630804795d11d8764a
https://github.com/michaelw
Expose FTMS advertisement machine type detectionhttps://github.com/dudanov/python-pyftms/pull/70/commits/c9de1ee480d91211129e06d5dc9d1d9085a714d5
c9de1eehttps://github.com/dudanov/python-pyftms/pull/70/commits/c9de1ee480d91211129e06d5dc9d1d9085a714d5
https://github.com/michaelw
Merge branch 'mw/uuid-only-ftms-fallback' into mw/mainhttps://github.com/dudanov/python-pyftms/pull/70/commits/dd75047f3f43d4824a90306f3cae94deb2a880c6
dd75047https://github.com/dudanov/python-pyftms/pull/70/commits/dd75047f3f43d4824a90306f3cae94deb2a880c6
https://github.com/michaelw
Prepare fork release v0.4.15+mw.4https://github.com/dudanov/python-pyftms/pull/70/commits/4240857f19367fb10eb49727b79ccb6729461fa3
4240857https://github.com/dudanov/python-pyftms/pull/70/commits/4240857f19367fb10eb49727b79ccb6729461fa3
Snapshot FTMS callback state before diffinghttps://github.com/dudanov/python-pyftms/pull/70/commits/16cd41dbb6b2823a9458564e9614dec96a54d00f
16cd41dhttps://github.com/dudanov/python-pyftms/pull/70/commits/16cd41dbb6b2823a9458564e9614dec96a54d00f
Merge branch 'mw/pyftms-concurrency-snapshots' into mw/mainhttps://github.com/dudanov/python-pyftms/pull/70/commits/9120d14ef1081c068d3a4e0a9dff565bd791d85d
9120d14https://github.com/dudanov/python-pyftms/pull/70/commits/9120d14ef1081c068d3a4e0a9dff565bd791d85d
Prepare fork release v0.4.15+mw.5https://github.com/dudanov/python-pyftms/pull/70/commits/54e1b88cfb07c0cefbe2a5e23eae5b7b426da450
54e1b88https://github.com/dudanov/python-pyftms/pull/70/commits/54e1b88cfb07c0cefbe2a5e23eae5b7b426da450
Port Bodytone GATT machine type detectionhttps://github.com/dudanov/python-pyftms/pull/70/commits/b30cd4b0da6b2e708a16b42744e66d3a2fe76a6c
b30cd4bhttps://github.com/dudanov/python-pyftms/pull/70/commits/b30cd4b0da6b2e708a16b42744e66d3a2fe76a6c
https://github.com/michaelw
michaelwhttps://github.com/michaelw
Jun 19, 2026 https://github.com/dudanov/python-pyftms/pull/70#ref-pullrequest-4471128157
Add Bodytone DU30-B1D8 Fitness Bike #67 https://github.com/dudanov/python-pyftms/pull/67
https://github.co/hiddenchars
https://github.com/dudanov/python-pyftms/pull/{{ revealButtonHref }}
Sign up for freehttps://github.com/join?source=comment-repo
Sign in to commenthttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdudanov%2Fpython-pyftms%2Fpull%2F70
Please reload this pagehttps://github.com/dudanov/python-pyftms/pull/70
https://github.com/michaelw
https://github.com/mhamzahkhan
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.