关注分享主机优惠活动
国内外VPS云服务器

以小见大,从一盏路灯(物联网灯具)看一亿物联网之路

要实现事物的连接,共有阶段性的任务,而这个阶段性的任务也伴随着巨大的挑战。本文分享了华为云社区的观点,陆云从一盏路灯共创万物互联,从一盏路灯共创万物互联之路。

摘要:IoT,物联网,物联网,顾名思义就是事物的连接。为了实现“物的连接”,有三个阶段性任务,而这三个阶段性任务也伴随着巨大的挑战。本文分享自华为云社区《共创中的云》,从小处看万物互联之路。作者:祁鸣。

物联网的必然趋势和巨大挑战在介绍华为云物联网设备接入管理服务业务之前,我们需要知道什么是“物联网”。

IoT,物联网,物联网,顾名思义就是事物的连接。实现“物的连接”,有三个阶段性的任务,而这三个阶段性的任务也伴随着巨大的挑战:

阶段一:让“物”说话。正如婴儿需要会说话才能融入这个世界一样,我们的“东西”也需要能够与外界交流。感知物理世界,并将其转化为数字信号:让万物感知温度、空间和五官,并将它们感知的东西数字化。在数字化过程中,我们发现了以下挑战:

大量现有设备没有数字化;多样化的设备,各种行业协议,各种通信网络;设备要求低功耗、低成本;设备安全问题在第二阶段凸显:一个婴儿讲一句话是不够的。与外界交流,需要与外界使用共同的语言。“物”也是如此。我们需要把数字变成线上的,提供标准化的数据,让外界能够理解“东西”在说什么。这需要广泛的连接和多协议访问,数据标准化和统一的对象模型。然而,现状是:

数百万的数据元素,缺乏标准和规范;多样化的数据格式像烟囱一样在厂商间发展,数据孤岛很多,相互之间很难沟通。阶段三:在让事情有价值的基础上,需要让宝宝说出有价值的话,达到高效沟通。“物”也是如此。尤其是在“物”的世界里,需要解决海量的数据处理和分析,所以对计算能力的要求极高,要求实时性。最终的结果是行业的数字化,数字产业。然而,如前所述:

海量数据带来计算能力和存储问题;实时流、时序、离线、多维分析复杂;行业应用场景的复杂性;商业闭环,价值扭曲,分配问题,可以从小的角度看。从一盏路灯,我们可以看到万物互联的世界。首先,我们来描述一下我们心目中一盏路灯的样子。你以为很简单吗?

让我们回顾一下路灯的发展历史:

从时间控制器+本地环路控制,五六十年代的定时切换,最简单的逻辑处理关系;到了70年代,光电控制器有点“聪明”了,可以感知周围的光线强度,调节开关,但此时只在本地回路控制。上世纪90年代,基于无线专网的三遥监控系统,实现远程回路控制成为可能。最后,到目前为止,基于物联网技术的智能系统实现了信息融合、智能场景和应用扩展,从而实现了智能照明场景(如上图)。

可以看到,智慧场景中的智慧路灯配备了很多智能设备,如监控组件、LED屏、集中控制器、电动汽车充电桩等。,使路灯可以实现路面所能达到的基本功能。

以上是一盏灯的智慧之路。在这个过程中,物联网技术发挥了巨大的作用,使得一盏单定时控制的路灯一步步具备了多场景多应用的功能,最终演变成了智能路灯。

华为云物联网设备接入管理服务就是基于这项技术。

华为云物联网设备接入管理服务介绍首先,我们要对物联网有一个正确的认识:物联网是由多个服务组成的,而不是单一的服务。下图显示了一个整体的物联网解决方案。

图的左边是设备,体现了我们前面说的:让设备说话,让设备说同样的话,让设备说有价值的话。那么,首先要让这些设备“被感知”。在这个过程中,我们通过物联网操作系统(LiteOS)或SDK使它们变得智能。然后感知到的东西通过网关、边缘网关或者直连以数据的形式上传。具体应该上传到哪里?

考虑到设备的质量,我们需要一个物联网平台。数据以上述方式上传到物联网平台中的设备接入服务。在设备接入服务上,可以实现多网络接入、多协议接入、设备影子等功能;在整个物联网平台上,还包括全球SIM连接、设备分发、数据分析等服务。

