文档目录: <>

* 说明 <https://www.cnblogs.com/whuanle/p/10994645.html>
* 1. 连接阿里云物联网 <https://www.cnblogs.com/whuanle/p/10994663.html>
* 2. IoT 客户端 <https://www.cnblogs.com/whuanle/p/10994673.html>
* 3. 订阅Topic与响应Topic <https://www.cnblogs.com/whuanle/p/10994686.html>
* 4. 设备上报属性 <https://www.cnblogs.com/whuanle/p/10994694.html>
* 4.1 上报位置信息 <https://www.cnblogs.com/whuanle/p/10994696.html>
* 5. 设置设备属性 <https://www.cnblogs.com/whuanle/p/10994701.html>
* 6. 设备事件上报 <https://www.cnblogs.com/whuanle/p/10994707.html>
* 7. 服务调用 <https://www.cnblogs.com/whuanle/p/10994708.html>
* 8. 委托事件 <https://www.cnblogs.com/whuanle/p/10994713.html>
* 9. 自定义委托事件方法
<https://www.cnblogs.com/whuanle/p/10994720.html>
 

在上一章,格力空调温度 gree_temperature 设置了 读写 权限,因为空调的输出温度是可以被设置的。
CPU 温度是根据实际情况进行采集,而 空调温度 是遥控器设置的,服务器可以或者这个温度数据,同时也可以设置这个数据。
读写权限表示服务器有权限下发指令设置设备的属性。

注意的是,只有 读/读写 两种情况,没有 写 。

1)允许服务器设置设备属性

通讯就是 订阅/推送 、数据上下传输,本身没有这么复杂,无论 是属性、事件、服务,本质还是 Topic。
CZGL.AliIoTClient 作了细致的划分(快夸笔者),里面设置了很多参数,这样更自由、方便。

第3章已经说到如何打开和取消响应和其它功能,这里就不再解释。

以下为初始代码,将会在此基础上进行说明(请修改 DeviceOptions 的信息):
static AliIoTClientJson client; static void Main(string[] args) { // 创建客户端
client =new AliIoTClientJson(new DeviceOptions { ProductKey = "a1A6VVt72pD",
DeviceName ="json", DeviceSecret = "7QrjTptQYCdepjbQvSoqkuygic2051zM", RegionId
="cn-shanghai" }); client.OpenPropertyDownPost(); // 设置要订阅的Topic、运行接收内容的Topic
string[] topics =new string[] { client.CombineHeadTopic("get") }; // 使用默认事件
client.UseDefaultEventHandler();// 连接服务器 client.ConnectIoT(topics, null, 60);
Console.ReadKey(); }
在 Console.ReadKey() 前加一行代码,运行服务器下发属性设置命令:
client.OpenPropertyDownPost();
运行程序。


<https://gitee.com/whuanle/CZGL.AliIoTClient/wikis/5.%20%E8%AE%BE%E7%BD%AE%E8%AE%BE%E5%A4%87%E5%B1%9E%E6%80%A7?sort_id=1479195#2%E4%B8%8B%E5%8F%91%E5%91%BD%E4%BB%A4>
2)下发命令

打开阿里云物联网控制台,进入 在线调试 ,然后选择前面已经创建的产品、设备。
你也可以直接打开: https://iot.console.aliyun.com/lk/monitor/debug
<https://iot.console.aliyun.com/lk/monitor/debug> 进行如下设置:
调试设备:调试真实设备 功能: 格力空调温度(gree_temperature) 方法: 设置
然后将输入框里的数值改为 20.0 ,点击 发送指令
{ "gree_temperature": 20 }
然后你可以看到控制台程序收到了指令:
get topic message,Date: 16:52:55 topic:
/sys/a1A6VVt72pD/json/thing/service/property/set get messgae : {"method":
"thing.service.property.set","id":"666237842","params":{"gree_temperature":20},
"version":"1.0.0"}
由于使用 Alink json,所以服务器下发的指令实际上是这样的:
{"method":"thing.service.property.set","id":"666237842","params":{
"gree_temperature":20},"version":"1.0.0"}
那为什么会输出其它东西呢?这是因为 CZGL.AliIoTClient 种设置了多个默认的事件方法,
它会输出收到的消息内容(message)等信息,你可以自定义方法来处理。

将 字符串格式化后:
{ "method": "thing.service.property.set", "id": "666237842", "params": {
"gree_temperature":20 }, "version": "1.0.0" }
但是目前只能收到服务器下发的命令,还没有写如何处理这些命令的方法,这需要你编写相应的方法绑定到委托事件中。
当收到属性消息时,会触发这些方法。如何设置,请参考后面的章节。


<https://gitee.com/whuanle/CZGL.AliIoTClient/wikis/5.%20%E8%AE%BE%E7%BD%AE%E8%AE%BE%E5%A4%87%E5%B1%9E%E6%80%A7?sort_id=1479195#3%E5%81%9A%E5%87%BA%E5%93%8D%E5%BA%94>
3)做出响应

当你收到服务器下发的指令时,你可以对这条 Topic 做出响应。
// 返回消息ID public int Thing_Property_set(CZGL.AliIoTClient.PropertyDownModel
model, [bool isToLower = True]) public int Thing_Property_set(
CZGL.AliIoTClient.PropertyDownModel model, [bool isToLower = True],
[System.Text.Encoding encoding =null]) public int Thing_Property_set<TModel>(
TModel model, [bool isToLower = True])

实际上,不需要做出响应。。。如果有需要的话,可以自定义方法,在方法里面加上响应,绑定到委托里,自动响应。
如何设置,请参考后面的章节。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信