esp8266web
esp8266web copied to clipboard
i have problem with WiFiClientSecure :(
hi i am thanks for your help to peaple for publishin your good project in this code i want give data from google Sheet and send data in telegram bot, i use this project to give data from google sheet: https://github.com/lorol/Googlesheet_DHT_simple and use this project for recive and send data from telegram robat: https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot i use esp8266 i merge two above project but i cant compile because i give error , because two project use WiFiClientSecure.h library , and same client :(
i changed the client name , and code ha been compiled, but in serial monitor , program crashed i changed "HTTPSRedirect* client= nullptr;" to "HTTPSRedirect* test= nullptr;" and change every client in the code to test, i also change below code, in the next change
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
to :
WiFiClientSecure test;
UniversalTelegramBot bot(BOTtoken, test);
and you can see my Serial monitor in both time:
Starting ...
Connecting to hooshmandsazan3
.
WiFi connected
Exception (29):
epc1=0x4000e1cc epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000204 depc=0x00000000
ctx: cont
sp: 3fff0fd0 end: 3fff18e0 offset: 01a0
>>>stack>>>
3fff1170: 00410000 3fffb59c 3fffb75c 40224e3f
3fff1180: 3fffb63c 3fffb87c 00000081 40225aa1
i add Serial.println() in the code for debugging this is my code:
#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#include "HTTPSRedirect.h"
//======================From Telegram===============================
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#define BOTtoken "339475786:AAH7IjXu51xPom_sMx8IRnvQbcTD5FfO2Wc" // your Bot Token (Get from Botfather)
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
int Bot_mtbs = 1000; //mean time between scan messages
long Bot_lasttime; //last time messages' scan has been done
bool Start = false;
const int ledPin = 2;
int ledStatus = 0;
void handleNewMessages(int numNewMessages) {
//Serial.println(F("handleNewMessages"));
//Serial.println(String(numNewMessages));
for (int i=0; i<numNewMessages; i++) {
String chat_id = String(bot.messages[i].chat_id);
String text = bot.messages[i].text;
String from_name = bot.messages[i].from_name;
if (from_name == "") from_name = "Guest";
if (text == "/ledon") {
digitalWrite(ledPin, HIGH); // turn the LED on (HIGH is the voltage level)
ledStatus = 1;
bot.sendMessage(chat_id, "Led is ON", "");
}
if (text == "/ledoff") {
ledStatus = 0;
digitalWrite(ledPin, LOW); // turn the LED off (LOW is the voltage level)
bot.sendMessage(chat_id, "Led is OFF", "");
}
if (text == "/status") {
if(ledStatus){
bot.sendMessage(chat_id, "Led is ON", "");
} else {
bot.sendMessage(chat_id, "Led is OFF", "");
}
}
if (text == "/start") {
String welcome = "Welcome to Universal Arduino Telegram Bot library, " + from_name + ".\n";
welcome += "This is Flash Led Bot example.\n\n";
welcome += "/ledon : to switch the Led ON\n";
welcome += "/ledoff : to switch the Led OFF\n";
welcome += "/status : Returns current status of LED\n";
bot.sendMessage(chat_id, welcome, "Markdown");
}
}
}
//***************************************************************************
#define WRITE_INTERVAL_MINITES 1
#define MAX_CONNECT 200 //reuse 2 times same clent
#define MAX_ERROR 100 //restart everything
const char *ssid = "sajjad";
const char *pass = "1q2w3e4r5t6y";
const char* host = "script.google.com";
const int httpsPort = 443;
int seconds = (WRITE_INTERVAL_MINITES * 60) - 20; // schedule first sending to TS in 20 sec after start
char *GScriptId = "AKfycbxRzkMt87iyiyU9EDY6REoRDpl5C9oHdjVyCSF6A4QN7jkNMGHD"; // Put your GScriptId here
// Access to Google Spreadsheet
String url = String("/macros/s/") + GScriptId + "/exec?";
HTTPSRedirect* test = nullptr;
float hum;
float tem;
void setup() {
Serial.begin(115200);
Serial.println();
delay(200);
Serial.println(F("Starting ..."));
delay(200);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
if (WiFi.status() != WL_CONNECTED) WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println(F("."));
}
Serial.println("");
Serial.println("WiFi connected");
pinMode(ledPin, OUTPUT); // initialize digital ledPin as an output.
delay(10);
digitalWrite(ledPin, LOW); // initialize pin as off
}
void loop() {
Serial.println("1");
//==============================From telegram=========================================
if (millis() > Bot_lasttime + Bot_mtbs) {
Serial.println("2");
int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
while(numNewMessages) {
Serial.println("3");
Serial.println("got response");
handleNewMessages(numNewMessages);
numNewMessages = bot.getUpdates(bot.last_message_received + 1);
}
Serial.println("4");
Bot_lasttime = millis();
}
//***********************************************************************
Serial.println("5");
static int error_count = 0;
static int connect_count = 0;
static bool flag = false;
if (!flag){
Serial.println("6");
test = new HTTPSRedirect(httpsPort);
flag = true;
test->setPrintResponseBody(true); // or false and use String getResponseBody();
Serial.println("6a");
test->setContentTypeHeader("application/json");
Serial.println("6b");
if (!test->connected()) test->connect(host, httpsPort);
Serial.println("6c");
++connect_count;
Serial.println("6d");
}
// 30 sec after writing
if (test != nullptr){
Serial.println("7");
if (!test->connected()){
test->connect(host, httpsPort);
}
}
else{
Serial.println(F("Error2 creating client object!"));
error_count = -10;
Serial.println("7a");
}
Serial.println("7b");
Serial.println(F("========================="));
if (test->GET(url + String("readrow=last"), host)){
Serial.println("8");
DynamicJsonBuffer jsonBuffer;
JsonObject& json = jsonBuffer.parseObject(test->getResponseBody());
//json.printTo(Serial);
String Timestamp = json["values"][0];
int MaxT0 = json["values"][1];
int minT0 = json["values"][2];
String Con0 = json["values"][3];
int Hu0 = json["values"][4];
String WS0 = json["values"][5];
String WD0 = json["values"][6];
int MaxT1 = json["values"][7];
int minT1 = json["values"][8];
String Con1 = json["values"][9];
int Hu1 = json["values"][10];
String WS1 = json["values"][11];
String WD1 = json["values"][12];
int MaxT2 = json["values"][13];
int minT2 = json["values"][14];
String Con2 = json["values"][15];
int Hu2 = json["values"][16];
String WS2 = json["values"][17];
String WD2 = json["values"][18];
int MaxT3 = json["values"][19];
int minT3 = json["values"][20];
String Con3 = json["values"][21];
int Hu3 = json["values"][22];
String WS3 = json["values"][23];
String WD3 = json["values"][24];
float TEMP = json["values"][25];
float Hu = json["values"][26];
Serial.println(Timestamp);
Serial.println(MaxT0);
Serial.println(minT0);
Serial.println(Con0);
Serial.println(Hu0);
Serial.println(WS0);
Serial.println(WD0);
Serial.println("");
Serial.println(MaxT1);
Serial.println(minT1);
Serial.println(Con1);
Serial.println(Hu1);
Serial.println(WS1);
Serial.println(WD1);
Serial.println("");
Serial.println(MaxT2);
Serial.println(minT2);
Serial.println(Con2);
Serial.println(Hu2);
Serial.println(WS2);
Serial.println(WD2);
Serial.println("");
Serial.println(MaxT3);
Serial.println(minT3);
Serial.println(Con3);
Serial.println(Hu3);
Serial.println(WS3);
Serial.println(WD3);
Serial.println("");
Serial.println(TEMP);
Serial.println(Hu);
++connect_count;
} else {
Serial.println("9");
++error_count;
Serial.println(F("GET Last row val failed!"));
seconds = 10; // stage again in 10 sec
}
if (error_count > MAX_ERROR){
Serial.println("10");
Serial.println(F("Errors > MAX_ERROR..."));
//delete client;
//client = nullptr;
//connect_count = -1;
//error_count = 0;
//flag = false;
ESP.restart();
}
if (connect_count > MAX_CONNECT){
Serial.println("11");
Serial.println(F("Connects > MAX_CONNECT... rebuild"));
connect_count = -1;
flag = false;
delete test;
//return; //where?
}
seconds++;
delay(1000); //1 sec loop
}
when the code arive to "6b" program go to hang,
when arive to :
if (!test->connected()) test->connect(host, httpsPort);
this is my output:
Starting ...
Connecting to sajjad
.
.
.
.
.
.
.
.
WiFi connected
1
2
4
5
6
6a
6b
Exception (29):
epc1=0x4000dfd9 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
ctx: cont
sp: 3fff1000 end: 3fff1850 offset: 01a0
>>>stack>>>
3fff11a0: 3fff073c 000011c9 000011c9 4022ab8c
3fff11b0: 3fff1584 00000012 00000003 00000000
Hardware
Hardware: NodeMcu Lua WIFI Board Based on ESP8266 CP2102 Module (ESP-12E)
Description
Problem description
Settings in IDE
Module: Adafruit HUZZAH esp8266 Flash Size: 4MB(3MB SPIFFS) CPU Frequency: 80Mhz Upload Using: SERIAL 115200
please help me please :(