ESP Sim800l Firebase
Итак, я пытаюсь отправить данные с плат ESP-32 и 8266 с помощью модуля sim800l в firebase. Но я получаю сообщение об ошибке HTTP не подключено. Я пытался искать в Интернете, но кажется, что firebase недавно что-то изменила, и способы, которые использовались ранее, не могут быть использованы. Так что кто недавно делал это, пожалуйста, помогите. PS Я значительно новичок в этом. Проект. Итак, чтобы дать вам представление, я пытаюсь создать систему GPS-слежения за транспортными средствами, которая сначала отправляет данные на базу данных с использованием Sim800l. Мой код -
#define TINY_GSM_MODEM_SIM800
#define TINY_GSM_RX_BUFFER 256
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
#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
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
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;
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
// Ваши учетные данные GPRS
// Оставляем пустым, если отсутствует пользователь или пароль
char apn[] = "airtelgprs.com";
char user[] = "";
char pass[] = "";
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
//Контакт TX модуля GSM к NodeMCU D3
//Контакт RX GSM-модуля к NodeMCU D4
#define rxGSM 0 //D3
#define txGSM 4 //D4
SoftwareSerial sim800(rxGSM, txGSM);
TinyGsm modem(sim800);
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
//Контакт TX модуля GPS к NodeMCU D1
//Контакт RX модуля GPS к NodeMCU D2
#define rxGPS 5 //D1
#define txGPS 4 //D2
SoftwareSerial neogps(rxGPS, txGPS);
TinyGPSPlus gps;
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
TinyGsmClientSecure client1(modem);
HttpClient http_client = HttpClient(client1, FIREBASE_HOST, SSL_PORT);
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
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);
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
//Перезапуск занимает довольно много времени
//Чтобы пропустить его, вызовите init() вместо restart()
Serial.println("Initializing modem...");
modem.restart();
String modemInfo = modem.getModemInfo();
Serial.print("Modem: ");
Serial.println(modemInfo);
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
// Разблокируйте SIM-карту с помощью PIN-кода
//modem.simUnlock("1234");
http_client.setHttpResponseTimeout(90 * 1000); //^0 секунд тайм-аут
}
//*************************************************** *******************************************************
//*************************************************** *******************************************************
void loop() {
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
//Перезапуск занимает довольно много времени
//Чтобы пропустить его, вызовите init() вместо restart()
//Serial.println("Инициализация модема...");
//модем.инит();
//Строка modemInfo = modem.getModemInfo();
//Serial.print("Модем:");
//Serial.println(modemInfo);
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
// Serial.print(F("Ожидание сети..."));
// если (!modem.waitForNetwork()) {
// Serial.println("сбой");
// delay(1000);
// возвращаться;
// }
Serial.println(" OK");
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
// //NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
// Serial.print(F("Подключение к");
// Serial.print(apn);
// if (!modem.gprsConnect(apn, user, pass)) {
// Serial.println("сбой");
// delay(1000);
// возвращаться;
// }
// Serial.println("ОК");
sim800.listen();
sim800.println('AT+SAPBR=3,1,"Contype","GPRS"');
sim800.println('AT+CSTT="airtelgprs.com","",""');
sim800.println("AT+SAPBR=1,1");
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
http_client.connect(FIREBASE_HOST, SSL_PORT);
//ММММММММММММММММММММММММММММММММММ
while (true) {
if (!http_client.connected()) {
Serial.println();
http_client.stop();// Завершение работы
Serial.println("HTTP not connect");
break;
}
else {
gps_loop();
}
}
//ММММММММММММММММММММММММММММММММММ
}
//*************************************************** *******************************************************
//*************************************************** *******************************************************
void PostToFirebase(const char* method, const String & path , const String & data, HttpClient* http) {
String response;
int statusCode = 0;
http->connectionKeepAlive(); // В настоящее время это необходимо для HTTPS
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
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);
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
String contentType = "application/json";
http->put(url, contentType, data);
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
// прочитать код состояния и тело ответа
//statusCode-200 (ОК) | код состояния -3 (тайм-аут)
statusCode = http->responseStatusCode();
Serial.print("Status code: ");
Serial.println(statusCode);
response = http->responseBody();
Serial.print("Response: ");
Serial.println(response);
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
if (!http->connected()) {
Serial.println();
http->stop();// Выключение
Serial.println("HTTP POST disconnected");
}
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
}
//*************************************************** *******************************************************
//*************************************************** *******************************************************
void gps_loop()
{
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
//Может занять до 60 секунд
boolean newData = false;
for (unsigned long start = millis(); millis() - start < 2000;) {
while (neogps.available()) {
if (gps.encode(neogps.read())) {
newData = true;
break;
}
}
}
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
//Если новые данные верны
if (true) {
newData = false;
String latitude, longitude;
//плавающая высота;
//беззнаковая длинная дата, время, скорость, спутники;
latitude = String(gps.location.lat(), 6); // Широта в градусах (двойная)
longitude = String(gps.location.lng(), 6); // Долгота в градусах (двойная)
//высота = gps.altitude.meters(); // Высота в метрах (двойная)
//дата = gps.date.value(); // Необработанная дата в формате ДДММГГ (u32)
//время = gps.time.value(); // Необработанное время в формате HHMMSSCC (u32)
//скорость = gps.speed.kmph();
Serial.print("Latitude= ");
Serial.print(latitude);
Serial.print(" Longitude= ");
Serial.println(longitude);
String gpsData = "{";
gpsData += "\"lat\":" + latitude + ",";
gpsData += "\"lng\":" + longitude + "";
gpsData += "}";
//PUT Записать или заменить данные по определенному пути, например messages/users/user1/<data>
//PATCH Обновить некоторые ключи для определенного пути, не заменяя все данные.
//POST Добавить в список данных в нашей базе данных Firebase. Каждый раз, когда мы отправляем запрос POST, клиент Firebase генерирует уникальный ключ, например messages/users/<unique-id>/<data>
//https://firebase.google.com/docs/database/rest/save-data
PostToFirebase("PATCH", FIREBASE_PATH, gpsData, &http_client);
}
//NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
}
//*************************************************** *******************************************************
@Kuldeep Aher, 👍1
0
Смотрите также:
- Драйверы для чипа последовательного порта CH9102X
- ESP32: отключить детектор отключения питания
- Преобразование строки в IP-адрес
- Какую плату выбрать в PlatformIO для ESP Wroom 32?
- esp32 Stack canary watchpoint срабатывает
- Постоянная частота дискретизации АЦП на ESP8266 или ESP32
- ESP32S v1.1 NodeMCU vs ESP32 DevKitV1
- esp32-cam публикует изображение в mqtt