【实践】工业用变频器上云 【2】 将硬件设备接入阿里云,并且能正常通讯

简介: 本系列介绍,如何将一台台达变频器接入阿里云物联网,并且实现云端操控的实践案例。本章介绍如何将我们的硬件设备顺利的接入阿里云物联网平台,并且正常的传输数据

将设备接入阿里云并且能显示数据

图片1.jpg

协议

首先我们需要理解阿里云IOT的 ALINK JSON协议,其实这个协议很简单

{
    "id":1,
    "version":"1.0",
    "params":
    {
        "Frequency":5000,
        "direction":0,
        "onoff":1
    },
    "method":"thing.event.property.post"
}

以上就是标准的Alink Json协议的范本,params的标签下面就是我们之前构建的设备模型的参数,只要将数据匹配进去云端就可以正确解析我们设备构建的数据了

我们来构建硬件程序(标准的arduino ESP8266 C++源码)
用到如下库:
https://github.com/MINI-Qiang/aliIotLink 【阿里云IOT链接】
https://github.com/bblanchon/ArduinoJson/tree/5.x 【arduinoJSON第5版,如果使用6版本注意自行修改】

#include <aliIotLink.h>
#include <ESP8266WiFi.h>
#include <ArduinoJson.h>

const char* ssid = "OCROBOT";
const char* password = "12345678";

static const char ProductKey[] PROGMEM = "a15mLG9bUxt";
static const char DeviceName[] PROGMEM = "uJCypeOEunEP4R5MJEar";
static const char DeviceSecret[] PROGMEM = "YXlW9wW2EYtXweZfwCZcUFbYhnDgnVr7";

static const char postTopic[]  PROGMEM = "/sys/a15mLG9bUxt/uJCypeOEunEP4R5MJEar/thing/event/property/post";   //上报消息topic
static const char setTopic[]  PROGMEM = "/sys/a15mLG9bUxt/uJCypeOEunEP4R5MJEar/thing/service/property/set";    //服务器消息topic

WiFiClient espClient;   //实例化 wifi网络
PubSubClient client(espClient); //将网络传入MQTT
AliIotLink aliLink(client);  //将mqtt传入服务


void working(uint16_t delayTime, float temps);

//回调函数(本项不用)
//void Callbacks(char* topic, byte* payload, unsigned int length)
//{
//}

void setup()
{
  Serial.begin(115200);

  //初始化WIFI
  WiFi.mode(WIFI_STA); // 接入端模式
  WiFi.begin(ssid, password);  //初始化并且链接wifi
  while (WiFi.status() != WL_CONNECTED) 
  {
    delay(500);
    Serial.print(".");
  }

  //初始化阿里云
  aliLink.subTopic(FPSTR(setTopic));   //订阅服务器下行消息
  //aliLink.setCallback(Callbacks);   //注册下发消息回调函数(本项目不使用)
  aliLink.begin(FPSTR(DeviceName), FPSTR(ProductKey), FPSTR(DeviceSecret)); //完成初始化配置 三元素(DeviceName,ProductKey,DeviceSecret)
}
void loop()
{
  //阿里云链接维持
  aliLink.loop();
  if (aliLink.state() != 0) //错误消息打印
  {
    Serial.println(aliLink.state());  //返回平台链接消息代码
  }
  working(10000); //上报业务,每10秒(10000ms)上报一次
}

// 构建Alink协议
String updateAlinkJson(uint16_t _id, JsonObject &_AliIotJson)
{
  StaticJsonBuffer<256> jsonBuffer;
  JsonObject& AlinkJson = jsonBuffer.createObject();
  AlinkJson["id"] = _id;
  AlinkJson["version"] = "1.0";
  AlinkJson["params"] = _AliIotJson;
  AlinkJson["method"] = "thing.event.property.post";
  String JsonStr;
  AlinkJson.printTo(JsonStr);
  return JsonStr;
}

//定时上报数据与状态
void working(uint16_t delayTime)
{
  uint32_t thisTime = millis();
  if ((thisTime % delayTime) == 0)
  {
    StaticJsonBuffer<130> jsonBuffer; //定义json缓冲区
    JsonObject& paramsJson = jsonBuffer.createObject(); //初始化对象
    paramsJson["Frequency"] = 4999; //将频率数据填为5000
    //paramsJson["direction"] = false; //
    //paramsJson["onoff"] = true; //
    String data = updateAlinkJson(random(1, 100), paramsJson); //提供一个随机ID,并且将负载消息加入
    aliLink.publish(postTopic, data.c_str());
    Serial.println(data); //串口同步输出消息
  }
}

代码结构非常简单,填写自己的wifi帐号密码,然后按照之前我们创建设备的时候提供的链接参数进行修改

然后使用ArduinoJSON支持库构建一个阿里云ALINKJSON的标准框架提交数据即可完成数据数据上行

1.png

我们确认下,新设备是没有任何数据的

程序上传

2.png

打开IDE 上传我们的程序到控制器,注意,上传的时候不能堆叠485模块,因为上传程序也会使用串口,如果堆叠会造成信道冲突致使失败

