Categories
ESP8266 NodeMCU

ESP 8266 – да направим първото си HTTP запитване

В предишната статия показахме как да свържем нашето 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 за трансфер на данни различни от такива предназначени за публична консумация е голяма грешка.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *