声明:本篇文章部分资料来自直播HCSD专家讲堂 《一节课玩转物联网开发》,本课程为直播课程
本篇文章将带大家了解物联网数据在华为云loT平台上端到端流转的过程,并指导大家基于华为云IoTDA及可视化大屏服务DLV,搭建物联网可视化大屏应用,进而学习物联网开发相关知识。
本文会分为以下3个部分进行介绍
1. 物联网应用端到端开发概述
2. 实操讲解零代码搭建物联网监控大屏(含控制台功能讲解)
3. 华为云loT - 从联到用,构筑全场景物联网云服务

首先我们在了解端对端开发流程之前,我们可以先整体了解一下物联网基础架构,比较典型的是五层架构,从上图可以看到五层架构包含以下:
• 感知层:这是物联网架构的第一层。在感知层中,许多传感器和执行器用于收集有用的信息,例如温度,水分含量,入侵者检测,声音等。该层的主要函数是从周围环境获取信息并将数据传递到另一层,以便可以根据该信息执行某些操作。
• 边缘层:边缘计算利用近数据端的边缘结点直接对数据源数据进行计算处理,将部分或全部计算任务从云中心分散到各个边缘节点进行计算处理,分担了云中心的工作量,一定程度上减少了网络中数据的交换量,特点是:本地化、实时性、低能耗。
• 网格层:充当接入和传输网络的管道的作用,在这一层,会降相关的数据上报到云端,也就是平台层。
• 平台层: 平台层其实指的就是物联网平台,它作为承接设备与行业的中间服务,承载了抽象化的业务逻辑及标准化的核心数据模型,实现设备的快速接入,同时提供强大的模块化能力,支撑行业应用场景下的各类需求。
• 应用层:应用程序层基于从中间件层获得的信息来管理所有应用程序过程,常用案例有智慧园区、车联网、智慧城市、智慧工厂等。
| 开发操作 | 开发说明 |
| 产品开发 | 主要呈现物联网平台的界面查询与操作,包括产品管理、产品模型开发、插件开发、在线调试等。 |
| 应用开发 | 主要为业务应用与物联网平台的集成对接开发,包括API接口调用、业务数据获取和HTTPS证书管理。 |
| 设备开发 | 主要为设备与物联网平台的集成对接开发,包括设备接入物联网平台、业务数据上报和对平台下发控制命令的处理。 |

从引导图可以看出,开发者可以登录控制台完成创建产品,模型定义,同时结合在线调试工具完成相关的插件开发,基于平台已经创建的产品,可以根据提供的应用API,调试完成后上线到对应的应用商店以供使用。
针对设备侧开发我们在选择接入方式上可以使用SDK接入,模组接入,以及使用原生的协议接入,完成设备侧开发之后,我们端侧集成完可以进行在线调试,业务通过后,完成注册设备,就可以将设备进行商用。

这里列举了几个可视化大屏案例,基于云计算的工业互联网实时监控平台,某运输行业大数据平台,某企业安全态势感知,某公司数据追测平台等等,最终企业要做相关决策或者运营的时候,更多是依赖我们的可视化大屏,得到相关数据时,辅助相关的业务决策。

接下来讲解零代码搭建互联网监控大屏,主要涉及到的相关服务是通过设备接入物联网平台,上报相关的数据,同时通过物联网平台的规则引擎转发数据至OBS,最后结合DLV服务进行数据的可视化。
物联网解决方案中,作为数据主体的“物”可能数量会非常大,产生的数据已经无法通过传统的数据处理服务进行处理。如何分析与利用这庞大的物联网设备数据对物联网企业来说又是一个新的挑战。
华为云物联网平台提供规则引擎能力,支持将设备上报的数据转发至华为云其他云服务,可实现将海量数据通过对象存储服务(OBS)存储,再由数据可视化服务(DLV)读取数据呈现为可视化报表,实现数据的一站式采集、处理和分析。

设备上报数据到物联网平台,物联网平台将数据以CSV格式存储到对象存储服务(OBS),数据可视化服务(DLV)从OBS文件读取数据并展现为多个维度的报表。
1. 创建MQTT协议产品、开发产品模型、并注册设备。
2. 创建数据转发规则,将数据以CSV格式持久化至OBS服务。
3. 配置数据可视化服务(DLV)展示OBS中物联网数据。
4. 使用设备模拟器上报数据,验证DLV大屏数据实时刷新。
• 已注册华为云官方帐号。未注册可单击注册页面完成注册。
• 已完成实名制认证。未完成可在华为云上单击实名认证完成认证,否则无法使用设备接入功能。
• 已开通设备接入服务。未开通则访问设备接入服务,单击“立即使用”后开通该服务。
• 已开通OBS服务。未开通则访问OBS服务,单击“立即使用”后开通该服务。
• 已开通数据可视化DLV服务。未开通则访问数据可视化DLV服务,单击“立即使用”后开通该服务。
1. 访问设备接入服务,单击“立即使用”进入设备接入控制台。
2. 选择左侧导航栏的“产品”,单击右上角下拉框,选择新建产品所属的资源空间。
3. 单击右上角的“创建产品”,创建一个基于MQTT协议的产品,填写参数后,单击“确认”。

