华为云用户手册

  • 场景说明 微型气象是不可预测的,基本上不能通过人工手段来分析其变化,因此必须运用新技术,对气象进行实时监测,以便采取相应的措施来避免或解决事故的发生。而常规气象环境数据采集容易造成数据损失、人力成本高、数据安全性差、可追踪性差等问题。为解决上述问题,可以通过网关将设备采集的数据上报到华为云IoT平台,实现对现场设备数据的实时监控,您可通过华为云IoT平台实时查看现场温度、湿度、光照、风速等环境数据,并对数据进行转储、分析等处理,同时也能通过IoT平台对设备进行控制。本文以金鸽的R40设备为例进行演示。
  • 控制台操作概览 在真实设备连接之前,需要在 设备接入服务 控制台创建产品、定义产品模型和注册设备。 创建产品:在 物联网平台 上规定好某一款产品的协议类型、数据格式、厂商名称、设备类型。此处我们需要按照R40的特征,在控制台创建R40的产品。 定义产品模型:产品模型是用来描述设备能力的文件,通过JSON的格式定义了设备的基本属性、上报数据和下发命令的消息格式。定义产品模型,即在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的属性信息,例如风速、光照强度、温湿度、噪声等。 注册设备:将R40设备注册到物联网平台。
  • 设备简介 R40(如图2)负责将传感器的数据收集上来,上报到华为云IoT平台,同时负责将华为云IoT平台下发的控制信息下发给传感器。其中演示的传感器设备有如下三种: 1. 风速变速器(如图3)将采集到的风速通过电流信号输出给R40; 2. 气象多要素百叶箱(如图4)将采集到的噪声、光照、温湿度信息通过RS485口(Modbus协议)输出给R40。 3. 报警器(如图5)通过R40的DO口接收从华为云IoT下发给的控制信息。
  • 创建产品 某一类具有相同能力或特征的设备的集合称为一款产品。除了设备实体,产品还包含该类设备在物联网能力建设中产生的产品信息、产品模型(Profile)等资源。下面,我们按照R40的基本特征,在控制台上创建R40产品。 访问设备接入服务,单击“立即使用”进入设备接入控制台。选择您的实例,单击实例卡片进入。 选择左侧导航栏的“产品”,然后单击左侧的“创建产品”,创建一个基于MQTT协议的产品,参考下表填写参数后,单击“确定”,完成产品的创建。 基本信息 所属资源空间 选择您需要归属到的资源空间 产品名称 自定义,如“R40” 协议类型 选择“MQTT” 数据格式 选择“JSON” 设备类型选择 选择“自定义类型” 设备类型 EnvironmentalMonitoringDevice 产品创建成功后,单击“详情”按钮进入产品界面,进行后面操作。
  • 硬件连接 将风速变速器的棕色线和黑色线分别接到外部电源的正级和负极,将蓝色线和绿色线分别接入到R40的AIN1口和AGND口(见下图)。 图6 风速变速器连接R40 将气象多要素百叶箱的棕色线和黑色线分别接到电源的正极和负极,将黄色线和蓝色线分别接入到R40的485A口和485B口(见下图)。 图7 气象多要素百叶箱连接R40 将报警器的红色线和黑色线分别接到电源正极和R40的DO2口,将电源的负极接入到R40的DO1口(见下图)。 图8 报警器连接R40
  • 上传产品模型 产品模型是用来描述设备能力的文件,通过JSON的格式定义了设备的基本属性、上报数据和下发命令的消息格式。定义产品模型,即在物联网平台构建一款设备的抽象模型,使平台理解该款设备的功能。我们已提供开发好的产品模型,帮助您快速体验上云流程,如果您想体验产品模型的开发流程,可参考开发产品模型。 操作步骤: 在产品详情“基本信息”页面,单击“上传模型文件”。 在弹出的页面中,上传提供的产品模型(本示例的产品模型),然后单击“确定”。 图9 产品-上传模型文件
  • 创建产品 登录管理控制台,单击左侧导航栏“产品”,单击页面左侧的“创建产品”。 根据页面提示填写参数,然后单击“确认”,完成产品的创建。 基本信息 所属资源空间 平台自动将新创建的产品归属在默认资源空间下。如需归属在其他资源空间下,下拉选择所属的资源空间。如无对应的资源空间,请先创建资源空间。 产品名称 为产品命名。产品名称在相同资源空间有唯一性。长度不超过64,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。 协议类型 选择MQTT。 数据格式 选择JSON。 所属行业 请根据实际情况选择。 设备类型 请根据实际情况选择。 高级配置 产品ID 定制ProductID,用于唯一标识一个产品。如果携带此参数,平台将产品ID设置为该参数值;如果不携带此参数,产品ID在物联网平台创建产品后由平台分配获得。 图3 创建产品-MQTT
  • 开发产品模型 找到新增的产品,单击“查看”进入产品界面。 在产品详情“基本信息”页面,直接上传模型文件BearPi_Agriculture.zip。 图4 上传产品模型-MQTT 在产品列表中,单击对应的产品,进入产品详情页。您可以查看产品ID、产品名称、设备类型、数据格式、厂商名称、所属资源空间、协议类型等产品基本信息。 产品创建成功后,您可以单击“删除”删除不再使用的产品。删除产品后,该产品下的产品模型、编解码插件等资源将被清空,请谨慎操作。
  • 使用虚拟设备在线调试 在智慧路灯产品的开发空间,选择“在线调试”,单击“新增测试设备”。 在新增测试设备页面,选择“虚拟设备”,然后单击“确定”,创建一个虚拟设备。虚拟设备名称包含 “DeviceSimulator”字样,每款产品下只能创建一个虚拟设备。 图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 插件开发-在线开发插件 编解码插件与产品模型文件建立映射完成后,单击右上角“保存”,并单击“部署”,完成编解码插件的部署。
  • 使用真实设备在线调试 模拟器在线调测具备设备模拟和应用模拟功能,可以对定义的产品模型文件和编解码插件进行调试,用户可以直观的感受设备上报数据到物联网平台,以及使用物联网平台下发远程控制命令。 在智慧路灯产品的开发空间,选择“在线调试”,单击“新增测试设备”。 在新增测试设备页面,完成设备参数的填写后,单击“确定”。 设备类型:真实设备。 设备名称:自定义。 设备标识码:设备的IMEI号,用于设备在接入物联网平台时携带该标识信息完成接入鉴权,可在NB模组上查看。 密钥:如果使用DTLS传输层安全协议接入时,且请妥善保存密钥。 图20 在线调试-新增测试设备 新添加的设备处于未激活状态,此时不能进行在线调试,可参考连接鉴权,待设备接入平台后,进行调试。 单击“调试”,进入调试界面。 图21 在线调试-进入调试 模拟远程下发控制命令场景,在应用模拟器中,选择服务:StreetLight,命令:SWITCH_LIGHT,命令取值为:ON,单击“发送”,我们可以看到路灯被点亮。
  • (可选)创建资源空间 资源空间是物联网平台提供物联网应用和设备的调测空间,您可以根据场景的不同创建不同资源空间分别调测。 系统为您预置了一个资源空间,您可以直接在预置的资源空间下,在线开发设备的产品模型文件和编解码插件;也可以新建一个资源空间,具体步骤如下。 访问设备接入服务,单击“立即使用”进入设备接入控制台。 单击左侧导航栏“IoTDA实例”,选择您的实例,单击实例卡片进入实例。 选择左侧导航栏的“资源空间”,单击“新建资源空间”。在弹出的页面填写“空间名称”,然后单击“确定”。
  • 创建产品 基于开发的产品,用户可以在线开发设备的产品模型文件和编解码插件;另外,物联网平台提供了设备和应用模拟器,可以便捷地调测开发的产品模型文件和编解码插件的正确性。 访问设备接入服务,单击“立即使用”进入设备接入控制台。选择您的实例,单击实例卡片进入。 选择左侧导航栏的“产品”。 图1 产品-创建产品 单击左侧的“创建产品”,创建一个基于LwM2M/CoAP协议的产品,填写参数后,单击“确定”。 图2 创建产品-CoAP 基本信息 所属资源空间 选择新建产品所属的资源空间。 产品名称 自定义,如Test_1。 协议类型 选择“LwM2M/CoAP”。 数据格式 选择“二进制码流”。 说明: 当“数据格式”配置为“二进制码流”时,该产品下需要进行编解码插件开发;当“数据格式”配置为“JSON”时,该产品下不需要进行编解码插件开发。 所属行业 无 设备类型 streetlamp
  • 定义产品模型 找到步骤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 单击“确定”,完成该路灯的产品模型文件开发。
  • 连接鉴权 参考连接鉴权接口文档,使用MQTT.fx工具激活在物联网平台上注册的设备。 下载MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载MQTT.fx),安装MQTT.fx工具。 安装最新版MQTT.fx工具,可单击此处下载。 MQTT.fx 1.7.0及旧版本对带有$的主题(Topic)处理存在问题,请使用最新版本进行测试。 访问这里,填写注册设备后生成的设备ID(DeviceId)和密钥(DeviceSecret),生成连接信息(ClientId、Username、Password)。 DeviceSecret在此场景下可随意填写,如12345678。 图15 获取ClientId 参数 必选/可选 类型 参数描述 ClientId 必选 String(256) 一机一密的设备clientId由4个部分组成:设备ID、设备身份标识类型、密码签名类型、时间戳,通过下划线“_”分隔。 设备ID:指设备在平台成功注册后生成的唯一设备标识,通常由设备的产品ID和设备的NodeId通过分隔符“_”拼装而来。 设备身份标识类型:固定值为0,表示设备ID。 密码签名类型:长度1字节,当前支持2种类型: “0”代表HMA CS HA256不校验时间戳。 “1”代表HMACSHA256校验时间戳。 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。 Username 必选 String(256) 设备ID。 设备通过MQTT协议的connect消息进行鉴权,对于构造clientId的各个部分信息都必须包括进去,平台收到connect消息时,会判断设备的鉴权类型和密码摘要算法。 使用生成工具生成的clientId格式,默认不校验时间戳:设备ID_0_0_时间戳。 当采用“HMACSHA256”校验时间戳方式时,会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。 当采用“HMACSHA256”不校验时间戳方式时,鉴权消息也必须带时间戳,但不检验时间是否准确,仅判断密码是否正确。 connect消息鉴权失败时,平台会返回错误,并自动断开MQTT链路。 打开MQTT.fx软件,单击“设置”图标。 图16 设置 填写“ Connection Profile” 相关信息。 图17 “General ”可以使用工具默认信息 参数名称 说明 Broker Address 填写从设备接入服务控制台获取的设备对接地址,此地址为 域名 信息。不能通过域名接入的设备,填写IP地址,详细请参考2中获取的。 Broker Port 为8883。 Cliend ID 设备cliendID,请参考2中获取。 单击“User Credentials”填写“User Name”。 图18 填写设备ID 参数名称 说明 User Name 即设备ID,请参考2中获取。 Password 使用X.509证书认证时不需要填写。 单击“SSL/TLS”配置鉴权参数,然后单击“Apply”。选择开启 “SSL/TLS”,勾选“ Self signed certificates”,配置相关证书内容。 图19 填写“SSL/TLS”相关参数 CA File为对应的CA证书。下载并获取证书(加载pem格式的证书),获取证书请根据需要在资源获取里下载。 Client Certificate File为设备的设备证书(deviceCert.pem)。 Client Key File为设备的私钥(deviceCert.key)。 单击“Connect”,设备鉴权成功后,在物联网平台可以看到设备处于在线状态。 图20 设备列表-设备在线
  • 制作设备CA调测证书 本文以Windows环境为例,介绍通过Openssl工具制作调测证书的方法,生成的证书为PEM编码格式的证书。 在浏览器中访问这里,下载并进行安装OpenSSL工具。 以管理员身份运行cmd命令行窗口。 执行cd c:\openssl\bin(请替换为openssl实际安装路径),进入openssl命令视图。 执行以下命令生成密钥对。 openssl genrsa -out rootCA.key 2048 执行以下命令,使用密钥对中的私有密钥生成 CA 证书。 openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem 系统提示您输入如下信息,所有参数可以自定义。 Country Name (2 letter code) [AU]:国家,如CN。 State or Province Name (full name) []: 省份,如GD。 Locality Name (for example, city) []:城市,如SZ。 Organization Name (for example, company) []:组织,如Huawei。 Organizational Unit Name (for example, section) []:组织单位,如IoT。 Common Name (e.g. server FQDN or YOUR name) []: 名称,如zhangsan。 Email Address []:邮箱地址,如1234567@163.com。 在openssl安装目录的bin文件夹下,获取生成的CA证书(rootCA.pem)。
  • 创建产品 登录管理控制台,选择您的实例,单击实例卡片进入。单击左侧导航栏“产品”,单击页面左侧的“创建产品”。 图2 产品-创建产品 根据页面提示填写参数,然后单击“确定”。 基本信息 所属资源空间 平台自动将新创建的产品归属在默认资源空间下。如需归属在其他资源空间下,下拉选择所属的资源空间。如无对应的资源空间,请先创建资源空间。 产品名称 自定义。支持字母、数字、下划线(_)、连字符(-)的字符组合。 协议类型 选择MQTT。 数据格式 选择JSON。 所属行业 请根据实际情况选择。 设备类型 请根据实际情况选择。 高级配置 产品ID 定制ProductID,用于唯一标识一个产品。如果携带此参数,平台将产品ID设置为该参数值;如果不携带此参数,产品ID在物联网平台创建产品后由平台分配获得。 图3 创建产品-MQTT
  • 开发产品模型 找到新增的产品,单击“产品”进入产品界面。 在产品详情“基本信息”页面,单击“自定义模型”,配置产品的服务。 新增服务类型“Connectivity”。 在“添加服务”页面,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。 “服务ID”:Connectivity “服务类型”:建议和服务ID保持一致 “服务描述”:Connectivity 图4 添加服务-Connectivity 在“Connectivity”的下拉菜单下单击“添加属性”,填写相关信息后,单击“确定”。 “属性名称”:dailyActivityTime “数据类型”:int(整型) “访问权限”:可读 “取值范围”:0~65535 “步长”:1 “单位”:s 图5 新增属性-dailyActivityTime 新增服务类型“Battery”。 在“基本信息”下单击“添加服务”,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。 “服务ID”:Battery “服务类型”:建议和服务ID保持一致 “服务描述”:Battery 图6 添加服务-Battery 在“Battery”的下拉菜单下单击“添加属性”,填写相关信息后,单击“确定”。 “属性名称”:batteryLevel “数据类型”:int(整型) “访问权限”:可读 “取值范围”:0-100 “步长”:1 “单位”:% 图7 新增属性-batteryLevel(Battery)
  • 获取设备接入信息 在设备接入服务控制台获取设备接入平台所需的信息。 访问设备接入服务,单击管理控制台进入控制台。 单击管理控制台进入控制台,单击左侧导航栏的“总览”,单击“实例基本信息 - 接入信息”查看设备接入信息,记录域名和端口。 图1 总览-获取接入信息 针对不支持用域名接入的设备,通过在cmd命令框中执行“ping 域名”获取IP地址,用IP地址接入平台。由于IP地址不固定,您需要将IP地址做成可配置项。
  • 验证操作 您可以使用配置设备接入服务时注册的真实设备接入平台,上报“temperature”大于80的数据。 您也可以使用模拟器模拟设备订阅Topic: “$oc/devices/{device_id}/sys/properties/report”(其中{deviceId}需要替换成实际设备ID)后,上报“temperature”大于80的数据,操作方法请参考在线开发MQTT协议的模拟智慧路灯。 您还可以使用虚拟设备进行在线调试,上报“temperature”大于80的数据。 期望结果: 若您使用真实设备上报数据,设备会收到一条“power”取值为“OFF”的“ON_OFF”命令。 若您使用模拟器上报数据,可在“Subscribe”页签查看到平台下发的“power”取值为“OFF”的“ON_OFF”命令。
  • 迁移前提 1、已开通IoTDA基础版,并购买了IoTDA企业版/标准版。 2、用户的应用平台访问IoTDA的地址可以修改,应用平台访问IoTDA从基础版地址改成企业版实例的地址。 3、用户的设备访问IoTDA的地址可以修改,设备访问IoTDA从基础版地址改成企业版实例的地址。如果设备访问IoTDA的地址不能修改(例如设备不支持固件升级),可以提交工单说明您的诉求。 设备数据迁移时,如果是指定资源空间和设备迁移,迁移数据仅包括设备连接新实例认证需要的身份信息,包括资源空间、产品、证书、设备基本信息和设备状态;暂不包括基础版中的设备分组、服务端订阅、规则引擎和运行日志配置。
  • 使用MQTT_Simulator接入 下载MQTT_Simulator模拟器(默认是64位操作系统),并启动模拟器,如下图: 界面展示 模拟器提供了界面显示,填写Server地址、设备ID、设备密钥。请根据实际创建的设备信息填写。 Server地址:即域名,参考平台对接信息获取; 设备ID和设备密钥:在这里获取。 不同的Server地址SSL加密接入时要与对应的证书文件匹配使用,证书获取请参考获取资源,需要替换certificate文件夹下的证书,如下图: 用户可以选择设备侧建链时是否为SSL加密,选择Qos方式是0还是1,当前不支持Qos2,可参考使用限制。 新建连接 设备或网关在接入物联网平台时首先需要和平台建立连接,从而将设备或网关与平台进行关联。开发者通过传入设备信息,将设备或网关连接到物联网平台。单击新建连接按钮,域名、设备ID和密钥正确的情况下,可以看到日志设备连接成功,可在平台查看设备状态,如下图: 图14 设备列表-设备在线 订阅Topic 订阅某topic的设备才能接收broker发布的关于该topic的消息,关于平台预置topic可参考Topic定义。 建链后,如果成功订阅Topic,主界面日志栏显示如下信息: 发布Topic 发布Topic是指设备主动向平台上报自己的属性或消息,详细见设备属性上报接口文档。 在模拟器中实现了上报Topic、属性上报功能。 输入要上报的JSON message,上报luminance属性为30。发布Topic后,Demo界面显示如下: 设备上报属性成功后可在“设备详情”页面查看到上报的属性: 图15 查看上报数据-MQTT 接收下发命令 模拟器支持接收平台下发命令的功能,在MQTT建链完成并成功订阅Topic后,可以在控制台设备详情中对该设备进行同步命令下发。下发成功后,在MQTT的回调函数中接收到平台下发给设备的命令。 例如用户想远程开灯,下发参数名为LightControl: switch,参数值为ON的命令。 图16 命令下发-同步命令下发 同步命令下发成功后,Demo界面显示如下:
  • 开发产品模型 找到新增的产品,单击产品进入产品界面。 在产品详情“基本信息”页面,单击“自定义模型”,配置产品的服务。 图3 自定义模型-MQTT 新增服务类型“BasicData”。 在“添加服务”页面,根据页面提示填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。 图4 添加服务-BasicData 在“BasicData”服务列表右侧区域,单击“新增属性”,填写相关信息后,单击“确定”。 图5 新增属性-luminance 新增服务类型“LightControl”。 在“基本信息”下单击“添加服务”,根据页面提示填写后,单击“确定”。 “服务ID”:LightControl “服务类型”:建议和服务ID保持一致 “服务描述”:路灯开关控制 在“LightControl”的下拉菜单下单击“添加命令”,输入命令名称“Switch”。 图6 新增命令-Switch 在“新增命令”页面,单击“新增输入参数”,填写相关信息后,单击“确定”。 图7 新增命令参数-value
  • 连接鉴权 使用MQTT.fx工具激活在物联网平台上注册的设备。 下载MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载MQTT.fx),安装MQTT.fx工具。 访问这里,填写注册设备后生成的设备ID(DeviceId)和密钥(DeviceSecret),生成连接信息(ClientId、Username、Password)。 参数 必选/可选 类型 参数描述 ClientId 必选 String(256) 一机一密的设备clientId由4个部分组成:设备ID、设备身份标识类型、密码签名类型、时间戳,通过下划线“_”分隔。 设备ID:指设备在平台成功注册后生成的唯一设备标识,通常由设备的产品ID和设备的NodeId通过分隔符“_”拼装而来。 设备身份标识类型:固定值为0,表示设备ID。 密码签名类型:长度1字节,当前支持2种类型: “0”代表HMACSHA256不校验时间戳。 “1”代表HMACSHA256校验时间戳。 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。 Username 必选 String(256) 设备ID。 Password 必选 String(256) 加密后的设备密钥。Password的值为使用“HMACSHA256”算法以时间戳为密钥,对secret进行加密后的值。 secret为注册设备时平台返回的secret。 设备通过MQTT协议的connect消息进行鉴权,对于构造clientId的各个部分信息都必须包括进去,平台收到connect消息时,会判断设备的鉴权类型和密码摘要算法。 使用生成工具生成的clientId格式,默认不校验时间戳:设备ID_0_0_时间戳。 当采用“HMACSHA256”校验时间戳方式时,会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。 当采用“HMACSHA256”不校验时间戳方式时,鉴权消息也必须带时间戳,但不检验时间是否准确,仅判断密码是否正确。 connect消息鉴权失败时,平台会返回错误,并自动断开MQTT链路。 打开MQTT.fx软件,单击设置图标。 参考下表配置鉴权参数,然后单击“Apply”。 参数名称 说明 Broker Address 填写从设备接入服务控制台获取的平台对接信息,此接入地址为域名信息。不能通过域名接入的设备,通过在cmd命令框中执行“ping 域名”获取IP地址,用IP地址接入平台。由于IP地址不固定,您需要将IP地址做成可配置项。 Broker Port 默认为1883。 Cliend ID 设备cliendID,请参考2中获取。 User Name 即设备ID,请参考2中获取。 Password 加密后的设备密钥,请参考2中获取。 单击“Connect”,设备鉴权成功后,在物联网平台可以看到设备处于在线状态。 图11 设备在线
  • 示例场景 某企业的网关产品下有一批网关设备,单个网关设备下挂载了约400个子设备,用户需要实时关注这批网关设备的状态,确保子设备正常上报数据,同时由于网关设备和物联网平台通过4G网络建立连接,存在由于网络抖动导致频繁告警的问题,因此用户认为短暂的离线后上线属于正常场景,不希望感知这种场景。 通过以下示例可以实现监控该网关产品下所有网关设备在离线持续时间达到5分钟后通过物联网平台上报告警,在设备上线持续时间达到1分钟后恢复该告警,同时发送邮件或短信通知给指定的手机号码。 操作步骤如下:
  • 控制台操作概览 在完成实体设备硬件连接和代码编译烧录之后,我们需要在设备接入服务控制台创建产品、定义产品模型、开发编解码插件和注册设备。 创建产品:在物联网平台上规定好某一款产品的协议类型、数据格式、厂商名称、设备类型。此处我们需要按照智慧路灯的特征,在控制台创建智慧路灯的产品。 定义产品模型:产品模型是用来描述设备能力的文件,通过JSON的格式定义了设备的基本属性、上报数据和下发命令的消息格式。定义产品模型,即在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的属性信息。此处,我们需要在控制台上,定义开关灯控制、光照强度、信号质量等。 编解插件开发:编解码插件是供物联网平台调用,完成二进制格式和JSON格式相互转换的。它将设备上报的二进制数据解码为JSON格式供应用服务器“阅读”,将应用服务器下行的JSON格式命令编码为二进制格式数据供终端设备(UE)“理解执行”。智慧路灯的数据格式是二进制,因此我们需要开发编解码插件,让物联网能够理解智慧路灯上报的数据,智慧路灯也能理解物联网平台下发的命令。 注册设备:将小熊派智慧路灯注册到物联网平台。
  • 注册设备 本文介绍集成NB模组设备的注册方法,将小熊派智慧路灯在物联网平台注册。 在产品详情页面,选择“在线调试”,单击“新增测试设备”,此处新增的是非安全的NB-IoT设备。 在新增测试设备页面,选择“真实设备”,完成设备参数的填写后,单击“确定”。 图14 在线调试-新增测试设备 设备名称:自定义。 设备标识码:设备的IMEI号,用于设备在接入物联网平台时携带该标识信息完成接入鉴权,可在NB模组上查看。您也可以将拨测开关拨到AT-PC模式,选择STM的端口,波特率设置为9600,输入指令“AT+CGSN=1”获取IMEI号。 注:获取IMEI注册完设备后,需要将开发板的拨测开关拨到“AT-MCU”模式,因为开发板在MCU模式下才会通过NB卡连接网络。 设备注册方式:不加密。 设备创建成功,可在页面看到创建的设备。
  • 创建产品 某一类具有相同能力或特征的设备的集合称为一款产品。除了设备实体,产品还包含该类设备在物联网能力建设中产生的产品信息、产品模型(Product Model)、编解码插件等资源。下面,我们按照小熊派智慧路灯的基本特征,在控制台上创建智慧路灯产品。 登录管理控制台,选择您的实例,单击实例卡片进入。单击左侧导航栏“产品”,单击页面左侧的“创建产品”。 图10 产品-创建产品 创建一个协议类型为LwM2M/CoAP协议、设备类型为StreetLamp的产品,参考页面提示填写参数后,单击“确定”。 图11 创建产品-CoAP
  • 更多参考 开发产品模型 在产品详情“基本信息”页面,单击“自定义模型”,配置产品的服务。 产品模型设计思路: 表1 设备服务列表 服务类型(ServiceID) 服务描述 Button 实时按键检测 LED LED灯控制 Sensor 实时检测光照强度 Connectivity 实时检测信号质量 服务能力如下表所示。 表2 Button 能力描述 属性名称 数据类型 数据范围 属性列表 toggle int 0 ~ 65535 表3 LED命令列表 能力描述 命令名称 命令字段 字段名称 类型 数据长度 枚举 命令列表 Set_LED 下发命令 LED string 3 ON、OFF 响应命令 Light_state string 3 ON、OFF 表4 Sensor 能力描述 属性名称 数据类型 数据范围 属性列表 luminance int 0 ~ 65535 表5 Connectivity 能力描述 属性名称 数据类型 数据范围 属性列表 SignalPower int -140 ~ -44 ECL int 0 ~ 2 SNR int -20 ~ 30 CellID int 0 ~ 65535
  • 编译并烧录代码 由于提供的demo样例中已配置好和华为云物联网平台的对接信息,您可以直接编译(代码不用做任何修改),并烧录到小熊派开发板MCU,节省开发时间。 单击VSCode底部工具栏的“Build”,等待系统编译完成。编译成功后,界面显示“编译成功”。 使用USB数据线,将小熊派开发与电脑连接,开发板右上角的拨测开关拨到右侧“AT-MCU模式”。 单击VSCode底部工具栏的“Download”,等待系统烧录完成。烧录成功后,界面显示“烧录成功”。 如果显示烧录失败,可能是开发板没有驱动导致与电脑无法串口通信,请参考2检查ST-Link驱动是否安装成功,如果驱动未安装,则参考这里下载并安装ST-Link驱动。 (可选)安装ST-Link驱动。 访问ST官网,下载ST-Link驱动,双击stlink_winusb_install.bat文件进行自动安装。(本文以Windows10-64bit ST-Link 2.0.1为例)。 注:您也可以使用适配您系统版本的exe文件进行安装。 打开PC设备管理器可查看对应的驱动是否安装成功。若下图所示,表明驱动安装成功。
共100000条