1. ALink协议

Alink协议是针对物联网开发领域设计的一种数据交换规范,数据格式是JSON,用于设备端和物联网平台的双向通信,更便捷地实现和规范了设备端和物联网平台之间的业务数据交互。


2. ALink封装的功能

序号 功能配置 说明
01 基础函数库 为连云等功能提供基础函数
02 MQTT 基于MQTT协议连接阿里云物联网平台
03 TLS 传输层加密机制
04 物模型 使用属性、事件、服务构成的物模型描述设备
05 OTA 固件升级和远程配置
06 时间同步 基于MQTT协议从云平台获取标准时间
07 设备影子 基于MQTT协议将设备的状态上报和云端的指令下发缓存在云端JSON文档中
08 设备日志 基于MQTT协议将设备日志上报到云端
09 设备标签 基于MQTT协议向云平台操作设备标记
10 引导服务 引导全球设备就近连接服务器
11 子设备管理 基于MQTT协议的子设备注册,拓扑管理和上下线功能
12 设备诊断 基于MQTT协议,将设备诊断信息上报到云端
13 任务管理 设备端任务的下发与管理
14 远程登录 提供控制台远程登录 Linux 设备能力
  • 01-03是协议基础功能
  • 04-14是业务扩展功能封装,视平台不同实现


3. 基于Linux平台的LinkSDK代码分析以上功能的实现

3.06 时间同步

ntp_posix_demo.c

  1. MQTT连接 host a13FN5TplKq.iot-as-mqtt.cn-shanghai.aliyuncs.com port 443
  2. 发送请求 /ext/ntp/a13FN5TplKq/ntp_basic_demo/request
    {"deviceSendTime":"1621389853873"}
    
  3. 服务端返回
    {"deviceSendTime":"1621389853873","serverSendTime":"1621389853910","serverRecvTime":"1621389853910"}
    

似乎只调整了日志时间,并未修改系统时间

3.08 设备日志

logpost_basic_demo.c

实时向服务端上pub设备日志

3.10 引导服务

bootstrap_posix_demo.c

  1. https://iot-auth-global.aliyuncs.com/auth/bootstrap port 443 POST
  2. 参数为
    productKey=a13FN5TplKq&deviceName=bootstrap_posix_demo&clientId=a13FN5TplKq.bootstrap_posix_demo&resources=mqtt
    
  3. 返回值
    {
        "code":200,
        "data":{
            "instanceId":"iotx-oxssharez200",
            "resources":{
                "mqtt":{
                    "host":"public.iot-as-mqtt.cn-shanghai.aliyuncs.com",
                    "ip":"101.133.196.24",
                    "port":1883
                    }
                    }
             },
             "message":"success"
     }
    
  4. 根据获取到的host、port建立MQTT连接
  5. 订阅 topic=”/sys///thing/bootstrap/notify" 会收到平台端下发新的地址信息

3.14 远程登录

remote_access_basic_demo.c

  1. MQTT连接 host g7ajBMM0oVN.iot-as-mqtt.cn-shanghai.aliyuncs.com port 443
  2. 创建反射代理线程 remote_proxy_thread
  3. 订阅sub /sys/g7ajBMM0oVN/RJ6G0A8aXfqlxB05dyXq/edge/debug/switch
  4. 平台下发开启指令 {"status":1}
  5. 建立通道 host backend-iotx-remote-debug.aliyun.com, port 443
  6. 平台下发登录指令 连接本地22端口

如果本地未开启sshd,将无法登录