• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Как сделать, чтобы показания с DHT11 выводились на веб страницу?

CAP33

New member
Как сделать, чтобы показания с DHT11 выводились на веб страницу и обновлялись через определённый период?

Код:
#include <SimpleDHT.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

int pinDHT11 = 5;
SimpleDHT11 dht11;

const char *ssid = "ESPap";
const char *password = "";

ESP8266WebServer server(80);

void handleRoot() {
    server.send(200, "text/html", "You are connected");
}

void setup() {
    delay(1000);
    Serial.begin(115200);
    Serial.println();
    Serial.print("Configuring access point...");
   
    WiFi.softAP(ssid, password);

    IPAddress myIP = WiFi.softAPIP();
    Serial.print("AP IP address: ");
    Serial.println(myIP);
    server.on("/", handleRoot);
    server.begin();
    Serial.println("HTTP server started");
}

void loop() {
    server.handleClient();
 
  byte temperature = 0;
  byte humidity = 0;
 
  dht11.read(pinDHT11, &temperature, &humidity, NULL);
  
  Serial.print((int)temperature); Serial.print("*C  "  );
  Serial.print((int)humidity); Serial.println("%");
  delay(1000);
}
 

Michurinsk

New member
а если так
String webPage()
{
byte temperature = 0;
byte humidity = 0;
dht11.read(pinDHT11, &temperature, &humidity, NULL);
String web;
//web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">Температура</p>";
//web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #5191e4;margin: 0 auto;\">"+ String((int)temperature)+"</div>";
//web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">Влажность</p>";
//web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #5191e4;margin: 0 auto;\">"+ String((int)humidity)+"</div>";
web += "</div>";
return(web);
}
 
Последнее редактирование:

CAP33

New member
а если так
String webPage()
{
sensors.requestTemperatures();
byte temperature = 0;
byte humidity = 0;
dht11.read(pinDHT11, &temperature, &humidity, NULL);
String web;
//web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">Температура</p>";
//web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #5191e4;margin: 0 auto;\">"+ String((int)temperature)+"</div>";
//web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">Влажность</p>";
//web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #5191e4;margin: 0 auto;\">"+ String((int)humidity)+"</div>";
web += "</div>";
return(web);
}
При прошивке выдаёт ошибку:

Arduino: 1.6.12 (Windows 7), Плата:"Generic ESP8266 Module, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None"

D:\Кирилл\Скетчи\ESP8266_Probe_DHT11\ESP8266_Probe_DHT11.ino: In function 'void loop()':

ESP8266_Probe_DHT11:37: error: expected initializer before 'sensors'

ESP8266_Probe_DHT11:47: error: return-statement with a value, in function returning 'void' [-fpermissive]

exit status 1
expected initializer before 'sensors'
 

Michurinsk

New member
Каждая ошибка указывает на строку кода, проверьте синтаксис. Вам намекают на пропущенную ;
P. S. Извиняюсь, помоему sensors.requestTemperatures из другой библиотеки.
 
Последнее редактирование:

Сергей_Ф

Moderator
Команда форума
Arduino: 1.6.12 (Windows 7)
Обновить не хотите? Заодно уберете кириллицу из пути к Ардуино ИДЕ скетчам и библиотекам. Она может давать непредсказуемые глюки.
Пс. К ошибке это отношения не имеет, а может и имеет
 
Последнее редактирование:

Michurinsk

New member
У меня такого датчика нет... Попробуй так
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <SimpleDHT.h>
int pinDHT11 = 5;
SimpleDHT11 dht11;
MDNSResponder mdns;
const char* ssid = "ssid";
const char* password = "password";
byte arduino_mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
IPAddress ip(ip);
IPAddress gateway(router);
IPAddress subnet(255,255,255,0);
ESP8266WebServer server(80);
void setup(void){
delay(100);
Serial.begin(115200);
WiFi.begin(ssid, password);
WiFi.config(ip, gateway, subnet);
Serial.println("");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started");
}
server.on("/", [](){
server.send(200, "text/html", webPage());
});
server.begin();
Serial.println("HTTP server started");
}
void loop(void){
server.handleClient();
}
String webPage()
{
byte temperature = 0;
byte humidity = 0;
dht11.read(pinDHT11, &temperature, &humidity, NULL);
String web;
web += "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/> <meta charset=\"windows-1251\"><title>Заголовок</title><style>button{color:red;padding: 10px 27px;}</style></head>";
web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">Температура</p>";
web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #e91edc;margin: 0 auto;\">"+ String((int)temperature)+"</div>";
web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">Влажность</p>";
web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #e91edc;margin: 0 auto;\">"+ String((int)humidity)+"</div>";
web += "<div style=\"text-align:center;margin-top: 20px;\"><a href=\"/\"><button style=\"width:158px;\">Обновить</button></a></div>";
web += "</div>";
return(web);
}
 

Michurinsk

New member
Естественно выдаёт router не объявлен, потому что выложенный мною код нужно было подредактировать под себя (ssid, password, ip, router нужно заменить на свои значения)
 
Последнее редактирование:

CAP33

New member
Естественно выдаёт router не объявлен, потому что выложенный мною код нужно было подредактировать под себя (ssid, password, ip, router нужно заменить на свои значения)
ssid -название сети, password - пароль, ip - понятно, а router что означает?
 

CAP33

New member
IPAddress gateway - адрес шлюза. Полагаю что в вашей сети это роутер.
Получается, что ESP будет подключаться к роутеру и уже на него будет отсылать данные. Мне нужно, чтобы ESP сама раздавала Wi-Fi и при переходе на его IP выводила данные, не знаю, как это сделать(
 

Michurinsk

New member
Если хотите чтобы esp выступала точкой доступа, то об этом нужно было сразу сказать. Может тогда #include <WiFiClient.h> у вас лишнее?
Смотрите уроки как советовали выше
 
Последнее редактирование:
Сверху Снизу