• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Беспроводной термостат для автономного отопления.

R6MF49T2

New member
Добрый день. Есть задача на двух ESP8266 реализовать беспроводной термостат для котла. Одно устройство представляет из себя E-ink дисплей, датчик температуры/влажности/давления (последние два только для отображения) и собственно ESP8266, батарейное питание. Второе по сути ESP8266 + реле, с питанием от сети. Wi-fi точка доступа представлена уже имеющемся роутером чтоб не засорять эфир. Логика работы предполагаю следующую: первое устройство просыпается раз в n минут, опрашивает датчик, принимает решение о включении/выключении котла, при необходимости подключается к wi-fi сети, передаёт команду управления и получает статус, отключается от wi-fi, отрисовывает экран, засыпает. Второе устройство всё время остаётся подключенным к сети и по приходу команды либо включает, либо выключает реле и подтверждает принятый пакет своим статусом.
Теперь собственно вопрос, будет ли достаточно для решения этой задачи UDP пакетов при использовании esp в режиме station nonos?
Нет ли примеров по передаче/приёму udp пакетов?
 

Юрий Ботов

Moderator
Команда форума
Учитывая что это некий котел, а UDP, в принципе, не гарантирует доставки пакета надо серьезно подумать что будет с котлом если пакеты почему то "не дойдут"... Если ничего страшного - тогда используйте, а лучше поставьте параллельную систему для аварийного отключения в случае возникновения опасных параметров.
 

R6MF49T2

New member
Учитывая что это некий котел, а UDP, в принципе, не гарантирует доставки пакета надо серьезно подумать что будет с котлом если пакеты почему то "не дойдут"... Если ничего страшного - тогда используйте, а лучше поставьте параллельную систему для аварийного отключения в случае возникновения опасных параметров.
Котёл обычный бытовой, если реле будет постоянно замкнуто то будет просто поддерживать температуру в контуре, абсолютно штатный режим работы при отсутствии внешнего термостата, самое страшное чем может обернутся - духота в помещении и соответствующие счета за газ.
К тому же в моём случае гарантия доставки пакетов планирую реализовать софтварно.
Пока меня больше волнует следующие вопросы:
В режиме station, возможен одновременный приём udp пакетов от нескольких устройств одновременно? Допустим в будущем если захочу увеличить количество датчиков для нескольких помещений и необходимо будет принимать решение по наименьшей температуре.
В режиме deep sleep по срабатыванию таймера выполнение начинается с user_init, а в какой секции можно разместить код выполняемый однократно при подаче питания на устройство? Например перерисовывать весь дисплей (800х600px) есть смысл только однократно, а в дальнейшем при обновлении только стирать и дозаписывать изменившиеся данные.
 

shuraf

Member
Какой дисплей будет использоваться?
Какую среду разработки планируете использовать?
 

R6MF49T2

New member
По deep sleep совсем засада. Во первых пока не удаётся определить запуск произошёл по включению питания или же по таймеру из сна. Во вторых хотелось бы кнопками устанавливать необходимую температуру, а красивого решения по реализации обработки нажатия кнопок в глубоком сне не нашёл ещё.
 

AndrF

Active member
Я делаю подобное (пока на макетке - сейчас жду плату - дюже медленно ползет из Китая). Но в сон загнать не пытаюсь, так как управление мне нужно с возможностью удаленного включения.

Дисплейчик - недорогой OLED 1,3" (все вместе потребляет 0,5 ватта). Датчик температуры DS18B20, фоторезистор (для управления яркостью дисплея), ну и DS3231 как часы. Синхронизация времени с NTP серверов. Кнопок управления нет вообще - все со смартфона.

Пишу используя Microsoft Visual Stidio.

Котловую часть еще не делал, но там все просто - запитка будет от самого котла (5V там есть). Твердотельные релюшки. Хочу еще сделать возможность перезагрузки котла - они зачастую имеют особенность не восстанавливать свою работу (после того как во время их работы был отключен газ) пока не нажмешь на Reset... А если дома никого нет, то кнопку нажать некому...

Самая засада будет в корпусе - делать мне их особо не чем... Если бы найти кого кто напечатал взаимовыгодно...
 

Вложения

R6MF49T2

New member
Получается задачи схожи только с первого взгляда.
Корпус планирую делать на чпу фрезере из алюминьки или пластика, давно стоит полусобранный, всё руки не доходят дособрать и освоить. Но это уже на завершающем этапе.
 

AndrF

Active member
Корпус планирую делать на чпу фрезере из алюминьки или пластика, давно стоит полусобранный, всё руки не доходят дособрать и освоить. Но это уже на завершающем этапе.
У вас большой, а у меня немногим больше спичечного коробка...
 

pvvx

