1

So, I'm trying to send data from ESP boards- 32 and 8266 using sim800l module to firebase. But I'm getting HTTP not connected error. I tried to search web but it seems that firebase changed something recently and the ways previously used cant be used. So anyone who has recently done that please help. P.S I'm considerably new to this. Project - So to give you idea I'm trying to make a Vehicle GPS tracking system which would send data first to firebase using Sim800l. My Code -

#define TINY_GSM_MODEM_SIM800

#define TINY_GSM_RX_BUFFER 256

//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN #include <TinyGPS++.h> //https://github.com/mikalhart/TinyGPSPlus #include <TinyGsmClient.h> //https://github.com/vshymanskyy/TinyGSM #include <SoftwareSerial.h> #include <ArduinoHttpClient.h> //https://github.com/arduino-libraries/ArduinoHttpClient //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN const char FIREBASE_HOST[] = "vehicle-tracking-4a76d-default-rtdb.firebaseio.com"; const String FIREBASE_AUTH = "6NGxNkNWf2inWa1LrdktCtq4************"; const String FIREBASE_PATH = "/"; const int SSL_PORT = 443; //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN // Your GPRS credentials // Leave empty, if missing user or pass char apn[] = "airtelgprs.com"; char user[] = ""; char pass[] = ""; //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN //GSM Module TX pin to NodeMCU D3 //GSM Module RX pin to NodeMCU D4 #define rxGSM 0 //D3 #define txGSM 4 //D4 SoftwareSerial sim800(rxGSM, txGSM); TinyGsm modem(sim800); //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN //GPS Module TX pin to NodeMCU D1 //GPS Module RX pin to NodeMCU D2 #define rxGPS 5 //D1 #define txGPS 4 //D2 SoftwareSerial neogps(rxGPS, txGPS); TinyGPSPlus gps; //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TinyGsmClientSecure client1(modem); HttpClient http_client = HttpClient(client1, FIREBASE_HOST, SSL_PORT); //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

unsigned long previousMillis = 0; long interval = 10000;

//************************************************************************************************** void setup() { Serial.begin(115200); Serial.println("NodeMCU serial initialize");

sim800.begin(9600); Serial.println("SIM800L serial initialize");

neogps.begin(9600); Serial.println("neogps serial initialize"); delay(3000);

//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN //Restart takes quite some time //To skip it, call init() instead of restart() Serial.println("Initializing modem..."); modem.restart(); String modemInfo = modem.getModemInfo(); Serial.print("Modem: "); Serial.println(modemInfo); //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

// Unlock your SIM card with a PIN //modem.simUnlock("1234");

http_client.setHttpResponseTimeout(90 * 1000); //^0 secs timeout } //**************************************************************************************************

//************************************************************************************************** void loop() { //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN //Restart takes quite some time //To skip it, call init() instead of restart() //Serial.println("Initializing modem..."); //modem.init(); //String modemInfo = modem.getModemInfo(); //Serial.print("Modem: "); //Serial.println(modemInfo); //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN // Serial.print(F("Waiting for network...")); // if (!modem.waitForNetwork()) { // Serial.println(" fail"); // delay(1000); // return; // } Serial.println(" OK"); //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

// //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN // Serial.print(F("Connecting to ")); // Serial.print(apn); // if (!modem.gprsConnect(apn, user, pass)) { // Serial.println(" fail"); // delay(1000); // return; // } // Serial.println(" OK"); sim800.listen(); sim800.println('AT+SAPBR=3,1,"Contype","GPRS"'); sim800.println('AT+CSTT="airtelgprs.com","",""'); sim800.println("AT+SAPBR=1,1"); //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

http_client.connect(FIREBASE_HOST, SSL_PORT);

//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM while (true) { if (!http_client.connected()) { Serial.println(); http_client.stop();// Shutdown Serial.println("HTTP not connect"); break; } else { gps_loop(); } } //MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM } //**************************************************************************************************

//************************************************************************************************** void PostToFirebase(const char* method, const String & path , const String & data, HttpClient* http) { String response; int statusCode = 0; http->connectionKeepAlive(); // Currently, this is needed for HTTPS

//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN String url; if (path[0] != '/') { url = "/"; } url += path + ".json"; url += "?auth=" + FIREBASE_AUTH; Serial.print("POST:"); Serial.println(url); Serial.print("Data:"); Serial.println(data); //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

String contentType = "application/json"; http->put(url, contentType, data);

//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN // read the status code and body of the response //statusCode-200 (OK) | statusCode -3 (TimeOut) statusCode = http->responseStatusCode(); Serial.print("Status code: "); Serial.println(statusCode); response = http->responseBody(); Serial.print("Response: "); Serial.println(response); //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN if (!http->connected()) { Serial.println(); http->stop();// Shutdown Serial.println("HTTP POST disconnected"); } //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN } //**************************************************************************************************

//************************************************************************************************** void gps_loop() { //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN //Can take up to 60 seconds boolean newData = false; for (unsigned long start = millis(); millis() - start < 2000;) { while (neogps.available()) { if (gps.encode(neogps.read())) { newData = true; break; } } } //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN //If newData is true if (true) { newData = false;

String latitude, longitude;
//float altitude;
//unsigned long date, time, speed, satellites;

latitude = String(gps.location.lat(), 6); // Latitude in degrees (double)
longitude = String(gps.location.lng(), 6); // Longitude in degrees (double)

//altitude = gps.altitude.meters(); // Altitude in meters (double)
//date = gps.date.value(); // Raw date in DDMMYY format (u32)
//time = gps.time.value(); // Raw time in HHMMSSCC format (u32)
//speed = gps.speed.kmph();

Serial.print(&quot;Latitude= &quot;);
Serial.print(latitude);
Serial.print(&quot; Longitude= &quot;);
Serial.println(longitude);

String gpsData = &quot;{&quot;;
gpsData += &quot;\&quot;lat\&quot;:&quot; + latitude + &quot;,&quot;;
gpsData += &quot;\&quot;lng\&quot;:&quot; + longitude + &quot;&quot;;
gpsData += &quot;}&quot;;

//PUT   Write or replace data to a defined path, like messages/users/user1/&lt;data&gt;
//PATCH   Update some of the keys for a defined path without replacing all of the data.
//POST  Add to a list of data in our Firebase database. Every time we send a POST request, the Firebase client generates a unique key, like messages/users/&lt;unique-id&gt;/&lt;data&gt;
//https://firebase.google.com/docs/database/rest/save-data

PostToFirebase(&quot;PATCH&quot;, FIREBASE_PATH, gpsData, &amp;http_client);


} //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN } //**************************************************************************************************

0 Answers0