首页 前端知识 阿里云物联网平台 | 透传与ICA标准数据格式(Alink JSON)| 定值SDK非动态注册与动态注册 | SOC 4G模组移植方案

阿里云物联网平台 | 透传与ICA标准数据格式(Alink JSON)| 定值SDK非动态注册与动态注册 | SOC 4G模组移植方案

2024-05-31 20:05:06 前端知识 前端哥 29 837 我要收藏

文章目录

    • 一、透传与ICA标准数据格式(Alink JSON)
    • 二、定值SDK选非动态注册还是动态注册
    • 三、SOC+4G模组移植方案
    • 四 、多次运行“动态注册-连接云端”的程序,会报错

一、透传与ICA标准数据格式(Alink JSON)

  透传和ICA标准数据格式(Alink JSON)是物联网设备与阿里云物联网平台进行数据交换时采用的两种不同的数据格式。

  • 透传
      设备直接上报原始数据,如二进制数据流。物联网平台接收到原始数据后,会根据开发者在控制台提交的脚本进行解析,将原始数据转换成标准的数据格式(Alink JSON格式)。
    • 透传方式适用于资源受限或对网络流量有特殊要求的设备。
    • 透传数据的Topic通常包含“up_raw”和“down_raw”,分别用于上报和下发数据。
    • 透传方式需要在物联网平台控制台配置数据解析脚本,以便将透传的数据转换为Alink JSON格式。
  • ICA标准数据格式(Alink JSON):
      设备按照物联网平台定义的标准数据格式生成消息并上报,即直接构造和上报JSON格式的数据。这种方式适用于资源相对充足、能够生成标准JSON格式数据的设备。
      Alink JSON数据格式遵循特定的协议结构,包括“id”、“version”、“params”等字段,方便云端进行标准化处理。Alink JSON的数据Topic通常包含“property”、“event”、“service”等,对应不同的业务场景。

  透传方式和ICA标准数据格式的主要区别在于数据的上报和处理方式。透传方式需要额外的脚本解析步骤,而ICA标准数据格式则直接使用平台定义的格式,简化了数据的上报和处理流程。
在这里插入图片描述

二、定值SDK选非动态注册还是动态注册

  在阿里云物联网平台中,SDK定制时选择动态注册与不选择动态注册的主要区别在于设备认证和接入物联网平台的方式不同

  • 选中动态注册

    • 一型一密:选中动态注册后,设备使用一型一密的认证方式,即每个设备类型(ProductKey)共享一个产品密钥(ProductSecret),而每个设备(DeviceName)在首次接入时需要动态获取自己的设备密钥(DeviceSecret)。
    • 动态获取认证信息:设备在首次连接到物联网平台时,通过HTTPS动态注册功能,利用产品密钥和设备名称向物联网平台申请设备密钥。这一过程通常涉及到生成随机数、签名算法等步骤,以确保安全性。
    • 简化设备接入:动态注册功能允许设备在没有预烧录设备密钥的情况下接入物联网平台,从而减少了生产成本和复杂性。
    • 适用场景:适合设备数量较多,不希望为每个设备烧录唯一设备密钥的场景。
  • 不选中动态注册

    • 预注册:不选择动态注册意味着每个设备在接入物联网平台前都需要预先注册,并且拥有自己的设备密钥(DeviceSecret)。
    • 固定认证信息:每个设备在生产或部署时就需要烧录固定的设备认证信息,包括产品密钥(ProductKey)、设备名称(DeviceName)和设备密钥(DeviceSecret)。
    • 适用于小规模部署:适合设备数量较少,或者对安全性有特别要求需要每个设备独立认证的场景。选择动态注册可以减少设备烧录的复杂性,特别是在有大量设备需要部署时。而不选择动态注册则可能在安全性上更为固定和明确,适用于对设备安全性有特殊要求的场合。
      在这里插入图片描述

三、SOC+4G模组移植方案

Linux+L610模组使用AT框架

四 、多次运行“动态注册-连接云端”的程序,会报错

forlinx@ubuntu:~/Desktop/LinkSDK$ ./output/dynreg-basic-demo 
establish tcp connection with server(host='iot-auth.cn-shanghai.aliyuncs.com', port=[443])
success to establish tcp, fd=3
local port: 35404
[1715233929.561][LK-1000] establish mbedtls connection with server(host='iot-auth.cn-shanghai.aliyuncs.com', port=[443])
[1715233929.698][LK-1000] success to establish mbedtls connection, (cost 51386 bytes in total, max used 54570 bytes)
[1715233929.699][LK-040B] > POST /auth/register/device HTTP/1.1
[1715233929.699][LK-040B] > Host: iot-auth.cn-shanghai.aliyuncs.com
[1715233929.699][LK-040B] > Accept: text/xml,text/javascript,text/html,application/json
[1715233929.699][LK-040B] > Content-Type: application/x-www-form-urlencoded
[1715233929.699][LK-040B] > Content-Length: 148
[1715233929.699][LK-040B] > 

