设备接入 IoTDA设备接入 IoTDA

更新时间:2021/07/08 GMT+08:00
分享

LwM2M/CoAP设备命令下发

针对LwM2M/CoAP协议的设备,物联网平台提供立即下发和缓存下发两种机制。应用服务器向物联网平台下发命令时,携带参数send_strategy(表示下发策略)。

  • send_strategy=immediately:命令立即下发。

  • send_strategy=delay:命令缓存下发。

LwM2M/CoAP设备命令立即下发

本文介绍命令立即下发流程。

  1. 应用调用下发异步设备命令接口,下发请求到物联网平台,携带send_strategy为immediately。消息样例如下:
    POST https://{endpoint}/v5/iot/{project_id}/devices/{device_id}/async-commands
    Content-Type: application/json
    X-Auth-Token: ********
    
    {
      "service_id" : "WaterMeter",
      "command_name" : "ON_OFF",
      "paras" : {
        "value" : "ON"
      },
       "expire_time": 0,
       "send_strategy": immediately
    }
  2. 物联网平台调用编解码插件对命令请求进行编码后,会通过LwM2M协议定义的设备管理和服务实现接口的Execute操作下发命令,消息体为二进制格式。
  3. 物联网平台向应用返回200 OK,携带命令状态为SENT。(如果设备不在线或者设备没收到指令则下发失败,命令状态为FAILED
  4. 设备收到命令后返回ACK响应。
  5. 若应用订阅了命令的状态变更通知,物联网平台通过命令状态更新通知接口推送消息给应用,携带命令状态为DELIVERED。消息样例如下:
    Method: POST
    request:
    Body:
    {
    	"resource": "device.commmad.status",
    	"event": "update",
    	"event_time": "20200811T080745Z",
    	"notify_data": {
    		"header": {
    			"app_id": "8d4a34e5363a49bfa809c6bd788e6ffa",
    			"device_id": "5f111a5a29c62ac7edc88828_test0001",
    			"node_id": "test0001",
    			"product_id": "5f111a5a29c62ac7edc88828",
    			"gateway_id": "5f111a5a29c62ac7edc88828_test0001",
    			"tags": []
    		},
    		"body": {
    			"command_id": "49ca40af-7e14-4f7b-b97b-78cdd347a6b9",
    			"created_time": "20200811T080738Z",
    			"sent_time": "20200811T080738Z",
    			"delivered_time": "20200811T080745Z",
    			"response_time": "",
    			"status": "DELIVERED",
    			"result": null
    		}
    	}
    }
  6. 设备执行命令后通过205 Content响应返回命令执行结果。
  7. 若应用订阅了命令的状态变更通知,物联网平台会调用编解码插件对设备响应进行解码,然后通过命令状态更新通知接口推送消息给应用,携带命令状态为SUCCESSFUL。消息样例如下:
    Method: POST
    request:
    Body:
    {
    	"resource": "device.commmad.status",
    	"event": "update",
    	"event_time": "20200811T080745Z",
    	"notify_data": {
    		"header": {
    			"app_id": "8d4a34e5363a49bfa809c6bd788e6ffa",
    			"device_id": "5f111a5a29c62ac7edc88828_test0001",
    			"node_id": "test0001",
    			"product_id": "5f111a5a29c62ac7edc88828",
    			"gateway_id": "5f111a5a29c62ac7edc88828_test0001",
    			"tags": []
    		},
    		"body": {
    			"command_id": "49ca40af-7e14-4f7b-b97b-78cdd347a6b9",
    			"created_time": "20200811T080738Z",
    			"sent_time": "20200811T080738Z",
    			"delivered_time": "20200811T080745Z",
    			"response_time": "20200811T081745Z",
    			"status": "SUCCESSFUL",
    			"result": {
    				"resultCode":"SUCCESSFUL",
    				"resultDetail": {
    					"value": "ON"
    				}
    			}
    		}
    	}
    }

LwM2M/CoAP设备命令缓存下发

本文介绍缓存命令下发流程。

  1. 应用调用下发异步设备命令接口,下发请求到物联网平台,携带send_strategy为delay。
  2. 物联网平台将命令写入缓存队列,并上报200 OK,携带命令状态为PENDING
  3. 设备上线或设备上报数据到平台。
  4. 物联网平台调用编解码插件对命令请求进行编码后,根据协议规范下发命令给设备。
  5. 若应用订阅了命令的状态变更通知,物联网平台通过命令状态变化通知接口推送消息给应用,携带命令状态为SENT
  6. 后续流程请参考“命令立即下发”的步骤4到步骤7

下发单个LwM2M/CoAP设备异步命令下发

平台支持通过调用下发异步设备命令接口和在控制台上创建命令下发任务,创建单个LwM2M/CoAP设备的命令下发任务。本文介绍如何在控制台上创建命令下发业务。

方式一:

  1. 访问设备接入服务,单击“立即使用”进入设备接入控制台。
  2. 在左侧导航栏选择“产品”,单击已创建的产品进入产品详情页面。创建产品操作指导,请参见创建产品
  3. 在“在线调试”页签中,单击“新增测试设备”,在弹出的窗口中输入LwM2M/CoAP设备参数,然后单击“确认”。

    参数

    描述

    设备类型

    选择“真实设备”

    设备名称

    自定义,如:TestDevice

    设备标识码

    LwM2M/CoAP设备的IMEI号,请在设备上获取。

    设备注册方式

    选择“不加密”

  4. 在测试列表页面,单击“调试”进入调试页面。

  5. 选择需要下发的命令并设置命令参数,您可以选择立即发送或者缓存发送。

  6. 通过在控制台查看下发的历史命令列表,通过该功能可以详细查看命令下发任务的创建时间、平台发送命令的时间、送达的时间、发送的状态等信息,便于用户了解命令的执行状态

同时,还支持通过调用查询设备命令接口,在物联网平台查询下发命令的状态及内容信息,以了解命令的执行情况。

方式二:

  1. 访问设备接入服务,单击“立即使用”进入设备接入控制台。
  2. 单击“设备”,在设备列表中,单击具体的设备进入到设备的详情页面。
  3. 在“命令”页签,单击异步命令下发右侧的“命令下发”,在弹出的窗口中选择需要下发的命令并设置命令参数。您可以选择立即下发或者缓存下发。

    • 设备支持的命令,需要由产品模型定义后,才能在此进行命令下发操作。
    • LwM2M/CoAP设备仅支持异步命令下发 ,MQTT设备的同步命令下发请前往MQTT设备下发命令

LwM2M/CoAP协议设备命令执行状态说明

命令执行状态以及状态变化机制如下所示。

命令执行状态

说明

等待(PENDING)

  • LwM2M/CoAP设备采用缓存下发模式下发命令时,如果设备未上报数据,物联网平台会将命令进行缓存,此时任务状态为“等待”状态。
  • LwM2M/CoAP设备采用立即下发模式下发命令时,无此状态。

超期(EXPIRED)

  • LwM2M/CoAP设备采用缓存下发模式下发命令时,如果在设置的超期时间内,物联网平台未将命令下发给设备,则状态变更为“超期”。超期时间会根据应用侧接口中携带的expireTime为准,如果未携带,默认24h。
  • LwM2M/CoAP设备采用立即下发模式下发命令时,无此状态。

已发送(SENT)

  • LwM2M/CoAP设备采用缓存下发模式下发命令时,设备上报数据,物联网平台会将缓存的命令发送给设备,此时状态会由“等待”变为“已发送”。
  • LWM2M/CoAP设备采用立即下发模式下发命令时,如果设备在线,状态为“已发送”。

超时(TIMEOUT)

LwM2M/CoAP设备收到命令后,物联网平台在180秒内未收到设备反馈的收到命令响应,此时状态会变为“超时”。

已送达(DELIVERED)

物联网平台收到设备反馈的已收到下发命令响应后,状态变为“已送达”。

成功(SUCCESSFUL)

如果设备在执行完命令后,会给物联网平台反馈命令执行成功的结果,将任务状态变更为“成功”。

失败(FAILED)

  • 如果设备在执行完命令后,会给物联网平台反馈命令执行失败的结果,将任务状态变更为“失败”。
  • LwM2M/CoAP设备采用立即下发模式下发命令时,如果设备离线,状态为“失败”。
分享:

    相关文档

    相关产品