跳转至

华为云

一、华为云概述

华为云物联网平台设备接入云服务(IoTDA)提供海量设备的接入和管理能力,将物理设备联接到云,支撑设备数据采集上云和云端下发命令给设备进行远程控制,配合华为云其他产品,帮助您快速构筑物联网解决方案。

官网地址:设备接入-控制台 (huaweicloud.com)

注意:华为的账号分为华为账号,华为云账号,IAM 账号,注意区别

产品文档:成长地图_设备接入 IoTDA_华为云

二、演示功能概述

文章使用 Air724UG-NFM 开发板结合 demo\huaWeiYun 这个 DEMO 为例做演示,连接华为云,实现自定义主题订阅和发布。

三、准备硬件环境

3.1 Air724UG-NFM 开发板

使用 Air724UG-NFM 开发板,如下图所示:

淘宝购买链接:Air724UG-NFM 开发板淘宝购买链接

此开发板的详细使用说明参考:Air724UG 产品手册 中的 《EVB_Air724UG_AXX开发板使用说明》,写这篇文章时最新版本的使用说明为:《EVB_Air724UG_A14开发板使用说明》;开发板使用过程中遇到任何问题,可以直接参考这份使用说明文档。

3.2 SIM 卡

中国大陆环境下,可以上网的 sim 卡,一般来说,使用移动,电信,联通的物联网卡或者手机卡都行。

3.3 PC 电脑

WINDOWS 系统,WIN7 以上。

3.4 数据通信线

安卓接口的 USB 数据线。

四、准备软件环境

4.1 Luatools 工具

要想烧录 LuatOS 固件到 4G 模组中,需要用到合宙的强大的调试工具:Luatools

详细使用说明参考:Luatools 工具使用说明

Luatools 工具集具备以下几大核心功能:

  • 一键获取最新固件:自动连接合宙服务器,轻松下载最新的合宙模组固件。
  • 固件与脚本烧录:便捷地将固件及脚本文件烧录至目标模组中。
  • 串口日志管理:实时查看模组通过串口输出的日志信息,并支持保存功能。
  • 串口调试助手:提供简洁的串口调试界面,满足基本的串口通信测试需求。

Luatools 下载之后,新建一个命名为 "Luatools" 的文件夹,将下载的 Luatools_v3.exe 拷贝或移动到新建的 Luatools 文件夹内,点击 Luatools_v3.exe 即可运行。

4.2 准备需要烧录的代码

LuatOS 软件由两部分组成:内核固件和应用脚本。点击此处下载 LuatOS 软件包,如图:

4.2.1 烧录的底层固件文件

下载底层 “CORE_V4030” 解压后,里面有一个 readme.txt 文件,详细介绍了不同的底层固件功能,本教程用的底层固件是:LuatOS-Air_V4030_RDA8910_TTS_NOLVGL_FLOAT.pac,如图:

本教程选择这个底层固件:LuatOS-Air_V4030_RDA8910_TTS_NOLVGL_FLOAT.pac

4.2.2 烧录的脚本代码

下载 “上层软件 LuaTask_V2.4.4(demo+lib)”解压后,在 demo 文件夹有各种功能例程可以参考:

本文中使用 "huaWeiYun" 的 demo,如图:

4.3 华为云

1.设备接入前需创建产品(可通过控制台创建或者使用应用侧 API 创建产品)

2.产品创建完毕后,需注册设备(可通过控制台注册单个设备或者使用应用侧 API 注册设备创建)。生成的设备 ID(DeviceId)和密钥(DeviceSecret)需要记录下来供后续步骤使用。

3.设备注册完毕后,可以按照图中流程实现消息/属性上报、接收命令/属性/消息、OTA 升级、自定义 Topic 等功能。关于平台预置 topic 可参考 Topic 定义

4.获取设备接入信息,访问设备接入服务,单击“立即使用”进入设备接入控制台。 单击“立即使用”进入控制台,单击左侧导航栏的“总览”,查看设备接入信息,记录域名和端口。

五、API 接口介绍

本文用到的接口函数不做详细介绍,可通过点击右侧链接查看具体介绍:mqtt API

六、 华为云操作实例

6.1 登录并开通 IoTDA 实例

登录官网设备接入-控制台 (huaweicloud.com)注册华为云账号开通物联网平台,填写实例名称,标签、实例描述可根据需要选填,完成之后点击立即创建。

注:华为云首页若找不到该入口,在搜索框输入 "设备接入 IoTDA” 关键字进入

点击上面链接,并按照提示完成认证操作(如果已经认证过,则跳过这一步骤)

完成认证后,进入 IoTDA 控制台,点击购买实例,如下图

