文档目录: <>

* 说明 <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>
 

1) 客户端连接

CZGL.AliIoTClient 中,有两个连接到阿里云物联网服务器的方法:
public CZGL.AliIoTClient.ConnectCode ConnectIoT(string[] SubTopic, [byte[] QOS
=null], [ushort keepAlivePeriod = 60]) public System.Threading.Tasks.Task<CZGL
.AliIoTClient.ConnectCode> ConnectIoTAsync(string[] topics, [byte[] QOS =
null], [ushort keepAlivePeriod =60])
参数说明及返回值:

参数名称类型说明
SubTopic string[] 要订阅的 Topic 列表,只有先订阅这个 Topic ,才会接收到服务器推送这个 Topic
QOS byte[] 每个Topic都配置一个QOS,如果为空,将会为每个Topic设置
QOS=0x00,注意QOS只有0,1,2三种,因此使用byte最合适
keepAlivePeriod ushort 存活监测周期,MQTT
通讯要求每间隔一段时间,客户端及时反馈,以此证明客户端的存活,超过这个周期,服务器会认为客户端已经掉线。
返回值 ConnectCode 是连接返回状态的代码,枚举类型,即使因为密钥错误、网络断开等造成连接失败,不会触发异常,会返回状态码
每个 Topic 都有 一个 QOS 属性,SubTopic 的 长度和 QOS 的长度应当一致,索引位置也要对应。

QOS 的含义:

* QOS = 0 ,最多一次
* QOS = 1,至少一次
* QOS = 2,只有一次
ConnectCode:

当客户端尝试与服务器建立连接,可能成功也可能失败,此时会返回具体的连接状态信息,ConnectCode 枚举如下:

枚举名称枚举值说明
conn_accepted 0x00 连接成功
conn_refused_prot_vers 0x01 协议版本
conn_refused_ident_rejected 0x02 认证被拒绝
conn_refused_server_unavailable x03 服务器403/404等
conn_refused_username_password 0x04 账号密码错误
conn_refused_not_authorized 0x05 没有授权
unknown_error 0x06 其它未知错误
示例:
var code = client.ConnectIoT(topics, null, 60); Console.WriteLine("连接状态:" +
code);

<https://gitee.com/whuanle/CZGL.AliIoTClient/wikis/2.%20IoT%20%E5%AE%A2%E6%88%B7%E7%AB%AF?sort_id=1478871#2%E6%96%AD%E5%BC%80%E8%BF%9E%E6%8E%A5>
2)断开连接
public bool ConnectIoTClose()
断开连接,会彻底释放 AliIoTClientJson 对象,而不仅仅是离线,如需重新连接,请重新 new 一个对象;

示例:
client.ConnectIoT(topics,null,60);

<https://gitee.com/whuanle/CZGL.AliIoTClient/wikis/2.%20IoT%20%E5%AE%A2%E6%88%B7%E7%AB%AF?sort_id=1478871#3-%E6%9F%A5%E7%9C%8B%E7%8A%B6%E6%80%81>
3) 查看状态

查看客户端是否与服务器保持连接:
public bool isConnected { get; }
示例:
Console.WriteLine("是否与服务器连接保持连接:" + client.isConnected);