LV02-01-天猫精灵IOT-05-Alink协议-01-Alink协议介绍

本文主要是天猫精灵IOT Alink协议——Alink协议简介的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
Windows版本 windows11
Ubuntu版本 Ubuntu22.04的64位版本
VMware® Workstation 16 Pro 16.2.3 build-19376536
终端软件 MobaXterm(Professional Edition v23.0 Build 5042 (license))
点击查看本文参考资料
分类 网址 说明
官方网站 阿里云 阿里云官网主页
阿里生活物联平台 生活物联网平台(飞燕平台)主页
AliGenie 天猫精灵开放平台AliGenie主页
阿里物联网平台 阿里物联网平台主页
Bluetooth 技术网站 蓝牙协议规范什么的可以来这里找
Telink Telink | Chips for a Smarter IoT (telink-semi.com)
Telink中文官网
开发手册 AliOS Things开发指南 AliOS Things开发指南,这里是最新版本,可以直接从官网找到
AliOS Things开发指南 AliOS Things应用开发指南,这里应该是3.3版本的完整开发文档
AliOS Things开发指南(3.0) AliOS Things应用开发指南,这里应该是3.0版本的完整开发文档
生活物联网平台开发文档 生活物联网平台(飞燕平台)开发文档
《设备端开发指南》
Wi-Fi IoT品类定义与功能开发 天猫精灵IoT开放平台——Wi-Fi IoT品类定义与功能开发
硬件平台 mk3080 WiFi开发板 WiFi开发板使用指南-阿里云开发者社区
esp8266开发板 一个教程:ESP8266-NodeMCU开发板详解-太极创客 (taichi-maker.com)
TLSR8258 Datasheet Datasheet for Telink BLE + IEEE802.15.4 MultiStandard Wireless SoC TLSR8258
参考资料 AliOS Things 3.0 应用开发指南 这个只是一篇参考文章,里面是一些环境搭建相关的,可以参考
IP知识百科 - 华为 (huawei.com) IP的一些相关知识点
点击查看相关文件下载
分类 网址 说明
蓝牙规范相关文档 Core Specification 5.2 核心规格 5.2,该规范定义了创建可互操作的Bluetooth 设备所需的技术。
《Core_v5.2.pdf》
Mesh Model(v1.1) 本Bluetooth 规范定义了模型(以及它们所需的状态和消息),这些模型用于在mesh 网络中的节点上执行基本功能,超出了Bluetooth Mesh 配置文件 规范中定义的基础模型。
本规范包括定义跨设备类型标准功能的通用模型,以及支持关键mesh 场景的模型,如照明控制、传感器、时间和场景。
《MshMDL_v1.1.pdf》
Mesh Profile(v1.0.1) 该Bluetooth 规范定义了基本要求,以实现可互操作的mesh 网络解决方案,用于Bluetooth 低能量无线技术。
《MshPRFv1.0.1.pdf》
Mesh Device Properties 本规范包含Bluetooth Mesh 配置文件 和Bluetooth Mesh 模型规范所要求的设备属性的定义。
但是跟之前的有些区别,我主要看的之前的版本:《MMeshDeviceProperties_v1.2.pdf》
GATT Specification Supplement GATT Specification Supplement | Bluetooth® Technology Website。
好像可以在线看:《GATT Specification Supplement》
Assigned Numbers GATT的一些类型定义可以在这里找。
AliOS Things alios-things/AliOS-Things Gitee上的AliOSThings SDK源码仓库
alibaba/AliOS-Things GitHub上的AliOSThings SDK源码仓库
天猫精灵蓝牙Mesh协议栈 alibaba-archive/genie-bt-mesh-stack GitHub上的天猫精灵蓝牙Mesh协议栈源码仓库。
之前是在alibaba/genie-bt-mesh-stack这个仓库。
写笔记的时候最新提交为faf523618a6a2560090fc423222b9db80984bb7a
蓝牙Mesh设备开发指南 阿里云生活服务平台开发手册——蓝牙设备开发一节中的内容

我们知道我们的物联网开发板与天猫精灵开发板之间是通过MQTT协议进行数据交互的,但是MQTT协议只是定义了这个消息的主题,那么消息的内容就需要我们自己来定义了,在AliOSThings中,消息内容使用的协议就是阿里开发的Alink协议啦,接下来就来了解一下吧。相关内容我们可以参考:如何基于Alink协议建立设备与物联网平台的通信_阿里云物联网平台(IoT)-阿里云帮助中心 (aliyun.com)

一、Alink协议简介

1. 概述

