如何低门槛开发有趣实用的ZigBee产品?
一、什么是 Zigbee 协议?
Zigbee 技术是一种连接距离短、功耗低、复杂程度低、数据传输量低的无线通信技术,其命名灵感源自于蜜蜂在群体中的信息传输。它主要通过网关与互联网进行通信,并嵌入各种智能设备,最终实现自动控制和远程控制。
同一个 Zigbee 网络内的设备之间也可以直接发送消息,在网络离线时实现本地控制。例如:照明遥控器和照明设备,窗帘遥控器和窗帘电机等,可以脱离网关使用。
二、涂鸦 Zigbee 开发框架简介
为了给开发者提供简单易用、接口统一的开发环境,涂鸦重磅推出 TuyaOS Zigbee 子设备开发框架,它是属于 TuyaOS 系统的一个子集,该框架基于业务包的概念所设计,提供了产品级的能力,同时高度封装 Zigbee 协议栈。这意味着开发者无需关心具体的实现原理,使用业务接口即可快速开发 Zigbee 产品。
基于涂鸦提供标准的 API 开发,开发者可以在不同平台之间实现应用代码的无缝移植,从而加速产品落地。本开发框架提供了路由设备(Router)和终端设备(End Device)两种 Zigbee 3.0 标准设备类型的开发,接下来为大家具体介绍下。
三、重点功能介绍
1、设备配网方式更丰富
一个 Zigbee 设备要想加入到另一个 Zigbee 网络中进行数据交互,必须先进行配网操作。而 Zigbee 设备的入网流程,大体包括:发现网关—请求关联—交换密钥—更新链接密钥。
针对设备使用场景的不同,涂鸦 Zigbee 子设备框架还提供了多种设备配网方案:
- 普通配网
最常见的就是用户在设备上进行操作后(设备上电、按键),触发子设备进入配网状态,开始进行扫网,在发现网关后自动进入后续流程。
- 扫码配网
在某些施工场景下,施工人员无法直接对子设备进行操作。针对这类场景,该框架提供了扫码配网的方案。
即用户可以通过 App 扫描子设备上的二维码,然后通知网关开启配网,并主动搜寻 Zigbee 子设备。一旦搜寻到子设备,就与其进行数据交互,协助子设备入网。
- TouchLink
TouchLink 字面意思即接触式连接,是 Zigbee 3.0 标准中 ZLL(Zigbee Light Link)协议定义的一种组网方式。早期主要用于照明场景,之后逐步演化为一种标准的配网方式。
Touchlink 其实是一种近距离组网方式:一个设备被定义为发起者(Initiator),另一个设备被定义为目标者(Target)。发起者和目标者直接建立连接,全程都无需网关和 App 参与,配网速度更快更便捷。
①发起者的职责是扫描目标设备。通常情况下终端设备(End Device)会被定义成发起者。
②目标者的职责是等待附近发起者的扫描请求。通常情况下,路由设备(Router)会被定义成目标者,在配置时主要存在以下两种情况:
—若得知发起者不存在网络,则目标者需要建立一个新的网络;
—若得知发起者有网络,则目标者自动加入发起者的网络。
框架支持 ZLL 发起者角色开发,也支持目标者角色开发。且支持配置 TouchLink 时的信号强度,以调整 TouchLink 时两个设备之间的最大距离。
举个例子:照明遥控器其实相当于是发起者角色,灯具相当于是目标者角色,通过 App 就能实时控制灯具状态。
2、OTA时间更短
OTA 即 Over-the-Air,是一种通过无线通讯进行固件升级的技术。TuyaOS 支持设备 OTA 升级能力:通过搭配涂鸦网关和云端方案,可以远程为设备固件进行软件升级,降低退货返工等生产成本。
- 全量 OTA
一般 OTA 传输的固件包是完整的固件包,也称全量 OTA 。全量 OTA 升级是 Zigbee 规范的标准用法。固件包的大小不同,整个 OTA 过程大约需要10~15分钟,传输时间相对较长。
- 差分 OTA
为了缩短 OTA 的时长,该框架为开发者提供了差分 OTA 升级方式。差分升级又叫增量更新,是将老版本固件与新版本固件做对比差分,得到升级部分的补丁即差分包。
设备下载了差分包后,将老版本固件与差分包进行组合,以得到新版本的固件。当 OTA 固件与设备当前运行固件差异较小时,差分 OTA 包也会很小,可极大缩短传输时间,整个 OTA 过程可以缩短至 1 分钟以内。
- 群组 OTA
当一个群组内有多个相同的设备需要升级时,如果逐个进行升级会非常耗时。针对这个问题,该框架提供了群组 OTA 方案,支持同时对群组内的相同设备统一进行固件升级,从而缩短总体时长。群组内相同设备数量越多,效果越明显,且差分 OTA 和群升 OTA 可以同时使用。
三、产品应用实例
1、无线开关
如今,控制智能产品的外部媒介越来越多样化,如 App、智能音箱、语音控制等,已经成为相当主流的控制方式。而由于设备众多且使用对象各异,控制媒介在实际应用中常常存在许多痛点,比如:
-
不方便掏出手机控制;
-
部分智能场景需要配置 App,对老人和小孩来说有操作难度;
-
一些商业场合需要产品互联,但通过总线配置的方案太复杂,因此无线开关应运而生,化繁为简。

