• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Проблемы с записью переменной в коде html-страницы

Cadil

New member
Есть два работающих скетча. В первом - на веб-страницу выводится температура с датчика, а во втором - с веб-страницы включается/выключается питание на нагрузку. Объединил эти скетчи в один. Все работает, за исключением вывода значения температуры на веб-страницу.
Это процедура с выводом температуры работающего скетча:
Код:
void handleRoot() {
  digitalWrite ( led, 1 );
  char temp[400];
celsius = getTemp();
Serial.println(celsius);
int tepm = celsius;
  snprintf ( temp, 400,

"<html>\
  <head>\
    <meta charset='UTF-8' >\
    <meta http-equiv='refresh' content='5'/>\
    <title>Термометр</title>\
    <style>\
      body { background-color: #ffffdf; font-family: Arial, Helvetica, Sans-Serif; Color: #bb0000; }\
    </style>\
  </head>\
  <body>\
    <center><h1>Температура:  %d *C</h1></center>\
    <center><p> Tested! </p></center>\
  </body>\
</html>",tepm
  );
  server.send ( 200, "text/html", temp );
  digitalWrite ( led, 0 );
}
А тут - температура не выводится, остальное - работает:
Код:
void handleRoot() {
  digitalWrite ( led, 1 );
  char temp[400];
celsius = getTemp();
Serial.println(celsius);
int tepm= celsius;
  
bool statrele1 = false;
//bool statrele2 = false;
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
Serial.println("HTTP server started");

// Реле 1
if( server.hasArg("statrele1") ){
if( strncmp(server.arg("statrele1").c_str(),"1",1) == 0 )
statrele1 = true;
}
else {
statrele1 = PowerRele1;
}
// Формирование страницы
String out = "";
out =
"<html>\
<head>\
<meta charset=\"utf-8\" />\
<title>Информация, управление </title>\
<style>\
body { background-color: #ffffdf; font-family: Arial, Helvetica, Sans-Serif; Color: #bb0000; }\
</style>\
</head>\
<body>\
    <center><p>  </p></center>\
    <center><h1>Температура:  %d *C</h1></center>\
    <center><p> ______________________________ </p></center>\
    <center><p>  </p></center>\
<center><h1>УПРАВЛЕНИЕ РЕЖИМОМ ПИТАНИЯ НАГРУЗКИ</h1></center>\
";

// Для реле 1
if( statrele1 ){
out+="\
<center><h1>Нагрузка находится под напряжением 220В!</h1></center> <hr width=200 size=50 align=centre color=yellow><center><h2><a href=\"/?statrele1=0\">выключить</a></h2></center>\
";
}
else {
out+="\
<hr width=200 size=50 align=centre color=grey><h2><center><a href=\"/?statrele1=1\">включить</a></h2></center>\
";
}

out+= "\
</body>\
</html>";
server.send ( 200, "text/html", out );

// Для реле 1
if( statrele1 != PowerRele1 ){
PowerRele1 = statrele1;
digitalWrite(rele1 , PowerRele1);
}
}

Как правильно записать код, чтобы переменная %d второго спойлера в строке <center><h1>Температура: %d *C</h1></center>\ читалась? Заранее благодарю за помощь.
 

arbuzmaster

New member
Попробуйте написать - "+String(tepm)+" вместо %d
Температура обычно - float
И обратите внимание - по моему у Вас ошибка в именах переменных и в первом скетче



    • int tepm = celsius;
 
Последнее редактирование:

Cadil

New member
Попробуйте написать - "+String(tepm)+" вместо %d
Температура обычно - float
И обратите внимание - по моему у Вас ошибка в именах переменных и в первом скетче



    • int tepm = celsius;
Благодарю за проделанную работу!!! Предложенный вариант "+String(tepm)+" заработал с первой попытки.
С именем переменной tepm в первом скетче ошибки нет, есть и такая переменная - строка 22.

Перешел на int осмысленно. С float еще предстоит разобраться. Если tepm назначить float, то выводится температура в таком формате: 24.00 - с нулями после точки. Хотя остальные переменные тоже в формате float - плавающая запятая. Да и первоисточник солидный - Arduino IDE.
 
Последнее редактирование:
Сверху Снизу