zigbee设备与网关、后端服务器的绑定、通信
正常的控制命令等都是使用此网络地址
这个地址也叫短地址
设备入网时会向整个网络广播自己的长短地址,此时协调器可以从广播的数据包中拿到设备的长短地址
获取此地址的方法是读取Devic_annce数据包
方法如下
在系统初始化时注册ZOD消息
如下,第三行便是
#ifdef ZDO_COORDINATORzclGenericApp_InitUart();ZDO_RegisterForZDOMsg ( zclGenericApp_TaskID, Device_annce );bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_FINDING_BINDING);
#else#endif
在系统任务中添加接收消息回调函数
#ifdef ZDO_COORDINATORcase ZDO_CB_MSG:zclGenericApp_processZDOMgs( (zdoIncomingMsg_t *)MSGpkt );break;#else#endif
此部分添加位置如下图
然后便是编写回调函数
从zdoIncomingMsg_t结构体中可以看到device_annce数据包包含的内容
typedef struct
{osal_event_hdr_t hdr;zAddrType_t srcAddr;uint8 wasBroadcast;cId_t clusterID;uint8 SecurityUse;uint8 TransSeq;uint8 asduLen;uint16 macDestAddr;uint8 *asdu;uint16 macSrcAddr;
} zdoIncomingMsg_t;
其中结构体secAddr中包含的便是长短地址数据
如下
typedef struct
{union{uint16 shortAddr;ZLongAddr_t extAddr;} addr;byte addrMode;
} zAddrType_t;
此时只需在回到函数中定义相同类型数据并赋值此结构体相应成员即可获取长短地址,
但是这里有点问题,长地址虽然有定义但是设备貌似并没有进行发送,所以一直获取不到,
短地址是可以的
方法按如下
static void zclGenericApp_processZDOMgs(zdoIncomingMsg_t *pMsg)
{ switch ( pMsg->clusterID ) {case Device_annce:{uint8 databuf[20];uint16 shortAddr;shortAddr = pMsg->srcAddr.addr.shortAddr;printf("nwkID:%X\r\n",shortAddr);uint8 i;uint8 *xad;uint8 IEEE_buf[Z_EXTADDR_LEN*2+1];xad = aExtendedAddress+ Z_EXTADDR_LEN - 1;for (i = 0; i < Z_EXTADDR_LEN*2; xad--){uint8 ch;ch = (*xad >> 4) & 0x0F;IEEE_buf[i++] = ch + (( ch < 10 ) ? '0' : '7');ch = *xad & 0x0F;IEEE_buf[i++] = ch + (( ch < 10 ) ? '0' : '7');}IEEE_buf[Z_EXTADDR_LEN*2] = '\0';sprintf(databuf,"%s@%x\r\n",IEEE_buf,shortAddr);HalUARTWrite(HAL_UART_PORT_0,databuf,20);break;}default:break;}
}
此时便可以从串口接收到设备入网时的短地址了,
协调器长地址与设备短地址使用@符号进行连接,最后在串口打印,这样上位机便可以区分设备是处于哪一个协调器网络下
同时可以使用短地址对网络内的指定设备进行控制
获取本机IEEE地址方法就有很多了此处省略
zigbee设备与网关、后端服务器的绑定、通信相关推荐
- api网关 网页服务器,api网关 定义后端服务器
api网关 定义后端服务器 内容精选 换一换 通过以下方法确保API网关调用后端服务器的安全:为API绑定签名密钥.在绑定签名密钥后,API网关到后端服务的请求增加签名信息,后端服务收到请求后计算签名 ...
- 智能家居系统中网关与服务器如何连接?
原文点击打开链接 在新型智能家居系统中,家庭网关将取代PC机作为家庭控制中心.传统客户端/服务器模式不能保持家庭网关与远程服务器实时连接.基于百万级的家庭网关与服务器保持长连接的目的,采用主从服务器框 ...
- 智能网关与服务器连接简介
在新型智能家居系统中,家庭网关将取代PC机作为家庭控制中心.传统客户端/服务器模式不能保持家庭网关与远程服务器实时连接.基于百万级的家庭网关与服务器保持长连接的目的,采用主从服务器框架进行负载均衡,心 ...
- 我的 Serverless 实战 — Serverless 架构理念 ( 后端服务器发展 | Serverless 与 ServerFul | Serverless 定义 | 架构优缺点 )
文章目录 一.后端服务器架构发展 二.Serverless 与 ServerFul 三.Serverless 定义 四.Serverless 优缺点 [本文正在参与 "100%有奖 | 我的 ...
- 【ZigBee 系列】| 网关的构成?用 JN51X9 的案例来讲解框架及各部分的功能
物联网时代刚兴起那会,总是有人对网关这个词不甚了解!不过经过这些年的市场教育,已经很少人问了. 不过网关具体是如何实现,如何工作的,今天我们通过 NXP JN51X9 的网关方案,来详细的进行说明,希 ...
- 为什么我推荐Nginx作为后端服务器代理
1. 前言 我们真实的服务器不应该直接暴露到公网上去,否则更加容易泄露服务器的信息,也更加容易受到攻击.一个比较"平民化"的方案是使用Nginx反向代理它.今天就来聊一聊使用Ngi ...
- 游戏页面显示服务器未开,网关游戏服务器未开启
网关游戏服务器未开启 内容精选 换一换 通过以下方法确保API网关调用后端服务器的安全:为API绑定签名密钥.在绑定签名密钥后,API网关到后端服务的请求增加签名信息,后端服务收到请求后计算签名信息, ...
- 网站域名可以绑定2个服务器吗,服务器可以绑定几个域名
服务器可以绑定几个域名 内容精选 换一换 您可以通过Web应用防火墙服务对不再防护的网站执行删除操作.如果您已开通企业项目,您可以在企业项目下拉列表中选择您所在的企业项目,删除该企业项目下域名.已添加 ...
- 小米 ZigBee 设备接入 ThingsCloud 物联网平台实战
智能家居场景中,我们通过架设自己的 Zigbee 网关,可以将米家的 Zigbee 设备轻松接入 ThingsCloud.借助 ThingsCloud 平台的内置应用和开放性,我们可以在很多行业项目和 ...
最新文章
- python可以从事什么工作-对话极客晨星:现在学Python 长大可以从事什么工作?...
- 计算机一代的特点,计算机的特点_第一代计算机的特点
- R语言入门3---R语言六大基本数据结构
- python文本聚类分析_python机器学习kmeans算法——对文本进行聚类分析
- 中国到底需要多少博士点?
- Flowable 数据库表结构 ACT_RU_EVENT_SUBSCR
- 用css3和jquery实现的渐变的动态进度条
- 简单的INSERT语句
- Modbus协议使用常见问题分析
- IT前景---网络工程师规划之路
- office commmunication server 2007企业版关于通讯簿共享权限问题(无法同步)
- mysql中添加外键语句_数据库语句怎么加外键
- 倾斜摄影——3维建模软件PhotoScan教程(附安装包+教学视频)
- JavaWeb——JavaScript精讲之DOM、BOM对象与案例实战(动态添加删除表格)
- php重定向和伪静态,「PHP重定向与伪静态区别」- 海风纷飞Blog
- python -- 拉勾网爬虫模拟登录
- [python爬虫之路day20]:CrawSpider爬取微信小程序社区技术帖
- [CATransaction flush] 作用详解
- 在 Kubernetes 上部署 Traefik Ingress
- 网页搜索指定网站内容site
热门文章
- 室内打灯之射灯及灯罩
- 软件测试周刊(第72期):所谓学问,学学问问,就学会了嘛。最怕你不愿去学,不肯去问。
- 港股第四家“造车新势力“,零跑汽车通过IPO聆讯
- linux中安装maven插件,Maven插件wagon
- 梦幻西游平安夜服务器微信,[另类原创]平安夜
- 2021全国大学生数学建模竞赛D题思路
- android安卓导航栏高度是多少,Android--状态栏高度,导航栏高度,Window高度,DecorView高度,heightPixels...
- 基于JAVA药品管理系统演示录像2021计算机毕业设计源码+系统+数据库+lw文档+部署
- 云南昆明网站建设整体解决方案、怎么样做好一个有价值的网站
- python版本升级后编译_ubuntu18.04下源码编译安装最新版本Python3