前言
上次开箱那个 Spirit 1 之后去他们官网逛了一圈。我在他们的资料里面发现一个有意思的玩意。在他们的 EdgerOS 物联网设备开发 文章里面发现一句话:
智能操作系统 EdgerOS 和智能边缘计算机 Spirit 1 支持 Wi-Fi、ZigBee、LoRa 物联网无线通信技术和以太网通信技术,使用这些通信技术开发的物联网设备只要适配 EdgerOS 支持的通信协议都可以接入到 EdgerOS。
原来他们官网上的开放生态是这个意思啊。意思是说不管啥设备,啥平台,只要软件上接入协议,就能加入进来了,实现了硬件无关性。没啥限制和条件,不需要申请也不需要审核资质接上去就能用?
SDDC是什么?
SDDC 协议(Smart Device Discovery & Control,智能设备发现与控制)是 EdgerOS 专门为 Wi-Fi 和以太网通信技术的物联网设备定义的发现与控制通信协议。
目前官方放出了C语言版本的参考实现.。也就是我上面链接的那个 SDDC代码,根据头文件的定义:
#ifdef __MS_RTOS__
#include "sddc_msrtos.h"
#elif defined(SYLIXOS)
#include "sddc_posix.h"
#elif defined(__FREERTOS__)
#include "sddc_freertos.h"
#else
#error "Please porting to you RTOS!"
#endif
官方版本除了他们自己的 ms-rtos 外还对比较常见的 free-rtos 和 标准 posix 接口进行了兼容,这基本上覆盖了嵌入式常见的操作系统了。
我看了一下 SDDC 底层协议是 UDP,发送数据包是 JSON,应用程序开发人员直接拿到处理好的字符串用就完事了。
SDDC 协议功能
EdgerOS 发现设备
EdgerOS 邀请设备加入
设备加入和退出 EdgerOS
EdgerOS 维持设备 Online 状态
EdgerOS 与设备间的双向数据通信,数据可加密,支持带有消息重传和确认的可靠通信方式
SDDC 协议流程
上图分别是 SDDC 的五种功能,五种报文。我这里挑比较复杂和特殊的报文说一下
设备加入时:
EdgerOS 那边会一直广播 Discover 报文,未加入的传感器设备这边收到广播的 Discover 报文之后会回复一个 Report 报文(里面是一些传感器设备的信息)EdgerOS 收到 Report 报文后回复一个 Invite 报文,传感器设备收到之后会回应是否同意邀请
维持通道:
他们这在UDP基础上自己做了一个伪链接,通过心跳包(代码和打印中显示的 ping 包)来维持通道。
不过我用 ESP32 的时候掉线很严重,看样子好像是丢包导致的。换成安信可的 ESP32S 和 DF 的 ESP32E 就没这问题。可能是ESP32信号不好?
ZDDC 协议
除了上面说的SDDC之外,他们还做了一个 ZDDC协议.,是 EdgerOS 专门为 ZigBee 设备定义的发现与控制通信协议。并且使用 ZDDC 协议开发的设备能被 EdgerOS 自动管理。
Spirit 1 带有 ZigBee 芯片,实现了 ZigBee 网络架构中的 Coordinator(协调器)节点功能。在使用 Spirit 1 和 ZigBee 设备组网时,并不需要使用市面上销售的 ZigBee 网关。
ZDDC 协议接入比较复杂,可以参考官方的ZDDC 设备开放.这里就不再赘述了。
DDC 协议特点
我开始看到SDDC和ZDDC的时候看名字就知道它们之间有联系,认为他们是同一个协议不同的平台,但是看了代码好像又不是这么一回事。直到我看到了这篇文章协议设备操作 中写道:
EdgerOS 支持各种类型的物联网设备。支持的协议包括:MQTT、MQTT-SN、CoAP、SDDC、Zigbee Home Automation等。SDDC设备和Zigbee Home Automation设备可以直接操作使用Device模块。MQTT、MQTT-SN、CoAP设备可以通过该模块获取相关设备资源和描述,直接使用MQTT和CoAP模块操作设备。
原来他们是在上层对这两个协议进行了统一,这样应用开发者就不需要关心下面传感器端是什么通信方式了。
总结
这个 DDC 协议挺有意思的,确实很开放也很便捷,特别是对于上层应用开发者来说,完全不用去了解下面传感器,,对嵌入式开发者来说上传数据也方便,这两个协议能够实现跨不同厂家设备访问,实现纯软件对不同厂家同一类设备的访问控制。
我知道国外一些大厂也在推统一接入协议,没想到国内居然也有人在做!看到了物联网统一控制的曙光啊!真不错的玩意,我有点爱上它了,
美中不足的就是现在抓包不太方便,后面自己写个出来,请大家持续关注。