典型场景

若设备处于离线或异常状态时,第三方应用无法通过命令下发的方式向设备下发配置。此时可把要下发的配置设置到设备影子,当设备重新上线时,设备影子会把配置下发给设备。第三方应用可调用此接口查看设备影子上的设备配置信息及最新的设备上报数据信息。

接口功能

支持第三方应用查询单个设备的设备影子信息,包括对设备的配置信息(desired区)和设备最新上报的数据信息(reported区)。

接口描述

  1. Device::queryDeviceShadow($queryDeviceShadowArray);

接口所属类

  1. iotyun\huaweiiot\Device;

参数说明

  1. $refreshDeviceKeyarray = array(
  2. 'platformIp' => '平台IP或者域名',
  3. 'platformPort' => '平台端口',
  4. 'appId' => '应用appId',
  5. 'accessToken' => '你系统存储的accessToken',
  6. 'deviceId' => '您的设备ID'
  7. );
参数 必选/可选 类型 描述
platformIp 必选 String(256) 物联网平台的IP或者域名。
platformPort 必选 String(256) 物联网平台的端口。
deviceId 必选 String 设备ID,用于唯一标识一个设备,在注册设备时由物联网平台分配获得。
appId 必选 String 如果是本应用的设备,此参数值可以填写null,否则填写授权应用的appId。
accessToken 必选 String 您当前有效的accessToken。

返回值

QueryDeviceShadowOutDTO

参数 类型 描述
deviceId String(36) 设备ID,用于唯一标识一个设备。
gatewayId String(36) 网关ID,用于标识一个网关设备。当设备是直连设备时,gatewayId与设备的deviceId一致。当设备是非直连设备时,gatewayId为设备所关联的直连设备(即网关)的deviceId。
nodeType Enum 设备的类型。
createTime String(256) 设备创建的时间。
lastModifiedTime String(256) 设备最后一次修改信息的时间。
deviceInfo DeviceInfo 设备详细信息,具体参见DeviceInfo结构体
services List 设备的服务属性信息,具体参见DeviceServiceB

DeviceInfo结构体说明:

参数 类型 描述
nodeId String(256) 设备的唯一标识。
name String(256) 设备名称。
description String(2048) 设备的描述信息。
manufacturerId String(256) 厂商ID,唯一标识一个厂商,与设备Profile文件中的信息保持一致。
manufacturerName String(256) 厂商名称,与设备Profile文件中的信息保持一致。
mac String(256) 设备的MAC地址。
location String(2048) 设备的位置信息。
deviceType String(256) 设备类型,大驼峰命名方式,与设备Profile文件中的信息保持一致,如MultiSensor、ContactSensor、CameraGateway。
model String(256) 设备的型号,与设备Profile文件中的信息保持一致。
Z-Wave:ProductType + ProductId,16 进制格式 XXXX-XXXX 补0对齐,如:001A-0A12,其他协议的格式待定。
swVersion String(256) 设备的软件版本。
Z-Wave:主版本号.次版本号,如:1.1。
fwVersion String(256) 设备的固件版本。
hwVersion String(256) 设备的硬件版本。
protocolType String(256) 设备使用的协议类型,与设备Profile文件中的信息保持一致,当前支持的协议类型:CoAP,huaweiM2M,Z-Wave,ONVIF,WPS,Hue,WiFi,J808,Gateway,ZigBee,LWM2M。
bridgeId String(256) Bridge标识,表示设备通过哪个Bridge接入物联网平台。
status String 设备的状态,表示设备是否在线,取值范围:ONLINE、OFFLINE、ABNORMAL。
statusDetail String(256) 设备的状态详情,跟status取值对应,取值查看status和statusDetail
mute String 表示设备是否处于冻结状态,即设备上报数据时,平台是否会管理和保存。
- TRUE:冻结状态
- FALSE:非冻结状态
supportedSecurity String 表示设备是否支持安全模式。
- TRUE:支持安全模式
- FALSE:不支持安全模式
isSecurity String 表示设备当前是否启用安全模式。
- TRUE:启用
- FALSE:未启用
signalStrength String(256) 设备的信号强度。
sigVersion String(256) 设备的sig版本。
serialNumber String(256) 设备的序列号。
batteryLevel String(256) 设备的电池电量。

status和statusDetail:

status statusDetail
OFFLINE NONE CONFIGURATION_PENDING
ONLINE NONE COMMUNICATION_ERROR CONFIGURATION_ERROR BRIDGE_OFFLINE FIRMWARE_UPDATING DUTY_CYCLE NOT_ACTIVE

查询设备影子 - 图1说明:
设备向物联网平台上报设备状态时需要status、statusDetail成对上报。statusDetail建议仅用作显示,不建议用于逻辑判断。

DeviceServiceB说明:

参数 类型 描述
serviceId String(256) 服务ID,用于标识一个服务。
reportedProps ObjectNode 设备最新上报的数据。
desiredProps ObjectNode 要向设备下发的配置信息。
eventTime String(256) 事件发生的时间。
serviceType String(256) 服务类型。

错误码

Http状态码 错误码 错误描述 说明
403 100203 The application is not existed. 应用不存在。
处理建议:
- 请检查HTTP请求头域中携带的appId是否有误。
- 请检查请求路径(url)中传入的appId是否有误。
403 100217 The application hasn’t been authorized. 应用未被授权。
处理建议:若非应用授权场景,请确认请求参数中的appId为空。
403 1010009 app throttle exceed. 应用调用接口过于频繁,超过流控值(默认值是100次/60s)。
处理建议:联系物联网平台维护人员调大流控阈值或者控制接口的调用频率。
403 1010005 pp_key or access_token is invalid. 错误的token信息。
处理建议:请检查接口请求中所携带的accessToken是否有误。
404 100418 The deviceData is not existed. 设备信息不存在。
处理建议:
- 请求参数中携带的deviceId错误。请确认该deviceId是否属于该appId或者deviceId是否写错。
- Header中携带的appId有误,请确认该appId下是否有该deviceId。
- 如果URL中携带了可选参数appId,请检查该appId是否有误。
500 100203 The application is not existed. 应用不存在。
处理建议:
- 请检查HTTP请求头域中携带的appId是否有误。
- 请检查请求路径(url)中传入的appId是否有误。
500 50252 Internal server error. 服务器运行内部错误。
处理建议:物联网平台内部错误,请联系物联网平台维护人员处理。