Ключевое ?лово

vk

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Железо для умного дома

ТЕМА: Конструктор кода в конструкторе прошивки ESP8266

Конструктор кода в конструкторе прошивки ESP8266 21 Фев 2017 09:54 #17351

  • svkov
  • svkov аватар
  • Не в сети
  • Новый участник
  • Сообщений: 1
  • Спасибо получено: 1
  • Репутация: 0
Добрый день.
Понадобилась рассылка уведомлений по событиям GPIO на все номера из списка доступа.
С помощью авторов набросал код для КК

В конструкторе кода в Количество настроек скопировать - NomerShablinaSMS_on, NomerShablinaSMS_off, InputGPIO_SMS - появится вкладка Designer code options с этими настройками
Отправляет на номера (до 5 шт) указанные в списке доступа СМС из шаблона NomerShablinaSMS_on (нумерация с 0) при срабатывании GPIO № Input_GPIO и СМС из шаблона NomerShablinaSMS_off при обратном измененим GPIO
Первым в списке доступа должен быть основной номер рассылки
При изменении GPIO - запоминаем событие и отправляем СМС раз в 30 сек (можно изменит с таймере) последовательно на номера указанные в списке доступа.
Может позже перепишу - №СМС в массив и цикл на обработку. Ну и не GPIO штук 5 и тоже в цикл. Сейчас уже некогда. А было нужно срочно.
//Отправка СМС v 0.9  !!!!!!!!!!!! Работает !!!!!!!!!!!!!!
// В конструкторе кода в Количество настроек скопировать - NomerShablinaSMS_on, NomerShablinaSMS_off, InputGPIO_SMS - появится вкладка Designer code options с этими настройками
// Отправляет на номера (до 5 шт) указанные в списке доступа СМС из шаблона NomerShablinaSMS_on (нумерация с 0) при срабатывании GPIO № Input_GPIO и СМС из шаблона NomerShablinaSMS_off при обратном измененим GPIO
// Первым в списке доступа должен быть основной номер рассылки
// При изменении GPIO - запоминаем событие и отправляем СМС раз в 30 сек (можно изменит с таймере) последовательно на номера указанные в списке доступа.
// Может позже перепишу - №СМС в массив и цикл на обработку. Ну и не GPIO штук 5 и тоже в цикл.
// sv-kov@yandex.ru
//_________________________________________________________________________________
bool sms = 0;  // отправлено всем при 1
bool sms1 = 0;
bool sms2 = 0;
bool sms3 = 0;
bool sms4 = 0;
bool sms5 = 0;
bool fl1  = 0; // флаг для 1 смс за 1 таймер
int  NomTel = 1; 
char smsText[161]; // для смс
int  NomSMS = 1; // номер шаблона SMS

// Настройки GPIO
uint8_t gpio = 2; //номер гпио выход
const bool inGPIOpok = 1;  // разомкнут
const bool inGPIOnaj = 0;  // замкнут 
bool gpio0 = 1;    // текущее состояние GPIO
bool gpio1 = 1;    // предидущее состояние GPIO

void ICACHE_FLASH_ATTR
startfunc(){
// выполняется один раз при старте модуля.
gpio = sensors_param.cfgdes[2];
}

void ICACHE_FLASH_ATTR
 timerfunc(uint32_t  timersrc) {
// выполнение кода каждую 1 секунду
gpio0 = digitalRead(gpio);

//if (gpio0 != gpio1 && sms==0) {  //  если надо чтобы 
if (gpio0 != gpio1) {  // !!!!!!!!!!!!! лучьше так отправка смс о пропадании/появлении сети 220  
sms = 1;  
sms1 = 1;
sms2 = 1;
sms3 = 1;
sms4 = 1;
sms5 = 1;
NomTel = 1;
  }
  
if (gpio0 != gpio1 && gpio0 == inGPIOpok) { NomSMS=sensors_param.cfgdes[0]; }
if (gpio0 != gpio1 && gpio0 == inGPIOnaj) { NomSMS=sensors_param.cfgdes[1]; } 
replacesens(NomSMS+200,smsText);

gpio1 = gpio0;

if(timersrc%30==0){
// выполнение кода каждые 30 секунд
fl1 = 0;

if (sms1==1 || sms2==1 || sms3==1 || sms4==1 || sms5==1) {    

if (sms1==1 && NomTel==1 && fl1==0) {
os_sprintf(datasms,smsText);
os_sprintf(sensors_param.tel,sensors_param.cnrtel[0]);sim_sms();
sms1 = 0;
fl1 = 1;
NomTel = 2;
    }

if (sms2==1 && NomTel==2 && fl1==0 && sensors_param.cnrtel[1]!="")  {
os_sprintf(datasms,smsText);
os_sprintf(sensors_param.tel,sensors_param.cnrtel[1]);sim_sms();
sms2 = 0;
fl1 = 1;
NomTel = 3;
if (sensors_param.cnrtel[2]=="")  { sms = 0; }
    }

if (sms3==1 && NomTel==3 && fl1==0 && sensors_param.cnrtel[2]!="")  {
os_sprintf(datasms,smsText);
os_sprintf(sensors_param.tel,sensors_param.cnrtel[2]);sim_sms();
sms3 = 0;
fl1 = 1;
NomTel = 4;
if (sensors_param.cnrtel[3]=="")  { sms = 0; }
    }

if (sms4==1 && NomTel==4 && fl1==0 && sensors_param.cnrtel[3]!="")  {
os_sprintf(datasms,smsText);
os_sprintf(sensors_param.tel,sensors_param.cnrtel[3]);sim_sms();
sms4 = 0;
fl1 = 1;
NomTel = 5;
if (sensors_param.cnrtel[4]=="")  { sms = 0; }
    }

if (sms5==1 && NomTel==5 && fl1==0 && sensors_param.cnrtel[4]!="")  {
os_sprintf(datasms,smsText);
os_sprintf(sensors_param.tel,sensors_param.cnrtel[4]);sim_sms();
sms4 = 0;
fl1 = 1;
NomTel = 1;
sms = 0;
    }    

os_sprintf(sensors_param.tel,sensors_param.cnrtel[0]);
  }
 }
}

