阿里云 Nodejs SDK——设备影子

什么是设备影子?

物联网平台提供设备影子功能,用于缓存设备状态。设备在线时,可以直接获取云端指令;设备离线后,再次上线可以主动拉取云端指令。
设备影子是一个 JSON 文档,用于存储设备上报状态、应用程序期望状态信息。
每个设备有且只有一个设备影子,设备可以通过MQTT获取和设置设备影子来同步状态,该同步可以是影子同步给设备,也可以是设备同步给影子。

应用场景

  • 1、网络不稳定,设备频繁上下线
    使用设备影子机制存储设备最新状态,一旦设备状态产生变化,设备会将状态同步到设备影子。应用程序在请求设备当前状态时,只需要获取影子中的状态即可,不需要关心设备是否在线
  • 2、场景2:多程序同时请求获取设备状态
    使用设备影子机制,设备只需要主动同步状态给设备影子一次,多个应用程序请求设备影子获取设备状态,即可获取设备最新状态,做到应用程序和设备的解耦
  • 3、场景3:设备掉线
    • 设备网络不稳定,导致设备频繁上下线,应用程序发送控制指令给设备时,设备掉线,指令无法下达到设备。
    • 设备真实掉线,指令发送失败。设备再上线时,设备影子功能通过指令加时间戳的模式,保证设备不会执行过期指令。

云端获取期望属性值

云端获取设备影子需要使用云端开发的SDK,这里我们使用的是python SDK中的QueryDeviceDesiredProperty,其中set_Identifiers传入的是一个数组,由需要查看的属性的标识符组成。

#!/usr/bin/env python
#coding=utf-8

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkiot.request.v20180120.QueryDeviceDesiredPropertyRequest import QueryDeviceDesiredPropertyRequest

client = AcsClient('*************', '*************R', 'cn-shanghai')

request = QueryDeviceDesiredPropertyRequest()
request.set_accept_format('json')

# request.set_IotId("IotId")
request.set_DeviceName("*************")
request.set_ProductKey("*************")
request.set_Identifiers(["deviceswitch",])

response = client.do_action_with_exception(request)
# python2:  print(response) 
print(response)

在这里插入图片描述
Version:4代表了当前设备影子的版本经过了几次更新或者上报
新建设备的最新属性值和期望属性值都为null,期望属性值版本为0

云端期望属性值的设置

在进行期望属性值设置之前,首先要通过期望属性值的查询,获取到当前设备影子的版本号,在设置属性值的参数中需要填写。

#!/usr/bin/env python
#coding=utf-8

from aliyunsdkcore.client import AcsClient
from
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值