阿里雲物聯網平臺體驗(NetGadgeteer+C#篇)

      目前對接阿里雲物聯網平臺有多種軟件和硬件,能夠有多種不一樣語言來實現對接,好比c/c++,Java,JS,Python,C#等等,不過C#版本只有PC對接雲平臺的代碼,嵌入式的目前尚未看到,因此本篇文章是基於STM32F429芯片,採用C#語言對接阿里雲物聯網平臺高級版。c++

     下面是對接阿里雲物聯網平臺的硬件,.Net Gadgeteer套件,有14個不一樣接口,能夠對接近百種模塊。 json

    咱們今天選用的是溫溼度模塊,LED模塊,USB模塊和主板模塊,以下圖所示:post

 

一、 USB Device模塊插入2#接口ui

二、 DHT11模塊插入14#接口阿里雲

三、 LED模塊插入12#接口spa

四、 以太網模塊插入4#接口code

第一步:咱們須要在阿里雲物聯網平臺建立一個產品及對應設備對象

和阿里雲官方示例不同的是,咱們額外增長了一個屬性LED,具有讀寫能力,枚舉型變量,0-表示關燈,1-表示開燈blog

 

這個定義好後,咱們建立設備,而且獲取設備的三元組。接口

第二步: 基於官方MQTT的C#代碼庫M2Mqtt.NetMf42嵌入式版本,實現Alink協議。

(1)   上傳數據到雲端

byte[] bytData = new byte[4];

float T = 0;

float H = 0;

int ret = gs.IOControl((int)(6*16+11)); //PG11

if (ret != -1)

{

    bytData[0] = (byte)(ret & 0xFF);

    bytData[1] = (byte)(ret >> 8 & 0xFF);

    bytData[2] = (byte)(ret >> 16 & 0xFF);

    bytData[3] = (byte)(ret >> 24 & 0xFF);

 

    H = Byte2Float(bytData[0], bytData[1]);

    T = Byte2Float(bytData[2], bytData[3]);

    Debug.Print("H = " + H.ToString() + " T = " + T.ToString());

 

    string payload_json = "{" +

"\"id\": " + DateTime.Now.Ticks + "," +

"\"params\":{" +

    "\"temperature\":" + T + "," +

    "\"humidity\":" + H + "," +

"}," +

"\"method\":\"thing.event.property.post\"" +

"}";

    string Data = Guid.NewGuid().ToString();

    mqttClient.Publish(post_topic, Encoding.UTF8.GetBytes(payload_json), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false);

Debug.Print(payload_json);

}

 

讀取模塊的溫度T,和溼度H,而後推送到物聯網平臺。

(2)   下發控制命令到設備

 

 

雲端單擊「發送指令」,則設備的MqttMsgPublishReceived事件會接收到以下格式的數據:

{"method":"thing.service.property.set","id":"196011725","params":{"LED":1},"version":"1.0.0"}

 

聲明LED對象後,咱們就能夠根據這個信息來開關LED燈(以下)

OutputPort led = new OutputPort((Cpu.Pin)(7*16+9),false);

 

而後在MqttMsgPublishReceived事件裏作以下處理:

string json = "";

if (e.Message.Length > 0)

{

    //{"method":"thing.service.property.set","id":"196011725","params":{"LED":1},"version":"1.0.0"}

    json = new string(System.Text.UTF8Encoding.UTF8.GetChars(e.Message));

    Debug.Print("Message:" + json);

 

    string strLED  =json.Substring(json.IndexOf("LED")+5,1);

    led.Write((strLED == "1"));

}

 

 

第三步:運行代碼

 

運行後,打開阿里雲物聯網平臺的網頁,能夠看到以下畫面:

 

下發相關的指令,也會發現LED燈亮和滅。

 

本文相關的代碼文件:yfalink.rar 

 

阿里雲物聯網平臺連接:https://dev.iot.aliyun.com/sale?source=deveco_partner_yefan

相關文章
相關標籤/搜索