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 透传格式(透传/自定义)数据
上面的流程说明如下:
3.2 非透传格式(Alink JSON)数据
上面流程说明如下:
4. 调用设备服务或设置属性
4.1 异步服务调用或属性设置
上面流程说明如下:
4.2 同步服务调用
上面的流程说明如下:
5. 拓扑关系
上面的流程说明如下:
二、消息解析
物联网平台定义设备消息的标准数据格式为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的数据(上行数据)全流程图:
自定义Topic消息解析脚本编写方法,参见:
3. 物模型消息解析
数据格式为透传/自定义的产品下的设备与云端进行物模型数据通信时,需要物联网平台调用您提交的消息解析脚本,将上、下行物模型消息数据分别解析为物联网平台定义的标准格式(Alink JSON)和设备的自定义数据格式。
物联网平台接收到来自设备的数据时,先运行解析脚本,将透传的消息数据转换成Alink JSON格式的数据,再进行业务处理;物联网平台下发消息给设备前,也会先通过脚本将消息数据转换为设备的自定义格式,再下发给设备。
数据解析流程图:
设备上报透传格式的属性或事件(上行数据)全流程图:
调用设备服务或设置属性(下行数据)全流程图:
物模型数据解析脚本编写示例,请参见:
若设备为LoRaWAN节点设备,请参见LoRaWAN设备消息解析。
三、Alink数据
我们可以从串口看到Alink协议下,消息的内容:
详细的解析说明可以参考这里:物模型属性、事件、服务的Alink JSON数据格式和Topic_阿里云物联网平台(IoT)-阿里云帮助中心 (aliyun.com)