基于SIP和ZigBee的物联网家庭网关设计
扫描二维码
随时随地手机看文章
引言
物联网带动了继互联网之后全球信息产业的又一次科技与经济浪潮,智能家居及家庭网络无疑是物联网的热点应用领域。家庭网关是连接公网和家庭内网的喉舌,负责家庭内部设备对公网的访问、交互,用户从公网上对家庭网络访问、控制,以及家庭内部设备的互联等操作。物联网家庭网关需要具备宽带接入、业务识别和控制信息转发等功能。
1SIP的概念
会话起始协议(SessionInitiationProtocol,SIP)是由互联网工程任务组(InternetEngineeringTaskForce,IETF)于1999年提出的一个基于IP网络实现复杂通信应用的应用层信令协议。
SIP是一个C/S协议,包含用户代理(UserAgent,UA)和网络服务器(Server)两类组件。SIP终端系统上运行的与用户交互的软件称为用户代理,网络服务器为用户代理提供注册、认证、鉴权、路由等服务。SIP呼叫建立和SIP会话功能依靠SIPUA及SIPServer实体完成。
SIP协议定义了两种类型的消息:请求和响应。SIP请求包含INVITE、ACK、BYE、CANCEL、OPTIONS,REGISTER等六种基本方法,以及SUBSCRIBE、NOTIFY、PUBLISH等扩展方法。SIP响应包含1xx、2xx、3xx、4xx、5xx、6xx等六类消息。
SIP消息的3个基本部分消息类型、消息头和消息体均可扩充,并且SIP采用基于UTF-8字符集的文本编码形式实现,可十分简便地对消息进行扩展,使之适应各种具体的应用场景。
2ZigBee技术
ZigBee基于IEEE802.15.4标准,在众多短距离无线通信协议中,ZigBee技术有以下优势:
⑴成本低,开发相对容易,芯片CC2530的售价不到2美元,且免费提供ZigBee通信协议和开发工具;
能耗低,CC2530正常使用时功率不到1W;
可靠;
(4)组网方式灵活。
ZigBee技术的唯一缺点是传输速率不高,但也完全能满足物联网家庭网络中的无线感知与监控需要。
3系统总体架构
图1所示是物联网家庭网络架构。釆用ZigBee协议构建家庭网络时,可连接各种传感器、继电器(家电及控制设备)与家庭网关。在ZigBee无线家庭网络中,传感器、继电器担任终端的角色,家庭网关中的ZigBee主控模块担任协调器的角色。家庭网关上集成了ZigBee协调器与SIPServer的功能,能同时实现ZigBee网络协调器功能、SIP与ZigBee协议数据格式的转换功能以及经SIP协议到Internet的访问权。SIP/ZigBee网关按SIP协议规范,代理ZigBee网络内的各种传感节点及继电器节点设备;家庭成员可通过SIP协议由SIPUA经Internet访问家庭网关,实现对家庭内传感器信息的获取,以及对家庭设备的远程访问和控制。
家庭网关的一个重要作用就是实现公网中SIP协议与家庭网络中ZigBee协议与数据格式的转换。本文采用如图2所示的协议模型,图2中,左侧为ZigBee网络协议模型,右侧为SIP协议模型,中部为物联网家庭网关协议模型。
4家庭网关的硬件设计
硬件上采用DMATEK的DMA210XP整合平台,整合了ZigBee协调器ZB2530-03模块,两者间采用串口交换数据。图3所示是本系统家庭网关的硬件设计图。
图3中的DMA210XP采用具有先进ARMCortexA8核心的SamsungS5PV210处理器,该处理器采用先进的ARMCortexA8核心,运算速度可达1GHz,且自带32/32KB指令一级缓存,512KB二级缓存。具备128M×8片共1GBDDR2SDRAM,
512MBSLCNANDFlash外部内存;另有SD卡接口、MicroSD(T-Flash)卡接口、USB接口、网口、串口、音频接口、CMOSSensor摄像头接口、CAN总线接口、HDMI接口、GSensor接口等,并有16.7M色800×4807.0inTFT电容式多点触摸液晶屏,达到图形监控与收集资料的应用。
ZigBee协调器ZB2530-03模块由TI公司的核心芯片CC2530F256及其外围电路组成。CC2530F256是用于2.4GHzIEEE802.15.4/ZigBee应用的一个片上系统(SoC)解决方案。它以非常低的总的材料成本(约2美元)建立强大的网络节点。CC2530F256结合了领先的RF收发器的优良性能,具备业界标准的增强型8051CPU,256KB可编程闪存,8KBRAM,低功耗,高接收灵敏度和抗干扰性能,以及许多其他强大的功能,其电路图如图4所示。
5家庭网关的软件设计
5.1协议栈的实现
本系统采用开源的libosip2、eXosip2来实现SIPUA,并采用开源的OPENSER实现SIPServer。家庭网关采用linux操作系统,SIPServer在linux环境下编译、调试。
采用TI提供的ZStack协议栈[4]实现IEEE802.15.4/ZigBee协议栈,而采用IAR嵌入式集成开发环境具有在线下载、调试、仿真等功能。
5.2各操作的SIP协议实现
任何访问家庭网关及网络的SIPUA均要向位于家庭网关的SIPServer注册,以获得身份认证及访问权限,注册用RRGISTER方法实现。
为了能实时远程获取家庭网络内各类传感器采集到的监测信息,SIPUA需要向SIPServer订阅家庭网络中事件的变化。当所订阅的事件状态发生变化时,订阅者会接收到来自通告者的通知。订阅用SUBSCRIBE方法实现,通知用NOTIFY方法实现[5]。
SIPUA通过Internet远程控制家电设备的开启或关闭,利用INVITE方法实现。
SIPUA向SIPServer注册
图5所示是SIPUA向家庭网关注册的关系图。其注册步骤如下:
SIPUA发送REGISTER消息到SIPServer。
SIPServer返回40l响应给SIPUA,要求认证。
SIPUA加入认证信息,重新向SIPServer进行注册。
SIPServer检查REGISTER消息参数合法性。若参数合法且正确,贝峋SIPUA返回200OK,完成注册;若参数不合法或不正确,则返回403Forbidden,表明注册失败。
注册成功后,SIPUA需要按指定超时时间进行刷新注册,否则SIPServer令其注销。
SIPUA订阅家庭监测信息
图6所示是SIPUA订阅家庭监测信息示意图。该过程可分为两步:其一是SIPUA发送SUBSCRIBE消息给SIPServer订阅远端家庭网络传感节点监测信息;其二是SIPServer检查SUBSCRIBE消息参数的合法性,同时查询该用户是否具有相应的订阅权限,并根据查询结果对SIPUA做
200OK或403Forbidden回执。
5.5家庭网络信息发布和更新
图7所示是家庭网络信息发布和更新示意图。SIPServer/ZigBee协调器实时汇聚ZigBee网络内各传感节点的采集值,若监测到某订阅的ZigBee传感器感测值有变化,及时构造相应的NOTIFY消息发送给成功订阅该事件的SIPUA。
5.6SIPUA远程控制家庭设备
图8所示是用SIPUA远程控制家庭设备的原理图。SIPUA远程控制家庭设备时,SIPUA首先发送INVITE消息给SIPServer,以请求远程控制家庭设备。之后,SIPServer解析INVTIE请求,并向对应的家电设备(继电器)发出控制命令(打开或关闭)。若家电设备正常动作且发回正确应答,则按图8(a)所示信令流程继续本次SIP会话;若家电设备未能正常动作或未发回正确应答,则按图8(b)所示信令流程,由SIPServer向SIPUA回应486Busy应答,以结束本次SIP会话。
6SIPXML消息体的设计
在SIPSUBSCRIBE,NOTIFY及INVITE方法的XML消息体中携带与ZigBee家庭网络通信的数据内容。采用XML格式的消息体为管理ZigBee家庭网络提供了高度的灵活性和高效率的实施方法。
6.1用SUBSCRIBE方法设计XML消息体实例
(1)示例一:订阅温湿度传感器监测信息。
<?XMLversion=v1.0vencodingsvutf-8”?><subscribe>
<temprature></temprature>
<humidity></humidity>
</subscribe>
(2)示例二:订阅安防监测信息。
<?XMLversion=”1.0”encoding^'utf-8”?>
<subscribe>
<body></body>
</subscribe>
6.2用NOTIFY方法设计XML消息体实例
(1)示例一:发布和更新温湿度信息。
<?XMLversion='1.0'encodings'utf-8'?>
<notify>
<temprature>26.5</temprature><humidity>58.2</humidity>
</notify>
分别在<temprature>和<humidity>的XML字段中携带温度与湿度值。
(2)示例二:发布和更新安防信息。
<?XMLversion='T.0"encoding="utf-8"?>
<notify>
<body>Y</body>
</notify>
Y表示有人闯入,N表示无人。
6.3用INVITE方法设计XML消息体
<?XMLversion="1.0"encoding="utf-8"?>
<command>
<open>Y</open>
<item>aircon</item>
</command>
在<open>字段中携带开或关的指令,Y表示开,N表示关;在<item>字段中携带要操控的设备,例如aircon表示空调,curtain表示窗帘。
SIPServer需要完成SIP协议与串口数据格式的双向转换,从串口接收ZigBee主控汇聚的监测信息供SIP上层应用使用,从SIP方法的XML消息体中提取指令转换为串口数据格式,发向ZigBee协调器模块。
7ZigBee无线通信数据格式设计
在ZigBee家庭网络中,位于家庭网关中的ZigBee协调器负责接收和汇聚各类传感器采集到的监测信息,并将接收到的信息通过串口发往上层SIP应用(ZigBee串口与ZigBee无线数据格式一致),同时将从串口接收到的控制指令发往各继电器(家电)。
7.1协调器接收格式
发送端的传感器格式(byte1~byte10)如图9所示。
在图9中,byte1byte2:传感器端数据发送的固定头,固定为0xFA0xFB;byte3:数据类型的标识,0x00为温湿度,0x01为安防,0x02为火焰,0x03为烟雾,0x04表示可燃气体;byte4:传感数据长度(统一为0x04);byte5〜byte8:传感器采集到的具体数据;byte9:保留;byte10:byte1〜byte9校验值(相加取低8位)。
7.2协调器发送数据格式
接收端家电设备(继电器)的格式(byte1〜byte10)如图10所示。
在图10中,byte1byte2:协调器端数据发送控制继电器命令的固定头0xFA0xFB;byte3:协调器端数据发送对象和继电器序号(0x01为发送命令给继电器1端,表示空调;0x02为发送命令给继电器2端,表示电灯;0x03表示发送命令给继电器3端,表示窗帘;0x04为发送命令给继电器4端,表示电饭煲,依此类推……);byte4:命令长度,固定为0x04;byte5:发送给继电器的命令内容(0x02为关闭,0x01为开启);byte6〜byte9:保留:byte10:byte1〜byte9校验值(相加取低8位)。
7.3家电设备(继电器)应答数据格式
本系统的接收端协调器格或byte1〜byte9)如图11所示。
图11中,byte1〜byte4表示收到的数据原值返回;byte5〜byte8为应答码,固定为0xAA0xBB0xCC0xDD;byte9为byte1〜byte8校验值(相加取低8位)。
8结语
家庭网关在物联网智能家居网络中具有重要地位,本文从硬件和协议数据格式上对家庭网关进行了设计,通过SIPXML消息体和ZigBee无线通信数据格式的设计,能很好实现家庭网关对协议及数据格式的转换功能,实现基于SIP协议的公网访问基于ZigBee协议的家庭网络。
20211024_61753711dd4c5__基于SIP和ZigBee的物联网家庭网关设计