esp8266 + AMS + MajorDoMo - ПЕРВЫЕ ШАГИ

Модераторы: Bagir, Ivan, Vit, Alex

serghei
Сообщения: 2265
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 259 раз
Поблагодарили: 216 раз

Re: esp8266 + AMS + MajorDoMo - ПЕРВЫЕ ШАГИ

Сообщение serghei » Пт июл 13, 2018 10:35 am

Попробуй вставить свой код в AMS. Общий принцип прост - в скетче заменяем

Код: Выделить всё

void setup(){
на подобное

Код: Выделить всё

void initAlgoritm(){
Вместо алгоритма любое название по смыслу. И так же вместо Ioop

Код: Выделить всё

void workAlgoritm(){
Соответственно на первой вкладке

Код: Выделить всё

  #ifdef NRF24_FEATURE
    nrf24Init();
  #endif
  
  initAlgoritm(); // запускается setup
  
  abstractInit();
  printInitDone();
} // setup()
И так же для Loop

Код: Выделить всё

    #ifdef NRF24_FEATURE
      nrf24Works();
    #endif
    workAlgoritm(); // запускается loop
    abstractWorks();
    endLoopWorks();
  } // modeWork
} // loop()
Дальше в IDE добавляешь новую вкладку , называешь ralgoritm , и копируешь в неё свой код.Только надо убрать всё что связано с WiFi . компа под рукой нет - проверить не могу ((.

PS Посмотри как ser009 дописал вкладку Авторегулирования. Где то здесь. ))
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
sarstab
Сообщения: 45
Зарегистрирован: Ср апр 26, 2017 10:21 pm
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: esp8266 + AMS + MajorDoMo - ПЕРВЫЕ ШАГИ

Сообщение sarstab » Пт июл 13, 2018 10:52 am

ну да я понял по другим вкладка что надо так делать толь не знаю правильно или нет

Код: Выделить всё

#ifdef Ledstrip_FEATURE

#define fadePin 5
int light;

void LedstripInit() {
 pinMode(fadePin, OUTPUT);
 digitalWrite(fadePin, LOW);
 light = 0; 
 }

//modulLedstrip = MODUL_ENABLE;
 //started("Ledstrip");
void LedstripWorks() {
  if (light == 0) {
    analogWrite(fadePin, HIGH);light = 1;
  } else {
    if(light == 1)
      digitalWrite(fadePin, LOW);light = 0;   
    }
}
#endif // Ledstrip_FEATURE
sarstab
Сообщения: 45
Зарегистрирован: Ср апр 26, 2017 10:21 pm
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: esp8266 + AMS + MajorDoMo - ПЕРВЫЕ ШАГИ

Сообщение sarstab » Пт июл 13, 2018 10:55 am

ну допустим этот вкладка у меня правильная ,как эту вкладку подключить к пир датчику
serghei
Сообщения: 2265
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 259 раз
Поблагодарили: 216 раз

Re: esp8266 + AMS + MajorDoMo - ПЕРВЫЕ ШАГИ

Сообщение serghei » Пт июл 13, 2018 11:09 am

Так по идее внутри этой вкладки все задано
СпойлерПоказать

Код: Выделить всё

