阿里云物联网平台体验(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个不同接口,可以对接近百种模块。
1.png

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

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

2、 DHT11模块插入14#接口

3、 LED模块插入12#接口

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

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

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

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

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

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

    }

 

第三步:运行代码
5.png

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

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

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

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

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
9月前
|
消息中间件 安全 物联网
海量接入、毫秒响应:易易互联携手阿里云构筑高可用物联网消息中枢
面对换电生态高速发展的通信挑战,易易互联通过采用阿里云 MQTT + RocketMQ 的融合解决方案,成功构建了“海量接入、实时响应、弹性处理、安全可信”的物联网通信底座。该架构不仅显著提升了系统稳定性与可扩展性,更保障了高并发场景下的业务连续性,为实现“让换电成为营运补能第一选择”的战略目标提供了坚实的技术支撑。
442 62
|
物联网
(手把手)在华为云、阿里云搭建自己的物联网MQTT消息服务器,免费IOT平台
本文介绍如何在阿里云搭建自己的物联网MQTT消息服务器,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
3846 42
|
存储 监控 安全
工业物联网关应用:PLC数据通过智能网关上传阿里云实战
本文介绍如何使用智能网关将工厂PLC数据传输至阿里云平台,适合中小企业远程监控设备状态。硬件准备包括三菱FX3U PLC、4G智能网关和24V电源。接线步骤涵盖PLC编程口与网关连接、运行状态检测及天线电源接入。配置过程涉及通讯参数、阿里云对接和数据点映射。PLC程序关键点包括数据上传触发和温度值处理。阿里云平台操作包含实时数据查看、数据可视化和规则引擎设置。最后提供常见故障排查表和安全建议,确保系统稳定运行。
1505 1
|
物联网 数据挖掘 BI
基于阿里云物联网平台(IoT)的智能家居系统开发与部署
随着物联网技术的发展,智能家居成为提升生活品质的重要方向。阿里云物联网平台提供设备接入、数据管理及应用开发能力,支持亿级设备接入、高效数据管理和灵活应用开发,确保系统安全。本文通过实战案例展示如何基于该平台构建智能家居系统,涵盖设备接入、远程控制、场景联动与数据分析等功能,助力企业快速部署智能家居解决方案。
|
存储 边缘计算 物联网
阿里云物联网平台:推动万物互联的智能化解决方案
随着物联网技术的快速发展,阿里云物联网平台为企业提供了一体化的解决方案,包括设备接入、数据管理和智能应用等核心功能。平台支持海量设备接入、实时数据采集与存储、边缘计算,并具备大规模设备管理、高安全性和开放生态等优势。广泛应用于智能制造、智慧城市和智能家居等领域,助力企业实现数字化转型。
1812 5
|
物联网 C# C语言
物联网开发中C、C++和C#哪个更好用
在物联网(IoT)开发中,C、C++和C#各有优缺点,适用场景不同。C语言性能高、资源占用低,适合内存和计算能力有限的嵌入式系统,但开发复杂度高,易出错。C++支持面向对象编程,性能优秀,适用于复杂应用,但学习曲线陡峭,编译时间长。C#易于学习,与.NET框架结合紧密,适合快速开发Windows应用,但性能略低,平台支持有限。选择语言需根据具体项目需求、复杂性和团队技术栈综合考虑。
1049 3
|
消息中间件 存储 JavaScript
阿里云IOC物联网异步处理基础概念
该内容介绍了异步处理基础和消息队列的相关概念。首先,同步处理指任务完成后才能执行其他操作,而异步则允许任务并行执行,不阻塞程序。异步能提高系统并发性和响应性,但也增加复杂性和资源消耗。接着,提到了消息队列,包括生产者、消费者、队列、broker和topic等概念,并指出在IoT中,设备作为生产者发送消息到特定topic,消费者从队列获取数据。最后,简要介绍了AMQP协议,它是用于应用程序间消息传递的开放标准,常用于分布式系统和物联网,如RabbitMQ和Apache Qpid。课程将以Apache Qpid为例接收IoT数据。
536 6
阿里云IOC物联网异步处理基础概念
|
存储 运维 监控
阿里云物联网平台的优势
【7月更文挑战第19天】阿里云物联网平台的优势
678 1
|
Cloud Native 安全 物联网
【阿里云云原生专栏】云边端一体化:阿里云如何利用云原生技术赋能物联网
【5月更文挑战第22天】阿里云借助云原生技术赋能物联网,实现云边端一体化,提升系统弹性与敏捷性。通过容器化部署,保证高可用性与可靠性。在智能交通等领域,阿里云提供高效解决方案,实现实时数据分析与决策。代码示例展示如何使用阿里云服务处理物联网数据。同时,阿里云重视数据安全,采用加密和访问控制保障数据隐私。丰富的工具和服务支持开发者构建物联网应用,推动技术广泛应用与发展。
716 1
|
JSON API C#
C# 通过阿里云 API 实现企业工商数据查询
C# 通过阿里云 API 实现企业工商数据查询

相关产品

  • 物联网平台