一,设备端(下位机)与用户端(上位机)一对一

  • 很明显,我们在用开发板学习的时候是这种情况。一个开发板对应一个自己编写的用户端,通过三元组信息进行连接阿里云物联网平台。
  • 用户端我采用的是TCP直连的方式,通过MQTT协议,解析connect报文发送给物联网平台,之后再订阅和发布消息。
  • 设备端我采用的是STM32的开发板,利用sim800c模块连接阿里云平台。

二,如何进行一对多或多对多通信?

  • 首先,我们得创造产品和设备,在对规则引擎理解一文中,1.3 转发数据这一段中需要把转发的topic定义为无固定的deviceName,这样就可以让一个上位机通过选择目标设备进行发布消息。具体请参考该链接文章:https://blog.csdn.net/weixin_44101331/article/details/86244697

  • 然后,在阿里云产品文档:https://help.aliyun.com/document_detail/96598.html?spm=a2c4g.11186623.6.546.631c279fk47Ddl 中发现,为保障设备安全,物联网平台为设备颁发证书,包括产品证书(ProductKey和ProductSecret)与设备证书(DeviceName和DeviceSecret)。其中,设备证书与设备一一对应,以确保设备的唯一合法性。设备通过协议接入IoT Hub之前,需依据不同的认证方案,上报产品证书和设备证书,云端通过认证后,方可接入物联网平台。针对不同的使用环境,物联网平台提供了多种认证方案。可以采用一机一密和一型一密的方式。

1,一机一密

  • 一机一密指每个设备在出厂前已经在设备上烧写了设备三元组,设备使用设备的三元组来连接阿里云IoT物联网平台并进行设备的身份认证。

2,一型一密

  • 一型一密指设备在出厂前只需要烧写ProductKey和ProductSecret,然后设备连接阿里云IoT物联网平台并进行设备身份认证。

3,两者之间的区别

  • 设备烧写内容不同:
  • 由于每个设备的DeviceName和DeviceSecret都是不一样的,这意味着在产线上生产时每个设备上烧写的身份信息都不同,需要对产线进行一定的改造,确保每个设备的三元组不一样。
  • 一型一密烧写的是ProductKey和ProductSecret,这两个参数对于同一个型号的所有设备都是一样的,这意味着在产线上向每个设备烧写的身份信息是一样的,因此烧写过程稍微简单一些
  • 过程不同:
  • 一机一密在设备上烧写三元组即可;
  • 一型一密需要把厂家为每个设备定义设备唯一标识,比如MAC地址或者序列号。然后厂商需要将该唯一标识上传到阿里云IoT物联网平台,当设备连接阿里云IoT物联网平台时,云平台需要判断设备的唯一标识是否在云端已登记,如果没有那么认证将失败。 阿里云物联网设备端与用户端匹配问题-LMLPHP
    注:产品使用一型一密认证方式认证成功后,云端将为这个设备生成DeviceSecret并传输到设备,设备需要将该密码保存起来,即使设备reset也不能清除。因为之后的SDK将会调用该DeviceSecret进行后续的认证。

三,一机一密和一型一密怎么操作?

阿里云产品文档有具体操作,如下链接:

对一型一密的进一步划重点

显然,对于许多工厂的流水线产品,对于安全性要求又不高,设备数量又大,此时采用一型一密最为简便。

  1. 在已创建产品的产品详情页面,开启动态注册开关。
  2. 在该产品下,添加设备。添加成功的设备状态为未激活。
    因设备激活时会校验DeviceName,建议采用可以直接从设备中读取到的ID,如设备的MAC地址、IMEI或SN号等,作为DeviceName使用。 对于sim800c,在模块上面有IMEI号。或者找模块厂商咨询。
  3. 使用设备端SDK,设置好了之后,填入ProductKey和ProductSecret,可以测试,自己在产品下创建一个设备A,编译程序后得到Device Secret。即验证成功,后续将连接云平台。

云端接口说明中,C.1设备身份注册,我们可以看到具体的操作过程。

01-18 05:55