ESP32 http GET päring

Päringu teeme oma Raspberry Pi veebiserveri pihta. ESP32 on nagu klient ehk sina veebilehitsejaga. Veebiserveris jookseb PHP skript mis kontrollib andmeid ja lisab need andmebaasi. Päringuga anname edasi temperatuuri ja õhuniiskuse ning mürataseme väärtused.

#include <HTTPClient.h> Vajalik teek, et veebipäringuid teha.

String NOISE = "0.0";
String PROBE = "andrus1";

Loome kaks tekstilist muutuja NOISE ja PROBE. Müraaendurit pole veel ühendatud, seepärast määrame selle väärtuseks 0.0. PROBE väärtus on sinu ESP32-te teistest eristav nimi.

String serverName = "http://192.168.4.1/test.php"; Tekstiline muutuja serverName, kus kirjas Raspberry Pi aadress koos PHP-skriptiga.

loop() osas:

Esmalt on vaja kontrollida, kas ESP32 on ikka internetiga phendatud. Selleks kasutame programmikäsku WiFi.status().

if (WiFi.status() == WL_CONNECTED) { ... }
else Serial.println("ESP32 pole internetti ühendatud! ");

Juhul kui WiFi.status() on võrdeline spetsiaalse konstandiga WL_CONNECTED, siis jätkame, muidu kirjutame veateate. Edasi kirjutame koodi { … } sisse.

HTTPClient http; Loome uue HTTPClient objekti nimega http.

String serverPath = serverName + "?temp="+TEMP+"&humi="+HUMI+"&noise="+NOISE+"&probe="+PROBE; Loome uue tekstilise muutuja serverName ja selle väärtuseks määrame sarnase päringu nagu https://roheline.pjkool.ee/2023-04/teeme-tutvust-php-ga/ 2. osas.

http.begin(serverPath.c_str()); Koostame päringu aga veel ei käivita. Pane tähele c_str().

int httpResponseCode = http.GET(); Teeb GET päringu ära. Tulemuseks on arv (int) nimega httpResponseCode, millest loeme välja tulemuse ja otsustame edasise tegevuse.

if (httpResponseCode>0) {
  Serial.print("GET päringu olekukood: ");
  Serial.println(httpResponseCode);
  String payload = http.getString();
  Serial.print("GET päringu vastus: ");
  Serial.println(payload);
} else {
  Serial.print("GET päringu veakood: ");
  Serial.println(httpResponseCode);
}

Juhul kui httpResponseCode on suurem kui 0, siis on päring olnud edukas, päringu vastust me veel ei tea. String payload = http.getString(); – Loome tekstilise muutuja payload ja sinna sisse loema programmikäsuga http.getString() Raspberry Pi veebiserveri vastuse. Peaks olema tekst: OK ja olekukood: 200.

Kõige lõpuks vabastame mälu käsuga http.end();.

Veakoodide kirjeldused. Eduka päringu korral saad veebiserveri poolt tagastatud oleku koodi selgituse siit https://en.wikipedia.org/wiki/List_of_HTTP_status_codes.

HTTPC_ERROR_CONNECTION_REFUSED (-1)
HTTPC_ERROR_SEND_HEADER_FAILED (-2)
HTTPC_ERROR_SEND_PAYLOAD_FAILED (-3)
HTTPC_ERROR_NOT_CONNECTED (-4)
HTTPC_ERROR_CONNECTION_LOST (-5)
HTTPC_ERROR_NO_STREAM (-6)
HTTPC_ERROR_NO_HTTP_SERVER (-7)
HTTPC_ERROR_TOO_LESS_RAM (-8)
HTTPC_ERROR_ENCODING (-9)
HTTPC_ERROR_STREAM_WRITE (-10)
HTTPC_ERROR_READ_TIMEOUT (-11)

Vaata lisaks https://randomnerdtutorials.com/esp32-http-get-post-arduino/.