基于华为云物联网平台从设备接入到应用服务器读取设备数据的整套流程(包含搭建简单的服务器)

2020年三月初,华为平台大改,此文档都是使用的华为平台的老接口,虽然平台兼容了老接口,本文还是仅供参考,流程是没太大问题的

前言

第一次写博客,有不足之处请谅解。
网上华为云的使用案列太少了,踩了一个多月的坑,终于把一套流程简单的走完了一遍,包含平台侧开发和应用侧开发。已有真实设备接入IoT平台的可以忽略Mqtt.Fx的模拟接入和平台侧开发!若不需要开发应用侧,可以通过Postman模拟应用侧,后文都会详细介绍。
华为的IoT只要设置对了订阅路径,数据就会自动推送到你所设置的订阅路径(即自己搭建的简易服务器),所以北向应用的重点就是设置订阅路径

本文章基于Java开发,功能较为简单:
1.Mqtt.Fx(后文简称fx)模拟设备接入华为的设备管理平台,设备管理平台可接收fx上报的数据。
2.通过官方Java API进行消息订阅,搭建应用服务器,接收IoT平台推送的数据,显示在IDEA控制台。
效果图如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
扩展功能:手机app获取服务器数据并实时刷新显示。
在这里插入图片描述

所需软件:Mqtt.fx,tomcat,IDEA,eclipse(JavaEE版),软件的安装与配置自行查找和完成,使用都比较简单,不需要太多的基础知识。
关于设备管理和开发者中心的差别,前者基于商用可能收费,步骤较为复杂,后者一般用于测试,操作较为简单,可免费使用。两者操作差别不大,下文都会讲述。

下面开始整套流程的具体操作,大部分根据华为官方文档步骤走,有坑的地方我会补充。

开发者中心

平台侧开发

使用开发者中心快速体验(华为云官方文档)

大致步骤参考上方官方文档,下面是需要改动或者注意的地方(请根据自己掌握的内容自行跳过多余部分)

1.设备注册

根据文档完成开发中心申请和创建项目,第二步产品在线开发时,创建产品时注意,接入应用层协议类型为MQTT数据格式为JSON,其他内容自定义(LWM2M数据格式时二进制码流,需要编解码插件,没有接触,不是很清楚)
在这里插入图片描述
进入profile定义时,可根据自己设备想要的功能和参数自定义。(profile官方定义为产品模型,需要定义服务名称和属性列表,这两类参数在后面数据传输时很重要)我是如下定义的,可自定义简单点的。
在这里插入图片描述
完成此步骤后,官方文档后面的编解码插件在线开发,使用在/离线模拟器调试等操作可以忽略,有兴趣的可以去了解。
下面,点击侧边栏的“设备管理”,新增真实设备,选择刚刚注册号的产品,自定义“设备名称”和“设备标识”。
在这里插入图片描述
注册成功会生成设备ID和密钥,请复制粘贴保存好,用fx连接时有用!!!
在这里插入图片描述

2.Mqtt.Fx连接IoT平台

Mqtt作为模拟设备,接入IoT平台(华为云官方文档)
官方文档的第一步和第二步我们已经在“1.设备注册”中完成,直接进入“连接鉴权”,此步骤官方文档过于赘述(想知道各个参数的意义可详细阅读),我们只需要打开下载的mqttClientIdGenerator-19.2.0.jar,输入之前保存的ID和密钥,点击旁边的“

### 华为云物联网平台设备连接后立即下线的原因分析 设备华为云物联网平台上成功连接后却迅速断开,可能由多种原因引起。以下是几个常见的可能性及其对应的解决方案: #### 1. **网络配置问题** 如果设备所在的网络环境不稳定或者存在防火墙、NAT等限制条件,则可能导致设备无法持续保持与云端的稳定连接[^2]。 - 解决方案:确认设备所在局域网允许访问外部互联网,并确保端口开放情况满足华为IoT平台的要求。通常情况下,MQTT协议使用的标准端口号为1883(未加密)或8883(TLS加密),需验证这些端口是否被阻塞。 #### 2. **认证机制失效** 当设备尝试登录到华为IoT平台时,若其身份凭证不匹配或已过期,也会触发强制离线操作[^5]。 - 解决方法:重新核验三元组参数(ProductKey, DeviceName 和 Secret/DeviceSecret)。另外注意时间同步误差不超过五分钟范围以免影响签名有效性校验过程。 #### 3. **心跳包发送异常** 为了维持长连接状态,客户端需要定期向服务器发送PINGREQ指令作为心跳信号;一旦超出了预设的时间间隔而没有收到任何响应数据流的话,就会判定该会话已经中断从而关闭通道[^4]。 - 处理建议:调整应用层逻辑以保障按照规定频率发出keep-alive请求,默认周期一般设定为60秒一次较为合适。 #### 4. **资源配额超额** 每种类型的实例都有各自的性能指标上限,超出限定值之后可能会遭到限流甚至驱逐处理[^3]。 - 应对策略:查看当前套餐计划内的各项限额详情并据此优化业务流程设计,必要时候升级至更高级别的规格版本来获取更大的吞吐能力支持。 ```java // 示例代码展示如何设置合理的重连机制以及捕获错误日志以便后续排查定位具体故障点位。 MqttConnectOptions options = new MqttConnectOptions(); options.setCleanSession(true); options.setKeepAliveInterval(60); // 设置心跳时间为60s try { mqttClient.connect(options); } catch (Exception e) { System.out.println("Connection failed:" + e.getMessage()); } ```
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值