Активный участник сообщества
1) Определить причину запуска:
функция system_get_rst_info();
возвращает структуру:
---------------------------
в которой в reason указан код причины:
enum rst_reason {
REANSON_DEFAULT_RST = 0, // normal startup by power on
REANSON_WDT_RST = 1, // hardware watch dog reset
// exception reset, GPIO status won’t change
REANSON_EXCEPTION_RST = 2,
// software watch dog reset, GPIO status won’t change
REANSON_SOFT_WDT_RST = 3,
// software restart ,system_restart , GPIO status won’t
change
REANSON_SOFT_RESTART = 4,
REANSON_DEEP_SLEEP_AWAKE= 5, // wake up from deep-sleep
REANSON_EXT_SYS_RST = 6, // external system reset
};
В 10..50% вместо REANSON_DEEP_SLEEP_AWAKE получите REANSON_EXCEPTION_RST. Баг с версий SDK ещё 1.4....
Кроме того в китай-SDK такая инициализация, что это значение может быть переписано до старта в Arduino и т.д.
 

pvvx

Активный участник сообщества
У меня такого не наблюдается.
Определяется точно. Проверял в течении суток с интервалом сна 1 минута.
Вам же всё равно, т.к. отрабатываете рекламу от Espressif и за второй год не представили ни одного примера с яко-бы вашими сделанными плюшками (все они виртуальные и сделаны во сне) :) Код перехода в deep_sleep в IRAM моет посмотреть любой и найти эту ошибку выхода на "протектед" по команде ret в область уже отключенного "кэш" Flash и самой Flash (переведенной в sleep). :p Тактироание сигналов в RTC идет с частотой внутреннего RC источника на пару us, а CPU пашет на 83MHz и взвод флага отключения срабатывает с задержкой в пару us, за которые CPU успевает нарваться на “протектед” гуляя и исполняя код отключенной шины “кэша” Flash :p Так бездарно написано всё в SDK от Espressif :) Вам уже несколько раз это описано и сказано получить бабло в их Баунти, да оплатить им свой спам на данном сайте :) А то они в инициализации накатали большой и страшный код по вычислению почему происходит просыпание по deep_sleep не с тем флагом, но это не всё равно работает, т.к. саму ошибку не исправляет :p
 
Последнее редактирование:

pvvx

Активный участник сообщества
Он сказал: "А на ... ?!"
Увы, Он оказался прав..
Ну типа про то и разговор. Кто-то ездит на раздолбанном ВАЗ, а кто на нормальной машине...
Зачем управлять котлом через ESP8266, если это большой баг от Espressif? :) ESP8266 годиться только для игры - "вылови новый баг".
 

pvvx

Активный участник сообщества
Разница между нами в том, что я делаю по документации и исключительно (почти) на основе SDK.
"Делаете" на основе бажного SDK, т.к. не купить для "дела" нормальный чип? (Всё истратили на "мицубиси" в кредит?) :)
Вам же "делать", а нам баловаться и изучать основы. Вот и разница.
И какие ещё вытирания ног, если вы никогда не приводите никаких фактов, кроме ваших снов наяву... :(
PS: По поводу авто, с заботой о вашем здоровье, не ездите на тазиках без рамы, а в крайнем случае возьмите что на батарейке… У меня ныне только такие…
 
Последнее редактирование:

serge.zernov

New member
Интересно, я вот подписался на новости сайта обсуждений esp8266.ru для того чтобы информацию получать про продукты ESP. Но почемуто читаю писания и смайлики какого то кадра, который видимо продаёт что то на RTL, и видимо, это у него плохо получается. Поэтому все свои мечты (про мицубиси и видимо небажный SDK, перемежая смайликами) он транслирует напрямую сюда. Буквально в каждой теме. С переходом на личности и типа подколками с обилием смайликов. Это какой то капец. Видимо это его вотчина и он дорог модераторам как экспонат. Ну ок.
 

pvvx

Активный участник сообщества
Интересно, я вот подписался на новости сайта обсуждений esp8266.ru для того чтобы информацию получать про продукты ESP. Но почемуто читаю писания и смайлики какого то кадра, который видимо продаёт что то на RTL, и видимо, это у него плохо получается. Поэтому все свои мечты (про мицубиси и видимо небажный SDK, перемежая смайликами) он транслирует напрямую сюда. Буквально в каждой теме. С переходом на личности и типа подколками с обилием смайликов. Это какой то капец. Видимо это его вотчина и он дорог модераторам как экспонат. Ну ок.
Просто существуют кадры, которым информация по ESP не нужна, а нужна одна реклама и если существует какой-то баг в ESP, то всегда появляются недовольные, типа вас с провокациями и уходом от темы.
И по 95% модулей, описанных на сайте, везде приведена техническая информация по ним, разбавленная вот такими недовольными как вы. По вашему я их все продаю. Сначала 2 года ESP8266, потом другие…
Попробуйте изменить свой рекламный стиль и задать именно технический вопрос по ESP8266. Посмотрим, кто вам ответит и найдет путь решения… Форум должен быть живым, а вопрошающие не хотят ждать ответа месяцами или получать рекламные уловки от продавцов ESP, типа вас...
Возьмите данную тему и прочтите c самого начала. Пользователи сайта в ней отписались автору, что устанавливать ESP8266 на ответственные устройства не стоит. Потом оцените саму техническую часть автора темы – он хочет подключить экран и использовать батарейное питание. Проанализируйте, какой WiFi-Soc чип для этого будет лучше в том-же ценовом диапазоне и будет менее мешать другим устройствам WiFi в доме, тем более автор указывает на программирование в нативном СИ c SDK…

Лично для вас, дубль в десятый раз про ошибку в deep_sleep:
deep_sleep_error_1.gif deep_sleep_error.gif
Т.е. вместо того, чтобы написать:
Код:
void __attribute__ ((noreturn)) system_deep_sleep_local_2(void)
{
    ....
    IO_RTC_2 = 1<<20; // rtc_enter_sleep()
    while(1);
}
Лучше накатать кучу кода в инициализацию SDK по разбору "почему приходит не тот флаг"...
Подождите ещё лет десять, когда Espressif исправит сотни глобальных ошибок в своем закрытом SDK...
Есть какие-то технические вопросы? :)
 
