云服务器内容精选

  • URI POST /v5/iot/{project_id}/devices/{device_id}/reset-fingerprint 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数说明:项目ID。获取方法请参见 获取项目ID 。 device_id 是 String 参数说明:设备ID,用于唯一标识一个设备。在注册设备时直接指定,或者由 物联网平台 分配获得。 取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 device_id String 设备ID,用于唯一标识一个设备。在注册设备时直接指定,或者由物联网平台分配获得。由物联网平台分配时,生成规则为"product_id" + "_" + "node_id"拼接而成。 最大长度:256 fingerprint String 设备指纹。 fingerprint_type String 参数说明:重置设备证书指纹的的类型。 取值范围: PRIMARY:重置主指纹。 SECONDARY:重置辅指纹。 缺省值:PRIMARY
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 否 String 参数说明:用户Token。通过调用 IAM 服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证。 Instance-Id 否 String 参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考查看实例详情 。 表3 请求Body参数 参数 是否必选 参数类型 描述 fingerprint 否 String 参数说明:设备指纹。设置该字段时平台将设备指纹重置为指定值;不携带时将之置空,后续设备第一次接入时,该设备指纹的值将设置为第一次接入时的证书指纹。 取值范围:长度为40的十六进制字符串或者长度为64的十六进制字符串。 force_disconnect 否 Boolean 参数说明:是否强制断开设备的连接,当前仅限长连接。默认值false。 缺省值:false fingerprint_type 否 String 参数说明:重置设备证书指纹的的类型。 取值范围: PRIMARY:重置主指纹。设备证书鉴权优先使用的指纹,当设备接入物联网平台时,平台将优先使用主指纹进行校验。 SECONDARY:重置辅指纹。设备的备用指纹,当主指纹校验不通过时,会启用辅指纹校验,辅指纹与主指纹有相同的效力。 缺省值:PRIMARY
  • 示例 Topic: $oc/devices/{device_id}/sys/events/down 数据格式: { "object_device_id": "{object_device_id}", "services": [ { "service_id": "$sub_device_manager", "event_type": "delete_sub_device_response", "event_time": "20151212T121212Z", "event_id": "40cc9ab1-3579-488c-95c6-c18941c99eb4", "paras": { "successful_devices": [ "c6b39067b0325db34663d3ef421a42f6_subdevice11" ], "failed_devices": [ { "device_id": "c6b39067b0325db34663d3ef421a42f6_subdevice12", "error_code": "XXX", "error_msg": "XXXX" } ] } } ] }
  • 响应示例 状态码: 200 OK { "app_id" : "jeQDJQZltU8iKgFFoW060F5SGZka", "app_name" : "testAPP01", "device_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f", "node_id" : "ABC123456789", "gateway_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f", "device_name" : "dianadevice", "node_type" : "ENDPOINT", "description" : "watermeter device", "fw_version" : "1.1.0", "sw_version" : "1.1.0", "auth_info" : { "auth_type" : "SECRET", "secret" : "3b935a250c50dc2c6d481d048cefdc3c", "fingerprint" : "dc0f1016f495157344ac5f1296335cff725ef22f", "secure_access" : true, "timeout" : 0 }, "product_id" : "b640f4c203b7910fc3cbd446ed437cbd", "product_name" : "Thermometer", "status" : "ONLINE", "create_time" : "20190303T081011Z", "connection_status_update_time" : "2019-03-03T08:10:111Z", "active_time" : "2019-03-03T08:10:111Z", "tags" : [ { "tag_key" : "testTagName", "tag_value" : "testTagValue" } ], "extension_info" : { "aaa" : "xxx", "bbb" : 0 } }
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 app_id String 资源空间ID。 最大长度:36 app_name String 资源空间名称。 device_id String 设备ID,用于唯一标识一个设备。在注册设备时直接指定,或者由物联网平台分配获得。由物联网平台分配时,生成规则为"product_id" + "_" + "node_id"拼接而成。 node_id String 设备标识码,通常使用IMEI、MAC地址或Serial No作为node_id。 gateway_id String 网关ID,用于标识设备所属的父设备,即父设备的设备ID。当设备是直连设备时,gateway_id与设备的device_id一致。当设备是非直连设备时,gateway_id为设备所关联的父设备的device_id。 device_name String 设备名称。 node_type String 设备节点类型。 ENDPOINT:非直连设备。 GATEWAY:直连设备或网关。 UNKNOWN:未知。 description String 设备的描述信息。 fw_version String 设备的固件版本。 sw_version String 设备的软件版本。 device_sdk_version String 设备的sdk信息。 auth_info AuthInfoRes object 设备的接入认证信息。 product_id String 设备关联的产品ID,用于唯一标识一个产品模型。 product_name String 设备关联的产品名称。 status String 设备的状态。 ONLINE:设备在线。 OFFLINE:设备离线。 ABNORMAL:设备异常。 INACTIVE:设备未激活。 FROZEN:设备冻结。 create_time String 在物联网平台注册设备的时间。格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。 connection_status_update_time String 设备最近一次连接状态(ONLINE:在线,OFFLINE:离线,ABNORMAL:异常)变化时间。格式:yyyy-MM-dd'T'HH:mm:ss.SSS'Z' ,如2015-12-12T12:12:122Z。 active_time String 设备激活时间。格式:yyyy-MM-dd'T'HH:mm:ss.SSS'Z' ,如2015-12-12T12:12:122Z。 tags Array of TagV5DTO objects 设备的标签列表。 extension_info Object 设备扩展信息。用户可以自定义任何想要的扩展信息,如果在创建设备时为子设备指定该字段,将会通过MQTT接口“平台通知网关子设备新增“将该信息通知给网关。 表6 AuthInfoRes 参数 参数类型 描述 auth_type String 参数说明:鉴权类型。注意:不填写auth_type默认为密钥认证接入方式(SECRET)。 取值范围: SECRET:使用密钥认证接入方式。 CERTIFICATES:使用证书认证接入方式。 secret String 参数说明:设备密钥,认证类型使用密钥认证接入(SECRET)可填写该字段。注意:NB设备密钥由于协议特殊性,只支持十六进制密钥接入;查询设备列表接口不返回该参数。 取值范围:长度不低于8不超过32,只允许字母、数字、下划线(_)、连接符(-)的组合。 最小长度:8 最大长度:32 secondary_secret String 参数说明:设备备用密钥,认证类型使用密钥认证接入(SECRET)该字段有效,当主密钥校验不通过时,会启用辅密钥校验,辅密钥与主密钥有相同的效力;辅密钥对coap协议接入的设备不生效。注意:NB设备密钥由于协议特殊性,只支持十六进制密钥接入;查询设备列表接口不返回该参数。 取值范围:长度不低于8不超过32,只允许字母、数字、下划线(_)、连接符(-)的组合。 最小长度:8 最大长度:32 fingerprint String 参数说明:证书指纹,认证类型使用证书认证接入(CERTIFICATES)该字段有效,注册设备时不填写该字段则取第一次设备接入时的证书指纹。 取值范围:长度为40的十六进制字符串或者长度为64的十六进制字符串。 secondary_fingerprint String 参数说明:证书备用指纹,认证类型使用证书认证接入(CERTIFICATES)该字段有效,当主指纹校验不通过时,会启用辅指纹校验,辅指纹与主指纹有相同的效力。 取值范围:长度为40的十六进制字符串或者长度为64的十六进制字符串。 secure_access Boolean 参数说明:指设备是否通过安全协议方式接入。 取值范围: true:通过安全协议方式接入。 false:通过非安全协议方式接入。非安全接入的设备存在被仿冒等安全风险,请谨慎使用。 缺省值:true timeout Integer 参数说明:设备接入的有效时间,单位:秒,默认值:0 若设备在有效时间内未接入物联网平台并激活,则平台会删除该设备的注册信息。若设置为“0”,则表示平台不会删除该设备的注册信息(建议填写为“0”)。 注意:该参数只对直连设备生效。 最小值:0 最大值:2147483647 缺省值:0 表7 TagV5DTO 参数 参数类型 描述 tag_key String 参数说明:标签键,在同一资源下标签键唯一。绑定资源时,如果设置的键已存在,则将覆盖之前的标签值。如果设置的键值不存在,则新增标签。 取值范围:长度不超过64,只允许中文、字母、数字、以及_.-等字符的组合。 tag_value String 参数说明:标签值。 取值范围:长度不超过128,只允许中文、字母、数字、以及_.-等字符的组合。
  • 请求示例 修改设备,修改设备的名为device,接入类型为安全接入。 PUT https://{endpoint}/v5/iot/{project_id}/devices/{device_id} { "device_name" : "device", "description" : "watermeter device", "extension_info" : { "aaa" : "xxx", "bbb" : 0 }, "auth_info" : { "secure_access" : true } }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 否 String 参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证。 Instance-Id 否 String 参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考查看实例详情 。 表3 请求Body参数 参数 是否必选 参数类型 描述 device_name 否 String 参数说明:设备名称,资源空间下唯一,用于资源空间下唯一标识一个设备。 取值范围:长度不超过256,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合,建议不少于4个字符。 最小长度:1 最大长度:256 description 否 String 参数说明:设备的描述信息。 取值范围:长度不超过2048,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合 最大长度:2048 extension_info 否 Object 参数说明:设备扩展信息。用户可以自定义任何想要的扩展信息,修改子设备信息时不会下发给网关。 auth_info 否 AuthInfoWithoutSecret object 参数说明:设备的接入认证信息。 表4 AuthInfoWithoutSecret 参数 是否必选 参数类型 描述 secure_access 否 Boolean 参数说明:指设备是否通过安全协议方式接入。 取值范围: true:通过安全协议方式接入。 false:通过非安全协议方式接入。非安全接入的设备存在被仿冒等安全风险,请谨慎使用。 缺省值:true timeout 否 Integer 参数说明:设备接入的有效时间,单位:秒,默认值:0。若设备在有效时间内未接入物联网平台并激活,则平台会删除该设备的注册信息。若设置为“0”,则表示平台不会删除该设备的注册信息(建议填写为“0”)。 注意:该参数只对直连设备生效 最小值:0 最大值:2147483647 缺省值:0
  • URI PUT /v5/iot/{project_id}/devices/{device_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数说明:项目ID。获取方法请参见 获取项目ID 。 device_id 是 String 参数说明:设备ID,用于唯一标识一个设备。在注册设备时直接指定,或者由物联网平台分配获得。 取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 service_id String 服务id 最小长度:1 最大长度:256 service_type String 服务类型 最小长度:1 最大长度:256 description String 描述 最小长度:0 最大长度:1024 properties Array of objects 属性 数组长度:0 - 1000
  • 业务流程 IoT Device SDK提供相关的接口,开发者调用这些接口网关实现与物联网平台的对接。不同语言的SDK的接口名称不一样,每个接口功能请参见IoT Device SDK使用指南(Java)、IoT Device SDK使用指南(C)、IoT Device SDK使用指南(C#)、IoT Device SDK使用指南(Android)、IoT Device SDK Tiny使用指南(C)。 表1 业务流程 应用侧管理子设备业务流程 网关管理子设备业务流程 图2 应用侧管理子设备流程图 图3 网关侧管理子设备流程图 1.在物联网平台上传网关的产品模型,并注册网关设备。 2.网关调用鉴权接口上线 3.在物联网平台上传子设备的产品模型。 4.网关鉴权成功后,应用调用添加子设备接口,填写设备相关信息(与产品模型定义一致)。添加成功后,您可以在物联网平台查看添加的子设备(如何查看?)。您也可以通过控制台添加子设备,详细请查看如何添加? 4.网关鉴权成功后,网关调用网关新增子设备请求接口,填写设备相关信息(与产品模型定义一致)。平台在处理完成后,将处理结果通过接口网关新增子设备请求响应发送给网关。 5.添加子设备后,子设备状态显示“未激活”。请在子设备添加成功后,或者子设备上报数据前,调用网关更新子设备状态接口进行设备状态更新。 说明: 子设备的状态表示子设备接入网关的状态,由网关上报到物联网平台进行状态的刷新;如果网关不能正常上报子设备的状态信息到物联网平台,则展示的子设备状态不会刷新。例如:某子设备通过网关接入到物联网平台,子设备状态为在线状态,如果此时网关与物联网平台断开连接,则网关不能上报子设备的状态到物联网平台,该子设备的状态会一直显示在线。 6.网关调用批量属性上报接口上报子设备的数据,接口里的参数填写网关和子设备的相关设备信息。 7.网关订阅命令下发Topic,接收并处理应用服务器或物联网平台下发的命令。 8.应用服务器调用删除设备接口,给网关下发删除子设备命令,网关收到该命令后,可以进行相应的业务处理。 8.网关调用网关删除子设备请求接口,平台收到后会进行数据处理,当处理完成后会通过接口网关删除子设备请求响应将结果发送给设备。
  • 概述 物联网平台设备分为直链设备和非直接设备。 直连设备:通过平台支持的协议,直接连接到平台的设备称为直连设备。平台支持直连的协议请参考概述中类型为通用协议,子类型为直连云端中的协议。 非直连设备:针对未实现TCP/IP协议栈的设备,由于无法直接同物联网平台通信,它需要通过网关进行数据转发。网关设备为直连设备,当前仅支持通过mqtt协议直连到平台的设备作为网关设备。 直连设备与非直连设备关系如下图: 图1 网关与子设备
  • 设备端开发 完成云端配置后,需要进行设备端业务开发。完整的设备开发流程可参考设备侧开发。本章节以MQTT.fx为例,介绍在设备迁移场景下,设备侧如何在尽量少改动的情况下,实现设备建立MQTT连接、数据上报、指令接收等功能。 设备同物联网平台建立MQTT连接。 参考下表配置鉴权参数。 参数 必选/可选 参数描述 Broker Address 必选 华为云物联网平台的MQTT协议接入地址,请参考此处获取。 Broker Port 必选 8883。若设备侧MQTT接入端口不是8883,且无法修改,可以开通企业版实例。 Client ID 可选 使用设备迁移前的Client ID。 User Name 必选 填写步骤3注册设备时生成的设备ID,默认通过控制台生成的设备ID会添加产品ID前缀。在设备迁移场景,设备侧User Name参数无法修改时可以调用创建设备接口,指定设备ID参数值同迁移前的User Name参数值保持一致。 Password 必选 加密后的设备密钥。Password的值为使用“HMA CS HA256”算法以时间戳为密钥,对secret进行加密后的值。 secret为注册设备时平台返回的secret。 参考下表配置“SSL/TLS”认证参数,然后单击“Apply”。 参数 必选/可选 参数描述 Enable SSL/TLS 必选 选择“Enable SSL/TLS” CA certificate file 必选 上传证书资源页面获取的CA证书。 设备同物联网平台建立连接后,设备沿用迁移前的topic和payload格式上报数据。物联网平台针对这类非系统预定义的topic,统一按照“设备消息”的处理流程将设备上报的数据转发给第三方应用或者华为云的其他云服务处理。 图2 设备在线 根据迁移前的topic进行订阅,接收应用服务器下发的指令。
  • 整体方案 假设企业终端设备接入自建MQTT集群,业务架构如下图所示。 基于MQTT协议的上行数据和下行指令的业务定义如下: 业务场景 通信Topic 报文Payload 设备上报数据 /aircondition/data/up { "temperature": 26.0 } 服务端控制指令 /aircondition/cmd { "switch": "off" } 为减少企业改造成本,华为云物联网平台提供如下迁移方案,设备侧不用改变原有的topic和payload报文格式,就可以快速迁移设备到华为云物联网平台。 企业设备迁移上云有三个核心变更点: 设备侧修改接入 域名 为华为云物联网平台的接入点。 配置规则引擎,把设备数据流转到应用服务器、AMQP消费组或华为云第三方云服务产品。 应用服务器适配设备消息下发接口往指定topic下发消息。
  • 开发中心模拟设备如何上报负数? 使用LWM2M协议接入的设备上报负数时,编解码插件对应的数据类型要选择有符号整形数;实际上报数据时,负数转换为二进制编码时需要转换为补码,再转换为十六进制数填写到模拟设备数据上报界面。 例如: -5转换为二进制,原码为10000101,补码为11111011,补码转换为十六进制为FB,再与消息中其他字段(如地址域字段取值为00)组合后上报。 父主题: 设备集成(联通用户专用)