阿里云物联网平台体验(NetGadgeteer+C#篇)
目前对接阿里云物联网平台有多种软件和硬件,可以有多种不同语言来实现对接,比如c/c++,Java,JS,Python,C#等等,不过C#版本只有PC对接云平台的代码,嵌入式的目前还没有看到,所以本篇文章是基于STM32F429芯片,采用C#语言对接阿里云物联网平台高级版。
下面是对接阿里云物联网平台的硬件,.Net Gadgeteer套件,有14个不同接口,可以对接近百种模块。

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

1、 USB Device模块插入2#接口
2、 DHT11模块插入14#接口
3、 LED模块插入12#接口
4、 以太网模块插入4#接口
第一步:我们需要在阿里云物联网平台创建一个产品及对应设备
和阿里云官方示例不一样的是,我们额外增加了一个属性LED,具备读写能力,枚举型变量,0-表示关灯,1-表示开灯

这个定义好后,我们创建设备,并且获取设备的三元组。
第二步: 基于官方MQTT的C#代码库M2Mqtt.NetMf42嵌入式版本,实现Alink协议。
(1) 上传数据到云端
byte[] bytData = new byte[];
float T = ;
float H = ;
int ret = gs.IOControl((int)(*+)); //PG11
if (ret != -)
{
bytData[] = (byte)(ret & 0xFF);
bytData[] = (byte)(ret >> & 0xFF);
bytData[] = (byte)(ret >> & 0xFF);
bytData[] = (byte)(ret >> & 0xFF);
H = Byte2Float(bytData[], bytData[]);
T = Byte2Float(bytData[], bytData[]);
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":"","params":{"LED":},"version":"1.0.0"}
声明LED对象后,我们就可以根据这个信息来开关LED灯(如下)
OutputPort led = new OutputPort((Cpu.Pin)(*+),false);
然后在MqttMsgPublishReceived事件里做如下处理:
string json = "";
if (e.Message.Length > )
{
//{"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")+,);
led.Write((strLED == ""));
}
第三步:运行代码

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

下发相关的指令,也会发现LED灯亮和灭。
本文相关的代码文件:yfalink.rar
阿里云物联网平台链接:https://dev.iot.aliyun.com/sale?source=deveco_partner_yefan
阿里云物联网平台体验(NetGadgeteer+C#篇)的更多相关文章
- 阿里云物联网平台体验(树莓派+Python篇)
阿里云物联网平台体验(树莓派+Python篇) 虽然对阿里云物联网平台比较熟悉了,从一开始就有幸参与了飞凤平台(Link Develop 一站式开发平台的前身)的一些偏硬件接入的工作.但是同时也见证了 ...
- 阿里云物联网平台体验(树莓派+Nodejs篇)
我们在<阿里云物联网平台体验(树莓派+python篇)>里,写了通过Python语言开发云到端的物联网程序,本篇文章将介绍通过nodejs来实现类似功能. 同样在阿里云官方文档里已经有了一 ...
- 阿里云物联网平台: Android 连接阿里云物联网平台
说明 这节是是为下一节做铺垫的 只要是按照我提供的学习路线一节一节的认认真真学过来的,这节就十分的简单 有了前两节的基础,这节呢咱让Android 连接阿里云物联网平台 使用这节的代码 https: ...
- ESA2GJK1DH1K升级篇: 阿里云物联网平台 OTA: 关于阿里云物联网平台 OTA 的升级流程
前言 鉴于有些用户直接想使用现成的物联网平台实现 OTA 远程升级 我就写一写这系列的文章 注意:首先大家必须把我自建服务器是如何实现的看明白! 我看了下阿里云提供的,实际上流程和咱自建实现的差别不大 ...
- 图解连接阿里云(一)创建阿里云物联网平台产品和设备,使用MQTT.fx快速体验
1. 打开 https://www.aliyun.com/ 注册账号 2.注册账号登录后点击控制台 3. 在下图1处输入物联网平台,会弹出2处所示物联网平台的入口,点击红色箭头所示处,进入物联网平 ...
- ESA2GJK1DH1K基础篇: 阿里云物联网平台: 测试MQTT连接阿里云物联网平台
前言 这节看一下在阿里云上实现MQTT通信是个怎样的流程 看了很多网上的教程,感觉讲的迷迷糊糊.... 其实感觉他们是对MQTT不够透彻,所以写的文章就是个比着葫芦画瓢的感觉 在我面前这东西就是玩具. ...
- ESA2GJK1DH1K基础篇: 阿里云物联网平台: 云平台显示单片机采集的温湿度数据,控制设备继电器(基于GPRS模块,AT指令TCP_MQTT通信)
实现的功能 上一节是使用的Wi-Fi模块连接的阿里云平台,这节呢咱用GPRS连接. 阿里云的设备配置还是按照上一节的,有个温度,有个湿度. 测试 一,打开单片机程序 二,根据自己的修改,然后下载进去单 ...
- ESA2GJK1DH1K基础篇: 阿里云物联网平台: 测试云平台显示MQTT客户端发过来的消息
现在这里空空如也 咱自定义的也没有数据 现在就是传上来温度数据,让这里显示温度数据 你发布的主题 /sys/a1m7er1nJbQ/Mqtt/thing/event/property/post 发布 ...
- ESA2GJK1DH1K基础篇: 阿里云物联网平台: 测试MQTT客户端接收云平台的数据
前言 有时候想想可能直接连接现成的感觉比较方便吧! 这种东西考验的是你底子是否够好,是否有很强的学习能力 因为咱就是看文档,理解文档.用文档. 测这节会感觉:这是啥呀...下一节更精彩,但是必须看这节 ...
随机推荐
- python自带线程池
1. 注意: 导包是: from multiprocessing.pool import ThreadPool #线程池不在thrading中 2. 代码: from mutiprocessing.p ...
- FastAdmin 基本知识流程一栏
fastadmin进阶 安装:出现登陆页无法显示:可能是php的gd2扩展未开启 FastAdmin 在 Nginx 中的配置 用的是AdminLTE后台模板require.js.less.Bow ...
- tp5参数绑定
关闭路由后的普通模式任然可以通过操作方法的参数绑定.控制器和空操作等特性实现url地址的简化 参数绑定(默认是按名称成对解析,): namespace app\index\Controller; cl ...
- axios 进行类库封装
,,,,,, ,) { // 与后台约定的成功状态码 callback && callback(result) } else { // 错误处理,优先以自定义的的handle进行处理, ...
- HDU6397
HDU6397用小于n的m个数组成k,求方案数mod 998244353如果没有n的限制,直接用隔板法求就可以因为m个数中可以为0,所以不妨先都放上一个1,转化成不能为0的m个数来凑k+m,即C(k+ ...
- 现代C++之理解模板类型推断(template type deduction)
理解模板类型推断(template type deduction) 我们往往不能理解一个复杂的系统是如何运作的,但是却知道这个系统能够做什么.C++的模板类型推断便是如此,把参数传递到模板函数往往能让 ...
- Java简介及开发环境配置
Java简介 Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.(注:Sun公司已于2009年04月20日被Oracle公司收购) 目前, ...
- js 解析json
一 ,eval var dataObj=eval("("+data+")"); 1,这种形式将使得性能显著降低,因为它必须运行编译器 2,eval函数还减弱了你 ...
- Python基础知识—sys模块初探
有关Python解释器的信息 与所有其他模块一样,必须使用import语句导入sys模块,即import sys. sys模块提供有关Python解释器的常量,函数和方法.dir(系统)给出了可用常量 ...
- Tomcat安装与环境变量的配置
Tomacat的下载 去Tomcat官网下载,我使用的是apache-tomcat-7.0.78的版本. 安装 下载完成之后,我们解压缩到相应的目录.这里我解压缩到d盘下面 1.然后去配置系统的环 ...