特点:
-DIY 联动动作
通过按键可自定义配置单击、双击、长按等动作,并一键唤醒专属场景联动。
- 反转双控
支持你在配置场景开关时一键取反,快速让无线开关和被控设备组成双控联动。
- 步进调节
选择调高/调低,即可通过无线开关调节档位、亮度。
- 自发电
依托 Zigbee 标准 green power 技术,无线开关可摆脱电池供电的模式,通过按键按下的动能就能持续供电,用户不用再为突然没电而烦恼。
目前,同样应用该技术的,还有自发电智能门铃,产品已经相当成熟。不耗一度电,也能时刻保持在线工作。即使你不在家,也能通过手机 App 实现远程呼叫提醒,可以一键开锁,并在进门后联动其他智能设备来丰富应用场景。

- 场景联动
支持在 Wi-Fi 离线的环境下,网关能联动家中所有 Zigbee 产品;并在网关和 Wi-Fi 都在线的环境下,按下按键,动态场景就会联动调光开关、窗帘开关,对灯具的亮度或窗帘开合百分比进行自动调整。

2、智能门锁
忘带钥匙一直是大家的日常痛点,但有了智能锁就能完美解决这个问题。涂鸦智能锁方案支持指纹、密码、门卡、人脸、指静脉等多种解锁方式。基于每个用户的自定义设置,门锁开门后可联合全屋其他智能设备,触发对应联动场景,满足居家不同需求。
比如开门后联动灯具自动打开,对于老人非常方便,可以有效避免摸黑开灯导致的意外。
特点:
- 解锁方式多元
支持手机、指纹、密码、门卡、人脸、指静脉等多种解锁方式,无需钥匙就能轻松出门。

- 开门记录查询
智能锁可以成为你的管家,告知你家门口发生的一切动静,包括实时开门记录、门铃呼叫、家人回家提醒等。

- 可视对讲联动
当访客到家时,主人可以在线通过智能可视门铃来进行可视对讲,支持一键为访客开门,且涂鸦生态内所有可视门铃与智能门锁均可支持联动功能。

- 第三方语音控制
智能锁支持接入 Amazon Alexa、Google Assistant 两大主流智能音箱。语音控制支持以下三个核心功能:语音检查门锁状态、语音控制开锁和关锁。

四、资料下载
开发者可登录 Tuya Wind IDE,在资源中心搜索当前已经发布的 Zigbee 子设备的信息。根据自己开发需求来下载对应的框架。