在图的右侧,可以更好的连接华为云的其他产品,比如DIS/DCS/OBS等。,帮助客户快速构建符合客户要求的物联网应用,如智慧城市、智慧园区、车联网等。

回归技术本身。前面我们提到过,通过华为云设备访问服务可以访问不同的设备,但实际上它们的访问方式和访问协议都是不同的。那么华为云设备接入服务是如何屏蔽底层差异,实现设备接入的呢?

我们先来看下图:

通信模型:在华为的云设备接入服务中,定义了一个“通信模型”。我们也以宝宝说话为例。人与人之间的交流,虽然有很多种语言,但主要是通过语音(口语)或视觉(手语)来表达。而事物之间,同样的,主要内容主要是几类:命令发布,命令对应,属性装备等等。

装备影子:在此基础上,我们还有“装备影子”这个概念。物联网平台支持创建设备的“影子”。设备影子是一个JSON文件,用来存储设备的在线状态,设备最近上报的设备属性值,以及应用服务器预期下发的配置。每个设备只有一个设备映像,设备可以获取并设置设备映像来同步设备属性值。这种同步可以是对设备的映像同步,也可以是对映像的设备同步。

通用协议接入层:有了“通信模型”之后,我们需要将设备数据与通信模型关联起来,关联就是“通用协议接入层”。通过通信协议接入层,我们可以在不同的协议类型(如MQTT/CoAP/TCP等)上转换不同的数据。)进入沟通模式。

编解码处理:产品的设备上报数据时,如果“数据格式”是“二进制码流”,产品需要开发编解码插件;如果“数据格式”是“JSON”,则无需在该产品下开发编解码插件。

以NB-物联网为例,NB-物联网设备与物联网平台的通信采用CoAP协议,CoAP报文的有效载荷为应用层数据,应用层数据的格式由设备自行定义。由于NB-物联网设备一般对省电要求较高,应用层数据一般采用二进制格式,而不是流行的JSON格式。但是物联网平台是以JSON格式与应用端进行通信的。因此,需要为物联网平台开发编码插件,完成二进制格式和JSON格式的转换。

华为云物联网设备接入管理服务云架构解读物联网设备接入管理服务架构

在解释整个框架之前,首先要明确一点,华为的云物联网设备接入服务其实是基于云原生微服务的架构。it中所有与业务相关的服务都是无状态的。无状态服务意味着它们可以随时被创建或终止。

换句话说,即使任何服务实例出现问题,也可以创建服务来确保业务不受损害。同时,在海量并发的情况下,通过灵活的收缩和扩展,服务可以满足相应业务量的需求。

在无状态服务的框架下,除了负载均衡层(为了使大量设备能够访问服务),还可以分为两层:

第一层是CIG云通信网关层,实际上是将各种设备的不同协议、不同数据格式转换成统一的模型;

另一层是连接&管理业务服务:将数据和协议转换成统一的模型,然后由业务服务进行处理,如消息流推送、设备影子、规则引擎服务、任务管理服务等。

上层是公有云支持管理服务:通过公有云支持服务,如CBC/IAM/SMN等,设备访问管理服务是作为一个整体构建的。

以上是设备技术管理服务的总体框架。通过这个框架,我们可以了解内部的业务处理逻辑,这将有助于您了解我们后续的沙盒实验体验。

产品模型(Profile)-统一的数据-通信模型产品模型又称Profile,简单来说就是通信模型的映射。

上图是如何将不同类型的数据映射到通信模型的示例。

在图片的左边,有三个不同的米。虽然都是水表,但是生产厂家不同,所以数据格式和协议也不一样。那么如何才能把他们的数据收集起来形成统一的格式呢?

答案是产品型号。通过产品模型中不同的插件,可以将这些不同的数据转换成相同格式的数据。对于设备厂商来说,不需要修改设备代码,就可以通过插件适应不同企业的诉求,降低设备厂商的维护复杂度。对于上层应用,降低了上层应用对设备管理的复杂度,通过对平台上不同厂商的数据进行标准化,形成统一的Profile,使得上层应用无需感知不同设备的差异。

接下来,看看规则引擎。规则引擎是华为云物联网设备接入服务独有的能力,通过规则引擎可以实现数据流和设备联动。与公有云其他服务无缝对接,实现设备数据的按需流转和处理;

设备联动也是基于规则引擎实现的,由条件触发,由预置的规则触发,比如提醒、告警、状态报告等等。

