В предишната статия показахме как да свържем нашето IOT устройство с домашната ни мрежа. Но възможностите на ESP8266 далеч не се изчерпват с това.
Нека накараме нашето устройство да направи просто запитване към уеб страница и изведем резултата в серийния монитор.
За целта ще използваме данни за Електроенергийният системен оператор посредством https://esolog.win/.
Ще използваме кодът от предишната стария като добавим новият код в loop. А там ще правим запитване към интернет страницата на всяка минута.
#include "ESP8266WiFi.h"
#include "ESP8266HTTPClient.h"
// SSID и парола на домашната ви мрежа
const char *ssid = "TechPotWin";
const char *password = "techpotpass";
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println("Свързване с WiFi");
// задаваме режим клиент на WiFi
WiFi.mode(WIFI_STA);
// задаваме SSID и парола за свързване
WiFi.begin(ssid, password);
// създаваме променлива с която да броим интервали с неуспешните опити за свързване
int retries = 0;
// проверяваме дали WiFi е свързан успешно и дали не сме изчерпали броят на неуспешните интервали
while ((WiFi.status() != WL_CONNECTED) && (retries < 10)) {
// увеличаваме брояча на интервали с едно
retries++;
// изчакваме половин секунда
delay(500);
// извеждаме точка в серийния монитор
Serial.print(".");
}
// извеждаме нова линия в серийния монитор
Serial.println();
// ако сме свързани
if (WiFi.status() == WL_CONNECTED) {
// извеждаме IP адресът получен от DHCP
Serial.println("WiFi свързан!");
Serial.println("IP адрес: ");
Serial.println(WiFi.localIP());
} else {
// иначе извеждаме съобщение за грешка
Serial.println("WiFi свързване НЕУСПЕШНО");
}
}
void loop() {
// проверяваме дали WiFi е свързан
if (WiFi.status() == WL_CONNECTED) {
// създаваме HTTPClient обект
HTTPClient http;
// задаваме сайт, към който ще правим запитване
http.begin("http://esolog.win/eso-current.php?type=load");
// правим запитване
int httpCode = http.GET();
// ако http кодът е 200 (означава "успех")
if (httpCode == 200) {
// тогава извеждаме в серийният монитор резултатът от запитването
Serial.print("Товар на РБ: ");
Serial.print(http.getString());
Serial.println("MW");
}
http.end();
}
// изчакваме 60 секунди
delay(60000);
}
Нека видим резултата:

Разбира се, резултатите може да се извеждат на свързан екран или да се съпоставят с други стройности и да се задействат аларми и т.н. Също е възможно да се изпращат данни посредством GET методът, например ако заместим ?type=load с ?temperature= и тук добавим температура отчетена от наш сензор.
⚠️ Внимание HTTP е метод за комуникация неизползващ криптиране. Използването на HTTP за трансфер на данни различни от такива предназначени за публична консумация е голяма грешка.