void webfunc(char *pbuf) {
if (digitalRead(gpio)==inGPIOpok) { 
os_sprintf(HTTPBUFF,"<br> - 1 - %s",smsText); // вывод данных на главной модуля
}
else {
os_sprintf(HTTPBUFF,"<br> - 2 - %s",smsText); // вывод данных на главной модуля
  }
}
Администратор запретил публиковать записи гостям.
Спасибо сказали: Geosan

Конструктор кода в конструкторе прошивки ESP8266 24 Фев 2017 22:10 #17394

  • dmitriynet
  • dmitriynet аватар
  • Не в сети
  • Завсегдатай
  • Сообщений: 186
  • Спасибо получено: 31
  • Репутация: 2
Dmitry77 пишет:
Термостат.
От время в первой строке (час,мин)до время во второй строке(час,мин) если температура упадет ниже темп вкл, то включит гпио, если будет выше чет темп выкл то выключит.
Когда наступит время указанное во второй строке будет поддерживать температуру указанную в окошках второй строки.
Кнопка режим переключает режимы последовательно : всегда гпио выключенно ,холодостат(обратная логика термостату) , термостат , гпио выход всегда включен.
Сделана задержка на обрывы датчика мелкие,до минуты ,чтоб не дергать котел или насос на переодические обрывы датчиков,помнит значение перед обрывом.Это 0,+85,+255 градусов.
Датчик ds18b20 dsw1 ,можно изменить на другой в 16 строке.
Выход гпио 16,можно изменить в 8 строке.

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Помогите пожалуйста с кодом! Нравится этот термостат единственное условие мне нужно выставлять временные рамки.
Например: включить термостат с 9-00 до 11-00, а потом включить его с 20-00 до 24-00
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 25 Фев 2017 00:53 #17395

  • tolyan23
  • tolyan23 аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 84
  • Спасибо получено: 6
  • Репутация: 0
Здравствуй автор проекта! Скажи пожалуйста сколько таймеров допускается использовать в прошивке? Использовал 2 таймера все нормально работало, довел число таймеров до 7 и значительно усложнил код и он стал совсем неадекватно работать, вот думаю может есть ограничение на число таймеров?
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 27 Фев 2017 12:00 #17428

  • tsv
  • tsv аватар
  • Не в сети
  • Новый участник
  • Сообщений: 9
  • Репутация: 0
Здравствуйте! Подскажите как в конструкторе кода работать с "медленными" устройствами (например, электроуправляемый шаровый кран, для открытия/закрытия которого требуется 3-4 секунды)? Если код не успевает завершиться за 1 секунду, он прерывается и начинается с начала? Спасибо!
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 27 Фев 2017 12:19 #17429

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7195
  • Спасибо получено: 1114
  • Репутация: 194
tolyan23 , ограничений нет вроде, главное чтобы хватало ОЗУ.

tsv , тут нужно использовать таймеры. Примеры есть на 1 странице и в документации.
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 02 Март 2017 10:32 #17468

  • tammat
  • tammat аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 93
  • Спасибо получено: 3
  • Репутация: 0
@Dmitry77
Добрый день!

Ставлю код в КК. Датчики пока не подключены.
Поменял
// tempVhod = data1wire[0] ;//датчик температуры dsw1
tempVhod=sensors_param.cfgdes[9];
Получаю картинку.

В чем проблема?
Спасибо.
Администратор запретил публиковать записи гостям.
Модераторы: FlyRouter
Время создания страницы: 0.187 секунд

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.