华为云物联网智能路灯沙盒实验演示在介绍了华为云物联网设备接入管理服务之后,我们再来看看相关的沙盒实验。

沙盒实验介绍

智能路灯沙盒的实验组网结构如上。为了方便大家在线完成路测,我们需要有一个虚拟设备,这里用的是设备模拟器。设备访问平台,报告属性,然后接收平台发出的命令。平台上层有基于华为云软开放云的应用层实现。一般步骤如下:

1.通过华为云软件开发平台搭建一个路灯仿真应用(真实应用可以参考其搭建方法);

2.申请ECS云服务,将构建好的应用部署在ECS上,通过EIP将物联网设备接入服务,并进行订阅通知;

3.在实验桌面上运行MQTT模拟器,模拟路灯设备的行为。

设备模拟器在正式开始之前,我们先来看看设备模拟器(如下图)。

连接参数配置区:

打开设备模拟器后,打开MQTT设备模拟器选项卡。在“连接参数配置区”需要指定进入平台的地址信息,获取“设备注册成功”或设备ID和设备密钥,与平台建立连接;

消息报告区域:

在与平台建立连接之后,设备向平台报告数据。下面有一个“留言举报区”。指定设备报告属性的主题后,您可以粘贴以下jason格式的数据并进行报告。

日志打印区域:

右边是一个类似消息跟踪的日志打印区,可以看到消息上报的消息记录,包括平台下发的命令,也在这里做一个打印跟踪。

话题订阅区:

主题订阅区域是另一个选项卡。当设备需要订阅与平台发布的命令相关的主题时,可以在这里指定主题进行订阅。

应用实现-API介绍在实验桌面,创建代码仓库后,可以查看详细的源文件。几个源文件的典型实现就是应用端API的实现,比如:

创建设备API:src/main/Java/com/Huawei/service/registerdirectconnecteddevice . Java。

创建订阅API:src/main/Java/com/Huawei/service/subscribedatachg . Java。

发出设备命令API:src/main/Java/com/Huawei/service/createdevicecommand . Java。

基于这些源文件的样本代码,开发者可以根据自己的想法进行定制开发。

前台web页面布局的关键文件是一个索引html源文件,外加一个js脚本:

页面布局:src/main/resources/static/index . html

脚本文件:src/main/resources/static/js/common . js。

智能路灯沙盒实验的实践步骤智能路灯沙盒实验分为7个步骤:

1.编译构建智能路灯应用DevCloud。

2.创建一个主题并订阅SMN。

3.创建弹性云服务器ECS

4.部署智能路灯应用DevCloud。

5.进口产品型号IoTDA。

6.配置智能路灯应用网站。

7.结果验证

开发者登录华为云账号,进入沙盒实验后,会出现上面的页面:

实验记录在左上角。开发者使用这个实验账号在实验桌面通过firefox浏览器登录华为云,通过控制台访问各种服务。

账号下有一步一步的实验步骤说明,按步骤做就行了。

右上角有完成进度显示,可以实时刷新,可以获得实验的进度显示和倒计时。

在左边部分,有一些要执行的相关命令,可以方便大家在执行的时候快速复制。

由于时间限制,我们省略了第一个简单的步骤1~4,从步骤5开始,然后创建产品,这在正式的实验过程中是正常的。

PS:前1~4步需要注意的是,主题创建和订阅时,平台会向用户手机发送确认短信。用户需要检查短信,点击里面的链接并确认,然后才能完成实际订阅。

接下来,我们正式进入实验操作:

导入产品模型:在华为云控制台创建产品,展开左侧导航,选择服务列表->物联网->设备接入IoTDA,如下图所示:

在左栏中选择“产品”,然后单击“创建产品”。这些参数如下:

①资源空间:默认_ APP _沙盒_用户_物联网。

②产品名称:用户自定义,如路灯。

③协议类型:MQTT

④数据格式:JSON

⑤厂商名称:用户自定义,如华为_IoT。

⑥设备类型:用户自定义,如路灯。

填写完毕后,点击“立即创建”,产品创建成功。请记录“产品ID”的信息,并检查“详细信息”。

上传模型文件点击已创建的产品,输入详细信息,然后点击“上传模型文件”,选择SmartStreetLight.zip文件,点击“确认”完成上传。