[LK-040C] > 70 72 6F 64 75 63 74 4B  65 79 3D 6B 31 34 67 66 | productKey=k14gf
[LK-040C] > 63 4F 34 64 76 4F 26 64  65 76 69 63 65 4E 61 6D | cO4dvO&deviceNam
[LK-040C] > 65 3D 6A 72 30 32 26 72  61 6E 64 6F 6D 3D 33 36 | e=jr02&random=36
[LK-040C] > 31 30 34 36 34 33 33 37  26 73 69 67 6E 3D 39 30 | 10464337&sign=90
[LK-040C] > 43 37 32 32 39 31 46 36  31 35 33 44 45 37 37 43 | C72291F6153DE77C
[LK-040C] > 45 38 38 39 43 46 45 37  30 34 45 46 32 37 39 34 | E889CFE704EF2794
[LK-040C] > 33 33 36 38 44 34 38 36  35 37 34 41 46 45 45 35 | 3368D486574AFEE5
[LK-040C] > 31 46 43 30 35 39 38 44  31 43 32 41 39 34 26 73 | 1FC0598D1C2A94&s
[LK-040C] > 69 67 6E 4D 65 74 68 6F  64 3D 68 6D 61 63 73 68 | ignMethod=hmacsh
[LK-040C] > 61 32 35 36                                      | a256            

[1715233929.836][LK-040D] < HTTP/1.1 200 OK
[1715233929.836][LK-040D] < X-Application-Context: iotx-base:vpc-sh-nc:7001
[1715233929.836][LK-040D] < Content-Type: text/xml
[1715233929.836][LK-040D] < Content-Length: 138
[1715233929.836][LK-040D] < Date: Thu, 09 May 2024 05:52:09 GMT
[1715233929.836][LK-040D] < 

[LK-040E] < 7B 22 63 6F 64 65 22 3A  32 30 30 2C 22 64 61 74 | {"code":200,"dat
[LK-040E] < 61 22 3A 7B 22 64 65 76  69 63 65 4E 61 6D 65 22 | a":{"deviceName"
[LK-040E] < 3A 22 6A 72 30 32 22 2C  22 64 65 76 69 63 65 53 | :"jr02","deviceS
[LK-040E] < 65 63 72 65 74 22 3A 22  65 34 37 30 35 32 32 64 | ecret":"e470522d
[LK-040E] < 30 64 66 64 66 31 37 37  63 31 65 32 61 62 35 39 | 0dfdf177c1e2ab59
[LK-040E] < 36 32 34 30 62 37 30 66  22 2C 22 70 72 6F 64 75 | 6240b70f","produ
[LK-040E] < 63 74 4B 65 79 22 3A 22  6B 31 34 67 66 63 4F 34 | ctKey":"k14gfcO4
[LK-040E] < 64 76 4F 22 7D 2C 22 6D  65 73 73 61 67 65 22 3A | dvO"},"message":
[LK-040E] < 22 73 75 63 63 65 73 73  22 7D                   | "success"}      

status code: 200
device secret: e470522d0dfdf177c1e2ab596240b70f
11111111111111111111111111111
[1715233929.836][LK-0313] MQTT user calls aiot_mqtt_connect api, connect
[1715233929.836][LK-032A] mqtt host: iot-06z00acdkajapm7.mqtt.iothub.aliyuncs.com
[1715233929.836][LK-0317] user name: jr02&k14gfcO4dvO
establish tcp connection with server(host='iot-06z00acdkajapm7.mqtt.iothub.aliyuncs.com', port=[1883])
success to establish tcp, fd=4
local port: 45360
[1715233929.889][LK-1000] establish mbedtls connection with server(host='iot-06z00acdkajapm7.mqtt.iothub.aliyuncs.com', port=[1883])
[1715233930.013][LK-1000] success to establish mbedtls connection, (cost 51300 bytes in total, max used 54484 bytes)
[1715233930.069][LK-0313] MQTT connect success in 233 ms
AIOT_MQTTEVT_CONNECT
[1715233930.069][LK-0309] sub: /sys/k14gfcO4dvO/jr02/thing/deviceinfo/update_reply
[1715233930.070][LK-0309] pub: /sys/k14gfcO4dvO/jr02/thing/deviceinfo/update