注意确认选择板卡 速率和端口

3.png

然后点击上传,上传完成后,硬件会自动连接WIFI,然后开始向阿里云发送数据

4.png

从云端的设备运行状态就可以看出来,设备上报的数据已经在了。而且设备本身的状态也变成了在线,至此,我们的硬件与阿里云IOT的链接就完成了

内容总结:本章内容需仔细阅读源码,理解如何通过json和阿里云进行上报数据的

系列链接

【实践】工业用变频器上云 【1】 硬件介绍 与阿里云IOT设备创建

相关文章
|
消息中间件 安全 Java
Kafka消息发送的三种模式
消息队列Kafka版是阿里云提供的分布式、高吞吐、可扩展的消息队列服务。消息队列Kafka版广泛用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等大数据领域,已成为大数据生态中不可或缺的部分。目前发送端支持三种消息发送模式:发后即忘(fire-and-forget)、同步(sync)和异步(async)。
5817 0
|
11月前
|
人工智能 缓存 前端开发
《从0到1搭建客户画像系统:AI工具矩阵如何解决开发困局》
本文记录了为美妆零售企业搭建客户画像系统时,通过Cursor、通义灵码、豆包、DeepSeek组成的AI工具矩阵破解开发困局的全过程。项目初期面临业务需求模糊、6类异构数据源整合难、团队无同类经验的三重困境,传统开发需45天。通过为AI工具划定清晰分工—Cursor主攻前后端代码优化,通义灵码负责数据建模与标签逻辑,豆包拆解需求与合规校验,DeepSeek优化架构与性能,最终28天完成系统开发,效率提升38%。系统上线后数据准确率达99.8%,自定义标签12小时内上线,新品转化率提升25%,还沉淀了AI协作SOP与技术手册。
415 7
|
8月前
|
数据采集 搜索推荐
《从数据到转化:游戏地域偏好驱动的精准推送指南》
本文聚焦游戏行业地域化精准推送的核心痛点,提出基于玩家地域偏好的差异化推送体系构建思路。文章从无干扰数据采集与伪偏好筛滤入手,通过三维立体数据模型获取真实需求,再从行为、审美、需求、付费四个维度拆解地域偏好,形成可量化标签。进而搭建“偏好-内容-场景-时段”动态联动机制,定制适配不同地区的推送内容与策略,并依托数据和玩家双轮反馈实现闭环迭代,同时规避过度标签化、静态思维等认知误区。这套方法打破“一刀切”运营模式,助力游戏实现全域用户的长效激活与留存。
412 1
|
11月前
|
SQL 安全 PHP
SQL注入-下篇
本文介绍了HTTP注入中的Referer和Cookies注入原理与实操步骤,演示了通过SQL注入获取数据库信息及webShell的方法,并涵盖pikachu靶场搭建、DNSLog盲注等内容,帮助理解常见Web安全漏洞及其利用方式。
777 0
SQL注入-下篇
|
运维 安全 关系型数据库
Websoft9 运维面板,全网真正的一键部署应用
Websoft9运维面板实现应用真·一键部署,通过智能环境适配、安全架构与容器化技术,将传统数小时部署缩短至分钟级,显著提升效率与安全性。
459 5
|
Linux
【Linux命令200例】cat命令的妙用和实战技巧
cat命令是一个常用的`Linux`命令,用于连接文件并打印到标准输出。`cat`命令可以同时处理多个文件,并且可以将内容追加到指定文件中。
883 0
【Linux命令200例】cat命令的妙用和实战技巧
|
传感器 存储 Java
一起玩转树莓派(17)——BMP180数字压力传感器应用
BMP180是一款高级的温度气压传感器,通过测量的气压值也可以计算出当前海拔高度。其压力测量范围为300-1100hPa,对应的海拔高度为正9000m-负500m。工作电压在1.8V到3.6V之间。体积小,精度高,采用I2C接口,使用非常方便。BMP180传感器在GPS导航,天气检测,海拔测量和垂直方向速度检测等方面有广泛的应用。本实验,我们尝试使用树莓派的I2C接口来读取BMP180的温度和气压值,并进行海拔高度的计算。
18691 0
免费顺丰快递单号查询电子面单api接口对接
顺丰速运快递查询接口API和电子面单接口怎么对接?除了通过顺丰自己的接口对接外,用的最多的就是第三方通过快递鸟对接了,通过顺丰单号和手机号后四位查询轨迹信息,如果是通过快递鸟下单获得的顺丰单号,可通过单号直接查询,具体下载快递鸟接口技术文档查看接口说明。
9638 0
|
存储 算法 JavaScript
IT基础知识入门:为IT小白打造的知识宝典
IT基础知识入门:为IT小白打造的知识宝典
|
缓存 算法 持续交付
【Conan 入门教程】总结 Conan 中的环境变量,设置主目录,配置文件等
【Conan 入门教程】总结 Conan 中的环境变量,设置主目录,配置文件等
1743 1

热门文章

最新文章