void ravtoregWork(){
   
  if(digitalRead(pirPin) == HIGH )  //если сигнал с датчика высокого уровня(т.е. есть движение)
   {
     if(light == 0)   //и если свет не был включен
     {
       for(int i=0; i<=150; i++)  //то плавно включаем свет
       {
       analogWrite(fadePin, i); 
       delay(100);   //каждые 10мс увелияение на 1
       } 
       light = 1; //и передаем значение переменной, что свет включен
     }
   } 
   else  //иначе
   {
     if(light == 1) //если свет включен
     {
       for(int i=150; i>=0; i--)//плавно гасим его
       {
       analogWrite(fadePin, i);
       delay(100);
       } 
       light = 0; //и передаем значение переменной, что свет выключен
     }
   }
int sensorVal = analogRead(rainSensor);
  Serial.print(sensorVal);
if(sensorVal < sensortrigger){
    Serial.println("Water Detected!");
    digitalWrite(dryLED, LOW);
    digitalWrite(rainLED, HIGH);
   }
  else {
    Serial.println("No Water Detected!");
    digitalWrite(rainLED, LOW);
    digitalWrite(dryLED, HIGH);
   }
  delay(750); 


  Serial.print(" Requesting temperatures...");
  sensors.requestTemperatures(); // запрос на получение данных
  Serial.println("DONE");
  Serial.print("Temperature for Device 1 is: ");
  Serial.print(sensors.getTempCByIndex(0)); // получаем температуру и печатаем
}
На работе скомпилить не могу. Если код компилится - то по идее и работать должен. Как состояние передать в МД - тут надо придумать имя переменной light . Сам тяжело разбираюсь в программировании ((.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
sarstab
Сообщения: 45
Зарегистрирован: Ср апр 26, 2017 10:21 pm
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: esp8266 + AMS + MajorDoMo - ПЕРВЫЕ ШАГИ

Сообщение sarstab » Пт июл 13, 2018 11:49 am

вот что пишит IDE
СпойлерПоказать

Код: Выделить всё

Ledstrip:14: error: 'modulLedstrip' does not name a type
pirs.ino: In function 'void pirsWorks()':
pirs.ino:136:19: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
pirs.ino:139:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
pirs.ino:150:23: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
pirs.ino:153:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtemp.ino: In function 'void getTemperature(byte)':
rtemp.ino:124:83: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtemp.ino:128:84: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
когда я раскоментировал у себя во вкладке

Код: Выделить всё

modulLedstrip = MODUL_ENABLE;
 started("Ledstrip");
serghei
Сообщения: 2265
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 259 раз
Поблагодарили: 216 раз

Re: esp8266 + AMS + MajorDoMo - ПЕРВЫЕ ШАГИ

Сообщение serghei » Пт июл 13, 2018 12:04 pm

Надо дописать в модулях системы

Код: Выделить всё

byte   modulLedstrip    = MODUL_NOT_COMPILLED;
На ворнинги не смотри. Вообще оптимальный вариант для компиляции - использовать драйвера 2.4.0 - r1. Скорость возрастет вывода на страницу. Но это после отладки.
-
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
sarstab
Сообщения: 45
Зарегистрирован: Ср апр 26, 2017 10:21 pm
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: esp8266 + AMS + MajorDoMo - ПЕРВЫЕ ШАГИ

Сообщение sarstab » Пт июл 13, 2018 12:10 pm

на вкладке ажакс так и дописал эфект тотже
serghei
Сообщения: 2265
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 259 раз
Поблагодарили: 216 раз

Re: esp8266 + AMS + MajorDoMo - ПЕРВЫЕ ШАГИ

Сообщение serghei » Пт июл 13, 2018 12:29 pm

Не , на первой вкладке , где все модули системы.

Код: Выделить всё

// modules
#define MODUL_DISABLE       0
#define MODUL_ENABLE        1
#define MODUL_NOT_COMPILLED 2
byte modulRtc      = MODUL_NOT_COMPILLED;
byte modulNtp      = MODUL_NOT_COMPILLED;
byte modulSend     = MODUL_NOT_COMPILLED;
byte modulMajor    = MODUL_NOT_COMPILLED;

=======
А вообще хорошая тема. У меня на DUE 6 пиров и 5 реле. Со страницы все управляется и отображается. Есть вкладка авторегулирования для одного реле по времени, в ручную , а вот по датчику не получается. Если срабатывает условие - реле переключается в другое состояние и тут же возвращается в исходное состояние. Так и не победил.
В идеале хочется какой то код для привязки датчиков к реле. Иначе даже тупую вытяжку не сделать - если влажность превысила порог - включи вентилятор.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
eGorka
Сообщения: 129
Зарегистрирован: Чт ноя 24, 2016 10:47 am
Благодарил (а): 1 раз
Поблагодарили: 16 раз

Re: esp8266 + AMS + MajorDoMo - ПЕРВЫЕ ШАГИ

Сообщение eGorka » Пт июл 13, 2018 9:34 pm

serghei писал(а):В идеале хочется какой то код для привязки датчиков к реле. Иначе даже тупую вытяжку не сделать - если влажность превысила порог - включи вентилятор.

Код: Выделить всё

void vitagka(){ // функцию добавляем в loop (твой код есть только для 32)
  if(hum > 60) { digitalWrite(27, HIGH); }  // если влажность выше 60% включаем реле сидящее на gpio27
  if(hum < 50) { digitalWrite(27, LOW); }  // если влажность ниже 50% выключаем
}
Или надо совсем изощрённо-извращённо?
serghei
Сообщения: 2265
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 259 раз
Поблагодарили: 216 раз

Re: esp8266 + AMS + MajorDoMo - ПЕРВЫЕ ШАГИ

Сообщение serghei » Пт июл 13, 2018 10:05 pm

eGorka писал(а):
Пт июл 13, 2018 9:34 pm
Или надо совсем изощрённо-извращённо?
Таки да и уже есть , но не работает :lol: . 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
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Ответить