4. 为上一步创建的产品导入产品模型,请参考导入产品模型。
5. 选择第3步创建的产品,在该产品下注册设备、请参考注册单个设备。

| 参数名 | 参数说明 |
| 规则名称 | 自定义,如iotda-obs。 |
| 规则描述 | 自定义,如数据转发至OBS服务。 |
| 数据来源 | 选择“设备属性”。 |
| 触发事件 | 自动匹配“设备属性上报”。 |
| 资源空间 | 和上一步创建的产品所在的资源空间保持一致。 |

参考下表参数说明,填写转发目标。填写完成后单击“确定”。
| 参数名 | 参数说明 |
| 转发目标 | 选择“对象存储服务(OBS)” |
| 区域 | 选择“对象存储服务”区域。若未授权访问此区域的服务,请根据界面提示,配置云服务访问授权。 |
| 存储桶 | 选择桶。若没有,请前往OBS服务创建桶 。 |
| 自定义目录 | 自定义存储数据目录 |
| 文件名称 | 自定义存储数据文件名 |
| 文件类型 | 选择“CSV” |
| 转发字段----目标存储字段 | OBS服务中生成文件和流转数据的对应关系列表 |
本实践中用到的转发字段和转发目标如下:
| 转发字段 | 转发目标 |
| notify_data.header.app_id | appId |
| notify_data.header.device_id | DeviceId |
| notify_data.body.services[0].properties.orderID | orderID |
| notify_data.body.services[0].properties.area | area |
| notify_data.body.services[0].properties.orderTime | orderTime |
| notify_data.body.services[0].properties.goods | goods |
| notify_data.body.services[0].properties.amount | amount |
示例:如果设备上报的属性如下,需要把"orderID"保存到CSV文件,需要设置转发字段为”notify_data.body.services[0].properties.orderID”,转发目标为”orderID”。
{
"resource" : "device.property",
"event" : "report",
"event_time" : "20220812T121212Z",
"notify_data" : {
"header" : {
"device_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f",
"product_id" : "ABC123456789",
"app_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f"
},
"body" : {
"services" : [ {
"service_id" : "order",
"properties" : {
"orderID" : "0001"
},
"event_time" : "20220812T121212Z"
} ]
}
}
}

(1) 使用MQTT模拟器连接到平台(模拟器使用请参考:使用MQTT.fx调测)。
(2) 使用模拟器进行属性上报(参考:设备属性上报)。
上报内容如下:
{
"services": [{
"service_id": "order",
"properties": {
"orderID": "0000001",
"area": "南山区",
"orderTime": "20220815T121215Z",
"goods": "商品01",
"amount": 30.5
},
"event_time": "20220815T121215Z"
}
]
}
(3) 前往OBS控制台,查看转发目标设置的文件是否生成


配置数据可视化服务,新建数据报表视图。
(1) 登录华为云官方网站,访问数据可视化服务
(2) 单击“进入控制台”
(3) 访问DLV控制台“我的数据”页面,单击“新建数据连接”,新建CSV文件数据连接(详情请参考:新建CSV文件数据连接 ,若您未开通DLV服务,可单击“体验试用”获取30天的基础版免费试用)

(4) 新建CSV文件数据连接中文件来源选择OBS文件,文件路径选择创建规则时指定的转发目标

(5) 访问DLV控制台“我的大屏”页面,新建大屏添加并编辑组件实现下图效果(参考:创建大屏、编辑大屏)。也可以通过附件导入大屏(具体操作步骤请参考:导入导出大屏,自动售货机监控)

(6) 选择上一步创建或导入的大屏进入编辑页面,分别设置每个组件的数据源
注意:
通过附件导入大屏时,各个组件的的数据转换器已经设置完成,只需要修改数据源为自己的CSV文件,即可完成大屏开发。
如果需要手动开发组件, 下面以”订单金额”为例,演示如何将CSV文件中数据展示到DLV。
(7) 选中订单金额对应的数字翻牌组件,在右侧属性窗口,切换到”数据”页签,选择数据源类型为“CSV”

(8) 选择步骤4创建的数据连接

(9) 切换到“数据转换器“页签,新建一个名称为“sumAmount“的数据转换器,编写转换器代码(参考:使用数据转换器 )

