设备接入华为云IoT平台体验边云协同【我的IoT端边云体验】

举报
Jan-tao 发表于 2022/10/30 15:16:39 2022/10/30
【摘要】 设备接入服务(IoT Device Access)是华为云的物联网平台,提供海量设备连接上云、设备和云端双向消息通信、批量设备管理、远程控制和监控、OTA升级、设备联动规则等能力,并可将设备数据灵活流转到华为云其他服务,帮助物联网行业用户快速完成设备联网及行业应用集成。

一、华为云IoT平台介绍

​ 华为云IoT平台地址:https://www.huaweicloud.com/product/iothub.html

​ 设备接入服务(IoT Device Access)是华为云的物联网平台,提供海量设备连接上云、设备和云端双向消息通信、批量设备管理、远程控制和监控、OTA升级、设备联动规则等能力,并可将设备数据灵活流转到华为云其他服务,帮助物联网行业用户快速完成设备联网及行业应用集成。

image-20221030145613711

​ 设备连接华为IoT平台后,设备端可向华为IoT平台上传设备状态、数据等信息。同时华为IoT平台也可以下发命令给设备端,设备端收到命令后进行响应。

二、设备接入华为云IoT平台的步骤

​ 我们把设备端与华为IoT平台连接分为获取华为IoT平台IP地址、华为IoT平台的搭建、编写上传数据相关代码以及编写下发命令相关代码四个部分。

(1)华为IoT平台IP地址

​ 设备端与云端通讯采用的相关协议为MQTT协议

​ 首先在华为IoT平台选择MQTT协议的接入地址,并复制接入地址在PC终端上ping一下该接入地址。得到一个地址为121.36.42.100的IP地址,该地址为华为IoT平台的IP地址。

image-20221030144839321

image-20220310152216285

在oc_mqtt.h文件里我们可以查看到相应代码配置。

image-20220310155221475

(2)华为IoT平台的搭建

​ 华为IoT平台的搭建首先创建产品并且注册对应的设备,华为IoT平台就会分配给设备一个设备ID,设备端可通过设备ID和相应的密钥来确保安全可信的连接到华为IoT平台。

​ 注册对应的设备步骤如下:

​ ① 所有设备 --> 注册设备

image-20221030145031689

​ ② 选择所属产品、填写标识符和设备名称,分配设备ID平台会自动分配可以不用修改

​ ③ 点击确认后会有两条设备信息,一条为设备ID另外一条为设备密钥,点击保存并关闭会提示你下载一个txt文件,txt文件里面就包含这两条信息。

img

​ ④ 进去设备对接信息网站填写设备ID、设备密钥:https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

img

⑤ 生成相应信息:Clienid、Username、Password。(每设备生成的信息都是不一样的)

在balcony.c文件里可以查看到以下配置:

img

华为云IoT平台产品创建:

​ 产品模型用于描述设备具备的能力和特性。开发者通过定义产品模型,在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的服务、属性、命令等信息,如颜色、开关等。

img

注册设备后,我们可以在华为IOT平台产品中的模型定义里创建一个产品,并添加服务、属性、命令等内容。

服务信息:(服务ID、服务类型)

服务ID 服务类型
Balcony senser

属性信息:(属性名称、数据类型)

属性名称 数据类型
voltage decimal(小数)
Windoow_flag string(字符串)
Rain_flag string(字符串)
Motor_flag string(字符串)

命令信息:(命令名称、参数名称、数据类型、长度、枚举)

命令名称 参数名称 数据类型 长度 枚举
Balcony_Control_Motor Motor string 3 ON,OFF

image-20221030145108838

注:代码中的服务ID、属性名称、命令名称等与华为IoT平台一一对应。

(3)上传数据的配置

static void deal_report_msg(report_t *report)
{
	oc_mqtt_profile_service_t service;//定义Service级别数据,该处对应云平台配置的Balcony服务下的数据
    oc_mqtt_profile_kv_t voltage;//定义属性级别数据,该处对应云平台配置的属性voltage信息
    oc_mqtt_profile_kv_t Window_flag;//定义属性级别数据,该处对应云平台配置的属性Window_flag信息
    oc_mqtt_profile_kv_t Rain_flag;//定义属性级别数据,该处对应云平台配置的属性Rain_flag信息
    oc_mqtt_profile_kv_t motor;//定义属性级别数据,该处对应云平台配置的属性motor信息

    service.event_time = NULL;
    service.service_id = "Balcony";//对应云平台配置的服务ID
    service.service_property = &voltage;//在Balcony服务下添加属性信息
    service.nxt = NULL;//该产品上报数据中仅存在Balcony一种服务,所以next指针为空

    voltage.key = "voltage";//对应云平台配置的属性名称
    voltage.value = &report->voltage;//voltage的取值由设备实际状态voltage决定。
    voltage.type = EN_OC_MQTT_PROFILE_VALUE_FLOAT;//对应云平台配置的数据类型
    voltage.nxt = &Window_flag;//继续添加Balcony服务下的另一属性。

    Window_flag.key = "Window_flag";
    Window_flag.value = g_app_cb.Window_flag ? "ON" : "OFF";
    Window_flag.type = EN_OC_MQTT_PROFILE_VALUE_STRING;
    Window_flag.nxt = &Rain_flag;

    Rain_flag.key = "Rain_flag";
    Rain_flag.value = g_app_cb.Rain_flag ? "ON" : "OFF";
    Rain_flag.type = EN_OC_MQTT_PROFILE_VALUE_STRING;
    Rain_flag.nxt = &motor;

    motor.key = "Motor_Status";
    motor.value = g_app_cb.motor ? "ON" : "OFF";//Motor_Status的ON,OFF取值由设备实际
    motor.type = EN_OC_MQTT_PROFILE_VALUE_STRING;
    motor.nxt = NULL;//Balcony服务下没有其它属性了,next置为null。

    oc_mqtt_profile_propertyreport(USERNAME, &service);//打包数据
    return;
}

(4)下发命令控制电机的配置

if (0 == strcmp(cJSON_GetStringValue(obj_cmdname), "Balcony_Control_Motor"))
{
    obj_paras = cJSON_GetObjectItem(obj_root, "Paras");
    if (NULL == obj_paras)
    {
        goto EXIT_OBJPARAS;
    }
    obj_para = cJSON_GetObjectItem(obj_paras, "Motor");
    if (NULL == obj_para)
    {
        goto EXIT_OBJPARA;
    }
    //操作电动马达
    if (0 == strcmp(cJSON_GetStringValue(obj_para), "ON"))
    {
        g_app_cb.motor = 1;
        MotorStatusSet(ON);//开窗--电机正转
        g_app_cb.Window_flag = 1;
        Window_flag = 1;
    }
    else
    {
        g_app_cb.motor = 0;
        MotorStatusSet(OFF);//关窗--电机反转
        g_app_cb.Window_flag = 0;
        Window_flag = 0;
    }

三、设备接入华为云IoT平台的体验

​ 华为IoT平台在线调试—可看到数据接收和命令发送的情况:

华为IoT平台在线调试

​ 华为IoT平台查看到最新的上报数据:

华为IoT平台查看上报数据

【我的IoT端边云体验】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/378687
此外,在(https://bbs.huaweicloud.com/activity/suggestion.html)提出您的宝贵建议,标题以【云驻计划-定向征文】开头,还有机会赢取额外奖励。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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