这里我们为了测试,实例版本选择“标准版”、计费模式选择“按需计费”,实例名称填入“air724ug”,收费结算为 0 元,点击立即购买,在弹出页面后点击“提交”。

开通实例后点击“详情”,如下图所示:

接入地址中.iotda 前的数据为 endpoint,即下图中红框处,此信息需要记录下来,供后续使用,如果忘了记录也没有关系,后续可以再重新点开实例详情查看

我们将链接信息整理如下

----接入地址:
6c8a32f1ff.st1.iotda-device.cn-north-4.myhuaweicloud.com
----端口号:
MQTT (1883)
MQTTS (8883)
MQTT over WebSocket (443)

6.2 创建产品

如图所示,进入创建产品页面:

操作步骤为:产品---> 创建产品---> 填写信息---> 确定

创建产品后的产品 ID 要记录下来,后面会用到

ID:**672acd71fc8d5a4ea7221baf**

到此为止,创建产品工作已经完成,同时需要注意将 endpoint产品 ID 记录下来,后续会根据不同注册方式来进行实例讲解。

6.3 设备注册

华为云动态注册即自动注册相当于管理员操作 API 强制注册,华为云本身并没有直接的自动注册 API,故不建议此方式,本文也不再介绍该注册方式,仅介绍密钥校验(手动注册)方式。

首先创建设备并获取参数。

此注册方式采用一机一密,需要手动创建设备预注册。

点击所有设备---> 注册设备---> 填写信息(设备标识码可以填开发板的 IMEI 号)---> 设备认证类型选择密钥

设备创建成功后将密钥复制并记录下来,后面会用到

设备密钥:d88dc8de8836a9db4f707f9873f1d54d
设备ID:672acd71fc8d5a4ea7221baf_863482063029199

进入设备详情-> 查看 MQTT 链接参数-> 一键复制后会自动下载一个 TXT 文件,内容包含连接参数

下载的 TXT 文档内容如下:

{
    "username": "672acd71fc8d5a4ea7221baf_863482063029199",
    "password": "2152b1c17fae8e5a0600ca544bcfe54f6068f3c857112396978cf690b5a2e714",
    "clientId": "672acd71fc8d5a4ea7221baf_863482063029199_0_0_2024110602",
    "hostname": "6c8a32f1ff.st1.iotda-device.cn-north-4.myhuaweicloud.com",
    "port": 8883,
    "protocol": "MQTTS"
}

6.4 自定义主题

进入创建自定义主题界面:

自定义订阅主题:

自定义发布主题:

结果会创建以下两个主题:

$oc/devices/672acd71fc8d5a4ea7221baf_863482063029199/user/publish
$oc/devices/672acd71fc8d5a4ea7221baf_863482063029199/user/subscribe

七、修改例程验证

本文以 demo\huaWeiYun 这个 DEMO 为例做演示。

7.1 修改 mqttTask.lua

将 host 改为自己的设备接入域名。

将 device,secret,clientId 改为上述步骤中记录的设备 ID,秘钥及 clientId。

将 MQTT 的任务代码修改成连接华为云后,订阅“$oc/devices/672acd71fc8d5a4ea7221baf_863482063029199/user/subscribe”主题,收到华为云服务器消息后再把消息通过“$oc/devices/672acd71fc8d5a4ea7221baf_863482063029199/user/publish”主题发送到华为云。

以下修改的例程:

--这里用的MQTT方式接入,port是1883
local host, port ="6c8a32f1ff.st1.iotda-device.cn-north-4.myhuaweicloud.com", 1883
local device = "672acd71fc8d5a4ea7221baf_863482063029199"
local secret = "2152b1c17fae8e5a0600ca544bcfe54f6068f3c857112396978cf690b5a2e714"
local clientId = "672acd71fc8d5a4ea7221baf_863482063029199_0_0_2024110602"
-- 测试MQTT的任务代码
sys.taskInit(function()
    while true do
        while not socket.isReady() do sys.wait(1000) end
        --创建一个mqtt client实例
        local mqttc = mqtt.client(
            clientId,
            300,
            device,
            secret)
        while not mqttc:connect(host, port) do sys.wait(2000) end
        --topic订阅主题
        if mqttc:subscribe("$oc/devices/"..device.."/user/subscribe") then
            while true do
                --接收华为云的数据
                local r, data, param = mqttc:receive(120000, "pub_msg")
                if r then
                    log.info("这是收到了服务器下发的消息:", data.payload or "nil")
                    --把收到的数据再发送到华为云
                    mqttc:publish("$oc/devices/"..device.."/user/publish", data.payload)
                elseif data == "pub_msg" then
                    log.info("这是收到了订阅的消息和参数显示:", param)
                elseif data == "timeout" then
                    --等待超时,进行下一轮等待
                else
                    break
                end
            end
        end
        mqttc:disconnect()
    end
end)

