首页 > 其他分享 >Halo 正式开源: 使用可穿戴设备进行开源健康追踪

Halo 正式开源: 使用可穿戴设备进行开源健康追踪

时间:2024-11-22 15:29:00浏览次数:1  
标签:characteristic peripheral 开源 let func error print Halo 追踪

在飞速发展的可穿戴技术领域,我们正处于一个十字路口。市场上充斥着各式时尚、功能丰富的设备,声称能够彻底改变我们对健康和健身的方式。然而,在这些光鲜的外观和营销宣传背后,隐藏着一个令人担忧的现实:大多数这些设备是封闭系统,其内部运行被专有代码和封闭硬件所掩盖。作为消费者,我们对这些设备如何收集、处理及可能共享我们的健康数据一无所知。

这时,Halo 出现了,它是一种旨在让健康追踪更加普惠化的开源替代方案。通过这系列文章,我们将引导你从基础入手,构建并使用完全透明、可定制的可穿戴设备。

需要说明的是,Halo 的目标并不是在抛光度或功能完整性上与消费级可穿戴设备竞争。相反,它提供了一种独特的、动手实践的方式来理解健康追踪设备背后的技术。

我们将使用 Swift 5 来构建对应的 iOS 界面,以及 Python >= 3.10。由于此项目的代码完全 开源,你可以随时提交合并请求,或者分叉项目以探索全新的方向。

你将需要:

  • 获取 COLMI R02 实际设备,价格在撰写时为 11 到 30 美金左右。
  • 一个安装了 Xcode 16 的开发环境,以及可选的 Apple 开发者计划会员资格。
  • Python >= 3.10,并安装了 pandasnumpytorch 当然还有 transformers

致谢

此项目基于 Python 仓库 的代码及我的学习成果构建。

免责声明

作为一名医生,我有法律义务提醒你:你即将阅读的内容并不是医学建议。现在,让我们开始让一些可穿戴设备发出蜂鸣声吧!

配对戒指

在进入代码之前,让我们先了解蓝牙低能耗(BLE)的关键规格。BLE 基于一个简单的客户端-服务器模型,使用三个核心概念:中央设备(Centrals)服务(Services)特征(Characteristics)。以下是它们的具体介绍:

  • 中央设备(例如你的 iPhone)负责启动和管理与外设(例如我们的 COLMI R02 戒指)的连接。戒指通过广播自身信息等待手机连接,每次仅支持一台手机连接。
  • 服务是戒指上相关功能的集合,例如心率监测服务或电池状态服务。每个服务都有一个唯一标识符(UUID),客户端通过它来找到对应服务。
  • 特征是每个服务中的具体数据点或控制机制。例如,它们可能是只读(获取传感器数据)、只写(发送命令)或两者兼有。有些特征还能在其值发生变化时自动通知手机,这对于实时健康监测尤为重要。

当手机连接到戒指时,会定位所需的服务,并与特定特征交互以发送命令或接收数据。这种结构化的方法不仅确保了通信效率,还能延长电池使用时间。了解了这些基础知识后,让我们开始构建吧!

设置 Xcode 项目

创建一个名为 Halo 的新项目,目标平台为 iOS。组织标识符建议使用反向域名格式(如 com.example)。本项目中,我们使用 com.FirstNameLastName

接下来,为应用启用必要的功能。在 Xcode 中,打开 Signing & Capabilities 选项卡,启用以下 后台模式(Background Modes),以确保应用在后台运行时能够保持与戒指的连接并处理数据。

然后,我们将使用 Apple 提供的最新框架 AccessorySetupKit,用于将蓝牙和 Wi-Fi 配件连接到 iOS 应用。此框架自 iOS 18 推出,替代了传统的广泛蓝牙权限请求方式,专注于为用户明确批准的特定设备提供访问权限。

当用户尝试将 COLMI R02 戒指连接到应用时,AccessorySetupKit 会显示一个系统界面,仅列出兼容的附近设备。用户选择设备后,应用即可与戒指通信,而无需请求完整的蓝牙权限。这大大提升了用户隐私,同时简化了设备连接的管理流程。

打开 Info.plist 文件(可以在左侧边栏中找到,或通过 Project Navigator (⌘1) > Your Target > Info 定位)。添加以下键值条目以支持与 COLMI R02 戒指的配对:

  • 添加 NSAccessorySetupKitSupports,类型为 Array,并将 Bluetooth 作为第一个项目。
  • 添加 NSAccessorySetupBluetoothServices,类型为 Array,并将以下 UUID 作为 String 项:
    • 6E40FFF0-B5A3-F393-E0A9-E50E24DCCA9E
    • 0000180A-0000-1000-8000-00805F9B34FB

