【免费下载链接】TobudOSTobudOS 是面向物联网领域开发的实时操作系统早期版本基于腾讯自研的物联网操作系统TencentOS Tiny2020年由腾讯捐赠到开放原子开源基金会进行孵化2023年正式更名为TobudOSTobudOS具有低功耗低资源占用模块化安全可靠等特点可有效提升物联网终端产品开发效率提供精简的 RTOS 内核内核组件可裁剪可配置可快速移植到多种主流 MCU (如 STM32 全系列) 及模组芯片上。而且基于 RTOS 内核提供了丰富的物联网组件内部集成主流物联网协议栈如 CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等可助力物联网终端设备及业务快速接入物联网云平台。项目地址https://gitcode.com/openatomfoundation/TobudOS点击查看免费下载本文基于 TobudOS原 TencentOS Tiny开源仓库中的小程序开发快速指引文档整理编写。TobudOS 是面向物联网领域的实时操作系统内核组件可裁剪可配置可快速移植到多种主流 MCU并内置了物联网云平台接入能力。本指南围绕“如何让微信小程序控制你的 TobudOS 物联网设备”这一主题完整讲解小程序开发环境的准备、基于腾讯云物联网开发平台 IoT Explorer 的智能灯 Demo以及普通开发SDK 直连与云开发云函数中转两种接入方式的完整实操流程。读完本文你将能够申请并配置小程序账号与 AppID在小程序端通过 SDK 或云函数调用 IoT Explorer 的 API 实现设备数据查询与控制完成本地调试、真机调试与小程序发布并掌握常见错误的排查方法。1. 开发环境准备在开始编写小程序之前需要依次完成小程序账号申请、管理后台信息获取、开发者工具安装三步准备工作。1.1 申请小程序账号进入微信小程序注册页按照页面指引填写邮箱、主体信息等资料并提交相应资质即可拥有自己的小程序账号。账号申请成功后后续在小程序管理后台中即可完成权限管理、数据报表查看、版本发布等操作。1.2 小程序管理后台与 AppID申请成功后登录小程序管理后台。其中最关键的信息是AppID在菜单“设置”-“开发设置”中可以查看AppID 相当于小程序平台上的“身份证”在小程序项目基本信息中必须配置。1.3 安装微信开发者工具前往微信官方“开发者工具”下载页面根据自己的操作系统Windows/macOS下载对应的安装包并安装。安装完成后打开小程序开发者工具使用微信扫码登录即可开始新建或导入项目。备注小程序开发更详细的基础指引可参考微信官方小程序开发指南本文以下内容聚焦 TobudOS 仓库配套的智能灯 Demo 案例。2. 智能灯小程序 Demo 概述2.1 架构总览小程序如何调用腾讯云物联网 API基于腾讯云物联网平台开发小程序应用关键问题在于小程序如何方便、安全地调用腾讯云物联网平台的 API如上图红框部分。TobudOS 仓库配套提供了两种开发方式的小程序 Demo帮助开发者让小程序更快接入腾讯云普通开发方式SDK小程序端直接使用移植的 SDK 调用腾讯云 API云开发方式云函数在小程序云开发环境的云函数中调用腾讯云 API小程序端只负责调用云函数。两种方式的差异在于“谁在调用 API、密钥放在哪里”SDK 方式把腾讯云 API 密钥secretId/secretKey放在小程序端代码中实现最直接云开发方式把密钥和 API 调用逻辑封装在云端函数中小程序端不接触密钥安全性更高也更符合生产实践。2.2 前置工作创建设备并完成设备端对接Demo 案例以“智能灯”应用为例子。在小程序开发之前需要先完成以下两项工作第一步在腾讯云物联网开发平台 IoT Explorer 创建智能灯产品和设备。在腾讯云控制台的物联网开发平台中完成控制台操作创建项目和产品、新建产品、创建数据模板、创建测试设备。关注点放在控制台操作部分即可数据模板需要与设备端定义的属性一一对应。第二步基于 TobudOS 完成设备和 IoT Explorer 的对接。对应仓库中的智能灯数据模板案例位于 examples/qcloud_csdk_iot_explorer 目录原文档所述路径examples/qcloud_iot_explorer_sdk_data_template在当前仓库中对应此目录包含三个文件data_template_config.h数据模板的配置声明data_template_config.c数据模板属性/事件/行为的具体定义与序列化逻辑data_template_app.c设备端主流程包括 MQTT 事件回调、数据模板下行控制回调与周期上报。从 data_template_config.h 的定义可以看到智能灯数据模板的核心结构属性Propertypower_switchBOOL电源开关、colorENUM颜色、brightnessINT亮度、nameSTRING名称、positionSTRUCT位置含longitude/latitude两个子属性、powerSTRING_ENUM功率档位共 6 个属性事件Eventstatus_report状态上报、low_voltage低电量告警、hardware_fault硬件故障行为Actionlight_blink灯闪烁输入参数为time、color、total_time。在 data_template_config.c 中usr_data_template_property_report()会将所有need_report为真的属性序列化为 JSON 报文再调用IOT_DataTemplate_PropertyReport()通过 MQTT 上报到平台在 data_template_app.c 中_method_control_callback()处理平台下发的控制消息先回复控制应答再解析属性_method_action_callback()处理平台下发的行为调用如light_blink_cycle_report()则以定时器周期上报事件与亮度属性。理解设备端的数据模板定义是后面小程序端“查询设备属性”和“下发控制指令”能够对上的基础小程序查询/控制的字段就是设备端数据模板中定义的这些属性 key。3. 普通开发方式SDK小程序直连腾讯云 API3.1 导入工程在小程序开发者工具中点击“导入项目”选择普通开发 Demo 工程目录原文档给出的路径为TencentOS_tiny\tools\Mini_Program\iotexplorer_mp_demo。注AppID 可在小程序管理后台获取本地调试阶段也可以先使用测试号测试号无需注册真实小程序。3.2 修改配置在miniprogram/app.js中更新配置信息填入自己产品的productId、deviceName、腾讯云 API 密钥secretId/secretKey以及地域region。各字段的具体含义与获取方式见本文第 6 节“配置信息说明”。3.3 功能扩展基于 iotclient.js 扩展能力普通开发方式的 API 调用能力封装在iotclient.js中原文档路径TencentOS_tiny\tools\Mini_Program\iotexplorer_mp_demo\iotclient_for_miniprogram\iotclient.js开发者可以基于该案例继续扩展更多 API 调用。注腾讯云暂时没有提供官方的小程序端 API SDK本案例的小程序 SDKiotclient_for_miniprogram是基于腾讯云 NodeJS SDK 中的 iotexplorer 服务模块移植过来的因此接口风格与 NodeJS SDK 保持一致。4. 云开发方式云函数更安全的接入方案云开发方式是微信小程序提供的“云函数 云数据库 云存储”一体化后端能力。把腾讯云 API 的调用放到云函数中小程序端只调用云函数密钥不出现在小程序代码里。4.1 导入工程在小程序开发者工具中导入云开发 Demo 工程原文档给出的路径为TencentOS_tiny\tools\Mini_Program\iotexplorer_mp_cloudfunctions_demo。注AppID 需在小程序管理后台获取测试号不支持云开发使用云开发方式必须申请真实的小程序账号。4.2 开通云开发创建环境使用云开发能力之前需要先开通云开发。在开发者工具工具栏左侧点击“云开发”按钮即可打开云开发控制台按提示开通云开发并创建云环境。例如填入环境名称为tos-demo环境 ID 为tos-demo。环境 ID 需要在后续配置中填入app.js的env字段。4.3 部署云函数云函数需要部署到云环境中才能生效。在开发者工具的资源管理器中于云函数目录上点击右键选择“创建并部署云端安装依赖不上传 node_modules”。Demo 的cloudfunctions目录提供了两个云函数query和control分别通过调用 IoT Explorer 的查询接口和控制接口实现对设备的查询与控制query查询设备属性数据对应“获取设备属性数据”接口control下发设备控制指令。分别将control和query两个云函数部署到云环境中。部署成功后可以在云开发控制台里看到对应的云函数列表。4.4 修改配置在miniprogram/app.js中更新配置信息重点是把env字段改为自己创建的云环境 ID并确认productId、deviceName等信息与设备端一致参考第 6 节“配置信息说明”。4.5 功能扩展结合 API 3.0 Explorer 工具快速实现云函数腾讯云提供的 API 3.0 Explorer 工具可以非常方便地生成 API 的 SDK 代码只需要稍作修改就可以直接在云函数中使用。整体流程如下第一步自动生成 API SDK 代码进入腾讯云 API 3.0 Explorer 工具在左侧选择对应服务例如“物联网开发平台”IoT Explorer继续选择对应接口例如“数据查询相关接口”-“获取设备属性数据”填写个人密钥secretId/secretKey和输入参数参考第 6 节“配置信息说明”使用“在线调用”功能先测试接口是否调用成功测试完成后选择生成NodeJS 代码将生成的代码拷贝出来供后续云函数使用。第二步创建并实现云函数创建云函数如query将自动生成的 NodeJS 代码拷贝到云函数中并稍作修改填入自己的产品 ID、设备名称、密钥等即可使用参考 Demo 中cloudfunctions/query/index.js的实现修改完成后记得上传部署云函数到云环境。第三步小程序端调用云函数调用云函数的代码非常简单使用wx.cloud.callFunction即可。Demo 中miniprogram/pages/index/index.js的queryDeviceData()方法给出了完整示例// 调用云函数 query wx.cloud.callFunction({ name: query, data: queryData, success: (res) { try { let deviceData JSON.parse(res.result.Data); this.setData({ deviceData: deviceData, }); console.log(result:, deviceData); wx.showToast({ title: 调用成功, }); } catch (e) { wx.showToast({ icon: none, title: 调用失败, }); console.log(res.result.Data, e); } }, fail: (err) { wx.showToast({ icon: none, title: 调用失败, }); console.error([云函数] [iotexplorer] 调用失败, err); }, });其中res.result.Data是云函数返回的 JSON 字符串需要JSON.parse解析为对象后再写入页面数据。这段代码体现了云开发方式的核心调用链小程序wx.cloud.callFunction- 云函数含 API 3.0 SDK 生成的调用逻辑- IoT Explorer 平台 API - 设备数据。5. 调试和发布完成上述配置后就可以对基本功能进行调试例如查询设备当前属性、下发控制指令让智能灯执行动作。5.1 本地调试点击开发者工具菜单栏的“编译”按钮进行编译在左侧模拟器中点击查询和发送按钮在下侧调试器中查看调试信息网络请求、云函数返回等。5.2 真机调试点击菜单栏“真机调试”手机微信扫描弹出的二维码进入真机调试模式即可在手机小程序页面点击按钮进行真实环境调试。真机调试阶段会遇到域名校验问题处理方法见第 7 节 FAQ 1.3.1。5.3 发布小程序调试 OK 后就可以发布小程序了上传代码点击菜单栏“上传”填写版本信息将开发版本上传到小程序管理后台发布版本登录小程序管理后台进入“管理”-“版本管理”将开发版本提交审核等待审核通过后点击发布版本。6. 配置信息说明两种开发方式在小程序端app.js中需要配置的字段汇总如下配置字段含义获取方式productId产品 ID用于 IoT Explorer API 接口调用的参数腾讯云控制台 - 物联网开发平台 - 产品开发 - 设备调试deviceName设备名称用于 IoT Explorer API 接口调用的参数同上设备调试中查看secretId腾讯云 API 密钥 ID用于接口调用的鉴权腾讯云控制台 - 访问管理 - 访问密钥 - API 密钥管理secretKey腾讯云 API 密钥 Key用于接口调用的鉴权同上region接口服务的地域字段填写ap-guangzhou即可env云开发的环境 ID仅云开发方式需要云开发控制台创建云环境时生成其中productId、deviceName必须与设备端示例examples/qcloud_csdk_iot_explorer 中配置的 MQTT 连接参数以及 IoT Explorer 控制台创建的设备保持一致否则查询/控制会失败。安全提示secretId/secretKey属于高敏感凭据。普通开发SDK方式下密钥位于小程序前端代码中仅适合 Demo 或内测场景生产环境强烈建议使用云开发方式把密钥收敛到云函数中。7. FAQ 常见问题排查7.1 网络请求报错request:fail url not in domain list报错信息https://iotexplorer.tencentcloudapi.com 不在以下 request 合法域名列表中请参考文档... {errMsg: request:fail url not in domain list}解决方式本地调试可以在本地设置中勾选“不校验合法域名”跳过域名校验真机调试或发布需要在小程序管理后台进行服务器域名配置——进入微信公众平台小程序后台 - 开发 - 开发设置 - 服务器域名输入请求域名如果使用物联网开发平台 IoT Explorer输入域名iotexplorer.tencentcloudapi.com如果使用物联网通信平台 IoT Hub输入域名iotcloud.tencentcloudapi.com。7.2 云开发初始化错误 cloud init error报错信息cloud init error{ errMsg: invalid scope }原因与处理首次开通云环境后官方后台服务仍在准备中需等待大约 10 分钟方可正常使用云 API。在此期间若尝试在小程序中调用云 API则会报cloud init error: { errMsg: invalid scope }。等待一段时间后重试即可。7.3 云开发云环境不存在 env not exists报错信息Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail requestID , cloud function service error code -501000, error message [100004] env not exists;排查步骤确认是否已开通云开发并创建环境确认配置文件app.js中env字段是否与云开发中创建的云环境 ID完全一致注意是环境 ID 而非环境名称。7.4 云开发云函数不存在 Function not found报错信息Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail requestID , cloud function service error code -504002, error message Function not found [query]; at cloud.callFunction api排查步骤确认云函数如query是否已部署到对应的云环境且部署操作“创建并部署”已成功完成。7.5 可以接入第三方服务吗可以。只要是符合微信小程序网络能力要求的服务小程序都能访问。简单来说有以下要求请求必须使用https/wss协议请求域名需要完成 ICP 备案域名需要带有可信任的 SSL 证书。详细规则可参考微信小程序网络能力使用说明合法域名配置、https 强制等要求。结语至此你已经完整走通了“TobudOS 物联网设备 腾讯云 IoT Explorer 微信小程序”的端到端链路设备端通过 examples/qcloud_csdk_iot_explorer 中的数据模板与 MQTT 接入平台小程序端既可以选择 SDK 普通开发方式直连平台 API也可以选择云开发方式把 API 调用收敛到云函数。无论哪种方式productId、deviceName、secretId/secretKey、region等配置的正确性都是成功接入的前提而本文第 7 节的 FAQ 覆盖了接入过程中最高频的五个问题。基于本指南你可以进一步把智能灯 Demo 扩展为自己的产品——例如在 API 3.0 Explorer 中选择更多 IoT Explorer 接口生成云函数实现设备历史数据查询、固件升级触发、设备影子同步等更丰富的业务能力。赞分享【免费下载链接】TobudOSTobudOS 是面向物联网领域开发的实时操作系统早期版本基于腾讯自研的物联网操作系统TencentOS Tiny2020年由腾讯捐赠到开放原子开源基金会进行孵化2023年正式更名为TobudOSTobudOS具有低功耗低资源占用模块化安全可靠等特点可有效提升物联网终端产品开发效率提供精简的 RTOS 内核内核组件可裁剪可配置可快速移植到多种主流 MCU (如 STM32 全系列) 及模组芯片上。而且基于 RTOS 内核提供了丰富的物联网组件内部集成主流物联网协议栈如 CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等可助力物联网终端设备及业务快速接入物联网云平台。项目地址https://gitcode.com/openatomfoundation/TobudOS点击查看免费下载相关推荐基于 STM32G0 与 TencentOS Tiny 的物联网智能灯实战腾讯云 IoT Explorer 全流程接入指南基于 STM32G0 与 TencentOS Tiny 的物联网智能灯实战腾讯云 IoT Explorer 全流程接入指南 本篇技术指南围绕 TobudOSGetQzonehistory3 步把你的 QQ空间历史说说完整导出到本地GetQzonehistory3 步把你的 QQ空间历史说说完整导出到本地 你发在 QQ空间 里的说说几年后想找一条往往要翻很久甚至根本翻不到。GetQz网页爬虫数据分析腾讯云 COS 小程序 SDKXML API使用教程腾讯云 COS 小程序 SDKXML API使用教程 1. 项目的目录结构及介绍 cos wx sdk v5/ ├── demo/ │ ├── lib/ │创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考