IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> esp8266 TCP接入巴法云物联网云平台 -> 正文阅读

[嵌入式]esp8266 TCP接入巴法云物联网云平台

前言

巴法云物联网云平台,就如它的文档介绍的,是一个专注物体联网的神奇的设备云平台(cloud.bemfa.com),它有以下特征,轻量级,支持发布/订阅模式,提供遗嘱机制,支持TCP长连接,全平台兼容。本文,将介绍如何通过esp8266这个芯片连接到巴法云的TCP设备云。

(一)注册添加TCP设备

(1)注册巴法云账号

到巴法云官网或直接进入 https://cloud.bemfa.com/u_login.php?reurl=https://cloud.bemfa.com/tcp/index.html
如下图,点击“微信一键登录”,扫码直接登录注册,然后直接进入“控制台

在这里插入图片描述

(2)创建主题

登录后,会直接跳转到巴法云云平台的个人控制台,如下图,选中TCP设备云,输入主题名“test”,点击新建主题,便可以创建一个名为test的主题,之后我们就可以对这个主题进行订阅或发布了。

在这里插入图片描述

(二)订阅发布主题

完成上面后,我们可以使用 SSCOM5 串口/网络调试助手来调试我们之前创建的主题。uid即用户私钥,可以直接在用户控制台获取

(1)TCP设备相关指令

这主要参考官方文档关于 TCP设备云部分。
TCP服务器地址IP: bemfa.com 服务器端口:8340

订阅主题格式
? cmd=1&uid=7d54f85af42976ee3c2693e6xxxxxxxx&topic=light002\r\n
正常返回:
cmd=1&res=1

发布信息格式
? cmd=2&uid=7d54f85af42976ee3c2693e6xxxxxxxx&topic=light002&msg=off\r\n
正常返回:
cmd=2&res=1

订阅主题,并获取一次已推送的消息
? cmd=3&uid=7d54f85af42976ee3c2693e6xxxxxxxx&topic=light002\r\n
正常返回:
cmd=3&uid=7d54f85af42976ee3c2693e6xxxxxxxx&topic=light002&msg=on

获取一次时间
? cmd=7&uid=7d54f85af42976ee3c2693e6xxxxxxxx&type=1\r\n
正常返回:
2021-06-11 16:39:27

获取一次已发消息
? cmd=9&uid=7d54f85af42976ee3c2693e6xxxxxxxx&topic=light002\r\n
正常返回:
cmd=9&uid=7d54f85af42976ee3c2693e6xxxxxxxx&topic=light002&msg=on

发送心跳
? ping\r\n
正常返回:
cmd=0&res=1

json响应
上述任意指令中加入 mode=1 时,服务器响应的数据格式是 json 类型。
例如发送:
cmd=2&uid=4d9ec352e0376f2110a0c601a2857225&topic=light002&msg=on&mode=1
正常响应:
{“cmd”:2,“res”:1}
此时订阅light002的设备将收到:
{“cmd”:2,“time”:1623402740,“uid”:“4d9ec352e0376f2110a0c601a2857225”,“topic”:“light002”,“msg”:“on”}
其中time为发送消息的时间戳

字段说明
cmd:为消息类型
cmd=1 时为订阅消息,当设备发送一次此消息类型,之后就可以收到发往该主题的消息
cmd=2 时为发布消息,向订阅该主题的设备发送消息
cmd=3 是订阅消息,和cmd=1相同,并且会拉取一次已发送过的消息
cmd=7 是获取时间,获取当前北京时间
cmd=9 为遗嘱消息,拉取一次已经发送的消息
uid:用户私钥

可在控制台获取
topic:用户主题
可以在控制台创建主题,格式为英文或数字,相当于设备标识
msg: 为消息体
用户想要发送到某个主题的数据

获取时间指令说明
type=1 获取当前日期和时间,例如:2021-06-11 17:20:54
type=2 获取当前时间,例如:17:20:54
type=3 获取当前时间戳,例如:1623403325

符号说明
\r\n: 为回车换符,每条指令后都需要有回车换行
&: 为连接符,各字段间用’&'隔离

心跳说明
发送任意数据 为心跳消息,包括上述指令也算是心跳,但要以回车换行结尾。
心跳消息是告诉服务器设备还在线,可30秒发送一次,结尾以\r\n结尾。

可选功能
推送消息时:主题名后加/set推送消息,表示向所有订阅这个主题的设备们推送消息,假如推送者自己也订阅了这个主题,消息不会被推送给它自己,以防止自己推送的消息被自己接收。

推送消息时:主题名后加/up推送消息,表示只更新云端数据,不进行任何推送。
例如向主题 light002推送数据,可为 light002/set , light002/up

示例:cmd=2&uid=4d9ec352e0376f2110a0c601a2857225&topic=light002/set&msg=on

(2)调试

测试的内容就是上面的指令,使用网络调试助手连接上巴法云后,修改uid,就可以直接发送指令了。下面图片是返回的结果。

在这里插入图片描述

(三)ESP8266接入巴法云

这里给出测试代码,ESP8266 Arduino IDE开发环境的配置,以及ESP8266的相关编程,可以参考我的另一篇博文《esp8266环境配置以及相关学习资料》。下面代码,订阅了一个test主题,当有信息下发时,会直接将数据输出到ArduinoIDE的串口查看器上。

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
 
ESP8266WiFiMulti wifiMulti;           // 建立ESP8266WiFiMulti对象

const char* host = "bemfa.com"; // 网络服务器地址
const int httpPort = 8340;              // http端口80
 
// WiFi连接信息
const char*  WiFi_SSID = "ling";
const char*  WiFi_Password = "ling....9";

// 建立WiFi客户端对象,对象名称client
WiFiClient client;
  
void setup(){
  Serial.begin(9600);          
  WiFi.mode(WIFI_STA);    // 设置ESP8266为无线终端模式
  
  wifiMulti.addAP(WiFi_SSID, WiFi_Password); 
  Serial.println("Connecting ..."); 
 
  // 尝试进行wifi连接。
  int i = 0;  
  while (wifiMulti.run() != WL_CONNECTED) { 
    delay(1000);
    Serial.print(i++); Serial.print(' ');
  }
  
  // WiFi连接成功后将通过串口监视器输出连接成功信息 
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(WiFi.SSID());              // WiFi名称
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());           // IP

  //连接巴法云
  client.connect(host, httpPort);
  Serial.print("conneted bamfa!\n");
  //订阅主题test
  client.print("cmd=1&uid=<填你们自己的uid>&topic=test\r\n");
  
}
 
void loop(){
  // 判断登录状态
  if(not client.connected()){
    //连接巴法云
    client.connect(host, httpPort);
    Serial.print("reconneted bamfa!\n");
    //订阅主题test
    client.print("cmd=1&uid=<填你们自己的uid>&topic=test\r\n");
    
  }

  //输出结果
  while (client.connected() || client.available()){ 
      if (client.available()){
        String line = client.readStringUntil('\n');
        Serial.println(line);
      }
    }
  delay(10);
}

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-13 11:36:15  更:2021-10-13 11:36:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:26:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码