主要是根据官方提供的示例,将其简化一部分。实现数据上传,云平台数据下发控制的功能
下发控制

VeryCapture_20220613204702

程序

/*智能语言控制控制,支持天猫、小爱、小度、google Assistent同时控制2021-08-12QQ交流群:566565915官网https://bemfa.com
*/
#include <ESP8266WiFi.h>#define server_ip "bemfa.com" //巴法云服务器地址默认即可
#define server_port "8344" //服务器端口,tcp创客云端口8344//********************需要修改的部分*******************//#define wifi_name  "xxx"     //WIFI名称,区分大小写,不要写错
#define wifi_password   "12345678"  //WIFI密码
String UID = "xxxxxxxxxxxxxxxxxxxxxxxxx";  //用户私钥,可在控制台获取,修改为自己的UID
String TOPIC = "test";         //主题名字,可在控制台新建
const int LED_Pin = D4;              //单片机LED引脚值,D2是NodeMcu引脚命名方式,其他esp8266型号将D2改为自己的引脚//**************************************************//
//最大字节数
#define MAX_PACKETSIZE 512
//设置心跳值60s
#define KEEPALIVEATIME 60*1000
//tcp客户端相关初始化,默认即可
WiFiClient TCPclient;
String TcpClient_Buff = "";//初始化字符串,用于接收服务器发来的数据
unsigned long TcpClient_preTick = 0;
unsigned long preHeartTick = 0;//心跳
unsigned long preTCPStartTick = 0;//连接
bool preTCPConnected = false;
//相关函数初始化
//连接WIFI
void doWiFiTick();
void startSTA();//TCP初始化连接
void doTCPClientTick();
void startTCPClient();
void sendtoTCPServer(String p);//led控制函数,具体函数内容见下方
void turnOnLed();
void turnOffLed();/*发送数据到TCP服务器
*/
void sendtoTCPServer(String p) {if (!TCPclient.connected()){Serial.println("Client is not readly");return;}TCPclient.print(p);
}/*初始化和服务器建立连接
*/
void startTCPClient() {if (TCPclient.connect(server_ip, atoi(server_port))) {Serial.print("\nConnected to server:");Serial.printf("%s:%d\r\n", server_ip, atoi(server_port));String tcpTemp = ""; //初始化字符串tcpTemp = "cmd=1&uid=" + UID + "&topic=" + TOPIC + "\r\n"; //构建订阅指令sendtoTCPServer(tcpTemp); //发送订阅指令tcpTemp = ""; //清空preTCPConnected = true;preHeartTick = millis();TCPclient.setNoDelay(true);}else {Serial.print("Failed connected to server:");Serial.println(server_ip);TCPclient.stop();preTCPConnected = false;}preTCPStartTick = millis();
}/*检查数据,发送心跳
*/
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()) {//收数据while (TCPclient.available() > 0){char c = TCPclient.read();TcpClient_Buff += c;}Serial.println("服务器开始---------接受数据为:");Serial.println(String("")+"接受字符串大小为:"+TcpClient_Buff.length());      String getMsg=TcpClient_Buff.substring(TcpClient_Buff.lastIndexOf("&msg")+5,TcpClient_Buff.length()-2);         Serial.println(String("")+"切割所需字符串为:"+getMsg);      TcpClient_preTick = millis();Serial.println("服务器结束---------接受数据为!!!");if (getMsg  == "on") {     //如果是消息==打开turnOnLed();} else if (getMsg == "off") { //如果是消息==关闭turnOffLed();}preHeartTick = millis();}if (millis() - preHeartTick >= KEEPALIVEATIME) { //保持心跳preHeartTick = millis();Serial.println("--Keep alive:");sendtoTCPServer("ping\r\n"); //发送心跳,指令需\r\n结尾,详见接入文档介绍}}TcpClient_Buff = "";}
/*初始化wifi连接
*/
void startSTA() {WiFi.disconnect();WiFi.mode(WIFI_STA);WiFi.begin(wifi_name, wifi_password);
}/**************************************************************************WIFI
***************************************************************************/
/*WiFiTick检查是否需要初始化WiFi检查WiFi是否连接上,若连接成功启动TCP Client控制指示灯
*/
void doWiFiTick() {static bool startSTAFlag = false;static bool taskStarted = false;static uint32_t lastWiFiCheckTick = 0;if (!startSTAFlag) {startSTAFlag = true;startSTA();}//未连接1s重连if ( WiFi.status() != WL_CONNECTED ) {if (millis() - lastWiFiCheckTick > 1000) {lastWiFiCheckTick = millis();}}//连接成功建立else {if (taskStarted == false) {taskStarted = true;Serial.print("\r\nGet IP Address: ");Serial.println(WiFi.localIP());startTCPClient();}}
}
//打开灯泡
void turnOnLed() {Serial.println("Turn ON");digitalWrite(LED_Pin, LOW);
}
//关闭灯泡
void turnOffLed() {Serial.println("Turn OFF");digitalWrite(LED_Pin, HIGH);
}// 初始化,相当于main 函数
void setup() {Serial.begin(115200);pinMode(LED_Pin, OUTPUT);digitalWrite(LED_Pin, HIGH);Serial.println("Beginning...");
}//循环
void loop() {//如果需要订阅多个主题,可再次发送订阅指令String  tcpTemp1 = "cmd=2&uid=" + UID + "&topic=" + TOPIC + "&msg=#" + String(random(0, 100)) + "#" + String(random(1000, 10000)) + "#\r\n";; //构建订阅指令sendtoTCPServer(tcpTemp1); //发送订阅指令tcpTemp1 = ""; //清空doWiFiTick();doTCPClientTick();delay(1000);
}

ESP8266通过arduino IED连接巴法云(TCP创客云)相关推荐

  1. ESP8266 连接巴法云

    ESP8266代码 /** 智能语言控制控制,支持天猫.小爱.小度.google Assistent同时控制* 2021-08-12* QQ交流群:566565915* 官网https://bemfa ...

  2. STM32F103C8T6+ESP8266WIFI+DHT11模块连接巴法云

    STM32F103C8T6通过ESP8266模块连接巴法云 一.硬件介绍 二.准备工作 三.STM32主要代码介绍 一.硬件介绍 1.MCU:STM32F103C8T6 2.ESP8266:正点原子W ...

  3. NBIOT模块连接巴法云实践(SIM7020)

    使用NBIOTSIM7020模块连接巴法云并进行数据通信 一.前期准备 1.巴法云新建主题(这里使用TCP协议,因此创建TCP设备云) 2.模块 使用前焊接好模块天线 3.SIM卡(物联专用卡) 4. ...

  4. 【基于Arduino IDE平台开发ESP8266连接巴法云】

    Arduino教程传送门

  5. 【ESP 保姆级教程】玩转巴法云篇④ —— TCP创客云,同步时间,OLED时钟

    忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️ ❤️ 本篇创建记录 2023-03-06 ❤️ ❤️ 本篇更新记录 2023-03-06 ❤️

  6. 【ESP 保姆级教程】玩转巴法云篇③ —— TCP创客云,TCP协议下的数据通信

    忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️ ❤️ 本篇创建记录 2023-03-03 ❤️ ❤️ 本篇更新记录 2023-03-03 ❤️

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

    文章目录 前言 (一)注册添加TCP设备 (1)注册巴法云账号 (2)创建主题 (二)订阅发布主题 (1)TCP设备相关指令 (2)调试 (三)ESP8266接入巴法云 前言 巴法云物联网云平台,就如 ...

  8. lua语言开发esp8266接入巴法云,mqtt和tcp协议

    第一步,lua语言开发环境配置 下载安装java环境,下载地址:点击下载 选择windows版本下载安装即可,如图所示: 下载开发环境包: 下载地址:点击下载 esp8266串口驱动:点击下载 下载后 ...

  9. 8266 + 巴法云 小爱远程控制电脑开关机 arduino

    暂时保存下 还在继续改进准备用小封装的芯片晒笔记本里面去 需求 可能需要在外面远程家里的电脑???没有需求创造需求 然后小爱可以控制电脑开关机 物联网基于 巴法云搭建 (白嫖且没有设备数量的限制)兼容 ...

  10. 【巴法云连接小爱同学+RC522刷卡双控制舵机门锁】

    代码解释(结尾有完整代码) 巴法云私钥及主题 String UID = "9XXX24844f759f7b134a9XXXXXXXXXXX"; //用户私钥,可在控制台获取,修改为 ...

最新文章

  1. 按器件划分微型计算机是()计算机,计算机与信息技术概述(答案)
  2. Linux基础第一周
  3. TypeError: cannot unpack non-iterable NoneType object
  4. 编程语言开发编程语言_D编程语言是开发的绝佳选择的5个理由
  5. WORD设置别人只可阅读,不可更改文档?
  6. 小米Wifi切换无线网卡模式
  7. 360极速浏览器html手机版,360极速浏览器模拟手机
  8. 福建高中计算机会考知识点,福建省高中信息技术会考《信息技术基础》复习提纲.doc...
  9. VMware 中Fedora系统连接网络问题!
  10. 怎样更改网站服务器的ip地址,如何更改您的服务器IP地址
  11. 读 Timothy Gowers 之 Mathematics: A Very Short Introduction
  12. 优卡仕广告一体机——商用显示设备专家
  13. 用Python学《微积分B》(多元函数Taylor公式)
  14. Marc数据解析和拼接(java版)
  15. “C++”读作「C 加加」,为什么“C♯”不能读作「C 井」呢?
  16. SpringbootApi接口学习笔记
  17. 宝塔设置A站点SSL,同服务器下其他未设SSL站点访问HTTPS默认会打开A站点
  18. 2018年全国多校算法寒假训练营练习比赛(第五场)F-The Biggest Water Problem
  19. 网站备案:阿里云-信息系统安全等级保护备案证明及网站服务合同下载
  20. 多模态神经成像之EEG-fMRI同步

热门文章

  1. 基于深度学习智能问答笔记
  2. Leetcode——714. Best Time to Buy and Sell Stock with Transaction Fee
  3. Codeforces_714_A
  4. 出版一本书可以赚多少钱_今年出版5本书
  5. jQuery项目:京东商品详情页
  6. 疫苗接种 vaccine jab
  7. 一个计算机专业大专生大学两年来的学习经历
  8. 不动产登记工作统计难 要靠三维不动产管理系统
  9. 手机用html电视,4种方法教你手机如何连接智能电视
  10. latex文字加粗、斜体