Alink协议是针对物联网开发领域设计的一种数据交换规范,数据格式是JSON,用于设备端和物联网平台的双向通信,更便捷地实现和规范了设备端和物联网平台之间的业务数据交互。我们的开发板跟天猫精灵进行交互的时候就遵循Alink协议,Alink协议是是封在MQTT消息内容里面的。物联网平台各功能的Alink协议说明,如下表所示。

功能 数据格式说明
设备接入 设备身份注册管理拓扑关系子设备上下线
消息通信 设备属性、事件、服务设备期望属性值
设备管理 子设备禁用、启用、删除设备标签设备网络状态设备分发;设备影子设备任务文件上传
监控运维 OTA升级设备日志上报远程配置远程登录

2. 上线流程

设备在物联网平台的上线流程,可以按照设备类型,分为直连设备与子设备的接入流程。主要包括:设备注册、激活上线和数据上报三个流程。直连设备接入有两种方式:

  • 使用一机一密方式提前烧录设备证书(ProductKey、DeviceName和DeviceSecret),注册设备,上线,然后上报数据。
  • 使用一型一密动态注册提前烧录产品证书(ProductKey和ProductSecret),注册设备, 上线,然后上报数据。

子设备接入流程通过网关发起,具体接入方式有两种:

  • 使用一机一密提前烧录设备证书(ProductKey、DeviceName和DeviceSecret),子设备上报设备证书给网关,网关添加拓扑关系,复用网关的通道上报数据。
  • 使用动态注册方式提前烧录ProductKey,子设备上报ProductKey和DeviceName给网关,物联网平台校验DeviceName成功后,下发DeviceSecret。子设备将获得的设备证书信息上报网关,网关添加拓扑关系,通过网关的通道上报数据。
设备上报数据

3. 设备上报属性或事件

3.1 透传格式(透传/自定义)数据

设备透传数据

上面的流程说明如下:

image-20231217161219788 Alink 数据

上面流程说明如下:

image-20231217161351921

4. 调用设备服务或设置属性

4.1 异步服务调用或属性设置

Alink 数据传输

上面流程说明如下:

image-20231217161558965

4.2 同步服务调用

Alink 数据传输

上面的流程说明如下:

image-20231217161709520

5. 拓扑关系

Alink 数据传输

上面的流程说明如下:

image-20231217161916759

二、消息解析

物联网平台定义设备消息的标准数据格式为Alink JSON。对于低配置且资源受限或者对网络流量有要求的设备,不适合直接构造JSON数据与物联网平台通信,可将原数据透传到物联网平台。物联网平台提供消息解析功能,可以根据您提交的脚本,将消息数据在设备自定义格式和JSON格式之间转换。详细的可以参考这里:通过消息解析将设备数据自定义格式转换成JSON格式_阿里云物联网平台(IoT)-阿里云帮助中心 (aliyun.com)

1. 背景信息

目前支持解析两类消息:

  • 自定义Topic上行消息:将设备通过自定义Topic上报给物联网平台云端的自定义格式数据Payload解析为JSON格式。
  • 上、下行物模型Topic的消息:将设备上报给物联网平台云端的自定义格式物模型数据解析为Alink JSON格式;将云端下发的Alink JSON格式数据解析为设备自定义的格式。

2. 自定义Topic消息解析

设备通过自定义Topic发布消息,且Topic携带解析标记(?_sn=default)时,物联网平台接收消息后,先调用您在物联网平台控制台提交的消息解析脚本,将设备上报的自定义格式数据的Payload解析为JSON结构体,再进行业务处理。数据解析流程图:

数据解析流程

设备上报自定义Topic的数据(上行数据)全流程图:

custom topic data parse

自定义Topic消息解析脚本编写方法,参见:

3. 物模型消息解析

数据格式透传/自定义的产品下的设备与云端进行物模型数据通信时,需要物联网平台调用您提交的消息解析脚本,将上、下行物模型消息数据分别解析为物联网平台定义的标准格式(Alink JSON)和设备的自定义数据格式。

物联网平台接收到来自设备的数据时,先运行解析脚本,将透传的消息数据转换成Alink JSON格式的数据,再进行业务处理;物联网平台下发消息给设备前,也会先通过脚本将消息数据转换为设备的自定义格式,再下发给设备。

数据解析流程图:

物模型数据解析

设备上报透传格式的属性或事件(上行数据)全流程图:

设备透传数据

调用设备服务或设置属性(下行数据)全流程图:

Alink 数据传输

物模型数据解析脚本编写示例,请参见:

若设备为LoRaWAN节点设备,请参见LoRaWAN设备消息解析

三、Alink数据

我们可以从串口看到Alink协议下,消息的内容:

image-20231217164151175

详细的解析说明可以参考这里:物模型属性、事件、服务的Alink JSON数据格式和Topic_阿里云物联网平台(IoT)-阿里云帮助中心 (aliyun.com)