配置智能路灯应用(订阅推送方案)访问智能路灯Web界面新建浏览器页签,输入http://EIP:8080/index.html(在步骤3.2中用弹性云服务器的弹性公共IP替换地址中的“EIP”)访问智能路灯网页。

在弹出的参数设置窗口中设置参数,参数填写如下:

①数据来源:在参数设置页面的下拉框中选择“订阅推送”。

②本地IP:控制台->服务列表->计算->弹性云服务器ECS进入服务器列表查看并复制弹性公有IP。

③主题URN:控制台->服务列表->管理监督->消息通知服务SMN。进入主题列表查看和复制主题骨灰盒。

④APPID:控制台->服务列表->物联网->设备访问IoTDA,在左侧导航栏选择资源空间,复制获取产品所需的APPID。

⑤帐户名:系统为您分配的华为云实验的帐户名。

⑥IAM用户名:系统分配的华为云实验用户名。

⑦IAM用户密码:系统为您分配的华为云实验密码。

⑧项目ID:控制台从右上角用户名下拉框中选择“我的凭证->API凭证”页面,复制获取“华北-北京4”的项目ID。

⑨产品ID:控制台->服务列表->物联网->设备接入IoTDA,在左侧导航栏选择“产品”,复制获取产品所需的产品ID。

填写完毕点击“确定”,弹出窗口提示如下,表示参数设置成功。

注册设备输入设备标识(用户定义,如123456789f),然后单击“注册设备”。

弹出提示如下,表示设备注册成功。请记录“设备Id”和“密钥”信息,以便后续验证。

注意:请记录设备id和密钥以备后用!

注册成功后,设备处于非活动状态。请选择服务列表->物联网->设备接入服务,在左栏选择设备>所有设备,点击设备识别码进入,检查设备Id或修改密钥。

结果验证(设备属性报告/订阅/设备命令发布)模拟器与平台建立连接,打开MQTT设备模拟器。双击实验桌面上的“Xfce终端”打开终端,执行以下命令打开设备访问模拟器(HubSimulator.jar),然后切换到MQTT设备模拟器选项卡。

在MQTT设备模拟器选项卡下建立连接,并填写以下参数:

①服务IP:进入服务列表->物联网->设备接入IoTDA,在左栏选择“概述”,点击“平台接入地址”。

复制使用MQTT/MQTT访问信息的域名。

②设备ID:配置智能路灯应用并成功注册设备后返回的设备Id。

③设备密钥:配置智能路灯应用并成功注册设备后返回的密钥。

配置完上述参数后,点击“建立连接”按钮。

连接成功建立后,右边的日志显示MQTT服务连接成功,如下图所示:

如果无法建立连接,请打开“命令提示”窗口,输入“ping服务IP”,查看您的主机是否能正常与华为云物联网平台通信。如果不能正常通信,请更改主机的网络环境。

查看设备状态,返回物联网中所有设备列表(服务列表->物联网->设备→所有设备),设备状态变为在线,如下图所示:

模拟器设备属性报告模拟器发送消息并报告设备属性。①在模拟器窗口的主题列中输入以下代码:$ oc/devices/{device_id}/sys/properties/report,其中{ device _ id }需要替换为实际的设备ID。

$ oc/devices/{设备id}/sys/properties/report

②消息内容:

其中光强可以自定义,灯状态建议关闭。

在模拟器窗口的消息编辑字段中输入以下代码:

