作者:李可福
# 前言
欢迎涉及到 Z-wave 技术的测试大佬进行技术交流,同时所分享的内容,希望能帮助到对 Z-wave 技术感兴趣的人;本文章中涉及内容,主要讲解 Z-wave 官方提供开发软件使用方法和个人日常工作测试产品基本功能方法和排查问题方法;若需要程序设计方案和工程项目经验,可单独沟通交流,个人担任过测试工程师 + 产品经理,负责过我司首款自主研发 Z-wave 温控器项目软件方案制定和产品测试,拥有丰富工程项目实战经验。
Z-Wave 的优势:可靠性高:使用低功耗无线电技术,减少信号干扰的可能性,能够延长电池寿命,降低设备运行成本。安全性高:使用加密技术保护通信安全。支持连接数量多:支持高达 232 个设备同时连接。网络稳定性:Z-Wave 网络支持多跳路由机制,使得网络覆盖范围更广,传输效率更高,并且具有较强的抗干扰能力。适用于智能家居设备:专门为智能家居设备设计,支持智能家居设备的功能需求。
WiFi 的优势:高速数据传输:支持高速数据传输,适用于高带宽应用。广泛的应用场景:适用于家庭和商业环境的各种应用场景。稳定性好:信号稳定,传输质量好。
蓝牙的优势:低功耗:适用于低功耗设备。连接数量少:适用于连接数量较少的设备。短距离通信:适用于短距通信。
Zigbee 的优势:低功耗:适用于低功耗设备。支持连接数量多:支持多个设备连接。自组网功能:支持设备自组网,增加设备之间的互联性。适用于物联网和智能家居设备:支持物联网和智能家居设备的功能需求。
Z-Wave 是一种无线通信协议,主要用于智能家居和物联网设备之间的通信。它采用低功耗 RF 技术进行通信,工作在 800-900 MHz 的 ISM 频段。它采用 FSK 调制和 GFSK 调制方式,并使用了一种自适应的反相变频制来减小干扰和提高信噪比。支持点对点、星型和网状拓扑结构,具有较强的安全性和互操作性,每个设备都可以充当中继器,将消息从一个节点传递到另一个节点。这种多跳路由机制可以大大增加网络的范围和可靠性。Z-Wave 还可以使用多跳路由机制来增加网络的范围和可靠性。Z-Wave 协议设备之间的通信距离也比较远,可以达到 30 米以上,空旷距离可达 100 米,Z-Wave 800 系列可实现高达 1.5 英里的覆盖范围(来源官方),使得它在大房屋或跨越多个楼层的智能家居应用中更加实用。有一个独特的安全层,用于保护通信内容和防止未经授权的访问。此外,Z-Wave 还支持多个品牌和厂商的设备之间的互操作性,可以实现不同品牌和厂商的设备之间的相互配合和集成。
Z-wave 官方技术文档:https://cn.silabs.com/wireless/z-wave
Z-wave 官方地址:https://z-wavealliance.org/join-z-wave-alliance-now/#
Z-Wave 联盟是一个由全球智能家居领域的商、开发者和技术专家组成的非营利性组织。Z-wave 联盟的主要目的是推广和推动 ZwaVe 技术的发展和应用,促进智能家居市场的发展。Z-wave 联盟成立于 2005 年,总部位于美国德
克萨斯州的奥斯汀。截至 2021 年,Z-wave 联盟已经拥有超过 7O0 个成员,包括各大智能家居设备厂商、平台供商、系统集成商、安全专家等。Z-wave 联盟为成员提供技术支持、认证服务、市场推广、标准制定等一系列务使得 Z-wave 技术的应用更加广泛和更加可靠。同时,Z-wave 联盟还不断推出新的技术和标准,以满足不断发展的能家居市场需求。
在 Z-Wave 网络中,每个网络都有一个唯一的 Home ID,用于标识和区分不同的网络。Home ID 是一个 32 位数值,通常以 16 进制表示。它由控制器节点在创建网络时生成,并自动分配给所有加入到该网络中的设备。Home ID 的范围非常广泛,可以支持多达 232 个不同的网络,每个网络最多可容纳 232 个设备。通过使用唯一的 Home ID,可以确保每个网络都具有独立的身份和隔离性,从而提高网络的安全性和稳定性。
在 Z-Wave 网络中,每个设备都有一个唯一的节点 ID,用于在网络中标识和区分不同的设备。节点 ID 是一个 8 位数值,范围从 1 到 232-1(即 0 至 255),其中 1-232 为可用节点 ID,而 0 和 232-1 为保留节点 ID。其中,节点 ID 1 被保留为控制器节点 ID,用于管理和控制整个网络。其他节点 ID 可以由控制器动态地指定和分配给新加入的设备。节点 ID 的分配和管理通常是由控制器节点自动完成的,用户不需要手动干预。
Z-Wave S2 是 Z-Wave 协议的第二代安全性标准,采用更强的加密算法和认证方式,提高了通信的安全性和保密性。
Z-Wave S2 使用 128 位 AES 加密算法对数据进行加密,并采用 ECDH(椭圆曲线 Diffie-Hellman)密钥交换协议来生成加密密钥。此外,它还采用了数字签名和完整性检查等机制来确保通信内容的真实性和完整性。S2 还支持单独的网络密钥和设备密钥管理,使得每个设备都有唯一的密钥,增加了通信的安全性。
相比于 Z-Wave 的第一代安全标准,Z-Wave S2 可以提供更高的安全级别和更强的保护措施,有效防范了黑客攻击和非法访问等风险,保障了智能家居和物联网设备之间的通信安全。
Z-Wave 是一种专门为智能家居设备设计的无线通信协议,协议标准由 Z-Wave 联盟制订,各厂家按照协议标准开发并认证,实现各厂家产品之间互相兼容。HomeID 是网关(主控制器)身份标识,NodeID 是设备身份标识,设备与网关之间通过 HomeID 和 NodeID 互相确认身份并通信;设备与设备之间可以直接通信,也可以通过网关处理并转发,每一个设备具备路由的功能,等同一个中继器;Z-wave 500 无线通信点到点通信距离在空旷环境可达 100 米。适合房屋或跨越多个楼层的智能家居,比如别墅或者多层楼住宅。通过多跳路由机制来增加网络的范围和可靠性,实现跨楼层通信。
各厂家产品兼容:在市面上购买同规格并且认证过 Z-wave 网关和设备,都支持配网与控制。
多跳路由机制实现跨楼层通信如下:
PS:以下介绍个人日常测试中常用工具;
PC Controller 电脑控制器相等于一个 Z-wave 产品网关,可以添加任何 Z-wave 类产品并且控制;
一台电脑,一个 Z-wave Static Controller 工具和 Z-Wave PC Controller 软件
PC Controller 电脑控制器:区分规格,目前使用 “CN” 表示 “中规”,“EU” 表示 “欧规”
以下为个人日常测试场景和设备
插入 PC Controller 棒到电脑 USB,并选择设备串口,点击 OK 确认;
连接成功显示
ID 表示:通信的 ID 地址为 1
Home ID: 表示当前家 ID 地址,可以理解为当前住宅地址,重置网关后会变化
source:表示连接电脑的串口地址
Add:触发添加设备指令,此时需要在设备端触发添加指令按键
Remove:触发删除设备指令,此时需要在设备端触发退网指令按键
Is Failed:判定指定设备是否在线,需要在左边设备列表中选择需要测试的设备;
Get VerSion:获取设备的版本号,需要在左边设备列表中选择需要测试的设备;
Reset:重置网关,左边设备列表,已添加的设备全部清空,并且 homeID 更换成新的;
Mpan Table :获取设备之间的路由信息表;
Remove Failed:判定是否坏节点,若是则移除设备
其他功能:不经常使用,可通过官方文档继续了解;
左边的数字,表示设备的 nodeID 号
Thermostat General 表示温控器(编译程序时已定义,不支持修改)
Power Switch Binary 表示灯光设备
表示当前 node 10 此温控器,目前支持的控制指令集
举例子:通过 z-wave 标准 Thermostat Mode 指令,控制 nodeID:10 温控器,将模式给制冷模式
0-关机,1-制热,2-制冷,6-通风,8-除湿
PS :Ver.1-Thermostat Mode,/Ver.2-Thermostat Mode,/Ver.3-Thermostat Mode
他们之间有什么区别呢?
答:Z-wave 的指令类迭代版本,版本号越大,他们支持功能越多;
PS:我们常用到指令集有哪些呢?
Configuration(配置:自定义指令)、Thermostat Fan mode(调节温控器的风速)、Thermostat mode(调节温控器的模式)等。
PS:如何获取温控器当前模式呢?
Thermostat mode Get 指令
Configuration 操作讲解(各厂家自定义协议):
1、确认当前是否为 configuration set
2、输入自定义的控制码指令:举例子 比如设置用户模式 05
3、字节设置:双字节(有一些公司使用单字节,具体查看应用场景)
4、设置参数值:由于我们是双字节,所以需要虽然 00 00,设置用户模式为 10-地暖模式,由于输入参数为十六进制,因此为 00 0A
5、点击 “Send” 发送指令
1、选择需要升级的设备
2、点击 get,获取选中的设备信息
3、点击 get,会自动显示
4、选择 Z-wave OTA 固件,目前支持.OTZ 和.hex 后缀文件;
5、点击 Update,会显示升级进度条
1、Test lterations 测试的次数
2、TxDelay ,ms 发送指令的速率
3、发送指令的内容,Basic set 0 表示关 Basic set 255 标识开
4、启动测试和暂停测试
5、发送指令失败条数
可以接收到设备向此网关发送的数据和网关向设备发送的数据
嗅探空气中 z-wave 通信消息,支持查看中规、欧规等信道;
如果设备使用 S2 加密通信,查看通信日志都是加密状态,需要输入通信秘钥查看;
一台电脑、一个探嗅 Zniffer 工具和 Z-Wave Zniffer secure 软件
嗅探 Zniffer 工具:
1、选择嗅探 Zniffer 工具的端口
2、选择嗅探环境的规格,目前使用 CN(CN-中规,EU-欧规,US-美规)
3、启动嗅探
1、Speed 设备之间通信的速率,目前只有支持 100KBit/s、40KBit/s、9.6KBit/s(发送和回复 100KBit/s 可判定为网关和设备为同规格)
2、RSSI 设备之间通信的信号强度,值越大表示信号越好
3、source 消息来源,表示这条数据从那发送,如果出现显示 12(13),表示当前发送来源为设备 12 做为中间转发,设备 13 为初始消息来源;若使用真实网关设备,不仅仅只有 01 是网关地址,有可能 02,03,04,05 都是网关地址;如下图 03 和 04;
4、Destination 消息目的地,表示这条数据最终到底地方,如果出现显示 012(001),012 表示当前到达的地方,001 表示最终到底地方;
5、HomeID 表示网关的地址,可以通过筛选方式,只显示当前测试网关数据
6、Application 表示通信的协议;
z-wave 支持的协议比较多,若想知道相关的协议,使用 Z-wave PC Controller 查看,以下讲解常用到的协议
一、Thermostat Mode Set 网关设置设备模式
举例子:网关 02 向设备 07 节点,发送关机指令
二、Thermostat Mode get 网关获取设备模式
三、 Thermostat Mode Report 设备模式上报
举例子:设备 08 向网关 02,上报关机指令
一、Thermostat Fan Mode set 网关设定风速
二、Thermostat Fan Mode get 网关获取设备模式
三、 Thermostat Fan Mode Report 设备模式上报
举例子:设备 027 向网关 04,上报自动风速
一、温度上报
Version:“9” 标识当前的指令最高支持 09 版本,可以不用理会,其他的指令一样道理;
Temperature(Version 1)=01 表示 温度
Sensor Value 0104 表示 上报温度值为 0X0104,转为十进制 260,面板应该显示为 26.0℃
二、湿度上报
Relative humidity(version 2)=05 表示湿度
Sensor Value 02D3 表示 上报湿度值为 0X02D3 ,转为十进制 723,面板应该显示为 72.3%
网关触发退网、入网时,会连续 1 分钟内发送指令(255 标识广播发送指令)
一、LTX.Broadcast 退网指令
二、Broadcast 入网指令
检测设备是否支持配网能力,可以通过触发此指令确认;
举例子:温控器经常要测试 z-wave 是否正常;
方法一,通过此方法,抓取此状态是否正常上报
方法二,通过添加入网关或者 PC Controller 确认,但是花费时间比较长
Parameter Number :0X2B,表示为自定义协议 0X2B 的参数值;举例子定义 0X2B 表示阀的状态
Size:002:表示两个字节;
Configuration Value :00 00, 表示参数值为 0;按照阀状态表示,表示关 1 阀、2 阀、关风机
详情查看自定义 z-wave Configuration 协议
一、单元测试:针对设备功能和支持协议测试;
将设备添加到 Z-Wave PC control 中,并同时使用 Z-Wave Zniffer 捕获通信情况;
一、针对 Z-wave 协议说明书和功能说明书,测试控制设备指令和设备上报指令
测试用例设定:正常范围,异常范围,不支持类型;
举例子:比如温控器模式支持制冷,制热,不支持除湿;
PC Control →设备
1、测试制冷切换到制热指令,制热切换到制冷指令,查看设备端切换状态(温控器类标准协议,制冷设定温度和制热设定温度独立分开)——验收条件,Zniffer 端查看到设备正常响应,设备端状态会随着指令设定而切换模式和设定温度;
2、测试制冷模式切换除湿模式或者制热模式切换除湿模式,查看设备端状态,——验收条件,Zniffer 端查看下发指令为除湿模式,Report 指令为依然为当前模式,设备端状态不会变化;
3、通过 Get 指令获取设备数据,并核对设备真实状态,举例子模式 Thermostat Mode 指令 01-制热,02-制冷,当前状态为 01-制热,通过 Get 获取设备状态,Report 上报数据依然为 01-HEAT,否则失败;
4、不支持类型下发指令,使用 PC Control 是无法实现,在添加设备过程中,设备已经上报支持类型给网关,网关也根据当前类型显示,但是可以通过网关后台指令设置;
设备→PC Control
1、切换设备模式,比如制冷模式切换到制热模式,在 Z-Wave Zniffer 可以查看当 Report 指令中为 01-HEAT;
2、查看设备端定时上报逻辑逻辑,比如需求要求 10 分钟上报设备模式,通过 Z-Wave Zniffer 软件(或者 PC Control 日志),在没触发设备模式时,查看 Thermostat Mode Report 指令;实际情况看业务逻辑,部分设备需求不需要自动上报数据,或者通过网关定时下发查询;
3、查看设备传感器变化上报逻辑,比如需求传感器温度±1℃时上报,通过 Z-Wave Zniffer 软件(或者 PC Control 日志),查看 Multilevel Sensor Report 中 Temperature(Version 1)=01 Sensor Value 和上次上报时,参数值是否相差±1℃
二、设备整体测试
将设备添加到网关中,并将设备绑定到 APP 上,同时使用 Z-Wave Zniffer 捕获通信情况;
1、通过 Xshell 查看 APP 下发到网关端的通信日志、网关下发设备日志、设备上报日志;
2、通过 Zniffer 工具查看网关和设备端通信过程日志;
3、通过 android studio 或者 Xcode 查看 APP 端的日志
在 APP 端控制设备,比如 APP 端关闭设备功能异常排查
将问题逐步拆解分析,但是需要日志系统支撑;
从 APP 端到设备端
1、Android Studio 或者 Xcode 端,可以查看到发送关闭设备的指令上报给云端,并核对上报参数格式;
2、查看云端日志,是否接收到 APP 上报的日志,判定是否接收到,内容格式是否符合标准;
3、在 Xshell 端,查看云端下发给网关日志,判定是否接收到,内容格式是否符合标准,此时查看转发给设备指令是否符合标准;可能存在网关网络问题,SDK 等问题,导致网关无法接收到指令;
4、在 Zniffer 软件,查看网关到设备端指令,指令内容是否正确,比如关机,如下所示,ACK 表示设备端接收到指令并应答;可能存在环境干扰问题或者设备距离问题,导致指令无法下发到设备的现象
5、查看设备端情况,设备处于关机状态,若未关机,先确定业务需求,设备是否处于某中逻辑状态,不能关机,否则应该关机;
6、若设备端支持 modbus RS485 协议,可以通过 modbus 工具查看设备数据状态;
从设备端到 APP 排查的思路和从 APP 端到设备端相反;
针对以上的问题,使用 Python +openzwave +Excel 表,开发时刻监听设备上报数据工具;
openzwave:https://github.com/OpenZWave/python-openzwave
实际的效果:
PS:若想实现自动化测试,可以通过 openzwave 框架,实现自动化测试工具开发,比如通过 modbus 指令控制设备,通过 openzwave 监控上报数据正确性;也可以通过 openzwave 下发指令,通过 modbus 指令查询设备状态数据,核对下发指令的情况;这样就不用点点点测试。
使用 Z-wave 官方提供的 Z-wave CTT 软件(Z-wave Compliance Test Tool),官方提供自动化测试工具,里面提供相关测试用例,目前公司产品认证通过;可以理解此工具类似 Android 系统 谷歌 CTS 认证测试一样,由官方提供相关测试软件,运行完成后输出测试报告,将设备和测试报告提供给官方。