SDDC 协议介绍

更新时间:
2023-08-09
下载文档

SDDC 协议介绍

本章将介绍 EdgerOS 的 SDDC 协议。

SDDC(Smart Device Discovery & Control,智能设备发现与控制)是 EdgerOS 专门为 Wi-Fi 和以太网通信技术的物联网设备定义的发现与控制通信协议。使用 SDDC 协议开发的物联网设备能被 EdgerOS 自动管理,因此推荐 Wi-Fi 和以太网通信技术的物联网设备使用 SDDC 协议与 EdgerOS 通信。

SDDC 协议功能

SDDC 协议实现了以下功能:

  • EdgerOS 发现设备
  • EdgerOS 邀请设备加入
  • 设备加入和退出 EdgerOS
  • EdgerOS 维持设备 Online 状态
  • EdgerOS 与设备间的双向数据通信,数据可加密,支持带有消息重传和确认的可靠通信方式

SDDC 协议流程

SDDC 协议流程如下图:

avatar

libsddc

为了方便开发者在 MCU 上使用 SDDC 协议,翼辉信息开发了 SDDC 协议的 C 语言版参考实现 libsddcopen in new window,目前 libsddc 支持 MS-RTOS(翼辉开发的一款微型安全物联网操作系统,将在后面的章节介绍)和 FreeRTOS(一个著名的开源免费的小型实时操作系统)及所有符合 POSIX 标准的嵌入式操作系统(如知名的国产大型实时操作系统 SylixOS 和鸿蒙 HarmonyOS)。

数据加密支持

libsddc 通过 MbedTLSopen in new window 支持数据加密通信,通过将 libsddc 工程配置头文件 libsddc/src/sddc_config.h 的配置宏SDDC_CFG_SECURITY_EN 定义为 1 来使数据加密:

#define SDDC_CFG_PORT              680U            // EdgerOS 端口
#define SDDC_CFG_RECV_BUF_SIZE     1460U           // 接收缓冲区大小
#define SDDC_CFG_SEND_BUF_SIZE     1460U           // 发送缓冲区大小

#define SDDC_CFG_NET_IMPL          "ms_esp_at_net" // MS-RTOS 网络实现名字

#define SDDC_CFG_MQUEUE_SIZE       6U              // 消息队列大小
#define SDDC_CFG_RETRIES_INTERVAL  500U            // 消息重传时间间隔,单位:毫秒
#define SDDC_CFG_EDGEROS_ALIVE     40U             // EdgerOS 保活时间,单位:消息重传时间间隔
#define SDDC_CFG_CONNECTOR_TIMEOUT 5000U           // 数据连接器接收超时时间,单位:毫秒

#define SDDC_CFG_DBG_EN            1U              // 是否使能调试信息
#define SDDC_CFG_WARN_EN           1U              // 是否使能警告信息
#define SDDC_CFG_ERR_EN            1U              // 是否使能出错信息
#define SDDC_CFG_CRIT_EN           1U              // 是否使能临界信息
#define SDDC_CFG_INFO_EN           1U              // 是否使能打印信息

#define SDDC_CFG_SECURITY_EN       1U              // 是否使能数据加密通信

#undef __FREERTOS__                                // 使用 FreeRTOS 时定义

如果使用了数据加密,在使用前需要调用 sddc_set_token 函数设置设备的密码,如下所示:

#if SDDC_CFG_SECURITY_EN > 0
    sddc_set_token(sddc, "1234567890");
#endif

由于加入 MbedTLS 会增加代码体积,某些对安全性要求低的设备(如只具备采集功能不具备控制功能的传感器),可以将数据加密关闭,从而降低对 MCU FLASH 容量的需求。

libsddc 编程

下表展示了 libsddc 相关的 API:

API功能
sddc_create创建 SDDC
sddc_set_uid设置唯一 ID
sddc_set_token设置加解密 token (设备密码)
sddc_set_invite_data设置 INVITE 数据
sddc_set_report_data设置 REPORT 数据
sddc_set_on_invite设置收到 INVITE 处理函数
sddc_set_on_invite_end设置 INVITE 完毕后处理函数
sddc_set_on_update设置收到 UPDATE 处理函数
sddc_set_on_edgeros_lost设置 EdgerOS 断开链接处理函数
sddc_set_on_message_lost设置消息 LOST 处理函数
sddc_set_on_message设置收到 MESSAGE 处理函数
sddc_set_on_message_ack设置收到 MESSAGE ACK 处理函数
sddc_run运行 SDDC
sddc_send_message向指定的 EdgerOS 发送 MESSAGE
sddc_broadcast_message向所有链接的 EdgerOS 发送 MESSAGE
sddc_connector_create创建一个连接到 EdgerOS 的数据连接器
sddc_connector_destroy销毁一个数据连接器
sddc_connector_fd获得数据连接器的文件描述符
sddc_connector_put发送数据到数据连接器
sddc_connector_get从数据连接器接收数据

详细的 API 说明和编程示例请参考 libsddc API

Wi-Fi 智能配网

当 Wi-Fi 物联网设备需要连接到智能边缘计算机 Spirit 1 的 Wi-Fi AP(Access Point),可以使用以下两种方法:

  • 在 Wi-Fi 物联网设备上预先配置好 Spirit 1 的 Wi-Fi AP 的 SSID 和密码
  • 使用 EdgerOS 支持的 SmartConfig 智能配网技术

SmartConfig 智能配网技术使得 Wi-Fi 物联网设备可以免配置加入 Spirit 1 的 Wi-Fi 网络,极大简化了 Wi-Fi 物联网设备的配置过程。

avatar

SmartConfig 流程

  1. 令 Wi-Fi 物联网设备进入 SmartConfig 模式,不同的 Wi-Fi 物联网设备进入 SmartConfig 模式的操作方式可能有所差异,比如长按某个功能按键数秒或快速连击某个功能按键数次

  2. 手机通过爱智 App 进入 EdgerOS 后,点击设备 App,进入设备管理界面:

    avatar

  3. 在设备管理界面,点击下方的加号图标进入扫描设备界面:

    avatar

  4. 在扫描设备界面,点击高级设置:

    avatar

  5. 配置 Wi-Fi 物联网设备需要连接到的 Spirit 1 的 Wi-Fi AP SSID 和密码(一般保持默认,即连接到当前手机连接到的 Spirit 1),打开启用 SmartConfig 开关,最后点击完成按钮:

    avatar

    启用 SmartConfig 后,扫描设备”页面右下角会出现 SmartConfig 提示:

    avatar

  6. 等待 SmartConfig 完成(即 Wi-Fi 物联网设备连接到指定的 Spirit 1 的 Wi-Fi AP),一般需要 15 秒左右。

添加设备流程

  1. Wi-Fi 物联网设备连接到 Spirit 1 的 Wi-Fi AP 后,会以 SDDC 协议连接 EdgerOS,EdgerOS 将发现新的设备:

    avatar

  2. 点击添加,即可把设备加入到 EdgerOS(如果是加密设备,需要输入设备密码,如上面代码的 1234567890)。

    avatar

SDDC 设备开发

我们将在《IoT Pi SDDC 设备开发》《ESP8266 SDDC 设备开发》章节介绍如何使用 libsddc 和 SmartConfig 智能配网技术开发一个能接入到 EdgerOS 的 Wi-Fi 物联网设备。

文档内容是否对您有所帮助?
有帮助
没帮助