[LK-030A] > 7B 22 69 64 22 3A 22 31  22 2C 22 76 65 72 73 69 | {"id":"1","versi
[LK-030A] > 6F 6E 22 3A 22 31 2E 30  22 2C 22 70 61 72 61 6D | on":"1.0","param
[LK-030A] > 73 22 3A 7B 22 4C 69 67  68 74 53 77 69 74 63 68 | s":{"LightSwitch
[LK-030A] > 22 3A 30 7D 7D                                   | ":0}}           

suback, res: -0x0000, packet id: 1, max qos: 1
heartbeat response
[1715233930.204][LK-0309] pub: /sys/k14gfcO4dvO/jr02/thing/deviceinfo/update_reply

[LK-030A] < 7B 22 63 6F 64 65 22 3A  34 36 30 2C 22 64 61 74 | {"code":460,"dat
[LK-030A] < 61 22 3A 7B 7D 2C 22 69  64 22 3A 22 31 22 2C 22 | a":{},"id":"1","
[LK-030A] < 6D 65 73 73 61 67 65 22  3A 22 65 6D 70 74 79 20 | message":"empty 
[LK-030A] < 70 61 72 61 6D 73 22 2C  22 6D 65 74 68 6F 64 22 | params","method"
[LK-030A] < 3A 22 74 68 69 6E 67 2E  64 65 76 69 63 65 69 6E | :"thing.devicein
[LK-030A] < 66 6F 2E 75 70 64 61 74  65 22 2C 22 76 65 72 73 | fo.update","vers
[LK-030A] < 69 6F 6E 22 3A 22 31 2E  30 22 7D                | ion":"1.0"}     

pub, qos: 0, topic: /sys/k14gfcO4dvO/jr02/thing/deviceinfo/update_reply
pub, payload: {"code":460,"data":{},"id":"1","message":"empty params","method":"thing.deviceinfo.update","version":"1.0"}
heartbeat response
heartbeat response
heartbeat response
heartbeat response
heartbeat response
heartbeat response
^C
forlinx@ubuntu:~/Desktop/LinkSDK$ ^C
forlinx@ubuntu:~/Desktop/LinkSDK$ ./output/dynreg-basic-demo 
establish tcp connection with server(host='iot-auth.cn-shanghai.aliyuncs.com', port=[443])
success to establish tcp, fd=3
local port: 50900
[1715234092.990][LK-1000] establish mbedtls connection with server(host='iot-auth.cn-shanghai.aliyuncs.com', port=[443])
[1715234093.114][LK-1000] success to establish mbedtls connection, (cost 51386 bytes in total, max used 54570 bytes)
[1715234093.114][LK-040B] > POST /auth/register/device HTTP/1.1
[1715234093.114][LK-040B] > Host: iot-auth.cn-shanghai.aliyuncs.com
[1715234093.114][LK-040B] > Accept: text/xml,text/javascript,text/html,application/json
[1715234093.114][LK-040B] > Content-Type: application/x-www-form-urlencoded
[1715234093.114][LK-040B] > Content-Length: 148
[1715234093.114][LK-040B] > 

[LK-040C] > 70 72 6F 64 75 63 74 4B  65 79 3D 6B 31 34 67 66 | productKey=k14gf
[LK-040C] > 63 4F 34 64 76 4F 26 64  65 76 69 63 65 4E 61 6D | cO4dvO&deviceNam
[LK-040C] > 65 3D 6A 72 30 32 26 72  61 6E 64 6F 6D 3D 31 39 | e=jr02&random=19
[LK-040C] > 33 30 35 33 34 39 31 38  26 73 69 67 6E 3D 46 37 | 30534918&sign=F7
[LK-040C] > 41 31 32 44 42 41 32 30  36 31 33 46 34 44 36 37 | A12DBA20613F4D67
[LK-040C] > 38 35 43 36 46 38 31 42  35 31 37 45 46 41 45 44 | 85C6F81B517EFAED
[LK-040C] > 42 34 35 30 35 42 45 37  30 45 31 46 46 42 39 32 | B4505BE70E1FFB92
[LK-040C] > 41 46 34 34 35 30 45 41  30 45 46 41 32 46 26 73 | AF4450EA0EFA2F&s
[LK-040C] > 69 67 6E 4D 65 74 68 6F  64 3D 68 6D 61 63 73 68 | ignMethod=hmacsh
[LK-040C] > 61 32 35 36                                      | a256            

[1715234093.239][LK-040D] < HTTP/1.1 200 OK
[1715234093.239][LK-040D] < X-Application-Context: iotx-base:vpc-sh-nc:7001
[1715234093.239][LK-040D] < Content-Type: text/xml
[1715234093.239][LK-040D] < Content-Length: 50
[1715234093.240][LK-040D] < Date: Thu, 09 May 2024 05:54:52 GMT
[1715234093.240][LK-040D] < 

[LK-040E] < 7B 22 63 6F 64 65 22 3A  36 32 38 39 2C 22 6D 65 | {"code":6289,"me
[LK-040E] < 73 73 61 67 65 22 3A 22  64 65 76 69 63 65 20 69 | ssage":"device i
[LK-040E] < 73 20 61 6C 72 65 61 64  79 20 61 63 74 69 76 65 | s already active
[LK-040E] < 22 7D                                            | "}              

aiot_dynreg_recv failed: -0x0604

please check variables like produt_key, device_name, product_secret in demo

第二次运行时,返回的云端响应码为6289
在这里插入图片描述
多次运行程序,可以理解为在某一DeviceName下多次激活该设备,而同一组设备证书只能用于激活一个物理设备,因此会报错。


未完待续!!!

转载请注明出处或者链接地址:https://www.qianduange.cn//article/10342.html
评论
发布的文章

npmjs官网(查询依赖包)

2024-06-07 00:06:56

npx使用及原理

2024-06-07 00:06:36

npm 包管理工具

2024-06-07 00:06:33

vue 思极地图开发

2024-06-07 00:06:28

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!