至此,初步配置完成!

标签:characteristic,peripheral,开源,let,func,error,print,Halo,追踪
From: https://www.cnblogs.com/huggingface/p/18562984

相关文章

  • 2024中国互联网发展创新与投资大赛(开源)总结发布会落幕,Apache DolphinScheduler荣获一
    近日,由中央网信办信息化发展局指导,中国互联网发展基金会、中国网络空间研究院和中国互联网投资基金联合主办的“2024中国互联网发展创新与投资大赛(开源)”总结发布活动在北京圆满落下帷幕。本届大赛以“开源创新,共建生态”为主题,旨在推动开源生态的高质量发展,选拔优秀开源项目,促进......
  • Pearcleaner:免费开源的macOS清理工具
    了解更多pearcleanerPearcleaner是一款完全免费的开源应用,遵循公平代码许可,确保用户能够享受无成本且透明的使用体验。其开发灵感来自于知名的AppCleaner,使得用户能够放心地进行系统清理。主要功能免费且开源的Mac应用清理工具。受知名清理工具启发,开发初衷是了解macOS应......
  • 开源项目Screenshot-to-Code:截图图片生成代码
    你是否经历过这样的日常?•设计师发来一个高清设计稿,你对着屏幕一顿敲代码,结果还被说"这里不对那里歪了"!•老板说要把页面做得"像某某网站一样",你抓耳挠腮研究别人的布局到深夜!•本以为写个前端页面很快,结果耗费的时间比后端还多!别担心,让 Screenshot-to-Code 来解......
  • 开源项目Pensieve:找寻电脑隐藏的记忆!
    大家好呀!今天要给大家安利一个超酷的工具——Pensieve,这个名字是不是让你瞬间联想到《哈利波特》里的冥想盆?没错,冥想盆是用来回顾和分享记忆的神奇物品,而今天要介绍的Pensieve,虽然不能让你直接进入记忆世界,但它能帮你记住并轻松找回电脑上的所有内容,简直是神奇到不行!轻松在海量......
  • 开源生态发展合作倡议
    在信息技术发展的浪潮中,开源已成为全球创新的强劲引擎,深刻影响着各行各业的发展。今天,我们站在新的历史起点上,肩负着推动开源生态发展的重任。在此,开源欧拉(openEuler)、龙蜥(OpenAnolis)、鸥栖(OpenCloudOS)、开放麒麟(openKylin)、深度(deepin)五大操作系统开源社区携手并进,共同发起开源生......
  • Metasploit Framework 6.4.37 (macOS, Linux, Windows) - 开源渗透测试框架
    MetasploitFramework6.4.37(macOS,Linux,Windows)-开源渗透测试框架Rapid7Penetrationtesting,2024-11-20请访问原文链接:https://sysin.org/blog/metasploit-framework-6/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org世界上最广泛使用的渗透测试框架......
  • Blender 4.3 (Linux, macOS, Windows) - 开源 3D 创意软件 (渲染 建模 雕刻)
    Blender4.3(Linux,macOS,Windows)-开源3D创意软件(渲染建模雕刻)Open-Source3DGraphicsAppIntroducesExperimentalVulkanBackend请访问原文链接:https://sysin.org/blog/blender/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org创造的自由Blender......
  • NSIS (Nullsoft Scriptable Install System) 是一个开源的、灵活且高度可定制的安装包
     NSIS(NullsoftScriptableInstallSystem)是什么?NSIS(NullsoftScriptableInstallSystem)是一个开源的、灵活且高度可定制的安装包制作工具,用于在Windows操作系统上创建安装程序。它由Nullsoft公司开发,并以其轻量级、可扩展性和脚本驱动的特性而广受欢迎。NSIS允......
  • 一个牛逼的免费开源聊天系统 支持独立部署 教程详细
    什么是唐僧叨叨​唐僧叨叨是一款轻量级,高性能,重安全专注于私有化部署的开源即时通讯系统。特性​唐僧叨叨具备以下特性:......
  • 推荐一些值得学习的开源项目和框架
    今天收到球友的问题,让推荐一些值得看的开源项目,觉得netty这些太复杂了不太好上手。确实如此,我们日常常用的Spring、Netty确实由于发展了多年,看起来比较头大。下面我来推荐一些我看过同时觉得不错的项目(几乎都是我参与过的),由易到难,其中也会包含Java和Go的项目,包含主流......