作者:Jay

基于zstack 的zigbee3.0 第一个例程

Z-Stack 3.0 Sample Application User's Guide.pdf->1.2 Sample Projects 详细介绍了例程的功能,这里我们选择跑通SampleLight / SampleSwitch 描述的功能,中间可能涉及led和key的驱动移植,同时通过抓包详细了解其网络建立、设备加入网络以及数据交互,至此,对zigbee和z-stack有个感性认识。

Z-Stack 3.0 Sample Application User's Guide.pdf->3 Using the Sample Applications->3.2.1 SampleLight, SampleSwitch 详细介绍了该样例的功能。从描述来看,SampleLight 作为常供电设备扮演协调器角色,同时通过LED1用以指示灯开关,可以通过菜单导航,确认按键本地开关LED1,SampleSwitch因为是电池设备工作在终端设备模式,同时通过液晶的菜单导航能够远程开关 SampleLight的LED1。

  • 烧写SampleLight 观测网络流程,并且移植按键和和可能的LED指示,通过按键能够翻转LED1;
  • 烧写SampleSwitch 样例,观察设备加入流程,移植按键远程开关作为协调器的SampleLight的LED1;
  • 为了方便抓包观察,更改SampleLight...

base device behavior

bdb 是zigbee 应用层上面的纯接口层,提供了设备操作网络相关的交互行为,也就是bdb已经概况总结了可能的人机操作网络的行为(例如,建立网络/加入网络/离开网络),并且规划成接口,方便应用层直接调用,从而进一步规范厂商的应用行为,达到标准化。

从功能上划分面归纳如下行为:

包含未加入网络设备的如下行为:

  • 信道扫描;
  • 选择一个开放网络执行关联加入;
  • 获取 network key;
  • 集中式安全网络的tc link key获取;

而对于已经加入网络的设备的:

  • 控制mac运行设备加入180s(开放网络);
  • 关闭网络;
  • 信道扫描;
  • 选择一个合适信道,并且初始化网络参数;
  • 作为协调器的集中式安全网络以及tc(信任中心)建立;
  • 作为路由可能的分布式网络下的建立;

  • 广播 identify query request 并且接收回复;
  • 请求 simple descriptor;
  • 匹配 initiator 和 target的cluster;
  • 在绑定表创建对应关系;

这是分布式安全网络的两个设备之间的快速网络建立/设备加入机制,该流程区分常规的关联设备加入流程,看起来类似作为子节点的终端设备和父节点失联后,发起的孤儿节点宣告寻找父...

what's new in zigbee3.0

swra615a_what's_new_in_zigbee3.0.pdf

Webinar_ZigBee_3-0_Launch_FINAL.pdf

  • 子设备管理

    父设备通过邻居表管理子设备年龄,并且设置默认超时值,当然子设备可以通过TimeoutRequest更改该超时值,子设备通过轮询数据默认复位该超时值,如果设备连续无响应并且累计达到该累计值。父节点将发送LeaveRequest标记该设备离开网络,并且允许重新加入。

  • 父节点宣告命令

    ParentAnnounce 消息已经作为支持路由设备(路由、协调器)强制命令,用以通知其他支持路由的设备其子设备的加入,通过地址0xFFFC进行广播用以同步该设备在该网络中被重启过并且已经重新加入。该数据行为通常发生设备加入网络后10-20秒。

  • tc

    r21(r22向下兼容)zigbee 3.0 约定加入集中式安全网络必须发起TCLinkKey更新流程,获取的 tc link key 用以加密之后的aps 层通信,NodeDescriptor 同样会在关联加入流程中发生用以指示zigbee 版本,r21的协调器(同时作为tc)可以配置接受或拒绝早期未发起tc link 更新流程的兼容设备。注意,唯一(相对于全局)的tc link key 会增加作为tc 协调器内存资源。

  • install code

    默认地,tc link key获取都是通过新加入网络设备发起数据请求。现...

windows node 开发环境建立

本文详细介绍基于gac-350 门禁的node windows 开发环境的搭建,以及用以该门禁远程编译调试node工程。

gac-350 smart-device-node 工程代码通过gitlab管理.

gac-350 smart-device-node 通过typescript 编码实现,ts通过解释成js后运行。

集成开发环境使用itellij,习惯vs的可以选择vs201x/vscode.

gac-350 门禁通过supervisor守护node 工程运行,程序入口通过supervisor配置文件到npm start 再到 packge.json 包管理的start命令。

itellij 直接通过 ide itellij idea官方下载,直接双击安装,成功安装后破解参考IntelliJ IDEA 最新注册码

  • 修改本机host文件

  • 添加注册码

node 解释器和sdk通过nodejs.org,成功下载后双击默认安装。

成功安装itellij后通过New->Project->node->Node.js and...

man bash redirection

Before a command is executed, its input and output may be redirected using a special notation interpreted by the shell. Redirection allows commands' file handles to be duplicated, opened, closed, made to refer to different files, and can change the files the command reads from and writes to. Redirection may also be used to modify file handles in the current shell execution environment. The following redirection operators may precede or appear anywhere within a simple command or may follow a command. Redirections are processed in the order they appear, from left to right.

Each red...

理解json 数据类型

和亮哥对json的数据类型有了争议,这里直接dump http的post 数据。分析如下post数据的false值。

对比了如上的false值,发现还是一个字符串。

beyond compare 使用记录

  • beyond compare 4 key

  • 使用到期后提示需要注册,并且不能打开软件,亦或者在注册 Beyond Compare 选项会一闪而过,不能弹出输入密钥窗口。

    删除安装文件夹的BCUnrar.dll。

  • 使用如上密钥一段时间后提示密钥已注销。

    尝试删除C:\Users\Mdp-Jay\AppData\Roaming\Scooter Software\Beyond Compare 4 xml 文件。

chromium is‘t full screen

尝试直接将 chromium F11 全屏,无效。

尝试设置chromium 窗口大小。

直接杀死chromium 窗口确定这里灰边为桌面背景。

直接启动chromium也确定未全屏。

原来,chromium 有一个kiosk-mode专门用以全屏模式,尝试任然无效,所以推测很有可能是桌面环境设置的问题。

对比了正常和异常的桌面环境配置~/.config对比,找到了/home/pi/.config/lxsession/LXDE/desktop.conf 不一致,同时也验证了窗口管理器openbox 未启动。

~/.config/lxsession/LXDE/desktop.conf 文件是来自于/etc/xdg/lxsession/LXDE/desktop.conf 拷贝。通过~/.cache/lxsession/LXDE/run.log 日志可以确定。

lightdm

DM(显示管理器)功能如下:

  • 启动和管理本地实例化的X Server;
  • 用户认证;
  • 启动和管理用户回话(常用情景);
  • 在boot过程中,单例启动X 服务器和开始一个用户会话((kiosk mode));
  • 在boot过程中,单例启动 X服务器,显示用户登录界面,在连接时启动用户会话;
  • 支持多用户同时登录,用户选择具体用户登录,同时为每一个 用户启动 X 服务器;
  • 允许 X 服务器,使用XDMCP,运行瘦客户端远程连接到其他X 服务器。
  • 快速

    不增加其他额外的启动时间;

  • 异常安全

    处理所有

  • Display Manager - A daemon that manages the displays on a system.
  • Display - A combination of an X server, greeter and a user session.
  • User session - An application that runs on a display and allows the user to run applications.
  • Greeter - An application to run on a display and prompt for authentication and session options.

Daemon:

  • Able to run as as system service withou...