{ " services ":[{ " service _ id ":" Sensor "," properties":{"luminance":"200 "," light _ state ":" OFF " }]}

消息发送成功后,右侧日志显示的信息推送成功(图片仅为标志,请以实际上报数据为准)。

检查应用程序界面中的更改,并返回到智能路灯的Web界面。此时“环境亮度”为200LUX,“灯光状态”关闭。

注意:模拟器和网页之间会有短暂的延迟。你不需要刷新页面。几秒钟后,你可以发现页面会随之改变!

模拟器订阅主题切换到订阅主题选项卡,并在主题列中输入以下代码:

$ oc/devices/{device_ID}/sys/commands/#,其中{ device _ ID }需要替换为实际的设备ID。

进入后,点击“订阅”按钮完成订阅。

$ oc/devices/{ device _ id }/sys/commands/#

订阅成功后,右边的日志显示主题订阅成功。

平台发布设备命令/模拟器响应终端联控模式的配置,返回智能路灯Web界面。对于路灯控制,选择终端联合控制模式,打开,点击设置,然后点击确定。

①如果当前灯状态为“关”,开关选择为“开”,服务后台会实时发出开灯命令,弹出提示会延迟5-10秒左右。请耐心等待。

②如果当前灯状态为“关”,开关选择为“关”,则不会触发命令,直接弹出窗口提示设置成功。

即当“灯状态”与“开关选择”一致时,不会触发该命令;当“灯光状态”与“开关选择”不一致时,会触发实时命令。

收到该命令是因为当前的“灯状态”是关闭的,而“开关选择”是打开的。如果您查看模拟器日志区域,您将收到一个开灯命令。(payload的值用base64加密,解密后可以得到命令内容)。

模拟器发送一条消息来报告已更改的设备属性。①主题:$ oc/devices/{device_ID}/sys/properties/report,其中{ device _ ID }需要替换为实际的设备ID。

②消息内容:

其中光强可以自定义,灯状态建议开。

{ " services ":[{ " service _ id ":" Sensor "," properties":{"luminance":"110 "," light _ state ":" ON " }]}

查看应用程序界面中的更改,如下图所示。它应该显示“环境亮度”为110LUX,并且“灯光状态”打开。

短信/邮件通知在模拟器上点击“断开”后,重复7.4.1,路灯控制选择“终端联控模式”,开关选择“关”,点击“设置”。

由于灯状态为“开”,开关选择为“关”,服务后台会实时发出关灯命令;但是设备离线,导致命令下发失败。

此时,系统会发送短信/邮件通知,通知订阅用户该命令下发失败;通知的内容是一条错误消息,表明命令发出失败。

通知示例:【华为云】错误消息:{"error _ code": "iotda.014016 "," error _ msg ":"不允许操作。该设备未联机。}

设备被更改为“离线”状态。请登录华为云控制台,选择“物联网>设备接入服务”。在左侧导航栏中,选择“设备>所有设备”,根据设备识别码查看设备状态。

模拟器接收到响应,因为当前的“环境亮度”为110LUX,并且“灯光状态”打开。如果您查看模拟器日志区域,您应该会收到一个熄灯命令。

①如果当前“环境亮度”大于“亮度阈值”,“灯状态”为“开”,服务后台会实时发出关灯命令,弹出提示会延迟5-10秒左右。请耐心等待。

②如果当前“环境亮度”小于“亮度阈值”,且“灯光状态”为“开”,则不会触发该命令,直接弹出提示设置成功。

也就是说,当环境亮度小于亮度阈值,并且灯状态打开或者环境亮度大于亮度阈值,并且灯状态关闭时,将不触发命令。否则会触发实时命令分发。

模拟器发送一条消息来报告已更改的设备属性。①主题:$ oc/devices/{device_ID}/sys/properties/report,其中{ device _ ID }需要替换为实际的设备ID。

②消息内容:

其中光强“计算”->“弹性云服务器ECS”进入,勾选要删除的ECS服务器,如ecs-iot,选择“更多>删除”。在弹出的窗口中,请勾选要删除的弹性公网IP和数据盘,然后点击“是”完成删除。

在华为云控制台删除设备接入服务IoTDA,选择服务列表->物联网->设备→所有设备进入所有设备列表,根据设备识别码删除设备,如123456789f。然后在左栏选择“产品”删除产品,如路灯。

删除从桌面下载的资源包。双击桌面上的“Xfce Terminal”打开终端,输入以下命令下载并删除“HubSimulator.jar”文件。

cd桌面/

rm模拟器. jar

接下来,删除“SmartStreetLight.zip”压缩包。该命令如下所示:

rm SmartStreetLight.zip

至此,实验体验结束。

总结出华为云设备接入服务(IoT Device Access)是华为云的IoT平台,提供海量设备连接云端、设备与云端双向消息通信、批量设备管理、远程控制与监控、OTA升级、设备联动规则等能力。,并能灵活地将设备数据转移到华为云的其他服务,帮助IOT行业用户快速完成设备联网和行业应用集成。新升级的设备接入服务IoTDA集成了原有设备接入服务和设备管理服务的功能。

有兴趣就来一起体验吧~ https://www.huaweicloud.com/product/iothub.html

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

未经允许不得转载:主机频道 » 以小见大,从一盏路灯(物联网灯具)看一亿物联网之路

评论 抢沙发

评论前必须登录!