转换器源码:
var sumAmount =0.0;
for(var i = data.length-1; i >=0; i--){
sumAmount +=Number(data[i].amount);
}
return[{
"name":"",
"value": sumAmount
}];
(10) 选择组件,更改数据转换器为“sumAmount“,点击“更新查询“,就可以看到数据刷新到组件。(这样“订单金额“组件就完成开发,按照这个方法即可完成其他组件的开发)

(11) 大屏制作完成后点击右上角的“预览”或“发布”按钮即可完成大屏的预览和发布

(1) 使用MQTT模拟器连接到平台(模拟器使用请参考:使用MQTT.fx调测)
(2) 使用模拟器进行属性上报(参考:设备属性上报)
上报内容如下:
{
"services": [{
"service_id": "order",
"properties": {
"orderID": "0000002",
"area": "罗湖区",
"orderTime": "20220815T121215Z",
"goods": "商品02",
"amount": 30.5
},
"event_time": "20220815T121215Z"
}
]
}
(3) 打开数据可视化服务查看数据是否刷新

到这里我们就完成了整个物联网监控大屏端到端到开发配置,以及模拟数据上报最终结果的预览呈现。
设备接入服务:全场景极简设备接入,亿级设备接入和百万级高并发通信,数据上云按需流转

设备接入服务支持将设备上报平台的数据推送给行业应用或者是流转给其他云服务,接下来针对设备的接入服务进行展开讲解。
全接入广覆盖、多设备全场景极简联接上云

IOT SDK集成开发的好处就是我们可以直接调用SDK封装好的方法实现设备的直连,简化了我们集成开发的难度。只要是支持TCP/IP协议的设备就可以通过WIFI或者2/3/4/5G网络直接接入云端。
sdk预集成,模组-流量-云平台一站式采购,设备上电即上云

从上图可以看出,设备厂家在选择开发时,如果选择带有IOT SDK的设备模组,只需要关注设备的指令与模组通信,就可以实现设备的极简快速上云,相比于传统的开发模式,大大减少了对接的难度和联调的周期。
轻量化,多语言Device SDK使能端侧智能,支持厂商灵活适配

核心能力
功能模块化,按需移植更轻量
• RAM容量最小仅需32KB,根据设备资源情况按需移植功能模块
多语言,多OS,开放易用
• 覆盖主流编程语言,降低开发门槛
• 支持多种OS及RTOS,主流OS全覆盖
云端下发规则,端侧执行更智能
• 在云端配置设备间信任关系及通信规则,一键下发
• 设备间基于OpenHarmony软总线实现横向互联
设备级异常检测,设备防护更安全
• 设备级异常检测,实现配置风险、密钥泄露等及时预警
• 端侧支持国密算法,帮助端侧实现加密算法国产化
标准物模型统一数据格式,提供设备级标准API,批量复制,按需调用

简便易用
简化应用对接,不依赖硬件开发联调;统,数据结构对接多家厂商设备相关API调用量达亿次/月
丰富生态
联合芯片、模组、智能硬件等几十家loT合作伙伴,沉淀标准物模型品类300多个,覆盖工业、园区、城市、智联生活等
高效、安全、稳定的OTA升级能力,云网协同提高弱设备升级成功率

核心能力
FOTA/SOTA全面支持
• FOTA:固件升级,用于设备硬件的底层“驱动程序”
• SOTA:软件升级,用于设备系统软件和应用软件
NB网络低速场景特殊优化
• 通过自定义的PCP应用层协议,降低弱设备的资源占用率
• 按照网络信号覆盖情况,灵活调整设备升级并发数量,提高升级成功率
安全、灵活的升级策略
• 支持可视化任务配置、自定义升级时间、升级范围、升级版本、重试策路等,满足各类升级诉求
• 自定义升级包token过期时间,升级包校验,防篡改、高安全
海量设备同时升级
• 通过批量任务管理,提供多线程、高并发的升级能力,完成百万级设备快速升级,安全漏洞快速修复
匹配业务组织的角色分权,设备分域管理,区域自治,全局统筹

优势
分域管理资源隔离
在同一实例下创建多个资源空间,实现多业务应用的分域管理
同一设备不同权限看护
API级权限控制,满足企业对权限最小化的安全管控要求
灵活自定义角色权限
针对每个层级的管理员,上层管理员可根据实际情况分配不同的角色权限
在消息通信方面,首先要介绍的是编解码插件功能
编解码插件:零代码实现数据格式转换,设备数据码流翻译器

比较经典的场景是设备资源受限,低功耗,或者考虑节省流量等方面,采用二进制码流的格式上报数据,这种情况下需要在云端通过编解码插件将二进制格式转为符合物模型的Json格式。
相关的优势体现在支持多种开发方式,降低开发门槛,提升了开发效率和支持界面图形化开发,零代码打通消息到物模型数据流
泛协议适配,开放灵活,支持多行业,多场景的设备上云

