【实践】工业用变频器上云 【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设备创建

相关文章
|
1月前
|
物联网 5G 智能硬件
物联网卡:物联网卡不支持语音通话,是如何实现设备间的数据传输和通信的?
物联网卡(IoT SIM卡)通常被设计用于支持物联网(IoT)设备之间的数据传输,而不直接支持语音通话功能。这是因为物联网设备主要关注的是数据的收集、传输和处理,而不是语音通信。为了实现设备间的数据传输和通信,物联网卡及其背后的技术采用了多种方法,主要包括但不限于以下几种方式:
物联网卡:物联网卡不支持语音通话,是如何实现设备间的数据传输和通信的?
|
1月前
|
物联网 智能硬件
物联网卡:当物联网设备用卡使用在非物联网设备上会被管控吗
当设备物联网卡被检测到在非物联网设备上使用时,可能会遇到一系列的反应或后果,这主要取决于运营商的政策和物联网卡的设计目的。物联网卡通常是为非物联网设备(如智能家居设备、智能城市基础设施、车联网设备等)设计的,其流量套餐、网络连接速度、服务协议以及费用结构都与普通SIM卡有所不同。以下是一些可能发生的情况:
|
5月前
|
数据采集 边缘计算 UED
必知的技术知识:iNeuOS工业互联平台,机床&PLC硬件网关与平台无缝对接,进行数据交互
必知的技术知识:iNeuOS工业互联平台,机床&PLC硬件网关与平台无缝对接,进行数据交互
36 0
|
6月前
|
边缘计算 运维 5G
【专栏】IT 技术百科:5G 承载网是连接5G无线接入网与核心网的关键基础设施,负责高效、可靠的数据传输。
【4月更文挑战第28天】5G 承载网是连接5G无线接入网与核心网的关键基础设施,负责高效、可靠的数据传输。它保障通信质量,支持多样业务,并驱动技术创新。关键技术包括FlexE、网络切片、光传输和智能管控。面对高速率、低时延需求及网络复杂性挑战,5G承载网需持续创新并优化规划。未来,它将趋向智能化、融合发展及绿色节能。作为5G性能的核心,5G承载网将伴随5G技术的普及,持续为数字生活创造更多可能性。
183 0
|
6月前
|
物联网 网络架构 智能硬件
智能家电设备连接硬件准备
智能家电设备连接硬件准备
47 1
|
安全 物联网 数据安全/隐私保护
这款安全芯片,将重新定义物联网设备上云
在9月9日,英飞凌联合阿里云举行线上发布会,面向中国市场推出基于硬件的ID²安全芯片OPTIGA™ Trust M2 ID2,旨在重新定义物联网设备上云的安全标准,专注保障物联网设备安全上云。
287 12
这款安全芯片,将重新定义物联网设备上云
|
应用服务中间件 网络安全 nginx
专网环境TRTC视频平台通讯解决方案
PC客户端处于专网无法与TRTC视频平台通讯(客户必须要外网)
9923 0
专网环境TRTC视频平台通讯解决方案
|
JavaScript 物联网 芯片
物联网设备天线设计与选型指南
物联网设备天线设计与选型指南
物联网设备天线设计与选型指南
|
数据采集 边缘计算 物联网
iNeuOS工业互联平台,机床&PLC硬件网关与平台无缝对接,进行数据交互
iNeuLink边缘计算网关,在iNeuOS云端操作中起到对下分布式采集数据、对上透明转发数据的作用。对下数据采集支持PLC协议包括:发那科(Fanuc)、西门子(Siemens)、三菱(Mitsubishi)、哈斯(Hass)、凯恩帝(knd)、海德汉(Heidenhain)、兄弟(Brother)、广州数控(GSK)、新代(Syntec),PLC协议包括:ModBus、西门子(Siemens)、三菱(Mitsubishi)、欧姆龙(Omron),其他协议可以定制化扩展。iNeuLink与iNeuKernel(设备容器)进行数据交互,最终使用iNeuView对数据进行视图组态和建模,完成数据
344 0
iNeuOS工业互联平台,机床&PLC硬件网关与平台无缝对接,进行数据交互
|
物联网 开发工具 IDE
【实践】工业用变频器上云 【1】 硬件介绍 与阿里云IOT设备创建
本系列介绍,如何将一台台达变频器接入阿里云物联网,并且实现云端操控的实践案例,第一部分主要是使用的硬件介绍与云端的设备模型与环境创建