Re: esp8266 + AMS + MajorDoMo - ПЕРВЫЕ ШАГИ
Добавлено: Сб июл 14, 2018 12:07 am
serghei писал(а): ↑Пт июл 13, 2018 10:05 pmТаки да и уже есть , но не работает . ser009 предоставил код , работает со страницы. Выбор срабатывания реле по времени , вручную по нажатию на экран. А вот по условию влажности не хочет. Выставляю верхнею и нижнею границы. Запоминаю. При превышению значения реле начинает бешено переключаться.СпойлерПоказатьКод: Выделить всё
/* Modul Algoritm part of Arduino Mega Server project */ /* значение по которому ведется регулирование * в примере это значени будет задаваться вручную с web */ //int value1 = 5 сек; // mode режим // 0 - ручной // 1 - по значению датчика // 2 - по времени // 3 - not defined and not contXstatus byte rele1mode = 0; /* значения максимальных и минимальых значений для включения * и выключения RELE1 */ int value_on = 0; int value_off = 100; int value_web = 0; /* время включения по умолчанию /часы, минуты/ * при необходимости можно добавить секунды */ int r1hour_on = 19; int r1minute_on = 00; int r1hour_off = 19; int r1minute_off = 15; void Regul(){ if (rele1state == 0&&rele1mode == 0&&value_web == 1){ rele1state = 1; MessText = "Выход D32. Включение с Веб"; MessLoger(String (MessText), String (Info)); #ifdef SERIAL_PRINT Serial.println("Out D32. command ON to Web"); #endif } else{}; if (rele1state == 1&&rele1mode == 0&&value_web == 0){ rele1state = 0; MessText = "Выход D32. Отключение с Веб"; MessLoger(String (MessText), String (Info)); #ifdef SERIAL_PRINT Serial.println("Out D32. command ON to Web"); #endif } else{}; if (rele1state == 0&&rele1mode == 2&&r1hour_on == int (hour())&&r1minute_on == int (minute())){ rele1state = 1; MessText = "Выход D32. Включение по времени"; MessLoger(String (MessText), String (Info)); #ifdef SERIAL_PRINT Serial.println("Out D32. command ON to time"); #endif } else{}; if (rele1state == 1&&rele1mode == 2&&r1hour_off == int (hour())&&r1minute_off == int (minute())){ rele1state = 0; MessText = "Выход D32. Отключение по времени"; MessLoger(String (MessText), String (Info)); #ifdef SERIAL_PRINT Serial.println("Out D32. command OFF to time"); #endif } else {}; /* if (rele1state == 0&&rele1mode == 1&&value_on >= dht11_h){ rele1state = 1; MessText = "Выход D32. Включение по датчику влажности"; MessLoger(String (MessText), String (Info)); #ifdef SERIAL_PRINT Serial.println("Out D32. command ON to HUM "); #endif }else {}; if (rele1state == 1&&rele1mode == 1&&value_off < dht11_h){ rele1state = 0; MessText = "Выход D32. Отключение по датчику влажности"; MessLoger(String (MessText), String (Info)); #ifdef SERIAL_PRINT Serial.println("Out D32. command OFF to HUM "); #endif } else {}; */ //-------------------------------------------- /* if (rele1state == 0&&rele1mode == 1&&value_on >= dht11_h){ // if (rele1mode == 1&&value_on >= dht11_h){ rele1state = 1; MessText = "Выход D32. Включение по датчику влажности"; MessLoger(String (MessText), String (Info)); #ifdef SERIAL_PRINT Serial.println("Out D32. command ON to HUM "); #endif } // if else if (rele1state == 1&&rele1mode == 1&&value_off <= dht11_h){ // else if (rele1mode == 1&&value_off <= dht11_h){ rele1state = 0; MessText = "Выход D32. Отключение по датчику влажности"; MessLoger(String (MessText), String (Info)); #ifdef SERIAL_PRINT Serial.println("Out D32. command OFF to HUM "); #endif } // else if */ } // void regul
Код: Выделить всё
if (rele1state == 0 && rele1mode == 1 && value_on >= dht11_h){
rele1state = 1;
}
else if (rele1state == 1 && rele1mode == 1 && value_off <= dht11_h){
rele1state = 0;
}
dht11_h >= value_on
dht11_h <= value_off
А что будет если value_on == value_off и value_on < value_off ?