场景
• 交通、水利、消防、电力等行业的设备通过预集成的行业协议解析插件平滑接入,开箱即用
• 厂家私有协议设备可通过开发解析插件快速接入设备无须改造
• 无需额外采购服务器、网络等资源,无需构建针对协议插件的运维能力,部署到平台统一托管运维
优势
• 多:可支持30+行业协议,丰富插件市场
• 易:私有协议一键部署,平台托管免运维
• 稳:统一监控运维,解析异常实时感知
海量Topic订阅,支持设备-应用,设备-设备到双向通信
在设备通信方面有两个典型的应用场景,第一个是设备到应用的双向通信,我们上层应用通过消息订阅及时感知设备的变化,也就是设备状态变化和故障信息上报,OTA升级等等。
第二个是设备与设备到端到端通信,可以概括为两个要点,一个是一对一对设备通信,另一个是双向通信,比较典型的场景是AGV机器人即时通信,实现多机协作。

一路流转,多路分发,强大,灵活的数据订阅和流转能力

同时平台提供规则引擎相关能力,也就是智能设备接入平台上报数据之后,可以结合平台的流转规则将设备数据流转到上层应用通道Kafka、DIS、MQTT等等,也可以转发给云服务进行数据存储、分析、集成等等,也可以转发给LTS、DLV进行监控、数据可视化呈现。
同时平台也提供了SQL自定义订阅流转规则,支持基于SQL的自定义规则,可通过SQL愈发实现精细化数据清洗、过滤、数据格式转换等功能。
万级联动规则实现跨应用/子系统的多设备自动化协同

上图是华为园区消防应急处理,消防联动的展示
消防报警 -> 摄像头跟踪- > 短信推送 ->应急指引 -> 门禁联动 ->广播通知
设备发放:云端批量发放,设备自动就近接入

从上图对比可以看出有了华为云IOT设备发放服务之后,设备厂商只需要以唯一的地址批量覆盖,然后相关设备发放给不同的客户,客户拿到设备进行上电激活后,设备会根据云端的地址进行业务交互,由云端判断设备所在区域进行自动的就近接入,这样就实现了设备的上电上云,就近接入。
设备异常检测:设备安全状态可视,识别异常行为设备,确保企业安全生产

能力
• 支持13种检测项,实时监测第三方恶意攻击行为、设备自身异常行为
• 支持租户视角海量设备的安全可视
• 根据异常检测模型给出具体的处理建议
价值
• 识别单设备/同类设备的异常:降低大规模设备被入侵、甚至发起大规模
DDoS攻击的可能
• 实现设备预测性维护:根据设备生产执行和异常情况进行预测性维护、判断
设备是否异常,避免因设备异常造成停工停产,提前识别风险。
全球SIM联接:让联接更简单、智能

全球SIM联接云服务是什么
全球SIM联接服务是基于移动运营商提供无线蜂窝联接,为物联网设备提供2/3/4G物联网上网流量
典型应用场景
(1) 通用场景:物联网设备提供需要2/3/4G无线蜂窝连接,不需要挖沟铺线
典型行业:三表(电表、水表、气表):POS机、共享电动车等
(2) 跨国业务,享受本地资费:国内统一人口购买到海外当地流量
• 典型行业:车企(销售海外)、物流、运输、保健等
(3) 运营商切换,享受更低资费:不换卡可换运营商网络
• 全球SIM联接可提供空中写卡自主更换和选择运营商
• 典型行业:新零售、运输、汽车出海等
全球SIM联接云服务提供什么
(1) 流量套餐(每月流量)
国内:30M、100M、500M、1G、2G、3G、5G、10G、30G共7档
运营商:中国移动、中国联通、中国电信
海外:10M、30M、100G共三档(仅限eSIM和vSIM)
(2) SIM卡类型
• 普通实体卡;消费级三切卡、消费级双切卡、贴片卡
• eSIM&vSIM

核心价值
• 数据清洗:提供基于Flink实时计算引擎的0代码数据清洗工具,拖拽式开发,快速定义数据清洗逻辑
• 温冷分层:提供时序+OBS的温冷分层管理技术 有效降低海量数据存储的成本
• 李生模型:支持资产数据建模,提供图形化建楼美工具,支持批量快速定义设备/资产模型,让数据不再难懂
• 数据分析:提供多种分析工具,包括时序分析,流分析,批分析,满足不同分析场景需要
总结: IOT数据分析服务是针对物联网领域的专属分析平台,其核心的要点是针对我们的IOT设备实时采集的数据,或者是批量导入的IOT子系统的数据进行转换、删除、去重、差值等相关的清洗操作,将转换过的数据关联到再数据分析服务上建立的模型相关的点位上,同时也支持温冷分层存储,并且根据平台提供的数据分析能力,对进行清洗后的数据进行进一步的分析处理之后,面向我们的应用侧开放使用,典型的场景有实时监控、统计分析、智能决策等。
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现