阿里雲物聯網 .NET Core 客戶端 | CZGL.AliIoTClient:5. 設置設備屬性

文檔目錄:


 

在上一章,格力空調溫度 gree_temperature 設置了 讀寫 權限,由於空調的輸出溫度是能夠被設置的。
CPU 溫度是根據實際狀況進行採集,而 空調溫度 是遙控器設置的,服務器能夠或者這個溫度數據,同時也能夠設置這個數據。
讀寫權限表示服務器有權限下發指令設置設備的屬性。css

注意的是,只有 讀/讀寫 兩種狀況,沒有 寫 。html


1)容許服務器設置設備屬性node

通信就是 訂閱/推送 、數據上下傳輸,自己沒有這麼複雜,不管 是屬性、事件、服務,本質仍是 Topic。
CZGL.AliIoTClient 做了細緻的劃分(快誇筆者),裏面設置了不少參數,這樣更自由、方便。git

第3章已經說到如何打開和取消響應和其它功能,這裏就再也不解釋。typescript

如下爲初始代碼,將會在此基礎上進行說明(請修改 DeviceOptions 的信息):json

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(); 

運行程序。ui


2)下發命令

打開阿里雲物聯網控制檯,進入 在線調試 ,而後選擇前面已經建立的產品、設備。
你也能夠直接打開: https://iot.console.aliyun.com/lk/monitor/debug 進行以下設置:阿里雲

調試設備:調試真實設備
功能:    格力空調溫度(gree_temperature)
方法:    設置

而後將輸入框裏的數值改成 20.0 ,點擊 發送指令spa

{
  "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" } 

可是目前只能收到服務器下發的命令,尚未寫如何處理這些命令的方法,這須要你編寫相應的方法綁定到委託事件中。
當收到屬性消息時,會觸發這些方法。如何設置,請參考後面的章節。


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]) 


實際上,不須要作出響應。。。若是有須要的話,能夠自定義方法,在方法裏面加上響應,綁定到委託裏,自動響應。如何設置,請參考後面的章節。

相關文章
相關標籤/搜索