设备模拟器快速接入【零代码零硬件玩转华为云IoT】

举报
acc8226 发表于 2024/04/04 21:39:01 2024/04/04
【摘要】 近期听说华为云IoT物联网平台(IoTDA设备接入云服务)提供海量设备的接入和管理能力,将物理设备联接到云,支撑设备数据采集上云和云端下发命令给设备进行远程控制,配合华为云其他产品,可快速构筑物联网解决方案。且初期无任何消费,于是乎本次我体验了一番。 开通服务首选需要注册华为云官方帐号并进行实名认证,然后点击华为云物联网平台_华为云IoT平台开通服务即可。接着点击免费试用。这里我开通了一个月...

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

且初期无任何消费,于是乎本次我体验了一番。

开通服务

首选需要注册华为云官方帐号并进行实名认证,然后点击华为云物联网平台_华为云IoT平台开通服务即可。

接着点击免费试用。这里我开通了一个月的免费套餐。

开通成功后稍等片刻,即可进入主页面。

创建产品

在物联网平台中,某一类具有相同能力或特征的设备的合集被称为一款产品。接下来我们登录管理控制台,单击左侧导航栏“产品”,单击页面左侧的“创建产品”。

  1. 填写产品名称:设备接入体验-产品
  2. 协议类型: mqtt
  3. 数据格式: json
  4. 设备类型: 自定义
  5. 设备类型:设备接入体验-设备

系统提示产品创建成功,并生成了产品 ID。

由于我希望使用平台查看设备上报的数据信息,以及可能之后需要设备进行管理控制,这里还需要设置产品模型(Profile)。

点击产品名称。

切换到模型定义选项卡,点击自定义模型,添加服务。在服务 ID 中填入 serviceA,点击确定。

新增一个属性:温度

注册设备

点击左侧的所有设备,填写注册信息如下图。

成功注册设备后,平台会自动生成设备 ID 和密钥。这里记录设备ID(deviceId)660e9e592a631a0c8fb10c6c_deviceA1 和密钥(deviceSecret),设备接入中要用到。

使用模拟器接入

直接使用我手头 mac 之前已安装的 MQTTX:MQTT 客户端工具 进行连接。

首先从设备列表中进入设备的详情页,查看设备的 MQTT 连接参数并填入 mqttx 的新建连接配置选项。

注:如果您选择安全方式接入,Broker Port 需要设置为 8883 和 mqtts 搭配,而非 1883 端口。

配置完连接参数后,在 mqttx 中点击连接按钮。一旦设备接入物联网平台,平台可以看到该设备的在线状态。

设备上报数据

已知上行 Topic 格式为 $oc/devices/{device_id}/sys/properties/report

这里我们将 {device_id} 换成成真实的设备 ID,因此最终为:Topic: $oc/devices/660e9e592a631a0c8fb10c6c_deviceA1/sys/properties/report

上行报文为:

{
    "services": [{
            "service_id": "serviceA",
            "properties": {
                "温度": 32.3
            }
        }
    ]
}

其中 service_id 必选,为设备的服务 ID,由创建的产品模型确定。
properties 表示设备服务的属性列表,具体字段在设备关联的产品模型中定义,可以设置多个字段。这里只使用了上面定义产品模型中的 ”温度“ 字段。

在 mqttx 中填写好上行 topic 和 数据后点击按下 alt + enter 快捷键或者直接点击图标进行发送。

在网页控制台可以看到数据更新。

图 13

设备命令下发

目前平台提示 MQTT 协议设备仅支持同步命令下发。我们需要先在管理控制台下发命令,已达到远程控制设备的目的。

根据平台介绍的上下行 topic:

  • 下行: $oc/devices/{device_id}/sys/commands/request_id={request_id}
  • 上行:$oc/devices/{device_id}/sys/commands/response/request_id={request_id}

其中 {request_id} 用于唯一标识这次请求。设备侧收到下行请求的 topic 带该参数时,上行响应的 topic 需要将该参数值返回给平台。

这里我们将 {device_id} 换成成真实的设备 ID,由于 {request_id} 不能提前预知,我们使用了井号通配符,最终为:$oc/devices/660e9e592a631a0c8fb10c6c_deviceA1/sys/commands/#

在订阅后,我们即可进入网页设备控制台。选择“设备 > 所有设备”,找到新建的设备,单击“详情”进入设备详情页面。单击“云端下发”页签,下发同步命令。

注:设备所属的产品模型需要预先定义新增命令后才能下发。

一旦设备收到订阅,设备需要及时响应。命令应答的 json 格式,具体字段在设备关联的产品模型中定义。

  1. result_code 可选 Integer 标识命令的执行结果,0表示成功,其他表示设备执行结果为失败。不带默认为0。
  2. response_name 可选 String 命令的响应名称。
  3. paras 可选 Object 命令的响应参数,具体字段在设备关联的产品模型中定义。

上行响应示例如下:

// 注意:上行填写的 {request_id} 需要与下行的一致
Topic:$oc/devices/660e9e592a631a0c8fb10c6c_deviceA1/sys/commands/response/request_id={request_id}

{
    "result_code": 0,
    "response_name": "COMMAND_RESPONSE",
    "paras": {
        "result": "success"
    }
}

结束

至此,本次实验完美结束。

我正在参加【有奖征文 第29期】零代码零硬件玩转华为云 IoT 物联网平台多场景
链接:https://bbs.huaweicloud.cn/blogs/423245

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。