华为云用户手册

  • 属性上报 以下消息转换为IoTDA平台的属性,应用可以通过查询设备影子或者数据转发接收属性上报消息。 上报位置信息 对应的消息ID:0x0200 推送样例: { "resource": "device.property", "event": "report", "event_time": "20151212T121212Z", "notify_data": { "header": { "device_id": "00000000000012345678", "product_id": "ABC123456789", "app_id": "d4922d8a-6c8e-4396-852c-164aefa6638f", "gateway_id": "00000000000012345678", "node_id": "00000000000012345678", "tags": [ { "tag_value": "testTagValue", "tag_key": "testTagName" } ] }, "body": { "services": [ { "service_id": "Location", "properties": { "alarm": { "emergencyAlarm": 0, "overSpeedAlarm": 0, "fatigueDrivingAlarm": 0, "dangerousDrivingAlarm": 0, "powerVoltageAlarm": 0, "powerOffAlarm": 0, "cameraErrorAlarm": 0, "overSpeedWarning": 0, "fatigueDrivingWarning": 0, "violationDrivingAlarm": 0, "tirePressureWarning": 0, "rightTurnErrorAlarm": 0, "overDrivingTimeAlarm": 0, "overParkAlarm": 0, "drivingAreaAlarm": 0, "drivingRouteAlarm": 0, "drivingTimeAbnormalAlarm": 0, "offCourseAlarm": 0, "gasolineAlarm": 0, "stolenAlarm": 0, "startingAbnormalAlarm": 0, "displacementAbnormalAlarm": 0, "rolloverAlarm": 0, "rolloverWarning": 0, "icerrorAlarm": 0, "lcderrorAlarm": 0, "ttserrorAlarm": 1, "gnssantennaShortCircuitAlarm": 0, "gnsserrorAlarm": 0, "gnssantennaNotConnectedAlarm": 0, "vssalarm": 0 }, "status": { "accStatus": 0, "positioningStatus": 0, "latitudeStatus": 0, "longitudeStatus": 0, "businessStatus": 0, "encryptedStatus": 0, "forwardCollisionWarningStatus": 0, "laneDeviationAlarmStatus": 0, "loadStatus": 0, "oilStatus": 0, "powerStatus": 1, "doorStatus": 0, "firstDoorStatus": 0, "secondDoorStatus": 0, "thirdDoorStatus": 0, "fourthDoorStatus": 0, "fifthDoorStatus": 0, "galileoStatus": 0, "vehicleStatus": 0, "gpsstatus": 0, "glonassstatus": 0, "bdsstatus": 0 }, "longitude": 116.307629, "latitude": 40.058359, "height": 312, "speed": 3, "direction": 99, "dateTime": "200707192359", "extend": [ ] }, "event_time": "20151212T121212Z" } ] } } } 表1 协议报文字段与属性对应表 起始字节 字段 数据类型 对应属性 0 报警标志 DWORD alarm 4 状态 DWORD status 8 纬度 DWORD longitude 12 经度 DWORD latitude 16 高程 WORD height 18 速度 WORD speed 20 方向 WORD direction 21 时间 BCD[6] dateTime 表2 报警预警标志位与alarm属性对应表 位 定义 对应属性 0 1:紧急报警 emergencyAlarm 1 1:超速报警 overSpeedAlarm 2 1:疲劳驾驶报警 fatigueDrivingAlarm 3 1:危险驾驶行为报警 dangerousDrivingAlarm 4 1:GNSS模块发生故障报警 gnsserrorAlarm 5 1:GNSS天线未接或被剪断报警 gnssantennaNotConnectedAlarm 6 1:GNSS天线短路报警 gnssantennaShortCircuitAlarm 7 1:终端主电源欠压报警 powerVoltageAlarm 8 1:终端主电源掉电报警 powerOffAlarm 9 1:终端LCD或显示器故障报警 lcderrorAlarm 10 1:TTS模块故障报警 ttserrorAlarm 11 1:摄像头故障报警 cameraErrorAlarm 12 1:道路运输证IC卡模块故障报警 icerrorAlarm 13 1:超速预警 overSpeedWarning 14 1:疲劳驾驶预警 fatigueDrivingWarning 15 1:违规行驶报警 violationDrivingAlarm 16 1:胎压预警 tirePressureWarning 17 1:右转盲区异常报警 rightTurnErrorAlarm 18 1:当天累计驾驶超时报警 overDrivingTimeAlarm 19 1:超时停车报警 overParkAlarm 20 1:进出区域报警 drivingAreaAlarm 21 1:进出路线报警 drivingRouteAlarm 22 1:路段行驶时间不足/过长报警 drivingTimeAbnormalAlarm 23 1:路线偏离报警 offCourseAlarm 24 1:车辆VSS故障 vssalarm 25 1:车辆油量异常报警 gasolineAlarm 26 1:车辆被盗报警(通过车辆防盗器) stolenAlarm 27 1:车辆非法点火报警 startingAbnormalAlarm 28 1:车辆非法位移报警 displacementAbnormalAlarm 29 1:碰撞侧翻报警 rolloverAlarm 30 1:侧翻预警 rolloverWarning 31 保留 - 表3 状态标志位与status属性对应表 位 定义 对应属性 0 0:ACC关;1:ACC开 accStatus 1 0:未定位;1:定位 positioningStatus 2 0:北纬;1:南纬 latitudeStatus 3 0:东经;1:西经 longitudeStatus 4 0:运营状态;1:停运状态 businessStatus 5 0:经纬度未经保密插件加密;1:经纬度已经保密插加密 encryptedStatus 6 1:紧急刹车系统采集的前撞预警 forwardCollisionWarningStatus 7 1:车道偏移预警 laneDeviationAlarmStatus 8~9 00:空车;01:半载;10:保留;11:满载 loadStatus 10 0:车辆油路正常;1:车辆油路断开 oilStatus 11 0:车辆电路正常;1:车辆电路断开 powerStatus 12 0:车门解锁;1:车门加锁 doorStatus 13 0:门1关;1:门1开(前门) firstDoorStatus 14 0:门2关;1:门2开(中门) secondDoorStatus 15 0:门3关;1:门3开(后门) thirdDoorStatus 16 0:门4关;1:门4开(驾驶席门) fourthDoorStatus 17 0:门5关;1:门5开(自定义) fifthDoorStatus 18 0:未使用GPS卫星进行定位;1:使用GPS卫星进行定位 gpsstatus 19 0:未使用北斗卫星进行定位;1:使用北斗卫星进行定位 bdsstatus 20 0:未使用GLONASS卫星进行定位;1:使用GLONASS卫星进行定位 glonassstatus 21 0:未使用Galileo卫星进行定位;1:使用Galileo卫星进行定位 galileoStatus 22 0:车辆处于停止状态;1:车辆处于行驶状态 vehicleStatus 23~31 保留 -
  • 购买GeminiDB Influx 登录云数据库GeminiDB Influx,单击“立即购买”。 根据需求选择按需计费或者包年包月以及性能规格、存储空间等,兼容接口选择InfluxDB。具体可参考购买集群实例。 图1 购买influxDB实例 下载InfluxDB客户端,通过客户端连接实例,参考公网连接实例。 使用客户端连接实例后,通过以下命令创建数据库,${databaseName}可以自定义。 create database ${databaseName} 图2 创建数据库
  • 场景说明 将数据流转到influxDB,兼容InfluxDB生态的云原生时序数据库。提供高性能读写、高压缩率、冷热分层存储以及弹性扩容、监控告警等服务能力,可以实现大并发的时序数据读写,压缩存储和类SQL查询等功能,支持多维聚合计算和数据可视化分析能力。广泛应用于资源监控、业务监控分析、物联网设备实时监控、工业生产监控、生产质量评估和故障回溯等。提供了高吞吐量和并发性,可以通过快速的响应时间来支持大量的连接,非常适合要求苛刻的物联网应用。
  • MQTT协议设备软件升级流程 MQTT协议SOTA升级流程的详细说明: 1~2. 用户在设备管理服务的控制台上传软件包,并在控制台或者应用服务器上创建软件升级任务。 3. 平台感知设备是否在线,当设备在线时立即触发升级协商流程。当设备不在线时,等待设备上线订阅升级Topic,平台感知设备上线,触发升级协商流程。(等待设备上线时间25小时以内) 4~5. 平台向设备下发查询设备软件版本号的命令,查询成功后,物联网平台根据升级的目标版本判断设备是否需要升级 。(第5步超时时间3分钟) 如果返回的软件版本信息与升级的目标版本信息相同,则升级流程结束,不做升级处理,升级任务置为成功。 如果返回的软件版本信息与升级的目标版本信息不同,且该版本号支持升级,则继续进行下一步的升级处理。 6~7. 物联网平台下发下载包URL访问这里,token及包的相关信息,用户根据下载包URL和token通过HTTPS协议来下载软件包,24小时后token无效。(下载包和升级状态上报超时时间为24小时) 8. 终端设备进行下载包升级操作,升级完成后终端设备向物联网平台反馈升级的结果。(设备升级完成后返回的版本号和设置的版本一致为成功) 9. 物联网平台向控制台/应用服务器通知升级的结果。
  • MQTT协议固件升级流程 MQTT协议FOTA升级流程的详细说明: 1~2. 用户在设备接入服务的控制台上传固件包,并在控制台或者应用服务器上创建固件升级任务。 3. 平台感知设备是否在线,当设备在线时立即触发升级协商流程。当设备不在线时,等待设备上线订阅升级Topic,平台感知设备上线,触发升级协商流程。(等待设备上线时间25小时以内) 4~5. 平台向设备下发查询设备固件版本号的命令,查询成功后,物联网平台根据升级的目标版本判断设备是否需要升级 。(第5步超时时间3分钟) 如果返回的固件版本信息与升级的目标版本信息相同,则升级流程结束,不做升级处理,升级任务置为成功。 如果返回的固件版本信息与升级的目标版本信息不同,且该版本号支持升级,则继续进行下一步的升级处理。 6~7. 物联网平台下发设备侧升级包下载指导、token及包的相关信息,用户根据下载包URL和token通过HTTPS协议来下载软件包,24小时后token无效。(下载包和升级状态上报超时时间为24小时) 8. 终端设备进行下载包升级操作,升级完成后终端设备向物联网平台反馈升级的结果。(设备升级完成后返回的版本号和设置的版本一致为成功) 9. 物联网平台向控制台/应用服务器通知升级的结果。 在下载包中断的情况下,平台支持断点续传功能。
  • 固件升级失败原因 物联网平台上报的失败原因: 失败原因 原因解释 处理建议 Device Abnormal is not online 设备异常未在线 请检查设备侧。 Task Conflict 任务冲突 请检查当前设备是否有软件升级、固件升级、日志收集或设备重启的任务正在进行。 Waiting for the device online timeout 等待设备上线超时 请检查设备侧。 Wait for the device to report upgrade result timeout 等待设备上报升级结果超时 请检查设备侧。 Waiting for report device firmware version timeout 等待上报设备固件版本超时 请检查设备侧。 Waiting for report cellId timeout 等待上报cellId超时 请检查设备侧。 Updating timeout and query device version for check timeout 等待升级结果超时,且等待设备版本信息超时 请检查设备侧。 Waiting for device downloaded package timeout 等待设备完成下载固件包超时 请检查设备侧。 Waiting for device start to update timeout 等待设备启动更新超时 请检查设备侧。 Waiting for device start download package timeout 等到设备开始下载固件包超时 请检查设备侧。 设备上报的失败原因: 失败原因 原因解释 处理建议 Not enough storage for the new firmware package 下载的固件包存储空间不足 请检查设备存储。 Out of memory during downloading process 下载过程中内存不足 请检查设备内存。 Connection lost during downloading process 下载过程中连接断开 请检查设备连接状态。 Integrity check failure for new downloaded package 下载的固件包完整性校验失败 请检查设备下载的固件包是否完整。 Unsupported package type 固件包类型不支持 请检查设备状态和厂商提供的固件包是否正确。 Invalid URI URI不可用 检查设备侧的固件包下载地址是否正确。 Firmware update failed 固件更新失败 请检查设备侧。
  • SELECT子句 SELECT子句由SELECT后跟多个SELECT子表达式组成,子表达式可以为*,JSON变量,字符串常量或整数常量。JSON变量后跟一个AS关键字和AS变量,长度不超过32个字符。如果使用常量或函数,则必须使用AS指定名称。 JSON变量 JSON变量支持大小写字母,数字,下划线和中划线,为了和减号的意思区分,当使用中划线的时候,请将JSON变量使用双引号进行引用,如:"msg-type"。 Json变量抽取嵌套结构体的数据 { "a":"b", "c": { "d" : "e" } } c.d 即可抽取出字符串e,可以多层嵌套。 AS变量 AS变量由大小写字母组成,大小写敏感。目前支持[a-zA-Z_-]*的模式,如果使用中划线,需要使用双引号进行引用。 常数整数 正如标准的SQL一样,SELECT支持常数整数,常数后必须跟AS子句,如 常数整数的大小范围:-2147483648~2147483647 SELECT 5 AS number 常数字符串 正如标准的SQL一样,SELECT支持常数字符串,目前支持[a-zA-Z_-]*的模式,需要使用单引号进行引用,常数后必须跟AS子句,如 字符串长度范围不能超过50 SELECT 'constant_info' AS str
  • 函数列表 规则引擎提供多种函数,您可以在编写SQL时使用这些函数,实现多样化数据处理。 表2 函数列表 函数名称 携带参数 用途 返回值类型 限制 GET_TAG String tagKey 获取指定tag_key对应的tag_value。 GET_TAG('testTagName') 字符串 - CONTAINS_TAG String tagKey 判断是否包含指定tag_key。 CONTAINS_TAG('testTagName') 布尔值 - GET_SERVICE String serviceId,boolean fuzzy 获取service,若fuzzy为false或者不填,则获取指定service_id的service,若fuzzy为true,则通过模糊匹配查询service,如果您在一个消息体里有多个service_id相同的service,结果目前不保证。 GET_SERVICE('Battery',true) Json结构体格式 只能在属性上报时使用 GET_SERVICES String serviceId,boolean fuzzy 获取services,若fuzzy为false或者不填,获取指定service_id的services,若fuzzy为true,则通过模糊匹配查询services。查询结果将汇合为一个数组。 GET_SERVICES('Battery',true) JSON数组格式 只能在属性上报时使用 CONTAINS_SERVICES String serviceId,boolean fuzzy 若fuzzy为false或者不填,则判断是否存在指定service_id。若fuzzy为true,则使用模糊匹配的方式判断属性中的service_id是否包含指定参数。 CONTAINS_SERVICES('Battery',true) 布尔值 只能在属性上报时使用 GET_SERVICE_PROPERTIES String serviceId 获取指定service_id的service中的properties字段。 GET_SERVICE_PROPERTIES('Battery') Json结构体格式 只能在属性上报时使用 GET_SERVICE_PROPERTY String serviceId, String propertyKey 获取指定service_id的service中的properties中指定属性的值。 示例: GET_SERVICE_PROPERTY('Battery','batteryLevel') 字符串 限制只能在属性上报时使用 STARTS_WITH String input, String prefix 判断input的值是否以prefix开头。 STARTS_WITH('abcd','abc') STARTS_WITH(notify_data.header.device_id,'abc') STARTS_WITH(notify_data.header.device_id,notify_data.header.product_id) 布尔值 - ENDS_WITH String input, String suffix 判断input的值是否以suffix结尾。 ENDS_WITH('abcd','bcd') ENDS_WITH(notify_data.header.device_id,'abc') ENDS_WITH(notify_data.header.device_id,notify_data.header.node_id) 布尔值 - CONCAT String input1, String input2 用于连接字符串,返回连接后的字符串。 CONCAT('ab','cd') CONCAT(notify_data.header.device_id,'abc') CONCAT(notify_data.header.product_id,notify_data.header.node_id) 字符串 - REPLACE String input, String target, String replacement 对字符串某部分值进行替换。即用replacement替换input中的target。 REPLACE(notify_data.header.node_id,'nodeId','IMEI') - - SUBSTRING String input, int beginIndex, int endIndex(required=false) 获取字符串的子串,即返回input从beginIndex(包含)到endIndex(不包含)的子字符串。 说明:endIndex非必填。 SUBSTRING(notify_data.header.device_id,3) SUBSTRING(notify_data.header.device_id,3,12) - - LOWER String input 将input中的值全部转换成小写 LOWER(notify_data.header.app_id) - - UPPER String input 将input中的值全部转换成大写 UPPER(notify_data.header.app_id) - -
  • 概述 LwM2M(Lightweight M2M,轻量级M2M),由开发移动联盟(OMA)提出,是一种轻量级的、标准通用的物联网设备管理协议,可用于快速部署客户端/服务器模式的物联网业务。LwM2M为物联网设备的管理和应用建立了一套标准,它提供了轻便小巧的安全通信接口及高效的数据模型,以实现M2M设备管理和服务支持。物联网平台支持加密与非加密两种接入设备接入方式,其中加密业务数据交互端口为5684端口,采用DTLS+CoAP协议通道接入,非加密端口为5683,接入协议为CoAP。物联网平台从安全角度考虑,强烈建议采用安全接入方式。 LwM2M的语法和接口细节,请以此标准规范为准。 物联网平台支持协议规定的plain text, opaque, Core Link ,TLV , JSON编码格式。在多字段操作时(比如写多个资源),默认用TLV格式。
  • 概述 软件(Software)一般分为系统软件和应用软件,系统软件实现设备最基本的功能,比如编译工具、系统文件管理等;应用软件可以根据设备的特点,提供不同的功能,比如采集数据、数据分析处理等。软件升级又称为SOTA(SoftWare Over The Air),是指用户可以通过OTA的方式支持对LwM2M协议和MQTT协议的设备进行软件升级。 基于LwM2M协议的产品模型,软件升级遵循的协议为PCP协议(PCP协议介绍),设备侧需要遵循PCP协议进行软件升级的适配开发,适配方法请参考设备侧适配开发指导。 基于MQTT协议的产品模型,不校验软件升级协议类型。 固件(Firmware)一般是指设备硬件的底层“驱动程序”,承担着一个系统最基础最底层工作的软件,比如计算机主板上的基本输入/输出系统BIOS(Basic Input/output System)。固件升级又称为FOTA(Firmware Over The Air),华为云用户可以通过OTA的方式对支持LwM2M协议和MQTT协议的设备进行固件升级。
  • 使用限制 描述 限制 支持的MQTT协议版本 3.1.1 与标准MQTT协议的区别 支持Qos 0 支持Topic自定义 支持共享订阅 不支持QoS1,QoS2 不支持will、retain msg 不支持客户端Publish MQTTS支持的安全等级 采用TCP通道基础 + TLS协议(TLSV1.2) 支持的加密套件列表: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 单账号每秒最大MQTT连接请求数 10个 单个账号支持的最大MQTT连接数 10个/接入凭证 单个MQTT连接每秒最大推送速率 1000TPS 消息最大缓存时长及大小 最大时长1天,最大消息量1GB,以最先到达的限制为准。例如,缓存时长超过1天即使没达到1GB也不会缓存。 MQTT连接心跳时间建议值 心跳时间限定为30秒至1200秒,推荐设置为120秒。 消息发布与订阅 支持共享订阅,订阅同一Topic的客户端轮询消费推送数据,客户端只能订阅流转规则中创建的Topic。 不支持消息发布。 每个订阅请求的最大订阅数 同账号的最大Topic数一致。 每个账号可订阅的Topic数(在创建规则动作时创建) 100
  • 概述 订阅推送的示意图如下图所示: 物联网平台采用HTTPS协议向应用服务器进行消息推送时,物联网平台需要校验应用服务器的真实性,需要在物联网平台上加载CA证书,该证书由应用服务器侧提供(调测时可自行制作调测证书,商用时建议更换为商用证书,否则会带来安全风险)。 推送机制:物联网平台向应用服务器推送消息后,如果应用服务器接收消息成功,会向物联网平台返回200 OK响应码。如果应用服务器无响应(或响应时间超过15秒),或者应用服务器向物联网平台返回非200响应码(如500、501、502、503、504等),表示消息推送失败,消息推送失败后该消息将被丢弃。推送失败连续累计达到10次,物联网平台会将该订阅URL的主机地址加入黑名单,在黑名单期间消息将会积压在平台(默认积压最近24小时或1GB数据,若只想保留最新数据可参考数据转发积压策略配置进行配置)。此后每3分钟尝试对黑名单中的订阅URL主机地址进行消息推送,如果推送失败,则继续保持黑名单;如果推送成功,则解除黑名单。解除黑名单后消息将会以最大流控值推送完积压的消息后才会正常推送最新消息(默认流控为800TPS,自定义配置参考数据转发流控策略配置)。
  • 制作调测证书 调测证书,又叫做自签名证书,用于客户端通过HTTPS访问服务端时进行安全认证。在物联网平台的使用中,可用于物联网平台向应用服务器采用HTTPS协议推送数据时,物联网平台认证应用服务器的合法性。本文以Windows环境为例,介绍通过Openssl工具制作调测证书的方法,生成的证书为PEM编码格式的证书,后缀为.cer。 常见的证书存储格式如下表所示。 存储格式 说明 DER 二进制编码,后缀名.der/.cer/.crt PEM BASE 64编码,后缀名.pem/.cer/.crt JKS Java的证书存储格式,后缀名.jks 自签名证书仅用于调测阶段,在商用时,您需要向知名CA机构申请证书,否则可能会带来安全风险。 在浏览器中访问这里,下载并安装OpenSSL工具。 以管理员身份运行cmd命令行窗口。 执行cd c:\openssl\bin(请替换为openssl实际安装路径),进入openssl命令视图。 执行如下命令生成CA根证书私钥文件ca_private.key。 openssl genrsa -passout pass:123456 -aes256 -out ca_private.key 2048 aes256:代表加密算法。 passout pass:代表私钥密码。 2048:代表密钥长度。 执行如下命令使用CA根证书私钥文件生成csr文件ca.csr,用于6生成CA根证书。 openssl req -passin pass:123456 -new -key ca_private.key -out ca.csr -subj "/C=CN/ST=GD/L=SZ/O=Huawei/OU=IoT/CN=CA" 如下信息您可以根据实际情况进行修改。 C:代表国家,填写CN。 ST:地区,如GD。 L:城市,如SZ。 O:组织,如Huawei。 OU:组织单位,如IoT。 CN:Common Name,填写为CA的组织名,如CA。 执行如下命令生成CA根证书ca.cer。 openssl x509 -req -passin pass:123456 -in ca.csr -out ca.cer -signkey ca_private.key -CAcreateserial -days 3650 如下信息您可以根据实际情况进行修改。 passin pass:必须与4中设置的私钥密码保持一致。 days:代表证书有效期。 执行如下命令生成应用服务器端私钥文件。 openssl genrsa -passout pass:123456 -aes256 -out server_private.key 2048 执行如下命令生成应用服务器端csr文件,用于生成服务端证书。 openssl req -passin pass:123456 -new -key server_private.key -out server.csr -subj "/C=CN/ST=GD/L=SZ/O=Huawei/OU=IoT/CN=appserver.iot.com" 如下信息您可以根据实际情况进行修改。 C:代表国家,填写CN。 ST:地区,如GD。 L:城市,如SZ。 O:组织,如Huawei。 OU:组织单位,如IoT。 CN:Common Name,一般填写为应用服务器的域名或IP。 通过CA私钥文件ca_private.key对服务端csr文件server.csr进行签名,生成服务端证书文件server.cer。 openssl x509 -req -passin pass:123456 -in server.csr -out server.cer -sha256 -CA ca.cer -CAkey ca_private.key -CAserial ca.srl -CAcreateserial -days 3650 (可选)如果您需要.crt/.pem后缀的证书,可以根据如下命令进行转换。下面将以server.cer转为为server.crt为例进行说明,需要转换ca.cer证书时,请将命令中的server替换为ca。 openssl x509 -inform PEM -in server.cer -out server.crt 在openssl安装目录的bin文件夹下,获取生成的CA证书(ca.cer/ca.crt/ca.pem)、应用服务器证书(server.cer/server.crt/server.pem)和私钥文件(server_private.key)。其中CA证书用于加载到物联网平台,应用服务器证书和私钥文件用于加载到应用服务器。
  • 操作步骤 以下示例主要针对MQTT设备的订阅及发布。在设备接入控制台中可以进行策略的配置及策略目标的绑定。 进入策略页面。访问设备接入服务,单击“管理控制台”进入设备接入控制台。在左侧导航栏“设备”中单击“策略”,可到策略界面。 图2 策略界面 创建策略。在策略界面单击“创建策略”,按照业务具体填写策略参数,填写完成后单击生成策略。参数值可参考下图。 图3 创建策略 表1 参数说明 参数说明 所属资源空间 下拉选择所属的资源空间。如无对应的资源空间,请先创建资源空间。 策略名称 自定义,如PolicyTest。长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。 资源 在MQTT主题发布与订阅中,需要以“topic:”作为参数前缀。比如说:禁止订阅/test/v1,则该参数填写 topic:/test/v1。 操作 值为发布或订阅。发布代表MQTT设备端Publish请求,订阅代表MQTT设备端Subscribe请求。 权限 值为允许或拒绝。用于允许或拒绝某topic的发布或订阅。 绑定策略目标。策略可以从“资源空间”、“产品”、“设备”这3个范围进行绑定,被绑定的设备将遵循策略的要求允许或拒绝某Topic的发布或订阅。 图4 策略绑定设备 表2 参数说明 参数说明 设备目标类型 下拉选择设备目标类型。类型有“资源空间”、“产品”、“设备”三种。这三种类型并不是互斥的,可以同时存在,比如说:绑定产品A与设备C(C是产品B下的设备)。 资源空间:实现多业务应用的分域管理,绑定后所选资源空间下的所有设备都将匹配该策略。可选择多个资源空间绑定。 产品:一个产品下一般有多个设备,绑定后所选产品下的所有设备都将匹配该策略,比起资源空间,绑定范围更小。可绑定一个或多个不同资源空间下的产品。 设备:绑定策略目标的最小单位,可绑定一个或多个不同资源空间、不同产品的设备。 策略目标 选择对应的“策略目标类型”后,在“策略目标”的参数中会显示可选的数据,勾选需要绑定的即可。
  • 操作步骤 进入“策略”界面,单击展开“证书策略”,单击“添加实例”。 按照下方参数说明填写关键参数信息后,单击“确定”。 表1 证书策略参数列表 参数名称 说明 示例 证书名称 即所要根据证书属性将设备发放到指定的目标区域,选择对应的证书。 将需要通过证书“certificates”发放的设备发放至华北-北京四的物联网平台。 需通过证书“certificates”发放的设备:WaterMeter-Beijing0001、WaterMeter-Beijing0002 证书名称:certificates 发放区域:华北-北京四 发放应用:beijing-app1 发放区域 发放到指定区域后,设备将接入对应区域的设备接入服务。 所选区域未开通设备接入服务时,如果确定添加实例,系统将自动为您开通设备接入服务。不同区域设备接入服务价格不同,收费详情请参考价格说明。 发放应用 选择对应设备接入服务区域已创建的应用。在物联网平台中,设备由应用统一管理。 如果对应设备接入服务区域未创建应用,需要前往对应服务创建应用。
  • 概述 证书策略,即通过平台认证设备的设备CA证书匹配的发放策略。每条证书策略实例指:匹配上该策略实例的设备,将会被发放到该策略实例关联的设备接入实例的对应资源空间(即应用)下。 设备匹配证书策略实例的机制为: 设备的发放策略指定为“证书策略”时,其认证方式也必须为X.509证书认证且同时指定了认证设备的设备CA证书,当设备关联的设备CA证书与证书策略实例关联的证书为同一个证书时,即被认为该设备匹配上该条策略实例; 一个设备最多匹配一条证书策略实例;一个CA证书最多被一条证书策略关联。
  • 连接配置说明 MQTT客户端接入物联网平台的连接地址和连接认证参数说明如下: MQTT接入域名 每个账号会自动生成,请前往控制台-接入信息页面获取。 端口:8883 客户端身份认证参数 clientId:全局唯一即可,建议使用“username”。 username =“accessKey=${accessKey}|timestamp=${timestamp}|instanceId=${instanceId}” password =“${accessCode}” 参数 是否必须 说明 ${accessKey} 是 接入凭证键值,单个键值最多允许10个客户端同时进行建链。 首次建链时候,请参考这里进行预置。 ${timestamp} 是 表示当前时间,13位毫秒值时间戳。服务端校验客户端的时间戳,且时间戳相差5分钟。 instanceId 否 实例Id,同一Region购买多个标准版实例时需要填设置该参数,实例Id参考这里这里获取。 ${accessCode} 是 接入凭证密钥,长度不超过256个。
  • 认证凭证更新 设备的接入凭证可能在特定场景需要更新,如设备的X.509证书即将过期,需要将设备证书进行更新。平台提供了密钥/指纹的重置功能,您可以调用接口重置设备指纹/重置设备密钥进行设备凭证的重置。为避免认证凭据切换过程中,用户未在平台及时重置认证凭据导致设备鉴权失败,出现业务中断,平台推出支持双指纹/双密钥的功能。如在证书认证的场景下,将新证书的指纹设置到设备的备用指纹中,此时如果设备没及时更新证书,仍然可以通过旧的证书接入平台,当设备更新证书后,无需在应用侧进行重置操作,即可立即使用新证书接入平台,实现无损切换认证凭证。
  • 转发通道详情查看 访问设备接入服务,单击“管理控制台”进入设备接入控制台。 单击“规则”,选择“数据转发” ,找到对应规则单击“详情”进入数据转发规则详情界面。 图1 规则详情-数据转发规则 选择“设置转发目标”,找到数据转发通道单击“详情”,在弹窗中可查看推送详情。 图2 数据转发规则详情-数据转发规则 图3 推送详情-数据转发规则 表1 参数说明 参数名称 描述 消息推送速率 物联网平台每秒往转发目标推送消息数量。 消息生产速率 设备侧每秒往物联网平台生产的消息数量。 消息积压量 当生产速率大于推送速率时,积压在物联网的消息数量。物联网平台默认配置单个转发规则流转数据的最大积压(缓存)大小为1GB,最大积压(缓存)时间为24小时,如需修改可参考数据转发积压策略配置。
  • 清空积压消息 当规则引擎将消息转发至第三方应用服务器时,若该服务器故障导致消息无法及时处理,IoT物联网平台将会积压数据。考虑到用户对数据实时性的要求,我们支持清理积压在转发通道中的数据,以确保数据的及时处理和传输。 例如:当定时上报用户使用量的水表将数据发送至目标服务器时,由于服务器出现故障导致数据积压,为保证数据的实时性,我们可以使用"清空积压消息"能力丢弃积压数据,优先处理新上报的数据。 在特定的转发目标详情中单击“清空积压消息”,对应的规则转发目标还没完成流转的数据将被全部清空,请评估好业务影响后谨慎操作。
  • 概述 在使用数据转发能力时,可以根据数据转发通道的使用情况,推断出转发目标(如第三方应用服务器等)的性能是否满足业务需求。例如,物联网平台的流转数据因为转发目标(第三方应用服务器)性能等问题无法快速处理时,这些数据会被积压(缓存)在IoT物联网平台中。此时,通过观察数据转发通道的详细信息,我们可以发现消息生产速率一直高于消息推送速率,同时消息积压量不断增加。这表明转发目标(第三方应用服务器)的性能无法满足当前业务需求,需要进行扩容处理。此外,IoT物联网平台还提供了数据转发通道积压数据清理的能力。
  • MQTT的TLS支持 平台推荐使用TLS来保护设备和平台的传输安全。 平台目前支持TLS1.0、1.1 、1.2和1.3版本以及GMTLS。其中TLS 1.0 和1.1 计划后续不再支持,建议使用 TLS 1.3作为首选 TLS 版本。GMTLS版本仅在国密算法的企业版才支持。 基础版,标准版以及支持通用加密算法的企业版使用TLS连接时,平台支持如下加密套件: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 支持国密算法的企业版使用TLS连接时平台支持如下加密套件: ECC_SM4_GCM_SM3 ECC_SM4_CBC_SM3 ECDHE_SM4_GCM_SM3 ECDHE_SM4_CBC_SM3 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 带RSA 和CBC的加密套件存在安全风险,请谨慎使用。
  • 概述 MQTT消息由固定报头(Fixed header)、可变报头(Variable header)和有效载荷(Payload)三部分组成。 其中固定报头(Fixed header)和可变报头(Variable header)格式的填写请参考MQTT标准规范,有效载荷(Payload)的格式由应用定义,即设备和物联网平台之间自己定义。 MQTT的语法和接口细节,请以MQTT标准规范为准。 常见MQTT消息类型主要有CONNECT、SUBSCRIBE、PUBLISH。 CONNECT:指客户端请求和服务端连接。有效载荷(Payload)的主要参数,参考设备连接鉴权填写。 SUBSCRIBE:指客户端订阅请求。有效载荷(Payload)中的主要参数“Topic name”,参考Topic定义中订阅者为设备的Topic。 PUBLISH:平台发布消息。 可变报头(Variable header)中的主要参数“Topic name”,指设备上报到物联网平台时发布者为设备的Topic。详细请参考Topic定义。 有效载荷(Payload)中的主要参数为完整的数据上报和命令下发的消息内容,目前是一个JSON对象。
  • 使用限制 描述 限制 单个MQTT直连设备在同一时间的连接数 1 单个MQTT直连设备最大建链每分钟请求次数 5/min 单账户设备侧每秒最大建链请求数量 500/s 单账号设备侧每秒最大上行的请求数量(单消息payload平均为512字节) 20000/s 单个MQTT连接每秒最大上行消息数量 50/s 单个MQTT连接最大带宽(上行消息) 1MB(默认) MQTT单条发布消息最大长度。超过此大小的发布请求将被直接拒绝。 1MB MQTT协议规范 MQTT v5.0、MQTT v3.1.1、MQTT v3.1 与标准MQTT协议的区别 不支持QoS2 不支持will、retain msg MQTT协议支持的安全等级 采用TCP通道基础 + TLS协议(TLSv1、 TLSv1.1、TLSv1.2和TLSv1.3版本) MQTT连接心跳时间建议值 心跳时间限定为30至1200秒,推荐设置为120秒 MQTT协议消息发布与订阅 设备只能对自己的Topic进行消息发布与订阅 MQTT协议每个订阅请求的最大订阅数 无限制 MQTT自定义Topic支持的最大长度 64字节 MQTT自定义Topic支持每个产品添加的最大个数 10个/产品 单账号支持上传设备侧CA证书个数 100个
  • 与标准MQTT协议的兼容说明 华为云IoTDA服务支持设备基于MQTT 5.0、MQTT 3.1.1和 MQTT 3.1规范的接入。但同这些规范有一些差异, IoTDA服务不是简单的MQTT Broker,而是在支持设备使用MQTT协议接入的基础上集成消息通信、设备管理、规则引擎、数据流转等能力。与MQTT标准规范的的区别如下: 支持设备与IoTDA服务之间使用MQTT规范中的CONNECT、CONNACK、PUBLISH、PUBACK、SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK、PINGREQ、PINGRESP、DISCONNECT等报文进行通信。 支持MQTT的服务质量等级为QoS 0、QoS 1,不支持QoS 2。 支持MQTT协议规范中的clean session。 不支持MQTT协议规范中的will。 IoTDA提供设备状态推送的能力,设备离线后支持根据流转规则将设备状态推送到客户应用或者云服务。 不支持MQTT协议规范中retain msg。IoTDA提供消息缓存的能力消息上报和消息下发时支持对消息进行缓存。
  • 支持的MQTT 5.0特性说明 MQTT5.0相关特性仅在企业版支持。 IoTDA服务支持的MQTT 5.0的部分新增特性如下: 支持Topic Alias。将消息通信Topic缩小为整型数值,来减小MQTT报文,节约网络带宽资源。 支持ResponseTopic 和CorrelationData。消息上报和下发时支持携带这两个参数,实现类似云HTTP的请求和响应。 支持设置UserProperty属性列表。每个属性由Key和Value组成,用于在非payload区传输属性数据。 支持Content-Type属性。消息上报的报文可以携带Content-Type属性,标识报文类型。 支持在CONNACK和PUBACK报文中返回码,便于设备快速定位请求状态及问题。
  • 建立连接 设置接入地址及鉴权参数的值: // IoT平台mqtt接入地址,替换成"连接配置说明中"的"MQTT接入域名" private String serverAddress = "${UUCID}.st1.iotda-app.cn-north-4.myhuaweicloud.com"; // 接入凭证,替换成"获取MQTT接入凭证"中获取的接入凭证 private static String accessKey = "accessKey"; private static String accessCode = "accessCode"; // 接收数据的Topic,替换成"创建规则动作"中的Topic private static String subscribeTopic = "userTopic"; Demo中涉及的参数说明,请参考连接配置说明。 运行样例代码,根据以下日志信息判断是否订阅成功。 订阅成功。 图1 订阅成功 订阅失败。 用户名或密码错误。 图2 用户或密码错误 订阅的Topic不存在。 图3 订阅topic不存在
  • 设备消息上报接口说明 用于设备将自定义数据上报给平台,平台将设备上报的消息转发给应用服务器或华为云其他云服务上进行存储和处理。 请求方法 POST URI /v5/devices/{device_id}/sys/messages/up 传输协议 HTTPS 名称 必选 类型 位置 说明 access_token 是 String Header 参数说明: 调用设备鉴权信息返回的access_token 取值范围: 长度1-256 device_id 是 String Path 参数说明: 参数说明:设备ID,用于唯一标识一个设备。在注册设备时直接指定,或者由物联网平台分配获得。由物联网平台分配时,生成规则为"product_id" + "_" + "node_id"拼接而成。 取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。 取值范围: 长度1-128 该接口支持设备将自定义数据通过请求中的body体上报给平台,平台收到该请求后会将body内容转发给应用服务器或华为云其他云服务上进行存储和处理。平台对body中的内容无具体格式限制,小于1MB的数据可以通过该接口携带。 请求示例如下: POST https://{endpoint}/v5/devices/{device_id}/sys/messages/up Content-Type: application/json access_token: d144a524-1997-4b99-94bf-f27128da8a34 { "name" : "name", "id" : "id", "content" : "messageUp" } 响应示例如下: Status Code: 200 ok HTTP状态码 HTTP状态码描述 错误码 错误码描述 错误码中文描述 400 Bad Request IOTDA.000006 Invalid input data. 请求参数不合法 403 Forbidden IOTDA.000004 Invalid access token. 非法token IOTDA.021101 Request reached the maximum rate limit. 请求已经达到限制速率 IOTDA.021102 The request rate has reached the upper limit of the tenant, limit %s. 请求已经达到租户的限制速率
  • 设备鉴权接口说明 设备鉴权接口鉴权通过后建立设备与平台间才能处理业务连接。鉴权成功后平台返回access_token。调用属性上报、消息上报等其他接口时,都需要携带access_token信息。如果access_token超期,需要重新认证设备获取access_token。如果access_token未超期重复获取access_token,老的access_token在未超期前保留30s,30s之后失效。 请求方法 POST URI /v5/device-auth 传输协议 HTTPS 名称 必选 类型 位置 说明 device_id 是 String Body 参数说明: 设备ID,用于唯一标识一个设备。在注册设备时直接指定,或者由物联网平台分配获得。由物联网平台分配时,生成规则为"product_id" + "_" + "node_id"拼接而成。 取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。 取值范围: 长度1-128 sign_type 是 Integer Body 参数说明: 密码校验方式: 0 代表HMACSHA256校验时间戳时不会校验消息时间戳与平台时间是否一致,仅判断密码是否正确; 1 代表HMACSHA256校验时间戳时会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。 取值范围: 大小0~1 timestamp 是 String Body 参数说明: 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。 取值范围: 固定长度10 password 是 String Body 参数说明: password的值为使用“HMACSHA256”算法以时间戳为密钥,对secret进行加密后的值。secret为注册设备时平台返回的secret。 取值范围: 固定长度64 名称 类型 说明 access_token String 参数说明: 设备token,用于设备鉴权 取值范围: 长度32-256 expires_in Integer 参数说明: 鉴权信息的剩余有效时间, 单位:秒 请求示例如下: POST https://{endpoint}/v5/device-auth Content-Type: application/json { "device_id" : "60a87ffebaccd902c2f1abbb_0001", "sign_type" : 0, "timestamp" : "2019120219", "password" : "0a5c5c4adcee661b1e730cbf6c8c343ff5924c2f3100ec2f51cad6b060183ed0" } 响应示例如下: Status Code: 200 OK Content-Type: application/json { "access_token" : "d144a524-1997-4b99-94bf-f27128da8a34", "expires_in" : 86399 } HTTP状态码 HTTP状态码描述 错误码 错误码描述 错误码中文描述 400 Bad Request IOTDA.000006 Invalid input data. 请求参数不合法 401 Unauthorized IOTDA.000002 The request is unauthorized. 鉴权失败 403 Forbidden IOTDA.021101 Request reached the maximum rate limit. 请求已经达到限制速率 IOTDA.021102 The request rate has reached the upper limit of the tenant, limit %s. 请求已经达到租户的限制速率
  • 使用限制 描述 限制 支持的HTTP协议版本 支持 Hypertext Transfer Protocol — HTTP/1.0 协议 支持 Hypertext Transfer Protocol — HTTP/1.1 协议 支持HTTPS协议 物联网平台仅支持HTTPS协议,证书下载请参考证书资源。 支持的TLS版本 TLS 1.2 支持的body体最大长度 1MB 接口规格说明 请参考产品规格说明。 网关上报子设备属性时一次最大可上报子设备数 50
共100000条