赞
踩
OneNet在2023年4月23日,对NB-IoT套件、MQTT套件、和物生活平台进行融合升级,升级后的新版OneNET物联网开放平台将通过统一的入口。 之前写的教程里都是以原旧版本的MQTT套件为主,现在升级新版本之后,之前的教程截图就不适用了。很多小伙伴不知道新版本的OneNet如何使用,当前文章就以汽车行驶数据采集项目
为例,介绍新版本的OneNet平台如何使用。
随着汽车技术的不断发展,汽车的智能化程度越来越高,实时监测和采集汽车行驶数据已成为必要的技术手段。因此,本设计将通过STM32主控芯片和OneNet云平台,设计一款汽车行驶数据采集系统,用于采集汽车行驶过程中的速度、转速、油量、蓄电池电压、转向角度、GPS定位等信息,并实时上传到OneNet云端进行显示。
(1)STM32F103RCT6主控芯片
本系统的主控芯片采用STM32F103RCT6,具有64KB Flash存储器、20KB SRAM存储器和512B EEPROM存储器,支持多种外设接口,包括CAN总线、SPI、I2C等。
(2)CAN总线收发器
CAN总线收发器用于连接汽车上的CAN总线,将CAN总线上传来的数据进行解析和存储。
(3)NB-IoT模块
本系统采用NB-IoT模块作为通信模块,实现数据上传到OneNet云平台。其中,NB-IoT模块采用BC26模块,支持多种通信方式,包括TCP/UDP/MQTT/CoAP等协议。
(4)GPS模块
GPS模块用于获取车辆的定位信息,通过串口与主控芯片进行通信。
(5)传感器模块
本系统还包括多个传感器模块,包括速度传感器、转速传感器、油量传感器、蓄电池电压传感器和转向角度传感器。这些传感器模块通过模拟输入口连接到STM32主控芯片,用于采集汽车行驶过程中的实时数据。
(1)CAN总线数据采集
本系统通过CAN总线收发器连接汽车上的CAN总线,将CAN总线上传来的数据进行解析和存储,包括速度、转速、油量、转向角度等信息。
(2)GPS定位数据采集
本系统通过GPS模块获取车辆的定位信息,通过串口与主控芯片进行通信,并将获取的GPS数据进行解析和存储。
(3)传感器数据采集
本系统还包括多个传感器模块,包括速度传感器、转速传感器、油量传感器、蓄电池电压传感器和转向角度传感器。这些传感器模块通过模拟输入口连接到STM32主控芯片,用于采集汽车行驶过程中的实时数据。
(4)NB-IoT数据上传
本系统采用NB-IoT模块作为通信模块,实现数据上传到OneNet云平台。通过AT指令将采集到的数据通过MQTT协议上传到OneNet云平台,并在云平台上进行实时显示和存储。
官网地址:https://open.iot.10086.cn/
选择MQTT物联网开发平台。
创建产品。
设备管理。
填写设备信息。
创建完毕。
查看设备详情。
物模型就是onenet之前的数据流模板升级之后的东西。它的作用用于存放设备上传的数据。
接下来根据自己的设备需要上传的数据信息进行添加字段。
字段添加完成。
当前添加的字段如下:
车速 | speed | float(单精度浮点型) | 取值范围:0-300 | 只读 |
---|---|---|---|---|
转向角 | angle | float(单精度浮点型) | 取值范围:0-360; 单位:角度 | 只读 |
电池电压 | voltage | float(单精度浮点型) | 取值范围:0-100 | 只读 |
GPS定位数据 | GPS | struct(结构体) | - | 只读 |
设备属性查看页面,在这个页面可以看到设备上传的数据。
在产品详情和设备详情页面,可以看到ID和key,这个在后面设备登录和可视化页面设计里非常有用。
产品access_key: L8elH4E9n6+pT7UhvUHZOzur2wvrE7FrJxWjCX9TDak=
产品ID: lbAzSXWa62
设备密匙:dnNvZ0FqSUc2QU1VWVpWMm5KbDhUQ2JPUm9LcHpXTmc=
设备名称: dev1
帮助文档:https://open.iot.10086.cn/doc/v5/develop/detail/248
服务地址
设备接入支持标准MQTTV3.1.1版本,接入服务地址如下:
连接协议 | 地址 |
---|---|
MQTT | mqtts.heclouds.com:1883 |
IP地址和端口号:
IP: 183.230.40.96
端口号: 1883
设备安全认证
产品、设备创建时,平台为每类产品、每个设备均分配了唯一的 key,设备登录时需要使用通过key计算出的访问token 来进行访问安全认证。
设备可通过MQTT connnect报文进行登录,connect报文中三要素填写方法如下:
参数 | 是否必须 | 参数说明 |
---|---|---|
clientId | 是 | 设备名称 |
username | 是 | 平台分配的产品ID |
password | 是 | 填写经过 key 计算的 token |
MQTT密匙获取
https://open.iot.10086.cn/doc/v5/fuse/detail/913
工具软件里需要填写的参数如下:
【1】res选项参数的格式: products/{产品ID}/devices/{设备名称}
【2】et是设置token过期时间:算出1970-1-1到你想要设置的到期时间,单位是秒,填入即可。
比如: 超时时间设置为2024-4-7,那么,这里填入的秒就是:1970-1-1到2024-4-7之间的秒单位时间。
【3】key的参数格式: 就是设备创建之后,在设备详情页的key
MQTT登录参数的总结:
IP地址:183.230.40.96
端口号:1883
MQTT客户端ID:dev1
MQTT用户名:lbAzSXWa62
MQTT登录密码: version=2018-10-31&res=products%2FlbAzSXWa62%2Fdevices%2Fdev1&et=207998147912&method=md5&sign=t4lFh84qj3spvsx7a554og%3D%3D
接下来使用MQTT软件模拟设备登录。
在软件里填入对应的参数,点击登录。
然后打开onenet的后台页面。 可以看到设备已经在线了。
OneJSON协议是针对物联网开发领域设计的一种数据交换规范,数据格式是JSON,用于设备端和物联网平台的双向通信,更便捷地实现和规范了设备端和物联网平台之间的业务数据交互。
设备接入流程,可以按照设备类型,分为直连设备和子设备接入。主要包括:设备注册、上线、绑定拓扑和数据上报三个流程。
(1) 设备使用OneJSON指定主题,上报数据
(2) 平台对数据进行业务处理,包含格式验证、数据存储等,如果配置了规则引擎,数据将流转到用户配置的消息目的地,推送方式支持HTTP(S)、MQ等
(3) 平台返回数据上报结果
(4) 开发者也可以通过控制台或公开API查询上报的数据
(1) 开发者通过公开API或控制台发起获取属性请求
(2) 平台将根据物模型定义验证请求参数
(3) 平台将数据请求发给设备
(4) 平台等待设备响应,如果等待超时,将返回超时错误信息
(5) 设备处理完请求之后,把需要的设备属性返回给平台
(6) 平台收到设备最新属性后,对设备属性进行校验,将结果返回给开发者
同步服务调用及属性设置
(1) 通过调用对应API接口来调用同步服务(定义服务时,调用方式选择为同步的服务即为同步调用)
(2) 平台将根据物模型定义验证输入参数
(3) 平台将数据下发给设备
(4) 平台等待设备响应,如果等待超时,将返回相应错误信息
(5) 设备处理完数据之后,把处理结果返回给平台
(6) 平台收到设备处理结果后,对设备输出参数进行校验,将结果返回给开发者
异步服务调用
(1)通过调用对应API接口来调用同步服务(定义服务时,调用方式选择为异步的服务即为异步调用)
(2) 平台对输出参数进行校验,并返回处理结果给开发者
(3) 平台采用异步方式将数据下发
(4) 设备收到数据后,进行业务处理
(5) 设备完成业务处理后,返回处理结果给平台
(6) 平台对设备返回的输出参数进行验证
(7) 如果配置了规则引擎,数据将流转到用户配置的消息目的地,推送方式支持HTTPS、MQ等
网关和子设备绑定拓扑关系后,子设备可借助网关通道进行上下线、数据上传、指令接收等操作,网关和子设备拓扑关系可以通过北向、南向修改两种方式变更。
帮助文档链接:https://open.iot.10086.cn/doc/v5/fuse/detail/920
物联网平台中,服务端和设备端通过通信主题topic实现消息通信,设备可以通过发布消息到系统 topic 调用服务接口,也可以订阅系统 topic 用于接收服务消息通知,服务提供的系统 topic 见Topic列表。
物联网平台预定义物模型通信topic,各物模型功能topic消息的数据格式,见OneJSON数据格式,另外为兼容旧设备保留了数据流,同步命令以及设备镜像相关的topic。
topic以正斜线(/)进行分层,区分每个类目。其中,有两个类目为既定类目:{pid}表示产品的产品id;{device-name}表示设备名称;{identifier}表示服务标识符,{cmdId}为平台生成命令id。
功能 | 主题 | 操作权限 |
---|---|---|
设备属性上报请求 | $sys/{pid}/{device-name}/thing/property/post | 发布 |
设备属性上报响应 | $sys/{pid}/{device-name}/thing/property/post/reply | 订阅 |
设备属性设置请求 | $sys/{pid}/{device-name}/thing/property/set | 订阅 |
设备属性设置响应 | $sys/{pid}/{device-name}/thing/property/set_reply | 发布 |
设备获取属性期望值请求 | $sys/{pid}/{device-name}/thing/property/desired/get | 发布 |
设备获取属性期望值响应 | $sys/{pid}/{device-name}/thing/property/desired/get/reply | 订阅 |
设备清除属性期望值请求 | $sys/{pid}/{device-name}/thing/property/desired/delete | 发布 |
设备清除属性期望值响应 | $sys/{pid}/{device-name}/thing/property/desired/delete/reply | 订阅 |
设备属性获取请求 | $sys/{pid}/{device-name}/thing/property/get | 订阅 |
设备属性获取响应 | $sys/{pid}/{device-name}/thing/property/get_reply | 发布 |
根据前面的帮助文档总结,最后得到的结果如下:
(1)主题订阅
为了确保设备上传消息确实被平台所接受处理,设备可以订阅系统 topic 获取属性上报结果消息,属性上报回复topic为:
$sys/lbAzSXWa62/dev1/thing/property/post/reply
(2)主题上报
属性上报的topic为:$sys/lbAzSXWa62/dev1/thing/property/post
上报数据成功后,订阅的属性上报会返回success。
上报的数据如下:
{"id":"123","version":"1.0","params":{"speed":{"value":120.2},"angle":{"value":45.8},"voltage":{"value":23.6},"GPS":{"value":{"lng":109.731653,"lat":28.289839}}}}
打开MQTT客户端,在MQTT客户端里输入主题发布与主题订阅的信息,然后分别点击主题订阅,主题发布,给设备上传数据。
发布之后,打开oennet后台,就可以看到设备上传的数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。