摘要:该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,用户可以在控制台产品详情中自定义Topic,通过应用侧接口或控制台创建数据转发规则,把设备上报的消息转发给其他华为云服务,供应用侧用户主动去消费。

场景简介

已对接存量设备的网关,不用迁移就可以实现对既有设备和新设备的兼容控制。

该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,用户可以在控制台产品详情中自定义Topic,通过应用侧接口或控制台创建数据转发规则,把设备上报的消息转发给其他华为云服务,供应用侧用户主动去消费。

核心知识点:产品模型、消息上报、消息下发、MQTT协议、数据转发规则、自定义Topic。

场景流程

流程解释:

1.创建网关产品:物联网平台是以产品为粒度管理批量设备,产品的创建与管理,可以通过平台提供的API接口或控制台

2.自定义topic:您可以在产品详情中自定义topic,该产品下的所有设备都将可以通过自定义topic,与平台间进行数据上下行交互。

3.注册网关设备:平台提供了应用侧API接口可以之策设备,也可以通过控制台注册。注册的设备ID,是设备侧与平台交互的唯一标识。这里是用手机APP进行应用侧接口调用注册,就如前面概念串联时提到的,应用侧不局限于web服务端。

4.创建数据转发规则:网关APP可以通过API接口创建规则,也可以通过控制台创建,指定过滤指定的属性,给指定的通道转发数据。

5.开通DIS通道/OBS服务:华为公有云上有丰富的SaaS服务和PaaS服务,供您结合自己的业务需要进行组合使用。DIS服务提供高效采集、传输、分发能力,支持多种IoT协议,OBS服务提供海量、安全、高可靠、低成本的数据存储能力,可以开通该两个服务(或之一),通过IoTDA规则引擎,把网关的数据转发给DIS/OBS。

6.设备建链:MQTT设备是指通过MQTT协议接入的设备,不论是集成了华为IoT Device SDK,还是原生MQTT协议接入,只要是json数据格式传输给平台,平台就无需使用编解码插件。如果是二进制上传,则需要先做编解码插件的开发。MQTT是长连接,需要先建链才能进行数据传输,可以通过安全加密方式8883端口接入(推荐),也可以通过非安全加密方式1883端口接入。

7.订阅消息下发Topic:MQTT设备与平台建立长连接后,可以订阅平台下行的topic,实现对平台下发消息的实时监听。

8.网关消息上报:网关设备把数据透传到平台,由平台不做任何处理按规则转发给DIS/OBS等存储通道。消息跟属性的主要区别是不用指定产品模型,平台对上报的消息不做处理(包括存储和快照都没有),仅做纯数据转发。

9.按规则数据转发:平台收到设备上报的属性后,规则引擎会进行过滤(不论属性还是消息,平台都会做规则过滤),把设定好的消息值转发到指定的DIS通道,放到消息队列中。或者转发到OBS做对象存储。

10.消费消息数据:由于平台对消息仅做透传,而且APP无法配置订阅通知的callback url,所以将设备上报的数据通过消息转储到DIS/OBS,再由APP调用DIS/OBS的接口或集成SDK,消费设备数据,进而实现对网关设备上报消息的接收。

11.消息下发:网关APP通过应用侧接口下发消息,平台同样不会做任何的处理,消息下发是异步的,不用等到设备侧网关的响应。

12.消息下发:平台通过消息下发的下行topic把消息透传给网关。这个需要前面网关设备订阅了消息下发的topic,否则接收不到平台下行消息。

最佳实践

场景说明

自定义Topic功能用于MQTT协议设备接入物联网平台的场景,支持设备消息上报、平台消息下发的Topic进行自定义。根据Topic不同,应用侧可实现不同的业务逻辑处理,也适用于应用侧和设备侧之间,设备无法按照产品模型中定义的属性或命令进行数据上报的场景。

本示例中,应用服务器收到设备上报Topic为室内温度的数据,判断是否开启或关闭室内空调。

新增自定义Topic

具体操作细节请参考新增自定义Topic

1、在产品详情页中,选择“可选配置”页签,点击“新增自定义topic”按钮。

2、在弹出的页面中,选择设备操作权限,填写topic名称。

3、点击“确认”,完成新增自定义topic。

自定义Topic添加成功后,您可以在自定义topic列表执行修改和删除操作。

MQTT设备消息上报

1、登录控制台,进入指定设备详情页,启动消息跟踪。

2、以MQTT.fx模拟器(请参考设备快速接入)为例,模拟设备上报自定义Topic消息。

使用IoT Device SDK或原生MQTT协议接入的设备,需要在设备程序中,设置设备上报的自定义Topic名称。

3、登录控制台,在设备详情消息跟踪页面,查看设备上报的自定义Topic消息。

4、应用侧通过数据转发的方式,获取MQTT设备上报的自定义Topic消息。更多数据转发方式,请参考数据转发。您也可以参考最佳实践案例数据转发到OBS长期存储

MQTT设备消息下发

应用侧收到MQTT设备上报的自定义Topic消息后,需要进行相应的业务处理。本示例通过自定义Topic,下发开启室内空调指令。

MQTT设备需要先订阅自定义Topic,才可以接收应用侧下发的自定义Topic消息。

  • 确保创建自定义Topic时,设备操作权限包含“订阅”功能,详细操作请参考设备操作权限
  • 使用IoT Device SDK或者原生MQTT协议接入的设备,需要在设备程序中,设置设备订阅的自定义Topic名称。

1、本文使用postman工具模拟应用侧调用下发设备消息接口,下发开启室内空调的命令。

2、调用查询设备消息接口,查看下发命令是否成功。