Tuya Wind IDE 安装操作指南:
https://developer.tuya.com/cn/docs/iot-device-dev/tuyaos-wind-ide?id=Kbfy6kfuuqqu3
五、技术支持
开发过程中,如有遇到任何问题,欢迎登录文档中心查看完整开发攻略,或登录TuyaOS-Zigbee 设备开发论坛进行提问,将有开发小哥哥随时为你解答~
1、文档中心
https://developer.tuya.com/cn/docs/iot-device-dev/TuyaOS-frame_dev_Zigbee?id=Kc6f834uhpetq
2、TuyaOS-Zigbee 设备开发论坛
https://www.tuyaos.com/viewforum.php?f=18&sid=0df22e69b1370e1988f2dc36286ec47f
相关文章:
如何低门槛开发有趣实用的ZigBee产品?
一、什么是 Zigbee 协议? Zigbee 技术是一种连接距离短、功耗低、复杂程度低、数据传输量低的无线通信技术,其命名灵感源自于蜜蜂在群体中的信息传输。它主要通过网关与互联网进行通信,并嵌入各种智能设备,最终实现自动控制和远程…...
ChatGPT和API发生重大中断!
11月9日凌晨,OpenAI在官网发布,ChatGPT和API发生重大中断,导致全球所有用户无法正常使用,宕机时间超过2小时。 目前,OpenAI已经找到问题所在并进行了修复,但仍然不稳定,会继续进行安全监控。 …...
SQL第五次上机实验
1.向图书表(Book)插入以下记录 USE TSGL GO INSERT INTO Book VALUES(7-5402-1800-3,文学类,边城,沈从文,燕山出版社,10,5,5)2.向借阅表插入以下两条记录 USE TSGL GO INSERT INTO Lend VALUES(201207034201,7-5402-1800-3,00366240,2013-04-22),(2012…...
Matplotlib数据可视化综合应用Matplotlib图形配置在线闯关_头歌实践教学平台
Matplotlib数据可视化综合应用图形配置 第1关 配置颜色条第2关 设置注释第3关 自定义坐标刻度第4关 配置文件与样式表 第1关 配置颜色条 任务描述 本关任务:使用colorbar绘制一个热成像图。 编程要求 在右侧编辑器Begin-End处补充代码,根据输入数据绘制…...
CSS实现瀑布流的两种方式
column 多行布局实现瀑布流 1.column 实现瀑布流主要依赖两个属性。 2.column-count 属性,是控制屏幕分为多少列。 3.column-gap 属性,是控制列与列之间的距离。 <!DOCTYPE html> <html lang"en"> <head><meta charset&q…...
Hadoop 视频分析系统
视频分析系统 业务流程 原始数据 vedio.json {"rank":1,"title":"《逃出大英博物馆》第二集","dzl":"77.8","bfl":"523.9","zfl":"39000","type":"影视",&quo…...
Flutter android和ios闪屏页配置
一.概念理解 闪屏页 1.当点击app开始的一瞬间,所呈现出来的页面就是闪屏页。 2.为什么会有闪屏也,由于app启动需要加载代码,这个过程需要耗时,在没有加载完成之前,是看不到app真正的页面。所以app在没有完全加载完时…...
30道高频Vue面试题快问快答
※其他的快问快答,看这里! 10道高频Qiankun微前端面试题快问快答 10道高频webpack面试题快问快答 20道高频CSS面试题快问快答 20道高频JavaScript面试题快问快答 30道高频Vue面试题快问快答 面试中的快问快答 快问快答的情景在面试中非常常见。 在面试过…...
vue-前端实现模糊查询
vue-前端实现模糊查询 开始觉得前端的模糊查询肯定是非常难实现的,但后来发现还是很容易的,几行代码就可以搞定。 原理 从后端获取到所有数据后,将数据存储于两个变量中,目的是为了其中一个作为模糊查询的对照组,用…...
QT:tcpSocket 报错The proxy type is invalid for this operation
调用connectToHost时会先检查代理情况。Qt 程序默认使用系统的代理设置会导致这个问题导致,只要关闭系统的代理设置就可以解决这个问题: (1)添加头文件: #include <QNetworkProxy> (2)添加…...
PostgreSQL 技术内幕(十一)位图扫描
扫描算子在上层计算和底层存储之间,向下扫描底层存储的数据,向上作为计算的输入源,在SQL的执行层中,起着关键的作用。顺序、索引、位图等不同类型的扫描算子适配不同的数据分布场景。然而,扫描算子背后的实现原理是怎样…...
C# WebSocket 服务器
*******************websocket服务器************************************** 第一步:创建HttpListener类,并启动监听: var listener new HttpListener(); listener.Prefixes.Add("http://10.10.13.140:8080/"); …...
自动化实战 - 测试个人博客系统
前言 本篇使用Selenium3Junit5对个人博客进行自动化测试,如有错误,请在评论区指正,让我们一起交流,共同进步! 文章目录 前言一.web自动化测试用例二.测试准备1.注册界面自动化测试测试过程中遇到的Bug: 2.登录界面自动…...
TCP/IP详解
TCP/IP详解 一、网络基础1.TCP/IP网络分层2.IP地址和端口号3.封装与分用4.客户-服务端模型 二、链路层1.以太网IEEE802封装2.环回接口 Loopback Interface3.最大传输单元MTU和路径MTU 三、网络层 - IP1.IP首部的关键信息2.IP路由选择3.子网寻址和子网掩码4.ICMP和IGMP 四、传输…...
2023年的低代码:数字化、人工智能、趋势及未来展望
前言 正如许多专家预测的那样,低代码平台在2023年将展现更加强劲的势头。越来越多的企业正在纷纷转向低代码开发,他们希望能够快速开发内部应用程序,并在经济衰退可能出现的情况下保持灵活性。在这个大背景下,低代码平台为企业软件…...
【gogogo专栏】golang并发编程
golang并发编程 并发编程的工具goroutine介绍协程管理器sync.WaitGroup channel介绍readChannel和writeChannelclose的用法select的用法 通讯示例总结 并发编程的工具 在golang中,并发编程是比较简单的,不像java中那么麻烦,golang天然的支持协…...
深入理解JVM虚拟机第二十二篇:详解JVM当中与操作数栈相关的字节码指令
大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻J…...
Vue报错解决Error in v-on handler: “Error: 无效的节点选择器:#div1“
因为我们在创建元素之前用了#div1"所有它会报错,解决方案简单粗暴咱们直接用 setTimeout(createEdit, 1)解决问题了 原理:vue的虚拟dom创建完成以后再调用真是dom就没啥问题 function createEdit() {const editor new E(#div1)editor.config.hei…...
R | R包安装报错-github连接速度慢或无法访问 | metaboanalystR | Retip | rJava安装
R | R包安装报错-github连接速度慢或无法访问 | metaboanalystR | Retip | rJava安装 一、metaboanalystR 安装1.1 Bioconductor报错,无网络连接1.2 github520-修改hosts文件 二、retip安装2.1 rJava包加载报错及安装2.2 安装Retip包 三、从Bioconductor安装Rdisop报…...
博阳精讯、凡得科技访问上海斯歌:共探BPM流程服务新高地
10月27日下午,来自博阳精讯、凡得科技的流程领域专家、领导一行参观访问了上海斯歌总部。三方举行了深度交流会谈,分享了彼此对流程领域的前沿洞察和技术实践,共同探索了BPM流程服务科技力与价值力的新高地。 本次研讨会上,博阳精…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
