目前对接阿里云物联网平台有多种软件和硬件,可以有多种不同语言来实现对接,比如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#篇)的更多相关文章

  1. 阿里云物联网平台体验(树莓派+Python篇)

    阿里云物联网平台体验(树莓派+Python篇) 虽然对阿里云物联网平台比较熟悉了,从一开始就有幸参与了飞凤平台(Link Develop 一站式开发平台的前身)的一些偏硬件接入的工作.但是同时也见证了 ...

  2. 阿里云物联网平台体验(树莓派+Nodejs篇)

    我们在<阿里云物联网平台体验(树莓派+python篇)>里,写了通过Python语言开发云到端的物联网程序,本篇文章将介绍通过nodejs来实现类似功能. 同样在阿里云官方文档里已经有了一 ...

  3. 阿里云物联网平台: Android 连接阿里云物联网平台

    说明 这节是是为下一节做铺垫的 只要是按照我提供的学习路线一节一节的认认真真学过来的,这节就十分的简单 有了前两节的基础,这节呢咱让Android 连接阿里云物联网平台 使用这节的代码  https: ...

  4. ESA2GJK1DH1K升级篇: 阿里云物联网平台 OTA: 关于阿里云物联网平台 OTA 的升级流程

    前言 鉴于有些用户直接想使用现成的物联网平台实现 OTA 远程升级 我就写一写这系列的文章 注意:首先大家必须把我自建服务器是如何实现的看明白! 我看了下阿里云提供的,实际上流程和咱自建实现的差别不大 ...

  5. 图解连接阿里云(一)创建阿里云物联网平台产品和设备,使用MQTT.fx快速体验

    1.  打开 https://www.aliyun.com/  注册账号 2.注册账号登录后点击控制台 3. 在下图1处输入物联网平台,会弹出2处所示物联网平台的入口,点击红色箭头所示处,进入物联网平 ...

  6. ESA2GJK1DH1K基础篇: 阿里云物联网平台: 测试MQTT连接阿里云物联网平台

    前言 这节看一下在阿里云上实现MQTT通信是个怎样的流程 看了很多网上的教程,感觉讲的迷迷糊糊.... 其实感觉他们是对MQTT不够透彻,所以写的文章就是个比着葫芦画瓢的感觉 在我面前这东西就是玩具. ...

  7. ESA2GJK1DH1K基础篇: 阿里云物联网平台: 云平台显示单片机采集的温湿度数据,控制设备继电器(基于GPRS模块,AT指令TCP_MQTT通信)

    实现的功能 上一节是使用的Wi-Fi模块连接的阿里云平台,这节呢咱用GPRS连接. 阿里云的设备配置还是按照上一节的,有个温度,有个湿度. 测试 一,打开单片机程序 二,根据自己的修改,然后下载进去单 ...

  8. ESA2GJK1DH1K基础篇: 阿里云物联网平台: 测试云平台显示MQTT客户端发过来的消息

    现在这里空空如也 咱自定义的也没有数据 现在就是传上来温度数据,让这里显示温度数据 你发布的主题  /sys/a1m7er1nJbQ/Mqtt/thing/event/property/post 发布 ...

  9. ESA2GJK1DH1K基础篇: 阿里云物联网平台: 测试MQTT客户端接收云平台的数据

    前言 有时候想想可能直接连接现成的感觉比较方便吧! 这种东西考验的是你底子是否够好,是否有很强的学习能力 因为咱就是看文档,理解文档.用文档. 测这节会感觉:这是啥呀...下一节更精彩,但是必须看这节 ...

随机推荐

  1. day70 cookie & session 前后端交互分页显示

    本文转载自qimi博客,cnblog.liwenzhou.com 概要: 我们的cookie是保存在浏览器中的键值对 为什么要有cookie? 我们在访问浏览器的时候,千万个人访问同一个页面,我们只要 ...

  2. jenkins创建svn项目自动部署

    Exec command ; cd /home/zhxjdk18/server/jenkins_project/owgd_site/admin; rm -rf * ; source .bashrc ; ...

  3. linux文件打包并发送到其他服务器

    scp /data/backup/mongodump/mongodb.$DATE.tar root@192.168.1.70:/home/iscsi/mongodb/

  4. 【JavaScript】快速入门

    摘抄地址快速入门 No1: JavaScript严格区分大小写 No2: JavaScript不区分整数和浮点数,统一用Number表示 NaN表示Not a Number,当无法计算结果时用NaN表 ...

  5. HDU 3966 Aragorn's Story(模板题)【树链剖分】+【线段树】

    <题目链接> 题目大意: 给定一颗带点权的树,进行两种操作,一是给定树上一段路径,对其上每个点的点权增加或者减少一个数,二是对某个编号点的点权进行查询. 解题分析: 树链剖分的模板题,还不 ...

  6. Person Re-ID行人重试别数据集

    1. 杜克大学数据(DukeMTMC-reID) DukeMTMC 数据集是一个大规模标记的多目标多摄像机行人跟踪数据集.它提供了一个由 8 个同步摄像机记录的新型大型高清视频数据集,具有 7,000 ...

  7. Ajax技术使用(一)

    Ajax技术使用 目录 AJAX介绍 XMLHttpRequest 请求和响应 onreadystatechange 事件 AJAX介绍 什么是 AJAX AJAX = 异步 JavaScript 和 ...

  8. 002.LVS管理工具的安装与使用

    一 安装IPVS 可通过源码安装或yum安装,源码包如下: http://www.linuxvirtualserver.org/software/ipvs.html [root@lvsmaster ~ ...

  9. git从其他分支提取文件merge到当前分支

    git checkout A -- [a.go b.go]将A分支中的a.go, b.go两文件合并到当前分支注意:会将当前分支的对应文件强行覆盖

  10. 后台执行Bitmap加载

    如果加载图片时,使用的图片数据源不是来自于内存,而是来自硬盘或网络时,一般不会再UI线程执行图片加载操作. 图片的加载速度取决于很多方面(往往具有不可预测性),比如:硬盘或者网络的读写速度.图片大小. ...