芯片模块固件选型相关
蓝牙锁有哪几种对接方式?
- 蓝牙锁 SDK 对接,模式:单芯片 SDK 开发,涂鸦提供跨平台的 SDK 开发包和常见平台的例程(支持最新公版功能,例程可直接上手),资料如下:
- 蓝牙锁模组对接,模式:mcu + 蓝牙模组,涂鸦提供蓝牙模组(客户在自己的 mcu 端开发,通过串口和模组通信),资料如下:
- 蓝牙锁免开发方案,模式:涂鸦提供软件和硬件原理图,客户直接云端配置功能+设计自己的 pcb 板形状即可。(该方案尚未实现)
出货模式相关
蓝牙锁的出货方式是什么?
SDK 对接:芯片+授权码出货(授权码必须使用到涂鸦的上位机)。
模块对接:直接出模块。
其他出货方式:量大一切可商量。
蓝牙门锁公版的功能无法满足我的需求怎么办?
请将你的需求整理成清晰的文档,给到项目经理,由项目经理汇总到产品经理,通用的功能会考虑加入公版需求,非通用功能可以考虑定制需求。
APP 相关
APP 版本问题?
涂鸦智能 APP 分为正式版和预发版两种,正式版 APP 在各大 APP Store 均可下载,预发版 APP 可以用来调试一些尚未正式发布的功能,下载地址请联系项目经理提供。
其中,苹果通过摇一摇切换环境,安卓通过配置文件切换环境。
如果配合 APP 开发人员调试问题,可能会用到:
涂鸦智能 APP-Android-debug 包蓝牙日志操作说明
涂鸦关于APP方面提供哪些服务?
OEM APP ,APP 上架服务,OEM APP 更新服务,APP 商城服务,Siri 接入服务,Widget 接入服务,Apple Watch 接入服务
APP 可以使用自己公司的风格及 logo 吗?
可以使用 OEM APP 的方式:OEM APP
面板相关
蓝牙门锁公版的 UI 只有一套吗?能否定制自己的风格?
由于人力原因,目前仅支持一套。
可以定制,如果你有好的面板风格,请准备好参考资料,跟产品经理沟通。
网关相关
蓝牙门锁支持蓝牙网关吗?
支持,更多相关问题请联系网关产品经理(郑杰)。
其他相关
和涂鸦交流过程中,有很多名词不知道什么意思怎么办?
请参考《Tuya_ble_锁类_DP 点规范》——概述——名词解释。
蓝牙门锁相关的各种文档有对应的英文版本吗?
目前以下文档有英文版本:
《蓝牙门锁公版 SDK 开发指南》即 SDK 开发包对应的《readme》
蓝牙授权和产测相关文档的英文化正在推进中……
其他文档如需英文版本,请客户/项目经理/产品经理/研发提出需求,并联系对应文档负责人一起推动。
涂鸦的 SDK 支持蓝牙协议的哪个版本?蓝牙 4.2?蓝牙 5.0?
简单回答:蓝牙 4.2
详细回答:
关于蓝牙协议
蓝牙协议是保持向前兼容的,如果支持了高版本的的协议,自然也就会支持低版本的协议,但是反过来说是不成立的。蓝牙高版本的协议会支持更丰富的功能,如果要保持跟低版本协议的兼容性,就要摒弃仅高版本支持的一些特性,例如:
- LE Data Packet Length Extension(蓝牙 4.2 及以上版本)。
- 2 Msym/s PHY for LE(蓝牙 5.0 及以上版本)。
- LE Long Range(蓝牙 5.0 及以上版本)。
- LE Advertising Extensions(蓝牙 5.0 及以上版本)。
更多特性请参考蓝牙核心规范 Vol 1→Part C
关于涂鸦 SDK
涂鸦 SDK 本身跟蓝牙协议的版本没有关联,具体支持蓝牙协议的哪个版本取决于使用涂鸦 SDK 的芯片,但是涂鸦 SDK 有几个特性需要特别注意:
- mtu = 23 Bytes,有效数据20 Bytes。
配网相关
蓝牙门锁中的绑定是什么意思?
绑定指的是涂鸦蓝牙通信协议的安全机制中定义的一种安全状态,只有已经绑定的设备和涂鸦智能 APP 之间的通信才是安全的,未绑定的设备不具备和涂鸦智能 APP 进行蓝牙通信的能力。绑定的过程称为配网,只有配网成功的设备才能称之为已绑定的设备。
强绑定和弱绑定有什么区别?
强绑定和弱绑定体现的是安全的等级,所以还有中绑定,其具体含义是:
- 强绑定:需要前一个用户解绑,才可以重新配网。
- 中绑定:无需前一个用户解绑,即可重新配网,并向前一个家庭组/默认组管理员发送PUSH通知消息。
- 弱绑定:无需前一个用户解绑,即可重新配网。
为什么用涂鸦 license 写入之后,搜索到的设备名称不是我创建的 PID 设置名称?
- demo 包里修改成自己的 PID。
- license 的“ static const char auth_key_test “以及” device_id_test "部分,用 spi 的下载器,全部擦除,再重新烧写一下。
- mac 地址更改成匹配的。
为什么烧录透传固件之后,没有搜到广播包?
- 检查固件是否烧录成功(烧录时注意保证电源供电)。
- 烧录固件之后,必须走涂鸦授权,否则涂鸦智能是搜不到相关配网广播包(可以直接用 ble 调试助手去搜索 TY 的蓝牙广播信息)。
authkey和uuid在哪里修改?
auth key 和 device id 在 tuya_app_handler.h 中改没有效果,需要在 tuya_ble_storage.c 中的 auth_key_test 和 device_id_test 里改
苹果手机作为主设备,连接参数更新?
- 最大连接间隔*(从机延迟+1)<= 2s
- 最小连接间隔>=20ms
- 最小连接间隔时间+20ms<=最大连接间隔时间
- 从机延迟<=4
- 超时时间<=6s
- 最大连接间隔时间*(从机延迟+1)*3<超时时间
SDK 作为主控对接,为什么修改 license 之后,能显示设备,但是没法配网成功?
- 确保 SDK 中的 PID 有更换过来
- 确保 define TUYA_DEVICE_DID 中的 license 有更换成自己创建 PID 的 license
- 确保 define APP_PORT_DEFAULT_MAC_ADDR_STR 中的 mac 地址有有更换成自己创建 PID 的 mac 信息
- 确保全部擦除(不要用 keil 擦除)之后,有重新烧录
模组上线后,只发心跳,没有别的数据?
IO11 拉低,模组才会接收数据
mcu 发送的模块解绑和重置模块的区别是什么?
重置模块即模块恢复出厂设置(清除 device ID 信息),模块解绑是单纯的解绑
如果是弱绑定的 PID,发送两个命令字都会进入配网模式。
现在蓝牙网关(1.4.2+版本)多久没有扫描到单点设备的广播包就默认设备是离线的?
动态时间,根据设备多少动态改变,即:0-8个设备为30s,8-32个设备未60s,32-64个设备为90s,64-128个设备为120s
为什么打开 APP 有时连接要好几秒?
这个取决于多个因素:
- 锁的低功耗广播周期会决定连接速度,比如锁为了节省功耗。
- 我们的 APP 是去扫描所有蓝牙设备,要一个个排队。
- 蓝牙信号稳定性。如果不稳定,一个周期连不上,要几个周期,这个时间就很正常了。
- 手机品牌,这个主要考虑的是兼容性。
密码相关
蓝牙门锁中【临时密码】的概念如何理解?
请参考Tuya_ble_锁类_DP点规范
临时密码中涂鸦序号、服务端序号和门锁厂商编号分别什么作用?
- 涂鸦序号:涂鸦平台存储的临时密码的编号,用于平台存储数据逻辑。
- 服务端序号:用于记录该临时密码编号的内容数据变更次数(包括起止时间、密码名称等非密码数据的变更)。
- 门锁厂商编号:门锁存储的临时密码编号,临时密码开门记录的编号显示使用该值。
蓝牙门锁中【离线密码】的概念如何理解?
请参考 蓝牙门锁 DP 参考。
蓝牙门锁中【动态密码】的概念如何理解?
请参考 蓝牙门锁 DP 参考。
远程开门相关
蓝牙门锁中【远程免密开门】的概念如何理解?
触发条件:
告警推送相关
为什么看不到警报记录?
开门记录和警报记录都属于记录型的 DP (上报时带时间戳),需要在配置统计中加上 DP 后才会有记录显示。用户可直接联系项目经理帮助开通。
智能门锁 App 上的“劫持报警”功能如何使用?
该功能的操作方式如下:
- 门锁上已有一个使用中的指纹或者密码,编号为X 。
- 打开门锁的 App 界面,在成员管理中心,将该 X 编号归属到某个用户名下,然后将该编号X,标记为劫持报警。
- 在门锁上使用该 X 解锁方式,开一次门。
- 告警记录显示在“我”——“消息中心”中可随时查看。
App 面板里的告警和 App 退出后在手机通知栏收到的告警推送有什么不同?
App 面板里的告警是通过 DP 直接上报的,MCU 必须自行上报才能显示。而 App 退出后在手机通知栏收到的告警是需要客户自行在 IoT 平台云端配置里面进行告警设置,然后通知涂鸦项目经理进行审核,审核通过才能进行推送,同时客户需要打开相关的消息推送权限(该告警推送是由涂鸦云进行场景联动规则的匹配完成,即匹配客户 MCU 上报的 DP 是否满足联动)
开门记录相关
为什么看不到开门记录?
开门记录和警报记录都属于记录型的 DP (上报时带时间戳),需要在配置统计中加上 DP 后才会有记录显示。用户可直接联系项目经理帮助开通。
开门记录上报用什么命令字?
蓝牙锁的开门记录上报,全部使用记录型数据上传,不用区分蓝牙连接状态包。但是对于状态显示(比如:电量,开合状态等)需要区分蓝牙是否离线。
为什么我创建的分享用户只有蓝牙开门,有的产品还有指纹开门或者密码开门等?
看 DP44 有没有勾选,勾选了 DP44 意味设备本地的 RTC 准确,能对开门方式进行准确的时效记录,所以对分享用户开放次权限。如果未勾选,出于安全原因,只开放蓝牙开门的权限。
开门方式同步相关
怎么操作同步指令下发到门锁?
进入 app 的硬件开门方式列表/在 app 的硬件开门方式列表界面下拉刷新。
硬件 id 与成员 id 的区别?
硬件 id:是指具体的硬件开门方式 id,例如:指纹
- 密码
- 卡片
- 密码 4等,这个 id 号由门锁自行分配并储存管理,在同步指令时,将该硬件 id 上报给 app 同步。
成员 id:对应某个具体的成员,如果 app 上创建的成员,该成员 id 编号由 app 分配管理,在同步指令上报时,如果本地创建的开门方式,没有该成员 id 编号,则上报成员 id 为 0xFD,云端统一将本地添加的开锁方式挂到配网账户下。
同步指令同步的时候,之前在 app 上添加的开门方式,是否需要再同步上报?还是只需要同步本地创建的开门方式?
同一个硬件类型下的所有开门方式都需要上报,包括在 app 添加的和本地新建的。
同步指令的时候,是将所有的指纹、密码、卡片等所有开门方式都同步上报还是只上报某一个硬件类型的开门方式?
只上报某一个硬件类型的开门方式,具体是哪个,根据下发的同步指令中硬件类型枚举值决定。
同步指令上报时,如果有多个开门方式上报,是否需要分多帧上报?
看情况而定,如果多个开门方式组帧后,最终数据总长度超过 200 字节,那么就需要分帧发送,如果没超过 200 字节,就不需要分成多个数据包上报。
数据包序号和总包数上报时怎么填写?
数据包序号:从 0 开始,例如:上报第一帧,数据包序号就是 00,上报第二帧,数据包序号就是 01
总包数:表示上面上报的总的数据包个数,如果上报就一帧数据,总包数为 1,上报有两帧数据,总包数为 2
有上报示例及解释吗?
36 00 0A 00(同步中) 00(数据包序号) 0B(硬件 id) 01(硬件类型-密码) FD(本地创建的开门方式-用户id) 01(未冻结) 0C(硬件 id) 01(硬件类型-密码) FD(本地创建的开门方式-用户 id) 01(未冻结)
36 00 02 01(同步结束)01(总包数)
解释:同步本地创建的两个密码类型的开门方式,硬件 id 分别为0x0B 和 0x0C
如果本地一个开门方式都没有了,如何填写同步的指令?
APP 只能解析至少 1 个开门方式的同步,不支持全部删除。
成员管理相关
蓝牙门锁的成员类型和权限具体是怎样的?
分享的电子钥匙,为什么有些有具体的开门方式,有些没有?
根据 DP 选择,如果选择本地时钟的 RTC 这个 DP,默认本地可以进行时间的管理,此时分享的账号下面就有具体的开门方式(比如指密卡等),如若没有选择 RTC 这个 DP,则默认只有蓝牙解锁这一种开门方式。
蓝牙门锁怎么进行设备分享?
两种方法:
- 直接成员管理里面进行分享,完成时效性设置。
- 在右上角铅笔进行分享,分享后再回到该面板里面进行对该分享成员的时效进行设置。
退网相关
蓝牙门锁中【离线移除】的概念如何理解?
离线移除又称作异常解绑。
指的是涂鸦智能APP在未连接蓝牙设备的情况下,在面板上进行解绑/恢复出厂设置操作,且操作成功,此时设备端还处于绑定状态。此后,设备进行蓝牙广播(绑定状态),如果任一涂鸦智能APP扫描到该设备,发现其广播是绑定状态但是其在云端已经被解绑,则会主动对其进行连接,连接成功后发送异常解绑指令(该过程APP界面无任何变化),此时蓝牙设备就能收到异常解绑事件,进行异常解绑操作。
异常解绑事件:TUYA_BLE_CB_EVT_ANOMALY_UNBOUND。
蓝牙锁支持离线移除么?
支持的,即使手机和蓝牙锁断开的状态下,远程也能移除这把锁,但是注意,这时候这把锁是不知道自己被重置移除了的,需要新的 app 开启搜网,通过蓝牙广播包信息向云端查询绑定情况,如果云端返回未绑定,门锁这时候会自动重置,具体参考离线移除链路图。
恢复出厂设置相关
蓝牙门锁的移除和恢复出厂设置有什么区别?
APP 端移除:云端会保留设备的虚拟 id 和锁的相关参数,再次绑定后面板会拉取移除之前保留在云端的信息,现在称为“解除绑定”。
APP 端恢复出厂设置:云端会清除设备的虚拟 id 和锁的相关参数,被恢复出厂设置的设备相当于一台全新的设备,云端无任何记录,现在称为“解绑并清除数据”。
异常解绑:相当于“APP端移除”。
重配网(模组的概念):相当于“APP端移除”。
蓝牙门锁的移除和重置有什么区别?
移除和重置都要求门锁清空本地所有参数,移除不会改变设备 ID 信息,重置会改变设备 ID 信息
冻结解冻相关
蓝牙门锁中【冻结解冻】的概念如何理解?
- 冻结和解冻的对象为其他成员(包含分享用户)。
- 家庭所有者和管理员都可对其他成员进行冻结/解冻。
- 为了保持和本地的一致性,冻结/解冻指令仅在设备处于连接状态时才能在面板上操作。
- 一旦冻结后,该成员下的所有开门方式都将被冻结,除非解冻。
- 一旦冻结后,成员对开门方式的增删改等操作也没有权限,除非解冻。
- 一旦冻结后,家庭所有者和管理员唯一可对其进行的操作就是“解冻”。
手动/自动落锁相关
蓝牙门锁中【手动/自动落锁】的概念如何理解?
1 手动落锁
- 前提条件
- ((选择DP33、DP36、DP46和DP47)&&(自动落锁关))||(仅选择DP46、DP47)。
- 操作流程
- 长按开锁,DP47上报开锁,界面跳转至开锁状态(有长按上锁按钮)。
- 长按上锁,DP47上报关锁,界面跳转至关锁状态。
2 自动落锁
- 前提条件
- (选择DP33、DP36、DP46和DP47)&&(自动落锁开)。
- 操作流程
- 长按开锁,DP47上报开锁,界面跳转至开锁状态(有长按上锁按钮)。
- 本地延时结束,DP47上报关锁,界面跳转至关锁状态。
3 无落锁功能
- 前提条件
- 不满足手动落锁和自动落锁的前提条件(一般为不选择DP33、DP36、DP46和DP47)。
- 操作流程
- DP33——自动落锁开关
- DP36——定时落锁
- DP46——手动落锁
- DP47——锁开合状态
低功耗相关
蓝牙锁应用中低功耗的影响因素有哪些?
- 广播间隔,详细内容请参考下方问题。
- 连接间隔,详细内容请参考下方问题。
- 蓝牙数据通信:包括配网、重连和业务数据通信。
- 芯片基本功耗:唤醒状态时功耗较高,休眠状态时功耗极低,视具体平台而定。
- 其他外设:休眠状态时尽可能关闭,硬件设计上注意不出现意外的漏电流,其他需要客户自主调整,不在该问题讨论范围内。
蓝牙广播间隔应该如何设置?
请在代码中全局搜索 “APP_PORT_ADV_INTERVAL” 宏,默认广播间隔为 152.5ms,请根据终端客户体验和功耗要求合理设置该值(单位:ms),推荐值请参考《Tuya_ble_锁类_蓝牙参数规范&通用能力表》。
模组对接:低功耗模式广播间隔 1s(可用指令修改),非低功耗模式广播间隔 100ms。
蓝牙连接间隔应该如何设置?
请在代码中全局搜索 “APP_PORT_MIN_CONN_INTERVAL” 和 “APP_PORT_MAX_CONN_INTERVAL” 宏,默认连接间隔为180~200ms,请根据终端客户体验和功耗要求合理设置该值(单位:ms),推荐值请参考《Tuya_ble_锁类_蓝牙参数规范&通用能力表》。
模组对接:默认广播间隔 20~40ms(接近 40ms),不支持修改。
为什么手机连接时的功耗比网关连接时的功耗高?
分为以下几种情况:
- 手机和SoC连接:绑定成功后,门锁延时1s更新连接参数为 200ms,最终连接间隔为 200ms。
- 网关和SoC连接:绑定成功后,网关立即更新连接参数为600ms,门锁延时 1s 更新连接参数为 200ms(网关会拒绝),最终连接参数为 600ms。
- 手机和模组连接:连接成功后,模组立即更新连接参数为 40ms,最终连接参数为 40ms。
- 网关和模组连接:连接成功后,模组立即更新连接参数为 40ms,绑定成功后,网关立即更新连接参数为 600ms,最终连接参数为 600ms。
说明:
- SoC 指的是 SDK 对接的设备。
- 连接状态 → 配网 → 绑定状态。
- 其他条件一致的情况下,连接参数越大,功耗越低,用户体验越差(响应速度慢)。连接参数越小,功耗越高,用户体验越好(响应速度快)。
在线离线相关
云端认为蓝牙网关掉线超时时间是多少?
3 分钟离线超时
为什么我已经是网关连接了,但是人距离门锁远了,还是显示离线?
门锁同时被一个蓝牙设备连接,即:要么被 A 的手机蓝牙连接,要么被 B 的手机蓝牙连接,要么被网关连接。
- 被手机直连的时候,只有被连接方才会显示在线,其他家庭成员(或设备被分享者)手机门锁界面只能是离线
- 被网关连接时,所有家庭成员(或该设备分享者)均显示在线
- 检查网关版本是否在 1.0.7 和 1.4.0 以上版本
如若出现手机未连接的情况,请根据以上信息做排查。
产测相关
产测授权的流程是什么?
请参考蓝牙门锁通用授权&产测指南
如何根据工单号查询已授权的设备?
请参考链接(请向项目经理申请账号,和授权软件是同一个账号)
客户必须使用涂鸦提供的 Mac 地址吗?
分两种情况(未考虑网关存在的情况):
- 客户不使用涂鸦的整机产测协议:可以不使用涂鸦提供的Mac地址。
- 客户使用涂鸦的整机产测协议:务必使用涂鸦提供的Mac地址。
建议使用涂鸦提供的Mac地址,避免未考虑到的其他问题(上述仅考虑嵌入式端的情况)
客户必须使用涂鸦的授权工具吗?
如果客户具备上位机开发能力,也可以自主开发上位机进行产测,涂鸦同时提供产测上位机开发的SDK。
生产授权时为什么“进入测试模式失败”?
请先在测试平台点击“运行”再给芯片上电,确保上电运行 500ms 内固件能够接收到产测命令,进而进入测试模式。
在进行生产授权时,上位机工具“授权测试”项为什么显示“没有操作权限”?
需要在上位机工具左侧的“工厂工单”栏目下选择点击“激活码确认”,此操作是为了确保激活码所属工厂要与登入的PMS账号一致
PMS 账号的密码忘记了要怎么办?
- 先重新搜索之前系统发送的邮件找到密码。
- 如果邮件真找不到需要将 PMS 发给涂鸦,由涂鸦的开发后台修改新密码。
蓝牙芯片对接的固件 key 命名规则是怎样的?
命名规则参考:BM_A1_SDK_NORDIC(标识名)_QIO(通信方式)_1.0.0(版本号)
订单确认相关
采购时,作为方案商,我有多个客户(多个 PID),可以统一下单吗?
可以。涂鸦提供通用采购方式,采购时不与 PID 关联,可以在实际使用时提供 PID 并进行关联,具体相关事宜请联系项目经理(项目经理联系小王子)。
产品端修改标准 DP,会对已有的产品产生影响吗?
不会,已经在IoT平台创建的产品,所有平台相关的属性值已经确定,不会随着标准 DP 的改变而改变。但是要特别注意以下两点:
- 产品经理/项目经理要确保面板端的兼容性,面板端的兼容性不受到平台的影响。
- 尽量避免重新创建产品,重新创建产品会使用最新的标准 DP,且会导致测试结果的 PID 相关资料不好追溯的问题。
IoT平台为什么不能提取激活码(不显示)?
IOT平台硬件开发的对接方式需改成“MCU对接”而不能是“SDK对接”,目前SDK方式无法提取激活码
为什么我把 A 账号下的 PID 关联到 B 账号下后,在 B 的采购订单中看不到这个 PID?
只有 PID 是量产状态,才可以被看到。