暂时放个程序

//ME->>{“method”: “update”,“gatewayNo”: “01”,“userkey”: “2b64c489d5f94237bcf2e23151bb7d01”}&^!
//Ser->>{“f”:“message”,“p1”:“ok”}&^!
//ME->>{“method”: “upload”,“data”:[{“Name”:“A1C”,“Value”:“96.2”}]}&^!
//Ser->>{“f”:“message”,“p1”:“ok”}&^!
//Ser->>进入控制设备
//Ser->>{“method”:“send”,“gatewayNo”:“01”,“userkey”:“2b64c489d5f94237bcf2e23151bb7d01”,“f”:“getAllSensors”}&^!
//ME->>{“method”:“response”,“result”:{“successful”:true,“message”:“ok!”,“data”:[{“id”:“A1O”,“value”:“10”},{“id”:“A2O”,“value”:“1”}]}}&^!
//Ser->>点击开关,设定数值
//Ser->>{“method”:“send”,“gatewayNo”:“01”,“userkey”:“2b64c489d5f94237bcf2e23151bb7d01”,“f”:“updateSensor”,“p1”:“A2O”,“p2”:“0”}&^!
//ME->>{“method”:“response”,“result”:{“successful”:true,“message”:“ok!”,“data”:[{“id”:“A1O”,“value”:“10”},{“id”:“A2O”,“value”:“1”}]}}&^!
//或
//ME->>{“method”:“response”,“result”:{“successful”:true,“message”:“Write cmd successful !”}}&^!

