阿里云物联网平台体验(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

相关文章
相关标签/搜索