至此,通过该文档的学习,您应该对智能网关和自定义Topic场景有了一定的了解。接下来,可以在系列后续文章中,可以学习到更多的物联网业务场景。

点击关注,第一时间了解华为云新鲜技术~

干货分享丨玩转物联网IoTDA服务系列四-智能网关的更多相关文章

  1. 干货分享丨玩转物联网IoTDA服务系列五-智能家居煤气检测联动

    摘要:该场景主要描述的是设备可以通过LWM2M协议与物联网平台进行交互,用户可以在控制台或通过应用侧接口创建设备联动规则,把设备上报的属性转发,通过物联网平台规则引擎转变成命令下发给其他指定设备. 场 ...

  2. 玩转华为物联网IoTDA服务系列三-自动售货机销售分析场景示例

    场景简介 通过收集自动售货机系统的销售数据,EI数据分析售货销量状况. 该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,应用侧可以到物联网平台订阅设备侧变化的通知,用户可以在控制台或通 ...

  3. 国内物联网平台(5):机智云IoT物联网云服务平台及智能硬件自助开发平台

    国内物联网平台(5)——机智云IoT物联网云服务平台及智能硬件自助开发平台 马智 平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运 ...

  4. 干货分享丨jvm系列:dump文件深度分析

    摘要:java内存dump是jvm运行时内存的一份快照,利用它可以分析是否存在内存浪费,可以检查内存管理是否合理,当发生OOM的时候,可以找出问题的原因.那么dump文件的内容是什么样的呢? JVM ...

  5. 【腾讯Bugly干货分享】微信终端跨平台组件 Mars 系列 - 我们如约而至

    导语 昨天上午,微信在广州举办了微信公开课Pro.于是,精神哥这两天的朋友圈被小龙的"八不做"刷屏了.小伙伴们可能不知道,下午,微信公开课专门开设了技术分论坛.在分论坛中,微信开源 ...

  6. 国内物联网平台初探(五) ——机智云IoT物联网云服务平台及智能硬件自助开发平台

    平台定位 机智云平台是致力于物联网.智能硬件云服务的开放平台.平台提供了从定义产品.设备端开发调试.应用开发.产测.运营管理等覆盖智能硬件接入到运营管理全生命周期服务的能力. 机智云平台为开发者提供了 ...

  7. 【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(二) - 信令传输超时设计

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/9DJxipJaaBC8yC-buHgnTQ 作者简介: ...

  8. 【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ff5932cde42f1f03de29b1 本文来源: 微信客户端开发团队 ...

  9. go微服务系列(四) - gRPC入门

    1. 前言 2. gRPC与Protobuf简介 3. 安装 4. 中间文件演示 4.1 编写中间文件 4.2 运行protoc命令编译成go中间文件 5. 创建gRPC服务端 5.1 新建Produ ...

随机推荐

  1. 入门大数据---Scala学习

    Scala是什么? Scala是一种基于函数式编程和面向对象的高级语言.它开发了Spark等大型应用.它和Java有效集成,底层也是支持JVM的. 它有六大特性: 无缝JAVA互操作 Scala在JV ...

  2. 【秒懂Java】【第1章_初识Java】04_学习资料

    为了学到更多的新知识,我们经常会去网上搜索各种学习资料.或者,在学习.工作过程中遇到了解决不了的问题,我们也会去网上搜索答案(比如百度.谷歌一下).这篇文章,主要想跟大家聊聊关于学习资料的选择. 建议 ...

  3. 怎样用 I/O流读取txt文件?

    java.io包提供了用来永久保存对象状态的机制,可处理各种类型的流,如文件流.字节流.字符流等,还提供实现可串行化Serializable接口.可处理对象流. Java语言提供3种自动生成的标准流. ...

  4. 《算法笔记》6.7小节 问题 A: 简单计算器

    又是大模拟淦淦淦淦淦淦淦 思路: 这道题我居然用的队列orz. 言归正传,这道题就是模拟计算器.从读题目样例可以发现,数字的个数只比符号的个数多一个,那么这就给我们了思路:用队列,先提前放出一个数,每 ...

  5. DTD约束和Schema约束

    DTD约束 什么是DTD? DTD(Document Type Definition),文档类型定义,用来约束XML文档.规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等. DTD约束长什 ...

  6. 新建Maven项目出错

    创建完项目后出现 弹出个窗口 出现如下信息 问题: Maven新建项目出现 Could not calculate build plan:plugin 错误解决办法 解决办法: 删除本地.m2仓库中 ...

  7. 猿灯塔:关于Java面试,你应该准备这些知识点

    自天子以至于庶人,壹是皆以修身为本 <礼记·大学> 马老师说过,员工的离职原因很多,只有两点最真实: 钱,没给到位 心,受委屈了 当然,我是想换个平台,换个方向,想清楚为什么要跳槽,如果真 ...

  8. Netty 源码解析(八): 回到 Channel 的 register 操作

    原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 今天是猿灯塔“365篇原创计划”第八篇. 接下来的时间灯塔君持续更新Netty系列一共九篇 Netty 源码解析(一): 开始 Netty 源 ...

  9. 从浏览器地址栏输入url到显示页面的步骤(以HTTP为例)

    在浏览器地址栏输入URL 浏览器查看缓存,如果请求资源在缓存中并且新鲜,跳转到转码步骤 如果资源未缓存,发起新请求 如果已缓存,检验是否足够新鲜,足够新鲜直接提供给客户端,否则与服务器进行验证. 检验 ...

  10. 理解ASCII,Unicode和UTF-8关系

    前言:之前一直就好奇这个问题,但是一直没解决,今天我总算明白了,感谢大佬们的科普 转自:https://blog.csdn.net/Deft_MKJing/article/details/794604 ...