Доброго времени Наваял простенький инкубатор для дома на 10 яиц с контролем температуры, влажности и вращения. Однако в силу неполного знания web интерфейс получился простенький и значения которые я могу записать в EEPROM для использования могут быть только строковые целочисленные типа int . При этом выводить на страничку значения температуры в float я могу/
Я так понял проблема в этом кусочке кода:
А в частности в строке
if (isValidNumber(server.arg(i)) )
heatOn_ = server.arg(i).toInt();
- выручайте братцы, как привести в божеский вид и сохранять температуру с десятыми/.
ps - при записи и чтении float в EEPROM использую две функции и они полностью рабочие:
Я так понял проблема в этом кусочке кода:
Код:
//////////////////////////////////
/// used for error checking ///
//////////////////////////////////
boolean isValidNumber(String str) {
for (byte i = 0; i < str.length(); i++)
{
if (isDigit(str.charAt(i))) return true;
}
return false;
}
////////////////////////////////////////////////////////////////////
// handler for web server request: http://IpAddress/submit //
////////////////////////////////////////////////////////////////////
void handle_submit() {
webMessage = "";
////////////////////////////////////////////////////////////////////
//***Контроллер Вкл\Выкл
if (server.args() > 0 ) {
for ( uint8_t i = 0; i < server.args(); i++ ) {
//***Контроллер Вкл\Выкл
if (server.argName(i) == "powerOn") {
if (server.arg(i) != "")
{
if (isValidNumber(server.arg(i)) )
powerOn = server.arg(i).toInt();
else
webMessage += "Power On-Off must be a number<br>";
}
else
webMessage += "Power On-Off is required<br>";
}
////////////////////////////////////////////////////////////////////
//***Обогрев Вкл\Выкл
if (server.argName(i) == "heatOn_") {
if (server.arg(i) != "")
{
if (isValidNumber(server.arg(i)) )
heatOn_ = server.arg(i).toInt();
else
webMessage += "Heat On must be a number<br>";
}
else
webMessage += "Heat On is required<br>";
}
if (server.argName(i) == "heatOff_") {
if (server.arg(i) != "")
{
if (isValidNumber(server.arg(i)) )
heatOff_ = server.arg(i).toInt();
else
webMessage += "Heat Off must be a number<br>";
}
else
webMessage += "Heat Off is required<br>";
}
if (webMessage == ""){
EEPROM.begin(512); //Начало работы с EEPROM модуля esp8266
EEPROM.write(10, powerOn); //Запись значения ВКЛЮЧЕНИЕ/ВыКЛЮЧЕНИЕ контроллера
// EEPROM.write(11, heatOn_); //Запись значения температуры на ВКЛЮЧЕНИЕ обогрева
// EEPROM.write(12, heatOff_); //Запись значения температуры на ВыКЛЮЧЕНИЕ обогрева
EEPROM_float_write(50, heatOn_);
EEPROM_float_write(60, heatOff_);
EEPROM.write(21, humiOn); //Запись значения на ВКЛЮЧЕНИЕ вентилятора
EEPROM.write(22, humiOff); //Запись значения на ВыКЛЮЧЕНИЕ вентилятора
// EEPROM.write(21, fanOn); //Запись значения на ВКЛЮЧЕНИЕ вентилятора
// EEPROM.write(22, fanOff); //Запись значения на ВыКЛЮЧЕНИЕ вентилятора
EEPROM.commit(); //Окончание работы после записи с EPROM модуля esp8266
setRtc(seconds, minutes, hours, day, date, month, year);
// void setRtc(byte seconds, byte minutes, byte hours, byte day, byte date, byte month, byte year);
}
}
power();
controlTemp();
controlHumi();
setHTML();
server.send(200, "text/html", webString); // send to someones browser when asked
delay(100);
}
if (isValidNumber(server.arg(i)) )
heatOn_ = server.arg(i).toInt();
- выручайте братцы, как привести в божеский вид и сохранять температуру с десятыми/.
ps - при записи и чтении float в EEPROM использую две функции и они полностью рабочие:
Код:
void EEPROM_float_write(int addr, float val_){ //Запись в ЕЕПРОМ
скрин с проектом прилагаю ,
EEPROM.begin(512); //Начало работы с EEPROM модуля esp8266
byte *x = (byte *)&val_;
for(byte i = 0; i < 4; i++) EEPROM.write(i+addr, x[i]);
EEPROM.commit(); //Окончание работы после записи с EPROM модуля esp8266
}
float EEPROM_float_read(int addr){ //Чтение из ЕЕПРОМ
EEPROM.begin(512); //Начало работы с EEPROM модуля esp8266
byte x[4];
for(byte i = 0; i < 4; i++) x[i] = EEPROM.read(i+addr);
float *y = (float *)&x;
EEPROM.commit(); //Окончание работы после записи с EPROM модуля esp8266
return y[0];
}
Вложения
-
80.8 KB Просмотры: 14