7.2 使用 Luatools下载脚本

  • 正确连接电脑和 4G 模组电路板

开发板的接线方式

首先将开发板放置好,接上 USB 并连接到电脑,同时,记得将天线也连接好,保证信号环境比较良好,比如可以看看手机信号来判断一下所在环境的信号状况。USB 的连接如上图所示。

在上图中,连接 USB 的插口旁边有一个 USB 字样,在进行脚本下载时,须连接此端口。

  • 识别 4G 模组的 BOOT 引脚

在下载之前,要用模组的 BOOT 引脚触发下载, 也就是说,要把 4G 模组的 BOOT 引脚拉到 1.8v,或者直接把 BOOT 引脚和 VDD_EXT 引脚相连。我们要在按下 “下载模式” 按键时让模块开机,就可以进入下载模式了。

具体到 Air724UG-NFM 开发板:

1、当我们模块没开机时,按着 “下载模式” 键然后长按 “开机” 开机。

2、当我们模块开机时,按着“下载模式”键然后点按 “重启” 键即可。

  • 识别电脑的正确端口

判断是否进入 BOOT 模式:模块上电,此时在电脑的设备管理器中,查看串口设备, 会出现一个端口表示进入了 BOOT 下载模式,如下图所示:

  • 用 Luatools 工具烧录

1.新建项目

首先,确保你的 Luatools 的版本,大于等于 3.0.6 版本的。

在 Luatools 的左上角上有版本显示的,如图所示:

Luatools 版本没问题的话, 就点击 Luatools 右上角的“项目管理测试”按钮,如下图所示:

这时会弹出项目管理和烧录管理的对话框,可以新建一个项目,如下图:

2.开始烧录

选择开发板对应的底层 core 和脚本文件。下载到板子中。

点击下载后,我们需要进入 BOOT 模式才能正常下载。

7.3 查看打印效果,也可在华为云上查看设备状态。

烧录代码后运行,设备会在线显示:

点击上图设备标识码进入下发消息页面:

命令下发完成后显示,如下图:

如果启用消息跟踪,可以在消息跟踪看到平台下发到设备,设备发送到平台的记录:

对应 log:

[2024-11-06 11:48:02.147] [I]-[socket:connect-coreid,prot,addr,port,cert,timeout] 0 TCP 6c8a32f1ff.st1.iotda-device.cn-north-4.myhuaweicloud.com 1883 nil
[2024-11-06 11:48:02.147]  120
[2024-11-06 11:48:02.458] [I]-[socket:on_response:] 0 SOCKET_CONNECT 0
[2024-11-06 11:48:02.458] [I]-[socket:connect: connect ok]
[2024-11-06 11:48:02.458] [D]-[mqtt.client:write] 10AF0100044D51545404C2012C00373637326163643731666338643561346561373232316261665F38363334383230363330 50
[2024-11-06 11:48:02.458] [D]-[socket.send] total 178 bytes first 30 bytes

[2024-11-06 11:48:02.596] [I]-[socket:on_response:] 0 SOCKET_SEND 0
[2024-11-06 11:48:02.690] [D]-[socket.recv] 4 nil
[2024-11-06 11:48:02.690] [D]-[mqtt.unpack] 4 20020000 4
[2024-11-06 11:48:02.690] [D]-[mqtt.client:write] 824800020043246F632F646576696365732F3637326163643731666338643561346561373232316261665F38363334383230 50
30490043246F632F646576696365732F3637326163643731666338643561346561373232316261665F383633343832303633 50
[2024-11-06 11:53:09.791] [I]-[这是收到了服务器下发的消息:] test
[2024-11-06 11:53:09.791] [D]-[mqtt.client:write] 30470041246F632F646576696365732F3637326163643731666338643561346561373232316261665F383633343832303633 50
[2024-11-06 11:53:09.791] [D]-[socket.send] total 73 bytes first 30 bytes 0G
[2024-11-06 11:53:10.101] [I]-[socket:on_response:] 0 SOCKET_SEND 0

常见问题

连接被拒

确认 CA 证书是否正确 资源获取_设备接入 IoTDA_开发指南_华为云 (huaweicloud.com)

心跳时常建议

心跳时间限定为 30 至 1200 秒,推荐设置为 120 秒

华为云接入失败,怎么排查

先检查设备配置,确保设备的 ID,名称,密钥等配置信息正确无误;同时也要检查下网络连接,确保 SIM 卡是正常入网状态,若还是不行,请再仔细看下教程,看是否有哪个步骤有疏漏。