Estoy usando NodeMCU e hice el codigo un poco diferente, tampoco cuento con el sensor calidad de aire.
Aprendi tambien que el ESP8266 puede manejar varios servidores al tiempo, asi que genere uno normal y otro que devuelve la API que la profesora uso:
// Curso Platzi de IoT 2019 en 2026.
// Programacion de sensores de calidad de aire humedad y temperatura para IoT
//Librerias
#include "DHT.h"
#include "ESP8266WiFi.h"
#include "ESP8266WebServer.h"
#include "aREST.h"
//Definiciones
#define DHTPIN 4 // Pin to connect DHT sensor (GPIO number) D2
#define DHTTYPE DHT11 // Define DHT 11 or DHT22 sensor type
//#define MQ A0 // Aun no tengo este sensor
//WiFi
const char* ssid = "666";
const char* password = "666";
//Crear instancia del servidor
ESP8266WebServer server(80); //Servidor Web puerto 80
WiFiServer restServer(81); //Servidor para aREST (puerto debe ser diferente)
//Inicializacion
DHT dht(DHTPIN,DHTTYPE);
aREST rest = aREST();
//Variables para API
float humidity, temperature;
void handleRoot() {
String html = "<!DOCTYPE html><html>";
html += "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">";
html += "<title>ESP8266 Web Server</title></head>";
html += "<body><h1>Hello Kenneth, from ESP8266!</h1>";
html += "<p>This is a basic web server.</p></body>";
html += "</html>";
server.send(200, "text/html", html); // Enviar pagina web HTML
}
void setup() {
Serial.begin(9600);
delay(10);
dht.begin();
//Init Variables API
rest.variable("temperature",&temperature);
rest.variable("humidity",&humidity);
//Configuracion aREST
rest.set_id("1");
rest.set_name("esp8266");
// Connect to WiFi network
Serial.print("");
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); // Print the IP address
// Iniciar servidores
server.on("/", handleRoot); // Handle requests to the root URL (/)
server.begin(); // Start the web server
restServer.begin(); // Start aREST server
Serial.println("HTTP server started");
}
void loop() {
delay(3000);
float tc = dht.readTemperature(false); //Read temperature in C
float tf = dht.readTemperature(true); //Read Temperature in F
float hu = dht.readHumidity(); //Read Humidity
//Actualizar variables para aREST
temperature = tc;
humidity = hu;
Serial.print("Temp: ");
Serial.print(tc);
Serial.print(" C, ");
Serial.print(tf);
Serial.print(" F, Hum: ");
Serial.print(hu);
Serial.println("%");
//Servidor web normal
server.handleClient();
//Servidor aREST
WiFiClient client = restServer.available();
if (client) {
rest.handle(client);
}
}