Последнее редактирование:

R6MF49T2

New member
nikolz, pvvx, спасибо за информацию. Даже если есть ошибка, в данном случае мне вполне достаточно определить стартанул ли чип normal startup by power on или по другой причине. Хотя конечно наличие таких багов сильно подрывает доверие к чипу, неизвестно какой стабильности в работе ожидать.
Проект чисто хоббийный, и пока только макетный вариант, готов рассмотреть и изучить другие чипы. pvvx, может посоветуете модуль с минимальной обвязкой, минимальным потреблением? Из интерфейсов интересует только SPI(лучше два), ADC и пару GPIO.

Ну и всех разбирающихся в ESP прошу так же заглянуть в тему https://esp8266.ru/forum/threads/terjaetsja-udp-paket.2683/
 

pvvx

Активный участник сообщества
Все темы на ESP8266 объединились вокруг пары вопросов и пробить их не могут:
1) Как сделать малое потребление для автономных исполнений
2) Как сделать быструю реакцию при просыпании из deep_sleep
3) Как обеспечить SSL
Эти три вопроса на ESP8266 не решаются без дополнительных внешних компонентов. Посмотрите другие темы - в них есть частные решения.
Остальные вопросы сводятся к обучению программирования на СИ, С++, JavaScript и т.д...
Предложить что-то конкретное, с готовым примером, не могу. Ещё не сделал (точнее не оформил).
Кандидатом для автономных исполнений с быстрой реакцией просыпания на события изменения пинов, или ADC, или ... пока вижу RTL8710BN. В стандарте, без всяких доп.элементов, при активности просыпания из простого sleep (прерываний от GPIO, ADC, UART,...) он потребляет к 200 мкА и не требует никакой перезагрузки (программа как шла, так и идет далее после вставки кода входа в sleep). Deep_sleep с просыпанием от пинов тоже есть. Но на него пока нет Arduino.
 
Последнее редактирование:

R6MF49T2

New member
Все темы на ESP8266 объединились вокруг пары вопросов и пробить их не могут:
1) Как сделать малое потребление для автономных исполнений
2) Как сделать быструю реакцию при просыпании из deep_sleep
3) Как обеспечить SSL
Эти три вопроса на ESP8266 не решаются без дополнительных внешних компонентов. Посмотрите другие темы - в них есть частные решения.
Остальные вопросы сводятся к обучению программирования на СИ, С++, JavaScript и т.д...
Предложить что-то конкретное, с готовым примером, не могу. Ещё не сделал (точнее не оформил).
Кандидатом для автономных исполнений с быстрой реакцией просыпания на события изменения пинов, или ADC, или ... пока вижу RTL8710BN. В стандарте, без всяких доп.элементов, при активности просыпания из простого sleep (прерываний от GPIO, ADC, UART,...) он потребляет к 200 мкА и не требует никакой перезагрузки (программа как шла, так и идет далее после вставки кода входа в sleep). Deep_sleep с просыпанием от пинов тоже есть. Но на него пока нет Arduino.
Ещё раз спасибо.
Не вижу смысла использовать доп внешние компоненты, не по фэншую это. Производительности чипов и так за глаза, я за минималистические решения.
RTL8710BN попробую, полез гуглить про него. Вы вероятно с ней уже поработали и может подскажете какие модули наиболее удачные? Не могу сейчас найти но где-то читал что у каких то модулей есть проблема с светодиодом в режиме слип, возможно есть ещё какие-то скрытые камни.
И правильно я понимаю что есть опыт использования eclipse в качестве рабочей среды под этот чип? Недолюбливаю я Arduino что-то.
 
Сверху Снизу