IoT Lab - Calling HTTP Request
Schematic – ESP32 with Humidity and Temperature Sensor and LED Lights
Code
#include "DHT.h"
#include <HTTPClient.h>
#include <WiFi.h>
#include <WebServer.h>
#define DHTPIN 25 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
#define LED 12 // LED pin
DHT dht(DHTPIN, DHTTYPE);
// Replace with your network credentials
const char* ssid = "WiFi-name";
const char* password = "password";
WebServer server(80);
void setup() {
Serial.begin(115200);
// Start humidity sensor
dht.begin();
pinMode(LED, OUTPUT); // Set the LED pin as an OUTPUT
// Connect to Wi-Fi network
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
// Start the server
server.on("/", handleRoot);
server.on("/on", ledOn);
server.on("/off", ledOff);
server.begin();
Serial.println("Server started");
}
void loop() {
// Open connection
server.handleClient();
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius
float t = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C ");
// Send the current temperature to Homebridge for updating value
if(WiFi.status() == WL_CONNECTED){
HTTPClient http;
// http://192.168.137.253:51828/?temperature=36&humidity-61
// Don't forget to change IP and Port to match with your server!
String serverName = "http://192.168.137.253:51828/"; // Your server IP
String serverPath = serverName + "?temperature=" + t + "&humidity=" + h;
// Your Domain name with URL path or IP address with path
http.begin(serverPath.c_str());
// Send HTTP GET request (Send the current temperature to Homebridge)
int httpResponseCode = http.GET();
if (httpResponseCode>0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
String payload = http.getString();
Serial.println(payload);
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
// Free resources
http.end();
}
else {
Serial.println("WiFi Disconnected");
}
}
void handleRoot() {
server.send(200, "text/plain", "Hello from ESP32!");
}
void ledOn() {
digitalWrite(LED,HIGH);
server.send(200, "text/plain", "The light is on!");
}
void ledOff() {
digitalWrite(LED,LOW);
server.send(200, "text/plain", "The light is off");
}
After that, save your code and upload your code to the microcontroller.
When your code uploads completely, you can see the Serial Monitor
which is a console of your microcontroller by clicking the Magnifier icon at the top right of the screen.
In the Serial monitor
you can change the speed of exchange messages with the Serial Monitor and microcontroller by clicking the dropdown at the bottom right of the screen. (The speed should be the same with your speed in the code Serial.begin(115200)
)
In the Serial monitor
, you will see the IP of your microcontroller.
No Comments