资讯专栏INFORMATION COLUMN

esp8266 TCP接入巴法云物联网云平台

xingpingz / 4174人阅读

摘要:本文,将介绍如何通过这个芯片连接到巴法云的设备云。例如向主题推送数据,可为示例调试测试的内容就是上面的指令,使用网络调试助手连接上巴法云后,修改就可以直接发送指令了。

前言

巴法云物联网云平台,就如它的文档介绍的,是一个专注物体联网的神奇的设备云平台(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 #include  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客户端对象,对象名称clientWiFiClient 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);}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/122386.html

相关文章

  • 【基于Arduino IDE平台开发ESP8266连接

    摘要:教程传送门基于平台开发连接巴法云简介实验准备硬件软件实验步骤点灯实验发送温湿度指令升级总结关于巴法云专注于开源,智造,创新,分享。 Arduino教程传送门????...

    不知名网友 评论0 收藏0
  • 2021-09-04

    摘要:使用实现连网实现巴法云物联网使用硬件程序思路基于正点原子的测试程序在巴法云物联网创建的主题初始化代码比较简陋主函数代码如果想用串口助手调试,接线方法如下使用硬件我这里使用的是正点原子家的开发板精英版和模块。 ...

    Zack 评论0 收藏0
  • ESP8266使用Arduino ide通过MQTT协议接入阿里平台(上传温湿度,甲醛浓度,土壤湿

    摘要:具体操作如下创建自己的设备进入到阿里云控制台,找到物联网平台,创建属于自己的设备点击公共实例进行创建里面有个设备管理,点击产品,里面有个创建产品输入名称即可,然后选择标准品类这里我创建的是温湿度检测。 ...

    Loong_T 评论0 收藏0
  • esp32-cam拍照上传,app inventor 制作安卓app实时显示

    摘要:导入文件后,如果只是简单使用,只需要修改两个地方,一个是主题名字,一个是,均需开发者置换成自己的主题名字和用户私钥,均可在巴法云控制台获取点击跳转。 esp32-...

    garfileo 评论0 收藏0
  • ESP8266+Blinker 的万互联(智能家居篇)

    摘要:下面是演示视频物联网文章目录前言一准备二操作步骤配置配置三效果展示总结前言实现万物互联第一步,千里点灯,然后添加你想要的模块就可以了,接下来我们进入正文。 前面学习...

    CntChen 评论0 收藏0

发表评论

0条评论

xingpingz

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<