ESP8266+巴法云+串口发来的数据+TCP协议上传

一、代码


#include <ESP8266WiFi.h>
#include <ESP8266WiFi.h>
WiFiClient TCPclient;

#define TCP_SERVER_ADDR "bemfa.com"
#define TCP_SERVER_PORT "8344"
String UID = "c10d9affdff5545b3a6bb80b4fe55d59";
#define MAX_PACKETSIZE 512
#define KEEPALIVEATIME 30*1000
String TcpClient_Buff = "";
unsigned int TcpClient_BuffIndex = 0;
unsigned long TcpClient_preTick = 0;
unsigned long preHeartTick = 0;
unsigned long preTCPStartTick = 0;
bool preTCPConnected = false;
bool subFlag = false;
void doWiFiTick(){
 static bool taskStarted = false;
 static uint32_t lastWiFiCheckTick = 0;
 if ( WiFi.status() != WL_CONNECTED ) {
   if (millis() - lastWiFiCheckTick > 1000) {
     lastWiFiCheckTick = millis();
  }
 }
 else {
   if (taskStarted == false) {
     taskStarted = true;
     Serial.print("Get IP Address: ");
      Serial.println(WiFi.localIP());
      startTCPClient();
    }
  }
 }

void doTCPClientTick();
void sendtoTCPServer(String p){
  if (!TCPclient.connected())
  {
     Serial.println("Client is not readly");
      return;
   }
   TCPclient.print(p);
  }

void subTopic(String topic){
  String tcpTemp="";
  tcpTemp = "cmd=1&uid="+UID+"&topic="+topic+"\r\n";
  sendtoTCPServer(tcpTemp);
  tcpTemp="";
  Serial.print("sub topic:");Serial.println(topic);
  }

void startTCPClient(){
 if(TCPclient.connect(TCP_SERVER_ADDR, atoi(TCP_SERVER_PORT))){
   Serial.print("Connected to server:");
   Serial.println(TCP_SERVER_ADDR);
   subFlag = true;
   preHeartTick = millis();
   TCPclient.setNoDelay(true);
}
else{
  Serial.print("Failed connected to server:");
  Serial.println(TCP_SERVER_ADDR);
  TCPclient.stop();
  preTCPConnected = false;
 }
 preTCPStartTick = millis();
 }

void subTopicCenter(){
 if(subFlag == true){
  subFlag = false;

    subTopic("temp");

 }
}

  void doTCPClientTick(){
  if(WiFi.status() != WL_CONNECTED) return;
  if (!TCPclient.connected()) {
  if(preTCPConnected == true){
    preTCPConnected = false;
   preTCPStartTick = millis();
   Serial.println();
   Serial.println("TCP Client disconnected.");
  TCPclient.stop();
 }
else if(millis() - preTCPStartTick > 1*1000)
  startTCPClient();
}
else
{
 if (TCPclient.available()) {
   char c =TCPclient.read();
   TcpClient_Buff +=c;
  TcpClient_BuffIndex++;
  TcpClient_preTick = millis();
 if(TcpClient_BuffIndex>=MAX_PACKETSIZE - 1){
   TcpClient_BuffIndex = MAX_PACKETSIZE-2;
   TcpClient_preTick = TcpClient_preTick - 200;
 }
  preHeartTick = millis();
}
if(millis() - preHeartTick >= KEEPALIVEATIME){
  preHeartTick = millis();
  Serial.println("--Keep alive:");
  sendtoTCPServer("ping\r\n");
 }
 }
 if((TcpClient_Buff.length() >= 1) && (millis() - TcpClient_preTick>=200))
 {
 TCPclient.flush();
  TcpClient_Buff.trim();
   String topic = "";
   String msg = "";
if(TcpClient_Buff.length() > 15){
  int topicIndex = TcpClient_Buff.indexOf("&topic=")+7;
  int msgIndex = TcpClient_Buff.indexOf("&msg=");
  topic = TcpClient_Buff.substring(topicIndex,msgIndex);
  msg = TcpClient_Buff.substring(msgIndex+5);
}
Serial.println(topic);
  Serial.println(msg);
 msg = "";
 topic = "";
TcpClient_Buff="";
TcpClient_BuffIndex = 0;
}
}

void publishMsg(String topic,String msg){
 String tcpTemp="";
  tcpTemp = "cmd=2&uid="+UID+"&topic="+topic+"&msg="+msg+"\r\n";
  sendtoTCPServer(tcpTemp);
  tcpTemp="";
  Serial.println("A message has been published");
  }

void setup(){
  WiFi.begin("ESP82666", "12345678");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Local IP:");
Serial.print(WiFi.localIP());

  Serial.begin(9600);
}

void loop(){
  String comdata;
  /******************串口接受数据************************/
  while (Serial.available() > 0) // 串口收到字符数大于零。
  {   
comdata += char(Serial.read());
  }
 /******************串口打印数据************************/ 
  if(comdata!="")//如果接受到数据
  {
    comdata="EmployeeID:"+comdata;
    publishMsg("temp", comdata);
  }
    doWiFiTick();

  doTCPClientTick();
  subTopicCenter();
  
delay(500);
}

2.使用配置教程

https://cloud.bemfa.com/tcp/index.html
先注册巴法云账号密码,得到了密钥
在这里插入图片描述
之后点击新建主题
在这里插入图片描述
到这里配置就完成了,之后我们手机或者电脑开启热点;

WIFI名称:ESP82666
WIFI密码:12345678

之后我们修改程序,只需要修改两个地方

1.修改密钥

1.把自己的密钥替换掉
在这里插入图片描述
2.把主题名称“temp”换成自己上边自定义的
在这里插入图片描述
到这里就全部配置完成了,上传程序即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值