华为云用户手册

  • 场景说明 在物联网解决方案中,针对庞大的数据进行自动学习时,需要对海量数据进行标注、训练,按照传统的方式进行标注、训练不仅耗时耗力,而且对资源消耗也是非常庞大的。华为云物联网平台可以通过规则引擎,将数据转发到华为云其他云服务,可实现将海量数据通过函数工作流(FunctionGraph)进行处理,再将数据流入AI开发平台(ModelArts)进行AI分析,并将分析结果统一转发至HTTP服务器中。 图1 场景说明 在本示例中,我们实现以下场景: 设备上报银行客户特征信息,物联网平台将数据转发至FunctionGraph,由FunctionGraph转发至ModelArts进行AI分析,最终将分析的结果转发至HTTP服务器中。
  • 前提条件 已注册华为官方账号。未注册可参考注册华为账户完成注册。 已完成实名制认证。未完成可在华为云上单击实名认证完成认证,否则会影响后续云服务的开通。 已开通设备接入服务。未开通则访问设备接入服务,单击“免费试用”或单击“价格计算器”购买并开通该服务。 已开通FunctionGraph服务。未开通则访问FunctionGraph服务,单击“立即使用”后开通该服务。 已开通ModelArts服务。未开通则访问AI开发平台,单击“控制台”后进入该服务。 自建一个HTTP服务器,并提供POST接口用来接收推送的数据(本示例默认已经提供好相应的服务器与接口,不再展示如何搭建HTTP服务器指导)。
  • 模拟数据上报及结果验证 使用MQTT模拟器连接到平台(模拟器使用请参考:使用MQTT.fx调测)。 使用模拟器进行消息上报,详情请参考:设备消息上报。 上报内容如下: { "age": "34", "profession": "blue-collar", "maritalStatus": "single", "educationalStatus": "tertiary", "realEstateSituation": "no", "loanStatus": "tertiary" } 查看HTTP服务器是否收到预测结果。 图17 查看消息
  • MQTT设备消息下发 本示例通过使用postman,下发开启室内空调指令。 使用MQTT.fx模拟器,订阅自定义Topic。 确保创建自定义Topic时,设备操作权限包含“订阅”功能,详细操作请参考自定义Topic。 使用IoT Device SDK或者原生MQTT协议接入的设备,需要在设备程序中,设置设备订阅的自定义Topic名称。 使用postman工具模拟应用侧调用下发设备消息接口,下发开启室内空调的命令。 调用查询设备消息接口,查看下发命令是否成功。若命令下发成功,室内空调将会被开启。
  • 业务场景说明 假设路灯设备上报一条光照强度(luminance)消息;支持远程控制路灯开关状态的命令(switch)。 表1 业务场景 业务场景 物模型样例 设备属性上报数据 { "service_id": "BasicData", "properties": { "luminance": 30 } } 服务端控制指令 { "command_name": "switch", "service_id": "LightControl", "paras": { "value": "ON" } } 设备使用一机一密的认证方式。 设备集成了第三方云SDK,采用物模型通信进行属性上报。 服务端集成了第三方云SDK,进行指令下发。
  • 场景示例—智能家居煤气检测联动 场景简介:煤气检测器发现煤气浓度超标时,自动关联无线推窗器把窗户打开,起到通风的作用。 该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,用户可以在控制台或通过应用侧接口创建设备联动规则,把设备上报的属性转发,通过物联网平台规则引擎转变成命令下发给其他指定设备。 核心知识点:产品模型、属性上报、命令下发、MQTT协议、设备联动规则。 最佳实践参考:煤气浓度过高自动打开推窗器。
  • 场景示例—智能网关 场景简介:已对接存量设备的网关,不用迁移就可以实现对既有设备和新设备的兼容控制。 该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,用户可以在控制台产品详情中自定义Topic,通过应用侧接口或控制台创建数据转发规则,把设备上报的消息转发给其他华为云服务,供应用侧用户主动去消费。 核心知识点:产品模型、消息上报、消息下发、MQTT协议、数据转发规则、自定义Topic。 最佳实践参考:使用自定义Topic管理室内空调
  • 场景示例—恒温空调 场景简介:通过恒温控制系统,不论空调是否开机,都可以调整空调默认温度,待空调上电开机后,自动按默认温度调节。 该场景主要描述的是应用侧或控制台可以给离线设备下发缓存命令,待设备上线后执行,控制台通过设备影子配置属性,待设备上线后上报的属性不匹配的话,会自动下发属性修改的指令,直至修改成功。 核心知识点:产品模型、编辑码插件、设备影子、属性上报、属性修改。 最佳实践参考:预置设备影子自动调节空调温度。
  • 设备引导请求 终端节点 区域名称 区域 终端节点(Endpoint) 端口 协议 华北-北京四 cn-north-4 iot-bs.cn-north-4.myhuaweicloud.com 8883 MQTTS 下载并修改华为SDK示例代码进行设备引导(这里以java sdk代码为示例)。 用IDEA/Eclipse打开SDK代码工程,修改iot-device-demo目录下的DEMO示例“BootstrapSample”中的参数,其中deviceId和secret替换为注册设备中生成的设备ID和密钥即可,bootstrapUri为上述终端节点。 运行DEMO程序,看到如下日志,代表设备发放成功,并且已经收到设备发放下发的设备接入地址。如果程序运行没报错,在对应的设备接入平台可以看到设备,并已在线。 收到设备发放下发的设备接入地址后,需要关闭设备侧的设备发放的连接,用的新的URL地址与设备接入通信,进行相关业务。
  • 注册设备 本次以注册单个MQTT密钥设备为示例,登录设备发放控制台,进入到“设备”页面,单击“注册”,选择对应接入点的产品进行设备注册,设备名称为“Model1_001”,填写设备的密钥,发放策略选择“静态策略”,创建设备。 实际使用中,用户可以使用批量注册功能注册大量设备。下载批量注册模板,按照模板说明正确填写后上传批量注册文件以批量注册设备。建议每个设备名称的以策略的关键字开头(比如策略关键字为Model1,设备名称为Model1_XXX001)。 图3 设备列表 图4 注册设备产品列表 图5 创建密钥模式静态策略设备
  • 业务流程 创建策略。其中以静态策略为例。 注册设备。注册MQTT协议的设备,体验发放业务。可以注册单个,也可以批量注册设备。 设备请求引导。 设备接收信息,解析出IoT接入实例地址,与IoT接入实例1进行通信。 动态扩容设备接入实例,创建对应实例的资源空间,在对应资源空间下上传产品。 注册设备。选择对应实例的产品创建设备。 新增策略。添加新实例的静态策略,以不同的关键字命名静态策略。 设备请求引导。 设备接收信息,解析出IoT接入实例地址,与IoT接入实例2进行通信。 应用主动设备发放控制台与设备侧通信。
  • 场景说明 随着厂商IoT设备的不断增加,或者厂商设备本来就面向多个销售中心(不同的销售中心有着自己的IoT接入实例),面对这样的场景,厂商在设备出厂的时候不知道设备最终需要连接到哪个IoT接入实例,设备出厂后不希望再对设备进行二次烧录。为此,华为IoT解决方案推出设备发放服务,设备出厂统一烧录设备发放的地址,通过在设备发放服务预置不同的发放策略,设备上电后自动发放到对应的IoT接入实例,并把对应的IoT接入实例地址下发给设备,设备就可以和目的接入实例实现通信。
  • 创建策略 有两种使用场景:设备发放控制台 用户预先开通了多个实例,通过设备的不同销售数据,根据对应的策略,设备上电自动发放到对应的实例。 用户预先只开通一个实例,预先创建对应的策略把设备发放到当前实例。当对应实例达到上限,动态开通新的接入实例,用户删除当前策略,添加新的策略,把新上电的设备发放到新开通的实例。 本示例讲述的是第二种使用场景。 登录设备发放控制台,进入到策略页面的静态策略页面,单击添加实例,根据关键字发放到指定的IoTDA实例。 图1 创建静态策略 图2 上传CA证书
  • 模拟数据上报及结果验证 使用MQTT模拟器连接到平台(模拟器使用请参考:使用MQTT.fx调测)。 使用模拟器进行属性上报(参考:设备属性上报)。 上报内容如下: { "services": [{ "service_id": "order", "properties": { "orderID": "0000002", "area": "罗湖区", "orderTime": "20220815T121215Z", "goods": "商品02", "amount": 30.5 }, "event_time": "20220815T121215Z" } ] } 打开数据可视化服务查看数据是否刷新。 图15 结果查看
  • 数据上报及验证数据是否转发成功 使用MQTT模拟器连接到平台(模拟器使用请参考:使用MQTT.fx调测)。 使用模拟器进行属性上报(参考:设备属性上报)。 上报内容如下: { "services": [{ "service_id": "order", "properties": { "orderID": "0000001", "area": "南山区", "orderTime": "20220815T121215Z", "goods": "商品01", "amount": 30.5 }, "event_time": "20220815T121215Z" } ] } 前往OBS控制台,查看转发目标设置的文件是否生成。 图7 查看OBS桶内文件
  • 创建产品和设备 访问设备接入服务,单击“立即使用”进入设备接入控制台。 选择左侧导航栏的“产品”,单击右上角下拉框,选择新建产品所属的资源空间。 单击左侧的“创建产品”,创建一个基于MQTT协议的产品,填写参数后,单击“确认”。 图3 创建产品-MQTT 为上一步创建的产品导入产品模型,请参考导入产品模型。 选择第3步创建的产品,在该产品下注册设备、请参考注册单个设备。 本文中使用的产品模型和设备仅为示例,您可以使用自己的产品模型和设备进行操作。
  • 场景说明 物联网解决方案中,作为数据主体的“物”可能数量会非常大,产生的数据已经无法通过传统的数据处理服务进行处理。如何分析与利用这庞大的物联网设备数据对物联网企业来说又是一个新的挑战。 华为云物联网平台提供规则引擎能力,支持将设备上报的数据转发至华为云其他云服务,可实现将海量数据通过对象存储服务(OBS)存储,再由数据可视化服务(DLV)读取数据呈现为可视化报表,实现数据的一站式采集、处理和分析。 图1 场景说明 在本示例中,我们实现下述场景: 设备上报数据到物联网平台,物联网平台将数据以CSV格式存储到对象存储服务(OBS),数据可视化服务(DLV)从OBS文件读取数据并展现为多个维度的报表。
  • 使用虚拟设备在线调试 在智慧路灯产品的开发空间,选择“在线调试”,单击“新增测试设备”。 在新增测试设备页面,选择“模拟设备”,然后单击“确定”,创建一个虚拟设备。虚拟设备名称包含 “Simulator”字样,每款产品下只能创建一个虚拟设备。 图22 在线调试-创建虚拟设备 单击“调试”,进入调试界面。 图23 在线调试-进入调试 模拟设备数据上报场景,在设备模拟器中,输入十六进制码流:002000(00为地址域meaasgeID,长度为1个字节;20表示光照强度,长度为1个字节;00表示路灯开关状态为关闭状态,长度为1个字节),然后单击“发送”,我们可以在应用模拟器中看到转换为JSON格式的数据为:"Light_Intensity":32, "Light_Status":0。 图24 在线调试-模拟数据上报 模拟远程下发控制命令场景,在应用模拟器中,选择服务:StreetLight,命令:SWITCH_LIGHT,命令取值为:ON,单击“立即发送”,我们可以在设备模拟器中看到转换为十六进制的码流:0100014F4E(经ASCLL码转为为十六进制)。 图25 在线调试-模拟命令下发
  • 在线开发插件 通常情况下设备为了省电,设备会采用“二进制”格式上报数据,编解码插件的作用就是将设备上报的“二进制”格式数据,按照产品模型文件的定义的属性转换为“JSON”格式数据,便于物联网平台和应用服务器识别。同时,用户远程下发控制命令时,物联网平台会将“JSON”格式的命令转换为“二进制”格式数据下发给设备。 如果设备本身上报的是JSON格式数据,则不需要定义编解码插件。 在智慧路灯产品的开发空间,选择“插件开发”,单击“图形化开发”。 单击“新增消息”,配置数据上报消息,上报路灯的数据消息。 消息名:LightData 消息类型:数据上报 添加响应字段:是。添加响应字段后,物联网平台在收到设备上报的数据后,会下发用户设置的响应数据到设备。 响应数据:AAAA0000(默认) 图7 插件开发-新增消息 单击“添加字段”,添加messageId字段,表示消息种类。 图8 插件开发-添加字段messageId 添加LightIntensity字段,表示光照强度,数据类型:int8u(8位无符号整型),长度:1字节。 图9 插件开发-添加字段LightIntensity 添加LightStatus字段,表示路灯上报的路灯开关状态数据。数据类型:int8u(8位无符号整型),长度:1字节。 图10 插件开发-添加字段LightStatus 再次单击“新增消息”,定义远程控制路灯开关的命令对应的编解码插件消息。 消息名:SwitchStatus 消息类型:命令下发 添加响应字段:是。添加响应字段后,设备在接收命令后,会上报命令执行结果。 图11 插件开发-新增消息SwitchStatus 单击“添加字段”,添加messageId字段,表示消息种类。 图12 插件开发-添加字段messageId 添加mid字段,用于将下发的命令和命令执行结果进行关联。 图13 插件开发-添加命令字段mid 添加SwitchStatus字段,数据类型:string(字符串类型),长度:3字符。 图14 插件开发-添加命令字段SwitchStatus 单击“添加响应字段”,配置命令下发响应消息。 添加messageId,表示消息种类。命令执行结果为上行消息,需要通过messageId和数据上报消息进行区分。 图15 插件开发-添加响应字段messageId 添加mid字段,用于将下发的命令和命令执行结果进行关联。 图16 插件开发-添加响应字段mid 添加errcode字段,用于表示命令执行状态:00表示成功,01表示失败,如果未携带该字段,则默认命令执行成功。 图17 插件开发-添加响应字段errcode 添加result字段,用于表示命令执行结果。 图18 插件开发-添加响应字段result 拖动右侧“设备模型”区域的属性字段和命令字段(产品模型文件定义的字段),与编解码插件定义的数据上报消息和命令下发消息的相应字段建立映射关系。 图19 插件开发-在线开发插件 编解码插件与产品模型文件建立映射完成后,单击右上角“保存”,并单击“部署”,完成编解码插件的部署。
  • 定义产品模型 找到步骤3创建的产品,单击产品进入产品界面。 在产品详情模型定义页面,单击“自定义模型”,配置产品的服务,然后单击“确定”。 “服务ID”:StreetLight “服务类型”:建议和服务ID保持一致 “服务描述”:路灯上报的环境光强度和路灯开关状态的属性。 单击步骤2新增的服务ID,在展开的页面单击“添加属性”,定义一条属性为路灯采集的当前环境的光照强度。 “属性名称”:light_intensity “数据类型”:int(整型) “访问权限”:可读、可写 “取值范围”:0~100,光照强度范围。 图3 新增属性-light_intensity 单击“添加属性”,定义一条属性为路灯当前的开关灯状态。 “属性名称”:light_status “数据类型”:int(整型) “访问权限”:可读、可写 “取值范围”:0~1,0代表关闭,1代表打开状态 图4 添加属性-light_status 接下来定义远程控制开关灯状态的命令。 单击“添加命令”,定义命令名称:SWITCH_LIGHT。 单击“新增输入参数”,参数名称:SWITCH_LIGHT,数据类型为:string,长度为:3个字符,枚举值为:ON,OFF。 图5 新增命令参数-SWITCH_LIGHT 单击“新增响应参数”,参数名称:result,数据类型:int。 图6 新增响应参数-result 单击“确定”,完成该路灯的产品模型文件开发。
  • 使用真实设备在线调试 模拟器在线调测具备设备模拟和应用模拟功能,可以对定义的产品模型文件和编解码插件进行调试,用户可以直观的感受设备上报数据到物联网平台,以及使用物联网平台下发远程控制命令。 在智慧路灯产品的开发空间,选择“在线调试”,单击“新增测试设备”。 在新增测试设备页面,完成设备参数的填写后,单击“确定”。 设备类型:真实设备。 设备名称:自定义。 设备标识码:设备的IMEI号,用于设备在接入物联网平台时携带该标识信息完成接入鉴权,可在NB模组上查看。 设备注册方式:不加密。如果使用DTLS传输层安全协议接入时,设备注册方式选择“加密”,且请妥善保存密钥。 图20 在线调试-新增测试设备 新添加的设备处于未激活状态,此时不能进行在线调试,可参考连接鉴权,待设备接入平台后,进行调试。 单击“调试”,进入调试界面。 图21 在线调试-进入调试 模拟远程下发控制命令场景,在应用模拟器中,选择服务:StreetLight,命令:SWITCH_LIGHT,命令取值为:ON,单击“立即发送”,我们可以看到路灯被点亮。
  • (可选)创建资源空间 资源空间是物联网平台提供物联网应用和设备的调测空间,您可以根据场景的不同创建不同资源空间分别调测。 系统为您预置了一个资源空间,您可以直接在预置的资源空间下,在线开发设备的产品模型文件和编解码插件;也可以新建一个资源空间,具体步骤如下。 访问设备接入服务,单击“立即使用”进入设备接入控制台。 选择左侧导航栏的“资源空间”,单击右上角“新建资源空间”。 在弹出的页面填写“空间名称”,然后单击“确定”。
  • 创建产品 基于开发的产品,用户可以在线开发设备的产品模型文件和编解码插件;另外,物联网平台提供了设备和应用模拟器,可以便捷地调测开发的产品模型文件和编解码插件的正确性。 访问设备接入服务,单击“立即使用”进入设备接入控制台。 选择左侧导航栏的“产品”。 图1 产品-创建产品 单击左侧的“创建产品”,创建一个基于LwM2M/CoAP协议的产品,填写参数后,单击“确定”。 图2 创建产品-CoAP 基本信息 所属资源空间 选择新建产品所属的资源空间。 产品名称 自定义,如Test_1。 协议类型 选择“LwM2M/CoAP”。 数据格式 选择“二进制码流”。 说明: 当“数据格式”配置为“二进制码流”时,该产品下需要进行编解码插件开发;当“数据格式”配置为“JSON”时,该产品下不需要进行编解码插件开发。 所属行业 无 设备类型 streetlamp
  • 迁移前提 1、已开通IoTDA基础版,并购买了IoTDA企业版/标准版。 2、用户的应用平台访问IoTDA的地址可以修改,应用平台访问IoTDA从基础版地址改成企业版实例的地址。 3、用户的设备访问IoTDA的地址可以修改,设备访问IoTDA从基础版地址改成企业版实例的地址。如果设备访问IoTDA的地址不能修改(例如设备不支持固件升级),可以提交工单说明您的诉求。 设备数据迁移时,如果是指定资源空间和设备迁移,迁移数据仅包括设备连接新实例认证需要的身份信息,包括资源空间、产品、证书、设备基本信息和设备状态;暂不包括基础版中的设备分组、服务端订阅、规则引擎和运行日志配置。
  • 下发切换网络的命令 本文使用MQTT.fx模拟设备接收命令。 在MQTT.fx,选择Subscribe页签,输入订阅命令的topic “$oc/devices/{device_id}/sys/commands/#”,单击“Subscribe”。更多命令下发格式请参考命令topic订阅。(您可以使用真实设备订阅topic) 在控制台设备详情页,单击“命令”页签,下发同步命令。 您也可以调用API下发命令,详细请参考同步命令下发。 图2 命令下发-MQTT 在MQTT.fx的Subscribe页,接收到平台下发的命令。 使用串口工具发送AT指令完成网络切换。 安装USB驱动: 运行exe文件,根据界面提示进行安装。 不同厂家匹配的USB驱动版本不同,请联系厂家获取符合要求的驱动程序。 驱动安装成功后,连接开发板的USB接口到PC,并打开电源,可在设备管理器中查看到枚举出的串口设备。 使用串口工具切换网络。 运行exe文件,根据界面提示进行安装。 不同厂家匹配的串口工具版本不同,请联系厂家获取符合要求的串口工具。 打开串口工具,选择步骤2枚举的AT串口,波特率设置为115200,单击“Open Port”。 注:请确保设置正确,否则AT命令不能够被解析或者解析出错。 输入“AT+HWICCIDENABLE”完成网络切换。切换成功后,您可以前往全球SIM联接服务控制台 “SIM卡管理“,单击“服务详情”查看正在使用中的套餐。
  • 属性上报 本文使用MQTT.fx模拟设备上报网络信号强度等数据。 选择Publish页签,输入设备属性上报的topic“$oc/devices/{device_id}/sys/properties/report”,其中{device_id}与注册设备时获取的设备ID保持一致,您可以使用真实设备上报属性。在下方填写上报的属性,单击Publish按钮。具体可参考设备属性上报。 在控制台“设备列表”中找到该设备,单击“查看”,进入设备详情页。在设备详情页看到最新上报的数据。您也可以调用API查看最新上报数据,详细请参考查询设备影子数据。 图1 查看上报数据-MQTT
  • 创建产品 访问设备接入服务,单击“立即使用”进入设备接入控制台。 选择左侧导航栏的“产品”,单击左侧的“创建产品”,参考下表填写产品的基本信息。 基本信息 所属资源空间 在下拉框选择所属资源空间。 产品名称 自定义填写,如SwitchNetwork 协议类型 MQTT 数据格式 JSON 所属行业 在下拉框选择相应的行业。 设备类型 使用平台预置的产品模型,会自动关联设备类型,不需要再输入设备类型。 3. 进入产品详情,单击导入库模型,在标准模型列表中选择“MobileDevice”,单击确定 MobileDevice模型中MobileConnection服务的属性说明 属性名称 描述 示例内容 iccid SIM卡标识 898604421920C0XXXX imsi 国际移动用户识别码 460046240XXXXX imei 国际移动设备识别码 86761100XXXXXXXX operator 移动设备的网络运营商(MCC+MNC) 46000 rssi 接收的信号强度 -40 cellId 蜂窝小区ID 1106525 lac 位置区码 12345 networkType 网络类型 2G,3G,4G,5G,NB-IoT modelType 模组型号 EC20 CEHDLG
  • 购买模组和eSIM卡 访问全球SIM联接服务,单击“购买eSIM”,购买模组和eSIM卡。 模组型号选择“移远EC20 CEHDLG” 。 登录全球SIM联接控制台,订购套餐,您可以选择单卡订购或者批量订购。 单卡订购:选择左侧导航栏的“SIM卡管理”,单击某个SIM卡右侧的“服务管理”,然后选择套餐服务并单击“立即订购”。 批量订购:选择左侧导航栏的“SIM卡管理”,导出需要订购套餐的SIM卡,下载批量订购的模板,编辑完批量订购文档后,上传,完成批量套餐订购。
  • 开发切网命令转换成AT指令 设备支持自动切网功能,需要进行设备侧开发。 设备收到平台下发的切换网络命令如下: { "paras":{ "iccid":"xxxx" }, "service_id":"MobileConnection", "command_name":"SWITCH_NETWORK" } 注:xxxx为SIM卡标识,其他内容固定不变。 设备收到命令后,执行切网指令: AT+HWICCIDENABLE=xxxx 注:xxxx为SIM卡标识。
  • 1.设备接入地址切换 IoT场景设备量大,设备能力弱。IoT的迁移需尽量减少对设备侧的改动。华为云IoT提供多种技术方案来解决这个问题。 对于自建IoT平台设备,设备连接平台使用的是原有IoT平台域名,则设备侧可以不用做任何修改,将域名通过DNS解析到华为云IoT平台接入地址即可完成迁移。 对于存量第三方平台的设备,如果设备支持修改接入平台地址,则可以将设备侧地址切换为华为云IoT平台接入地址完成迁移。 对于设备能力比较强,可以进行OTA升级的设备,华为云提供Device SDK支持设备通过OTA完成接入地址切换。
共100000条