#include "Arduino.h"
#include "WiFi.h"const char *ssid = "CMCC-9eUG";const char *password = "apzwqk4u";
// const char *ssid = "X";
// const char *password = "123456789";
//const char *ssid = "HUAWEI P30";
//const char *password = "0000000000";//const IPAddress serverIP(192,168,137,1); //目标地址
//const char *serverIP="17854231380.qicp.vip";
//uint16_t serverPort = 23460;         //目标服务器端口号const char *serverIP="tcp.lewei50.com";
uint16_t serverPort = 9960;         //目标服务器端口号#define USERKEY "2b64c489d5f94237bcf2e23151bb7d01"
//const char *server_Line="{\"method\": \"update\",\"gatewayNo\": \"01\",\"userkey\": \"2b64c489d5f94237bcf2e23151bb7d01\"}&^!";WiFiClient client;   //声明一个客户端对象,用于与服务器进行连接
int A1C_num=0;
int tim1_IRQ_count = 0;
hw_timer_t *tim1 = NULL;
#define LED_PIN 35
#define LED_ON   HIGH
#define LED_OFF  LOW
#define Botton_PIN  0
#define Botton_ON   LOW
#define Botton_OFF  HIGHint LED_Sta=LED_OFF;
double A1O_Num=0;
void LED_Set(int Sta)
{if(Sta==0){LED_Sta=0;digitalWrite(LED_PIN,LED_OFF);}else{LED_Sta=1;digitalWrite(LED_PIN,LED_ON);}
}
//上线
String server_Line(String Decive_num)
{String m_String_01="{\"method\": \"update\",\"gatewayNo\": \"";String m_String_02="\",\"userkey\": \"2b64c489d5f94237bcf2e23151bb7d01\"}&^!";String m_String=m_String_01+Decive_num+m_String_02;return m_String;
}
//上传传感器数据
String Data_Upload(String sensor_Num,int sensor_Data)
{char Num[10]={};String sensor_String_01="{\"method\": \"upload\",\"data\":[{\"Name\":\"";String sensor_String_02="\",\"Value\":\"";String sensor_String_03="\"}]}&^!";String sensor_String=sensor_String_01+sensor_Num+sensor_String_02+String(sensor_Data)+sensor_String_03;return sensor_String;
}
String getAllSensors(String Sensors1_Name,int Sensors1_Num,String Sensors2_Name,int Sensors2_Num)
{String String1="{\"method\":\"response\",\"result\":{\"successful\":true,\"message\":\"ok!\",\"data\":[{\"id\":\"";String String2="\",\"value\":\"";String String3="\"},{\"id\":\"";String String4="\",\"value\":\"";String String5="\"}]}}&^!\"";String String_Dis=String1+Sensors1_Name+String2+String(Sensors1_Num)+String3+Sensors2_Name+String4+String(Sensors2_Num)+String5;return String_Dis;
}
String getAllSensors(String Sensors1_Name,double Sensors1_Num,String Sensors2_Name,int Sensors2_Num)
{String String1="{\"method\":\"response\",\"result\":{\"successful\":true,\"message\":\"ok!\",\"data\":[{\"id\":\"";String String2="\",\"value\":\"";String String3="\"},{\"id\":\"";String String4="\",\"value\":\"";String String5="\"}]}}&^!\"";String String_Dis=String1+Sensors1_Name+String2+String(Sensors1_Num)+String3+Sensors2_Name+String4+String(Sensors2_Num)+String5;return String_Dis;
}String Set_CMD(void)
{String Data="{\"method\":\"response\",\"result\":{\"successful\":true,\"message\":\"Write cmd successful !\"}}&^!";return Data;
}
void setup()
{delay(1000);//IO InitpinMode(LED_PIN,OUTPUT);pinMode(Botton_PIN,INPUT); //INPUT_PULLUP上拉输入Serial.begin(115200);//80Mhz时钟 分频为1Mhztim1 = timerBegin(0, 80, true);                      //初始化定时器 timerBegin                num : 定时器编号 divider:分频数 countUp: 是否是累加模式   timerAttachInterrupt(tim1, tim1Interrupt, true);     //配置定时器中断 timerAttachInterrupt   *timer:目标定时器(计时器结构体指针 hw_timer_t*)   void (*fn)(void) : 中断函数入口地址   是否边沿触发//100mstimerAlarmWrite(tim1, 100000, true);                 //定时器设置timerAlarmWrite             *timer:目标定时器 ( 计时器结构体指针 hw_timer_t * )  alarm_value : 计数上限值  autoreload : 是否重装载.timerAlarmEnable(tim1);                              //使能定时器 timerAlarmEnable  Serial.println();WiFi.mode(WIFI_STA);   //站点模式WiFi.setSleep(false);  //关闭STA模式下wifi休眠,提高响应速度WiFi.begin(ssid, password);Serial.println("wait Wifi");while (WiFi.status() != WL_CONNECTED){delay(2500);Serial.print(".");//WiFi.begin(ssid, password);}Serial.println("connected");Serial.print("location IP:");Serial.println(WiFi.localIP());
}
bool Server_Online,WIFI_Online,Server_T_Online;
int WIFI_Test_Time;
char Server_Sta=0;
int Heart_Time=0;
void loop()
{LED_Set(LED_Sta);if (tim1_IRQ_count > 10){tim1_IRQ_count=0;WIFI_Test_Time++;//检测WIFI连接if(WiFi.status() == WL_CONNECTED){WIFI_Online=true;}else{WIFI_Online=false;Server_Online=false;WiFi.begin(ssid, password);Serial.println("WIFI begin");while (WiFi.status() != WL_CONNECTED){delay(2500);Serial.print(".");Serial.print(WiFi.status());WiFi.begin(ssid, password);}WIFI_Online=true;Serial.println("WiFi connected");Serial.print("location IP:");Serial.println(WiFi.localIP());}//检测服务器连接if(client.connected()){Server_Online=true;Server_Sta=1;//Serial.println("server Online");}else{if(client.connect(serverIP, serverPort)){Server_Online=true;Server_Sta=1;Server_T_Online=true;Serial.println("server connect ok");}else{Server_Online=false;Server_Sta=-1;Serial.println("server connect fail");}}if(Server_Online){Heart_Time++;if(Heart_Time>=23){Heart_Time=0;//Serial.println(Data_Upload("A1C",random()%100));Serial.println("Heart A1C");client.print(Data_Upload("A1C",random()%100));}}}if(Server_Online){if(Server_T_Online){Server_T_Online=false;//Serial.println(server_Line("01"));Serial.println("Link server");client.print(server_Line("01"));Server_Sta=2;}if(client.available()){if (client.available()) //如果有数据可读取{String line = client.readStringUntil('\n'); //读取数据到换行符Serial.print("read>>");Serial.println(line);  //服务器返回数据解析if(line.indexOf("\"f\":\"message\",\"p1\":\"ok\"")!=-1)   //上线或上传传感器数值{if(Server_Sta==2)    //上线成功{Server_Sta=3;//Serial.println(Data_Upload("A1C",random()%100));Serial.println("A1C Data");client.print(Data_Upload("A1C",random()%100));}else{if(Server_Sta==3)//上传传感器数值成功{}else{//Serial.print("\"f\":\"message\",\"p1\":\"ok\" Server_Sta");  Serial.println(Server_Sta);}}} if(line.indexOf("\"method\":\"send\",\"gatewayNo\"")!=-1) //切换到控制器界面或开关指令下发{ if(line.indexOf("\"f\":\"getAllSensors\"")!=-1)   //切换到界面{Serial.print("getAllSensors : ");Serial.print("A1O");Serial.print(A1O_Num);Serial.print("A2O");Serial.println(LED_Sta);//Serial.println(getAllSensors("A1O",A1O_Num,"A2O",LED_Sta));client.println(getAllSensors("A1O",A1O_Num,"A2O",LED_Sta));}else{if(line.indexOf("\"f\":\"updateSensor\"")!=-1)  //指令下发{Serial.print("updateSensor>>");if(line.indexOf("\"p1\":\"A2O\"")!=-1){line.remove(0,line.indexOf("A2O"));  //裁切为   A2O","p2":"1"}&^!line.remove(0,11);                   //裁切为   1"}&^!line.remove(line.indexOf("\"}&^!"),5);//裁切为  1LED_Set(line.toInt());Serial.print("A2O");Serial.println(LED_Sta);//Serial.println(getAllSensors("A1O",A1O_Num,"A2O",LED_Sta));//client.print(getAllSensors("A1O",A1O_Num,"A2O",LED_Sta));//Serial.println(Set_CMD());client.print(Set_CMD());}else{if(line.indexOf("\"p1\":\"A1O\"")!=-1){Serial.println("A1O");line.remove(0,line.indexOf("A1O"));  //裁切为   A1O","p2":"1"}&^!line.remove(0,11);                   //裁切为   1"}&^!line.remove(line.indexOf("\"}&^!"),5);//裁切为  1A1O_Num=line.toDouble();Serial.print("A1O");Serial.println(A1O_Num);//Serial.println(getAllSensors("A1O",A1O_Num,"A2O",LED_Sta));//client.print(getAllSensors("A1O",A1O_Num,"A2O",LED_Sta));//Serial.println(Set_CMD());client.print(Set_CMD());}else{Serial.println("Unkown");}}}}}line="";}}}}//ME->>{"method": "update","gatewayNo": "01","userkey": "2b64c489d5f94237bcf2e23151bb7d01"}&^!
//Ser->>{"f":"message","p1":"ok"}&^!
//ME->>{"method": "upload","data":[{"Name":"A1C","Value":"96.2"}]}&^!
//Ser->>{"f":"message","p1":"ok"}&^!
//Ser->>进入控制设备
//Ser->>{"method":"send","gatewayNo":"01","userkey":"2b64c489d5f94237bcf2e23151bb7d01","f":"getAllSensors"}&^!
//ME->>{"method":"response","result":{"successful":true,"message":"ok!","data":[{"id":"A1O","value":"10"},{"id":"A2O","value":"1"}]}}&^!
//Ser->>点击开关,设定数值
//Ser->>{"method":"send","gatewayNo":"01","userkey":"2b64c489d5f94237bcf2e23151bb7d01","f":"updateSensor","p1":"A2O","p2":"0"}&^!
//ME->>{"method":"response","result":{"successful":true,"message":"ok!","data":[{"id":"A1O","value":"10"},{"id":"A2O","value":"1"}]}}&^!
//或
//ME->>{"method":"response","result":{"successful":true,"message":"Write cmd successful !"}}&^!/*定时器中断服务函数*/
void tim1Interrupt()
{tim1_IRQ_count++;
}

ESP通过乐为物联控制灯,微信发送数值,ESP上传传感器数据相关推荐

  1. ESP8266上传传感器数据到远端与远端反向控制终端--Arduino

    上传传感器数据到远端与远端反向控制终端 功能 硬件连接 程序 后续 功能 集上传传感器数据到远端与远端反向控制终端 本例采用TCP协议,通过WiFi透传模式进行远端控制与传输.采用读取DHT11温湿度 ...

  2. java下发命令nbiot,NB物联网之天翼物联(3)——编解码插件上传规则细解(java开发物联网)...

    前言 电信的编解码插件本意上是可以让我们的开发更加灵活,但是你好歹把文档写明白啊...同时在正常的生产中我们的产品不可能只使用电信的模块,有时甚至是客户要求使用移动还是电信的模块,所以兼容性给我们的体 ...

  3. ESP8266WiFi模块接入乐为物联平台

    目录 了解乐为物联 乐为物联的框架结构 ESP8266初试小结 模拟工具在线调试 PC端 串口调试 STM32硬件调试 参考资料 前段时间利用手边的ESP8266小WiFi模块尝试接入了Yeelink ...

  4. STM32搭载ESP8266与乐为物联交互

    写在前面 在上篇博客 ESP8266WiFi模块接入乐为物联平台中,简答介绍了乐为物联平台,并且用串口调试助手,通过串口转USB线连接ESP8266 WiFi模块,并且串口命令建立了与乐为物联的连接, ...

  5. 背篼酥课堂-第六课 dht11 post乐为物联

    dth11 使用 直接获取温湿度代码 #include <DHTesp.h> DHTesp DHT;//对象 void setup() {Serial.begin(9600);DHT.se ...

  6. ESP8266 WiFi 模块连接乐为物联云实现PM2.5测试系统

    ESP8266 WiFi 模块连接乐为物联云实现PM2.5测试系统 1.关于ESP8266 安信可科技推出的ESP8266 WiFi 模块可以以极低的成本把传统单片机系统接入物联网.内置WiFi前端和 ...

  7. 卓岚物联小程序通过4G串口服务器采集供热站流量计数据

    卓岚物联小程序通过4G串口服务器采集供热站流量计数据 1.概述 远程监控供热站流量计数据,可以随时随地查看流量计瞬时流量.累积流量,平均流量,运行时间等相关参数,可以远程修改流量计相关参数. 图一 4 ...

  8. 物联卡一直显示待激活怎么办_物联卡中心:物联网卡连不上4G的怎么解决?

    物联网卡连不上4G网怎么办?物联网卡支持2G/3G/4G网络,用户可以根据自身需要向移动.联通.电信三大运营商或者专业的物联网平台申请开通,物联卡中心介绍,近日有部分用户反应,在开通了物联网卡后却连接 ...

  9. 使用MQTT协议连接乐为物联平台

    mqtt就是tcp通信,首先连接服务器,然后发出连接命令,成功返回后,订阅话题,在主循环间隔时间内发送保持命令. &nbsp 连接MQTT服务器的 mqtt.lewei50.com 1883c ...

最新文章

  1. hdu 1069 Monkey and Banana (LIS)
  2. [零基础学JAVA]Java SE面向对象部分-08.面向对象基础(03)
  3. using可以用于释放操作,相当于Dispose()
  4. zoj 3809 枚举水题 (2014牡丹江网赛 A题)
  5. 机器学习问题方法总结
  6. ios12彻底关闭siri_Siri正在iOS 12中获取自定义语音操作
  7. 【集合框架】JDK1.8源码分析之HashMap(一)
  8. 拓端tecdat|Python高维统计建模变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
  9. 永中集成Office:既是创新产品,也是战略储备
  10. 直播软件视频流怎样测试,手把手教你,如何用视频号直播推流!
  11. easyui事件方法onChange()、onSelect()、 onLoadSuccess()
  12. 阿里大文娱管理层调整?回应:分工去年宣布 不是新闻
  13. “女人~,你在玩火”一个有磁性的声音说道——常用自动化测试工具
  14. 在安卓系统上使用NFC技术的模拟M1卡的探索之路
  15. Android---使用adb命令添加apk到MUMU安卓模拟器
  16. MySql存储IP地址(兼容ipv4和ipv6)
  17. 使用Git对Word或Excel文件进行版本管理
  18. SQL Server AlwaysON从入门到进阶(3)——基础架构
  19. python期中考试试卷_python期中考试试卷
  20. html去掉button的默认样式

热门文章

  1. Lost connection to the debugger on
  2. 看淡生死,弥争当下!
  3. 【牛尔】【小p】这些美容强男的超级秘籍!!!丝般肌肤毛孔看不见,清透小面颊,丝滑小脸蛋儿,你难道不想拥有吗————【收缩毛孔的最佳方法】(一夜之间6万浏览量,大师的感召力和信服力就是强啊!)
  4. Sansen精粹阅读笔记(1)OTA和OCA (电流放大器)
  5. 每个架构师都应该了解的理论:康威定律
  6. oracle迁移达梦7手顺及注意事项
  7. 【COCOS2DX-游戏开发之七】添加启动数字输入法的功能
  8. 视频(mp4文件)批量转换成动图(gif文件)
  9. java的jdk安装教程附百度网盘链接环境配置遇到的各种问题版本选择
  10. 基于SpringBoot+VUE的酒店管理信息系统的设计思路