阿里云物联网平台体验(NetGadgeteer+C#篇)

简介: 目前对接阿里云物联网平台有多种软件和硬件,可以有多种不同语言来实现对接,比如c/c++,Java,JS,Python,C#等等,不过C#版本只有PC对接云平台的代码,嵌入式的目前还没有看到,所以本篇文章是基于STM32F429芯片,采用C#语言对接阿里云物联网平台高级版。

目前对接阿里云物联网平台有多种软件和硬件,可以有多种不同语言来实现对接,比如c/c++,Java,JS,Python,C#等等,不过C#版本只有PC对接云平台的代码,嵌入式的目前还没有看到,所以本篇文章是基于STM32F429芯片,采用C#语言对接阿里云物联网平台高级版。

下面是对接阿里云物联网平台的硬件,.Net Gadgeteer套件,有14个不同接口,可以对接近百种模块。 

f2ca02060cff22137fa19bb040679af7c51b542b 

我们今天选用的是温湿度模块,LED模块,USB模块和主板模块,如下图所示:

21df8fbfa58cb18a7fed7d1b57dba3ce9f1a780c

1、 USB Device模块插入2#接口

2、 DHT11模块插入14#接口

3、 LED模块插入12#接口

4、 以太网模块插入4#接口

第一步:我们需要在阿里云物联网平台创建一个产品及对应设备

和阿里云官方示例不一样的是,我们额外增加了一个属性LED,具备读写能力,枚举型变量,0-表示关灯,1-表示开灯

9ff0273b9f4e6dbe2f869286c5ec28ecbb0cc389

这个定义好后,我们创建设备,并且获取设备的三元组。

第二步: 基于官方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)   下发控制命令到设备

832ab4b9fc76c3a19ce10c78962e4d5891b7e382

云端单击“发送指令”,则设备的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"));

}

第三步:运行代码

ba26a9cfb5ee133f187bd51c276245c865aa1ebb

运行后,打开阿里云物联网平台的网页,可以看到如下画面:

317cb2daf78ca00c125bc45a92d209cf0ba2cb4b

下发相关的指令,也会发现LED灯亮和灭。

 

本文相关的代码文件:yfalink.rar

 

 

阿里云物联网平台链接:https://dev.iot.aliyun.com/sale?source=deveco_partner_yefan


相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
物联网
通过微信小程序体验阿里云IoT物联网平台
通过微信小程序体验阿里云IoT物联网平台
8452 0
|
监控 小程序 物联网
阿里云物联网平台专用工具详细说明
阿里云物联网平台专用工具基本涵盖了阿里云物联网平台提供你主要管理功能,可以方便创建产品、设备、物模型,查看设备实时属性,事件,发送服务和查看服务日志等等。
652 0
阿里云物联网平台专用工具详细说明
|
11月前
《阿里云产品手册2022-2023 版》——物联网平台
《阿里云产品手册2022-2023 版》——物联网平台
447 1
|
JSON 物联网 5G
物联网平台的使用心得
物联网平台的使用心得
|
监控 API 数据安全/隐私保护
阿里云物联网平台入门体验
阿里云物联网平台是一个集成了设备管理、数据安全通信和消息订阅等能力的一体化平台。向下支持连接海量设备,采集设备数据上云;向上提供云端API,服务端可通过调用云端API将指令下发至设备端,实现远程控制。此篇文章按照官方入门实例操作下
388 0
阿里云物联网平台入门体验
|
网络协议 物联网 数据安全/隐私保护
快速体验阿里云物联网平台 | 学习笔记
快速学习 快速体验阿里云物联网平台
219 0
快速体验阿里云物联网平台 | 学习笔记
|
存储 消息中间件 运维
|
传感器 人工智能 物联网
阿里云物联网平台场景体验
阿里云物联网平台场景体验
508 0
阿里云物联网平台场景体验
|
存储 负载均衡 数据可视化
物联网平台场景体验小记
阿里云物联网平台是一个集成了设备管理、数据安全通信和消息订阅等能力的一体化平台。向下支持连接海量设备,采集设备数据上云;向上提供云端API,服务端可通过调用云端API将指令下发至设备端,实现远程控制。
902 0
物联网平台场景体验小记
|
传感器 开发框架 JavaScript
HaaS EDU K1全流程体验阿里云物联网平台开发
最近入手了新玩具 HaaS EDU K1,它丰富的传感器支持、支持python和js语言的轻应用开发非常吸引我,得益于HaaS云端一体开发框架,我这种非嵌入式开发出身的小白也能够体验物联网平台开发的魅力。今天结合官方案例体验阿里云物联网平台开发。
917 0
HaaS EDU K1全流程体验阿里云物联网平台开发

相关产品

  • 物联网平台