Программирование и настройка WiFi контроллера управления вентилятором

В предыдущей статье я рассказал об сборке нового контроллера управления влажностью2000. Теперь расскажу об особенностях программы, алгоритмах управления и настройках этого контроллера.

ESP8266, в отличие от Atmegи328, на которой была реализована предыдущая версия, имеет очень привлекательные характеристики:

 

 

 

 

Atmega328 ESP8266
Тактовая частота контроллера(памяти), МГц 16 80(40)
ОЗУ, Кбайт 2 80
ПЗУ (для программы), Кбайт 32 512
EEPROM, Кбайт 1 4

Это все вкупе со встроенным WiFi позволяет реализовать функции встроенного WEB-сервера, не экономя память для текстовых строк.

А вот с GPIO у ESP8266 довольно плоховато, поэтому, такая роскошь, как управления семисегментным индикатором напрямую ему не доступна. Поэтому и выбран индикатор на микросхеме TM1637, требующий для подключения всего два вывода.

Среда разработки

Так как я освоил разработку управляющей программы для ESP8266 под Arduino IDE, то много старого кода, обеспечивающего основную логику работы контроллера управления вентилятором сохранилось с предыдущей версии.

В основном интересно было перенести хорошо зарекомендовавший себя алгоритм, реализующий конечный детерменированный автомат состояний, описанный в таблице переходов состояний:

fdm

Подошли без проблем и ардуиновские библиотеки DHT для работы с датчиками влажности/температуры от Adafruit и библиотеку работы с индикатором на TM1637 DigitalTube.

Здесь можно посмотреть подробное описание использования Arduino IDE для программирования ESP8266

Реализация новых функций

Очень неудобно делать WiFi контроллеры, в которых зашиваются параметры подключения к сети. Представляете, во что выльется смена имени точки доступа или пароля при наличии десятка таких контроллеров дома?

Поэтому в данном программе реализованы функции сохранения параметров подключения в энергонезависимую память EEPROM и настройка их по сети. Структура для сохранения параметров, а также чтение и запись ее реализованы в файлах WC_EEPROM.h и WC_EEPROM.cpp моего проекта. Верификация чтения и записи производится при помощи вычисления контрольной суммы конфигурации и сравнения ее с записанной в EEPROM.

Кроме конфигурации сети в память сохраняются также все таймауты и прочие параметры алгоритма управления вентилятора, что позволяет оптимизировать и настраивать данный контроллер прямо «по воздуху».

Отображение режимов работы, настройка конфигураций контроллера, а также непосредственное управление вентилятором реализовано при помощи встроенного WEB-сервера (фалы WC_HTTP.h и WC_НTTP.cpp)

Алгоритм настройки точки доступа следующий:

  • Если ESP-шка не смогла подключиться к прописанной в конфигурации EEPROM точке доступа, то она поднимает свою точку доступа и по адресу 192.168.4.1, позволяет сконфигурировать.
  • Ну а если подключилась, то работает в штатном режиме.

Главная страница  WEB-сервера показывает основные параметры контроллера и позволяет вручную включить/выключить контроллер (аналог нажатия кнопки ручного управления)

Экран контроллера

 

Здесь же можно перейти  на страницу сетевых настроек

Экран сетевых настроек

 

И страницу настроек алгоритма работы контроллера

Экран 3

С этих двух страничек можно выполнить перезагрузку контроллера и сброс всех настроек «по умолчанию».

«Наводить красоту» на интерфейс я еще планирую в будущем, когда концепция умного дома на WiFi более менее устаканится у меня в голове.

Еще одна функция, реализованная в этой программе — часы реального времени, синхронизирующиеся по NTP протоколу в интернете. (Файлы WC_NTP.h и WC_NTP.cpp)

Описание основного алгоритма описывать не буду, логика осталось прежней и почитать про нее можно в этой статье. Основные изменения коснулись дисплея. Хочу обратить внимания на одну «фичу» — функцию DisplaySpecialChar(), которая позволяет по битовой маске вывести любой символ, который можно придумать для отображения на семисегментном индикаторе. Я придумал вот такой символ «процентов» в отображении влажности

2002

 

И символ «градусов» при отображении температуры

2004

Биты в битовой маске соответствуют сегментам индикатора.

Ну и последняя из новых функций — сохранение параметров на сервер в интернете для отображения и последующего анализа. Сохраняются значения влажности, температуры, аналогового порта с фоторезистором для подстройки порога срабатывания освещения, время работы вентилятора, время горения света и UPTIME-время работы контроллера от последней перезагрузки.

Запись на сервер происходит в двух режимах. С большей периодичностью записываются параметры, когда в ванной «что-то происходит», в это время либо горит свет, либо работает вентилятор. Все тайминги настраиваются через WEB-интерфейс.

Сохраняются данные на мой сервер в интернете. Адрес сервера можно настроить, а вот формат записи пока зашит в программу. Опять до лучших времен устаканивании концепции ))). Сейчас параметры сохраняются простейших PHP-скриптом в таблицу с простейшей структурой.

Экран MySQL

Довольно просто перенастроить сохранения параметров на тот же «народный мониторинг». Лично меня это сервер не устраивает ограничениями в периодичности сохранения данных и глубине архива.

Оптимизация настроек контроллера

После «опытной эксплуатации» можно определить, правильно ли установлены пороги срабатывания освещения и влажности, а также таймауты различных событий. В прошлой реализации я установил время срабатывания 20 минут, сидя в ванной с секундомером. Понаблюдав за графиком параметров во время нескольких принятий душа я увидел следующее:

Анализ контроллера

 

  • Влажность в зимнее время меняется на 35-40%
  • Время нормализации влажности при естественной вентиляции 20-25 минут
  • Время нормализации влажности с работающим вентилятором 10-12 мин
  • Вентилятор повышает эффективность проветривания вдвое

Исходя из этого можно смело снизить время работы вентилятора до 12 мин, тем самым продлив время его службы и чуточку сэкономив электроэнергию. Подобный анализ можно провести для других времен года, когда влажность в квартире совсем другая.

Теперь, после проведения анализа можно увеличить период записи параметров на сервер.

 Выводы

  • Контроллер работает стабильно, функции свои выполняет.
  • Функциональность его расширилась, теперь им легко управлять и он нормально интегрируется в систему Умного дома/
  • Некоторые вещи требуют доработки, например, WEB-интерфейс, авторизация доступа, серверная часть и некоторые неточности в расчете времени работы вентилятора и света. Может быть выявятся и другие хотелки по улучшению.
  • Пилотный проект по Умному дому на WiFi можно признать успешным 😉

Скетч можно скачать здесь. Буду очень признателен, если сообщите о найденных ошибках.

Скетч контроллера вентилятора на WiFi

А мы с Тимофеем отдохнем от трудов праведных 😉

2005

 

Скетч контроллера вентилятора на ESP8266
12.3 KiB
4197 Downloads
Детали
Вы можете оставить отзыв или трекбек со своего сайта.

105 комментариев на «Программирование и настройка WiFi контроллера управления вентилятором»

  1. Владимир:

    При компиляции выдает ошибки

    D:\WiFi_SmartHome_cooler1\WiFi_SmartHome_cooler1.ino: In function ‘void loop()’:

    WiFi_SmartHome_cooler1:182: error: ‘DisplaySpecialChar’ was not declared in this scope

    DisplaySpecialChar(3,0×24);

    ^

    WiFi_SmartHome_cooler1:217: error: ‘SetStatusFSM’ was not declared in this scope

    SetStatusFSM();

    ^

    exit status 1
    ‘DisplaySpecialChar’ was not declared in this scope

    • Alexey:

      Какая версия IDE? Я собираю на 1.6.5?
      ESP8266 core стабильная установлена?
      Тип контроллера какой выбран?

      Попробуйте функции DisplaySpecialChar() и SetStatusFSM() перенести перед setup()

  2. Владимир:

    я использовал 1.6.7,сейчас поставил 1.6.5 стало все нормально,спасибо!

  3. Олег:

    Алексей, добрый день!
    А как ведут себя компоненты в такой влажной среде? Или герметичности корпуса хватает?

    • Alexey:

      На первом фото состояние старого контроллера после 2-х лет эксплуатации. Не так уж там и влажно.
      70-80% на короткое время не более 15 минут после принятия душа. А потом влажность восстанавливается до среднеквартирной 32-40%
      Поэтому в корпусе контроллера обычные отверстия под провода, не обеспечивающие никакой влаглзащиты

  4. Александр:

    Дайте ссылку на библиотеку: #include
    На гидхабе много всего, но нет того что подходит

  5. Александр:

    Ещё вопрос насчёт базы данных. Непонятно куда пишутся данные и как.
    Если можно поясните как настроить передачу данных в базу

    • Alexey:

      Я пишу примерно так.

      // Соединяемся, выбираем базу данных
      $link = mysql_connect($server, $user, $password) or die('Не удалось соединиться: ' . mysql_error());
      // Формируем запрос
      $query = 'INSERT INTO sav_bathroom_c03(dt,t,h,a,tm_vent,tm_light,uptime) VALUES(now(),\''.
      $_GET['t'].'\',\''.$_GET['h'].'\',\''.$_GET['a'].'\',\''.$_GET['tm1'].'\',\''.$cnt02.'\',\''.$_GET['tm2'].'\')';
      $result = mysql_query($query) or die('Сохранение в БД не удалось: ' . mysql_error());
      // Закрываем базу
      mysql_close($link);

  6. Александр:

    Наверно я непонятно выразился. Этот код, как я понимаю, принимает данные на ПК с вебсервером и заносит в базу.
    Мне непонятно как идёт отправка этих данных с контроллера.
    Я смотрел код, но там так наворочено что мне не разобраться.
    Мне нужно просто данные с датчика отправить на сервер и записать их СУБД.
    Прошу помощи.

    • Alexey:

      Обращением к вашей странице в формате GET запроса:
      http://адрес/страница?t=20&h=33 и и т.д.
      Легким движением руки можно все это перенастроить на тот же «народный мониторинг»

      • Александр:

        Не нужен мне народный мониторинг. У меня свой локальный сервер с базой данных. Не могу прикрутить ваш проект к своей базе, это печаль.
        Мучаюсь уже неделю с гет отправкой. Что делать?

        • Alexey:

          Для начала взять пример из ESP core и попробовать в нем добиться отправки с ESP

          Иногда не хватает переносов строк в GET запросе, иного файервол режет

          • Александр:

            Спасибо, буду пробовать!

          • Александр:

            Спасибо разобрался!

            String url = «/add.php/»;
            url += «?t=»;
            url += t;
            url += «&h=»;
            url += h;
            // This will send the request to the server
            client.print(String(«GET «) + url + » HTTP/1.1\r\n» +
            «Host: » + host + «\r\n» +
            «Connection: close\r\n\r\n»);

  7. Александр:

    На странице контроллера прописал в настройках URL servera http://192.168.83.80/site1.ru/www/
    В прошивке контролера нечего не менял. Установил, создал базу и таблицу с такими же именами. Добавил скрипт в index.php

    Выдаёт ошибку:

    Notice: Undefined index: t in C:\webserver\www\site1.ru\www\index.php on line 52 Notice: Undefined index: h in C:\webserver\www\site1.ru\www\index.php on line 52 Сохранение в БД не удалось: No database selected

    // Соединяемся, выбираем базу данных
    $link = mysql_connect(‘localhost’, ‘root’, ‘root’) or die(‘Не удалось соединиться: ‘ . mysql_error());
    // Формируем запрос
    $query = ‘INSERT INTO sav_bathroom_c03(t,h) VALUES(now(),\».
    $_GET[‘t’].’\’,\».$_GET[‘h’].’\’)’;
    $result = mysql_query($query) or die(‘Сохранение в БД не удалось: ‘ . mysql_error());
    // Закрываем базу
    mysql_close($link);

    В чём может быть проблема?

    Что может быть

  8. Дмитрий:

    Алексей, не могу запустить проект. Пока прошивку не загрузил web интерфейс работает и в сети видится, после прошивки все пропадает и ничего не работает. Что посмотреть?

    • Alexey:

      После правильной прошивки в эфире должна появится новая точка доступа

      Все отладочные сообщения выводятся в консоль. Хорошо бы посмотреть, что там на коносоли. Возможно, не опознается какая нибудь периферия и ESP уходит в циклическую перезагрузку по WDT

  9. Дмитрий:

    Нет дисплея. Можно как нибудь с вами связаться для консультации?

  10. Дмитрий:

    Точка появляется До прошивки, после перепрошивки на ESP-link.

  11. Александр:

    Есть вопрос по поводу метео станции, которою я пытаюсь запустить. Это проект был выложен в группе в вк.
    Можно спросить?

  12. Петр:

    Вгружаю скетч и ничего не происходит…
    плата правда не такая как тут а бутерброд

    • Alexey:

      А скетч загружается?

      • Петр:

        загружается…
        у меня 3 одинаковых «бутерброда».пробовал на всех 3х.
        но ни на одном не завелась и даже точка доступа не появилась.
        До этого стояла прошка с https://wifi-iot.com/.

        может подскажете )

        • Alexey:

          Там отладка в консоль выдается. Что пишет?

          • Петр:

            пишет все ок) я сейчас не дома..проверить не могу.
            дайте почту я вам скину.

          • Alexey:

            А у вас дисплей подключен на TM1637 ?
            Похоже подвисает на его инициализации, после чего систему ресетит злобный WDT от ESP, который не любит, когда пользовательские программы долго что-то делают. Закомментарьте строчку с инициализацией этого дисплея

          • Петр:

            Soft WDT reset

            ctx: cont
            sp: 3fff2b60 end: 3fff2d90 offset: 01b0

            >>>stack>>>
            3fff2d10: 3fff2d50 3fff2d20 00000008 000039f5
            3fff2d20: 6000001c 0000002b 60000000 3fff1d5c
            3fff2d30: 00000000 00000000 3fff1bd0 40208a2e
            3fff2d40: 3fffdad0 3fff1bd0 3fff1bd0 40208a91
            3fff2d50: 3fffdad0 3fff10c8 3fff2dd4 40208ac4
            3fff2d60: 3fffdad0 00000000 3fff2dd4 402038c4
            3fff2d70: feefeffe 00000000 3fff1d54 4020905c
            3fff2d80: feefeffe feefeffe 3fff1d70 40100718
            <<<stack<<<

            ets Jan 8 2013,rst cause:2, boot mode:(3,6)

            load 0x4010f000, len 1264, room 16
            tail 0
            chksum 0x0f
            csum 0x0f
            ~ld

            Free memory 35376
            EEPROM init. Size = 332
            SCR=14837
            EEPROM Config is correct
            Display TM1637 init

          • Петр:

            Закомментарьте строчку с инициализацией этого дисплея

            скажите как и где..
            я только учус)

          • Петр:

            // Инициализация дисплея
            //Serial.printf(«Display TM1637 init\n»);
            //tm1637.init();
            эту? вот так?

          • Петр:

            забыл упомянуть что дисплея такого пока нет..есть такой MTC-S16204XF..но как я понял его сюда не прицепить.

          • Петр:

            теперь вот такое
            Soft WDT reset

            ctx: cont
            sp: 3fff2af0 end: 3fff2d40 offset: 01b0

            >>>stack>>>
            3fff2ca0: 00000900 00000001 3ffea6a9 4020a284
            3fff2cb0: 00000009 0000000b 3ffea24f 00000000
            3fff2cc0: 00000000 00000000 3fff1b80 402089de
            3fff2cd0: 3fff1078 00000967 3fff1b80 40208a41
            3fff2ce0: 3ffea244 3fff1b04 3fff1b80 40203c13
            3fff2cf0: 3fffdad0 3fff1b04 3fff2d84 40209640
            3fff2d00: 00000000 00000000 3fff2d84 402036ac
            3fff2d10: 3fffdad0 00000000 3fff2d84 3fff1d0c
            3fff2d20: 3fffdad0 00000000 3fff1d04 40209004
            3fff2d30: feefeffe feefeffe 3fff1d20 40100718
            <<<stack<<<

            ets Jan 8 2013,rst cause:2, boot mode:(3,6)

            load 0x4010f000, len 1264, room 16
            tail 0
            chksum 0x0f
            csum 0x0f
            ~ld

            Free memory 33960
            EEPROM init. Size = 332
            SCR=12583
            EEPROM Config is correct
            Init DHT11on 14 pin …
            Init button 12 pin …
            Init relay cooler 13 pin …
            WiFi is not config …
            Start AP SmartHome_Cooler1
            Open http://192.168.4.1 in your browser
            Or by name: http://SmartHome_Cooler1.local
            HTTP server started …
            Starting UDP
            Local port: 2390

            Soft WDT reset

  13. Петр:

    полскажите где копать

    • Alexey:

      1. Попробовать все же собрать схему полностью. Проверить правильнось подключения всех устройств к ESP
      2. Проверить интернет и подключение к нему
      3. Использовать «метод научного тыка» — последовательно комментировать строчки пока не получите нормальную работу.

  14. Петр:

    Known Issues

    As explained above, the connection drops every now and then
    Websocket connection doesn’t work with mDNS or location.hostname for some reason
    Cannot handle multiple clients
    http://adityatannu.com/blog/post/2016/01/31/ESP8266-Witty-Cloud-Board-Demo.html

    • Петр:

      может как раз изза mDNS ?

      • Alexey:

        Может и так. Хотя у меня ни разу из за него не перезагружалась. Проверить ведь не долго?

        • Петр:

          еще одна беда.. меняю значения в скетче сохраняю, и заливаю в еспшку .Но вот после окончания заливки смотрю монитором сом порта а значения не изменяются .

          • Петр:

            то есть меняю имя точки доступа и пароль а они не изменяются.
            и как стереть полностью все данные с еспшки?

          • Петр:

            ets Jan 8 2013,rst cause:2, boot mode:(3,6)

            load 0x4010f000, len 1384, room 16
            tail 8
            chksum 0x2d
            csum 0x2d
            v3de0c112
            ~ld
            ь

            Free memory 35248
            EEPROM init. Size = 332
            SCR=14837
            EEPROM Config is correct
            HTTP server started …
            Starting UDP
            Local port: 2390
            Send NTP server 1.ru.pool.ntp.org 195.3.254.2
            Sending NTP packet…
            NTP received, length=48
            NTP time = 1473421853
            Get NTP time. Error = 0

            Soft WDT reset

            ctx: cont
            sp: 3fff23f0 end: 3fff2640 offset: 01b0

            >>>stack>>>
            3fff25a0: 40105814 000f2dcc 3fff1560 00000000
            3fff25b0: 3fff03a0 3fff1560 3fff1620 0000000b
            3fff25c0: 00000000 00000000 3fff1478 40207202
            3fff25d0: 3fff0970 00000c8d 3fff1478 40207265
            3fff25e0: 3fff0970 00000106 3fff1478 4020396b
            3fff25f0: 3fffdad0 3fff13fc 3fff2684 40207e48
            3fff2600: 00000032 00000000 3fff2684 40203458
            3fff2610: 00000000 00000000 00000001 3fff160c
            3fff2620: 3fffdad0 00000000 3fff1604 40207804
            3fff2630: feefeffe feefeffe 3fff1620 40100718
            <<<stack<<<

            все подключилось! Попадаю даже в вэбку! но отваливается от сети а потом снова соеденяется даже дает изменить некоторые значения. Или так и должно быть?

          • Петр:

            // Подключаемся к WiFi
            // WiFi_begin();
            // delay(2000);

            закоментил эти строки
            и получил вывод постом выше если разкоментить то не соединяется сосвсем.
            Soft WDT reset вот это почему вылазит понять не могу .
            даже датчики не успевают инициализироватся

  15. Петр:

    в схеме контроллера не указаны номиналы резисторов
    между Vcc и CH_PD
    И GND,GPIO15 — GPIO2.
    Насколько они необходимы в моем случае?
    Напомню у меня «бутерброд» «Witty Cloud».

    простите за такие вопросы но очень хочется разобраться )
    Возможно и Soft WDT reset происходит из-за недостающих вышеупомянутых резисторов.

  16. Игорь:

    Большое спасибо за данный проект. Все сделано в точности. Результат порадовал!!! Да к тому же это мое первое учебное пособие. Но к сожалению на третий день обнулились показания влажности и температуры. Попробую заменить датчик DHT11. Но «кнопка» всегда работает — по крайней мере это лучше, чем каждый раз бегать включать и выключать вентилятор !!! Правда вентилятор иногда как бы жил своей жизнью — короткими пульсациями включался.

  17. Михаил:

    Алексей, если можно на примере подскажите как реализовать в данном проекте возможность отправки значения переменной из умного дома (или строкой из браузера)в WEB сервер (ESP8266). К примеру изменить порог освещенности (был 900, выставить 800),время отправки на сервер и т.п. Собственных знаний увы не хватает…

  18. Михаил:

    Всё, разобрался, помощь не нужна.

  19. Евгений:

    Здравствуйте. Очень заинтересовал ваш проект, будучи глубоко начинающим, пытаюсь его повторить)При компиляции скетча:

    WiFi_SmartHome_cooler1:302: error: within this context within this context.

    Ругается на содержимое функции DisplaySpecialChar, закоментировал содержание функции код откомпилировался, залил, теперь не происходит соединения с NTP сервером и время не отображается.

    Connecting to: TP-LINK_/……
    663
    WiFi connect: 192.168.0.100/255.255.255.0/192.168.0.1
    Open http://192.168.1.4 in your browser
    Or by name: http://SmartHome_Cooler1.local
    HTTP server started …
    Starting UDP
    Local port: 2390
    Send NTP server 1.ru.pool.ntp.org 1.0.0.0
    Sending NTP packet…
    NTP server error
    Get NTP time. Error = 1

    Что делаю не правильно? подскажите если возможно. Заранее благодарен.

  20. Евгений:

    Хорошо, посмотрю, что с роутером. А что может быть по поводу отображения спецсимволов?

    WiFi_SmartHome_cooler1:302: error: within this context within this context.

    Это сообщение появляется при компиляции на каждую строку функции DisplaySpecialChar. Большое спасибо за оперативный ответ.

  21. Евгений:

    С подключением разобрался, спасибо. А функция DisplaySpecialChar работать так и не хочет( Поскажите, где скачать библиотеку TM1637, которая использована у вас (может быть дело в библиотеке). Спасибо.

  22. Евгений:

    Разобрался, спасибо огромное)

  23. Александр:

    Алексей, не могу скомпилировать… На 2-х компьютерах одинаковую ошибку выдает….
    c:/users/„®¬/appdata/roaming/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_sqrt.o):(.literal+0x8): undefined reference to __ieee754_sqrt'
    c:/users/„®¬/appdata/roaming/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_sqrt.o): In function
    sqrt’:
    d:\ivan\projects\arduinoesp\toolchain\dl\esp-newlib\build\xtensa-lx106-elf\newlib\libm\math/../../../../../newlib/libm/math/w_sqrt.c:63: undefined reference to `__ieee754_sqrt’
    collect2.exe: error: ld returned 1 exit status
    Ошибка компиляции.

    Может выложите готовую прошивку?
    Только без функции выгрузки на сервер…
    Спасибо.

    • Alexey:

      Попробуйте версию 1.6.5 IDE
      Прошивку выложу попозже. Сейчас допиливаю

      • Александр:

        Версия IDE — 1.6.5. ESP core пробовал несколько версий.
        Я не понимаю откуда взялась последняя строка:
        d:\ivan\projects\arduinoesp\toolchain\dl\esp-newlib\build\xtensa-lx106-elf\newlib\libm\math/../../../../../newlib/libm/math/w_sqrt.c:63: undefined reference to `__ieee754_sqrt’
        У меня никогда не было такой папки, в вашем проекте тоже не встречал….

      • Александр:

        Получилось, прошилось, работает.
        Похоже причина была в том что я положил файлы проекта в директорию Ардуино,а надо было в папку из настроек.

  24. Андрей:

    По моему в 22-й строке файла WC_HTTP.cpp
    WiFi.mode(WIFI_STA);
    надо заменить на
    WiFi.mode(WIFI_AP);
    Или я не прав?

  25. Андрей:

    И следующая строка правильнее
    WiFi.softAP(EC_Config.ESP_NAME, EC_Config.ESP_PASS);
    раз уж есть в настройках пароль.

    ЗЫ Спасибо, что делитесь исходниками с описанием.

    • Alexey:

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

  26. Лев:

    Здравствуйте, Алексей! Огромная Вам благодарность за проделанную работу и за то, что даете возможность воспользоваться Вашими трудами безвозмездно! Спасибо!
    Собрал контроллер, заработал сразу. Но есть один вопрос. При отображении времени не мигают разделительные точки, при чем при циклической смене отображаемых параметров, точки в первом цикле горят постоянно, во втором не горят совсем и так далее при каждой смене. Возможно ли сделать, чтобы точки если не мигали, то хотя бы горели постоянно?

  27. Лев:

    Выяснил, точки все-таки мигают, но с интервалом 7 секунд. Как можно это исправить?

  28. Лев:

    На кнопку реагирует тоже не сразу, а после удержания ее примерно секунд 5..

    • Alexey:

      К сожалению, когда ищет сеть или пытается соединиться с сервером — идет таймаут на все остальное. Скоро переведу весь свой умный дом на NQTT и опубликую результат

      • Лев:

        Спасибо за ответ! Сам уже понял свою ошибку. Изначально, так как не имею возможности и нужных знаний чтобы сделать отправку данных на сервер, я удалил данные из строк Интервал отправки 1,Интервал отправки 2,URL сервер. Оказалось, не нужно было оставлять строки Интервал отправки пустыми. Всё заработало как надо!

  29. Петр:

    Наконец то дошли руки до Вашего проекта .
    все собрал залил скетч .
    Решил проверить на столе как реагирует датчик влажности.Показания были 36%
    Решил на него подышать ипоказания изменились на дисплее показывает 01% а на вебстранице пишет Н=1.Вентилятор не включаетя но через пару минут он включился сам и пошел отсчет по таймеру
    хочется видеть показания влажности от 0-100%
    как это исправить?

  30. Владимир:

    Алексей, подскажите, пожалуйста: на что влияет тактовая чистота чипа 80 и 160 МГц? Повысится ли частота ШИМ после увеличения тактовой частоты ESP8266 c 80 до 160 МГц?

  31. Funny best dose for daily buying cialis in mercury drugs vessels are found to more evident and stressed.

  32. Саша:

    Алексей, подскажите, где после компиляции и загрузки скетча хранятся настройки.Хочу прописать другую точку доступа. У меня проблемы с подключением по Веб интерфейсу, постоянно рвется соединение (плата Node MCU). Пару раз удалось подключиться и выставить свои настройки — больше не получается. Пытался менять настройки в библиотеках, которые находятся со скетчем. Но после прошивки все настройки остаются прежними. В мониторе порта все работает без ошибок.

  33. Магомед:

    Не могу скомпилить пишет:

    WiFi_SmartHome_cooler1:46: error: ‘DHT11’ was not declared in this scope
    WiFi_SmartHome_cooler1.ino: In function ‘void setup()’:
    WiFi_SmartHome_cooler1:109: error: ‘class DHT’ has no member named ‘begin’
    WiFi_SmartHome_cooler1.ino: In function ‘void loop()’:
    WiFi_SmartHome_cooler1:219: error: ‘class DHT’ has no member named ‘readHumidity’
    WiFi_SmartHome_cooler1:220: error: ‘class DHT’ has no member named ‘readTemperature’
    Multiple libraries were found for «TM1637.h»
    Used: C:\Users\Љ®¬ЇмовҐа\Documents\Arduino\libraries\TM1637
    Not used: C:\arduino-1.6.5-r5\libraries\TM1637
    ‘DHT11’ was not declared in this scope

    в чем может быть дело?

  34. Виталий:

    Алексей, спасибо за ответы. Подскажите, а чем работа с MQTT будет отличаться от заливки данных на сервер? И когда можно будет увидеть последнюю версию Вашего скетча?

    • Alexey:

      По поводу MQTT пока не уверен. Появилась проблема частой перезагрузки ESP во время приемки MQTT пакетов по подписке. С передачей проблем нет. Пока сделал промежуточную версию с HTTP но сервером DOMOTICZ. Финальная версия будет с сервером MAJORDOMO и скорее всего тем же HTTP или локальным BLYNK сервером.
      Хотя руки чешутся выкинуть ESP и поставить NRF24L01

  35. николай:

    выходит ошибка компиляции. Где скачать такую библиотеку?
    Arduino: 1.8.7 (Windows 7), Плата:»Generic ESP8266 Module, 80 MHz, Flash, Disabled, All SSL ciphers (most compatible), ck, 26 MHz, 40MHz, DOUT (compatible), 512K (no SPIFFS), 2, nonos-sdk 2.2.1 (legacy), v2 Lower Memory, Disabled, None, Only Sketch, 115200″

    WiFi_SmartHome_cooler1:22:23: error: WC_EEPROM.h: No such file or directory

    compilation terminated.

    exit status 1
    WC_EEPROM.h: No such file or directory

  36. николай:

    Разобрался. Они были в вашем проекте и их надо было скопировать в в папку где лежат библиотеки.

  37. Ростислав:

    Не хочет компилировать. Текст ошибки:

    WC_HTTP.cpp: In function ‘void WiFi_begin()’:
    WC_HTTP.cpp:30: error: ambiguous overload for ‘operator!=’ (operand types are ‘IPAddress’ and ‘int’)
    if( EC_Config.IP != 0 ){

    • Alexey:

      К сожалению, разработчики поменяли тип переменной IPAddress
      Будет работать строка
      if( EC_Config.IP != IPAddress(0,0,0,0) )
      или
      if( EC_Config.IP[0] !=0 && EC_Config.IP[1] !=0 && EC_Config.IP[2] !=0 && EC_Config.IP[3] !=0 )
      Можно откатиться на старую версию ESP8266 Core 2.4

  38. Сергей:

    Подскажите что и где нужно добавить, чтобы данные отсылать на народный мониторинг?

    • Alexey:

      Сформировать строку по одному из предложенных народным мониторингом протоколов. Например, по тому же HTTP GET. На мониторинге есть подробное руководство по формату запроса

  39. Олег:

    Приветствую
    При проверочной компиляции выскакиевает ошибка

    In file included from C:\Program Files (x86)\Arduino\libraries\Adafruit_Circuit_Playground/Adafruit_CircuitPlayground.h:3:0,

    from C:\WiFi_SmartHome_cooler1\WiFi_SmartHome_cooler1.ino:1:

    C:\Program Files (x86)\Arduino\libraries\Adafruit_Circuit_Playground/Adafruit_Circuit_Playground.h:114:3: error: ‘Adafruit_CPlay_FreeTouch’ does not name a type

    Adafruit_CPlay_FreeTouch cap[7]; ///< the array of capacitive touch sensors

    ^

    sketch\WC_HTTP.cpp: In function 'void WiFi_begin()':

    WC_HTTP.cpp:30:24: error: ambiguous overload for 'operator!=' (operand types are 'IPAddress' and 'int')

    if( EC_Config.IP != 0 ){

    ^

    sketch\WC_HTTP.cpp:30:24: note: candidates are:

    sketch\WC_HTTP.cpp:30:24: note: operator!=(uint32_t {aka unsigned int}, int)

    sketch\WC_HTTP.cpp:30:24: note: operator!=(u32_t {aka long unsigned int}, int)

    sketch\WC_HTTP.cpp:30:24: note: operator!=(int, int)

    sketch\WC_HTTP.cpp:30:24: note: operator!=(const ip_addr_t* {aka const ip4_addr*}, const ip_addr_t* {aka const ip4_addr*})

    sketch\WC_HTTP.cpp:30:24: note: operator!=(ip_addr_t* {aka ip4_addr*}, ip_addr_t* {aka ip4_addr*})

    In file included from C:\Users\Oleh\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266WiFi\src/ESP8266WiFi.h:31:0,

    from sketch\WC_HTTP.h:9,

    from sketch\WC_HTTP.cpp:7:

    C:\Users\Oleh\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\cores\esp8266/IPAddress.h:107:14: note: bool IPAddress::operator!=(const IPAddress&) const

    bool operator!=(const IPAddress& addr) const {

    ^

    C:\Users\Oleh\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\cores\esp8266/IPAddress.h:116:14: note: bool IPAddress::operator!=(uint32_t) const

    bool operator!=(uint32_t addr) const {

    ^

    C:\Users\Oleh\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\cores\esp8266/IPAddress.h:119:14: note: bool IPAddress::operator!=(u32_t) const

    bool operator!=(u32_t addr) const {

    Пробовал с IDE последней версии и 1.6.5. Ошибка одинаковая. Подозреваю, что-то не то «поправили» в библиотеках ESP. Вы какой версией пользовались? Сейчас актуальная 2.6.3.

  40. Олег:

    Первый запуск произошел. Признаки жизни подает. Только не показывает температуру 0-1-2 нрадуса. Даже если дуть теплым воздухом.
    Поставил DHT22. Может под него что-то править надо?

  41. Олег:

    Наткнулся еще на один баг. Если отключается электричество в доме — контроллер запускается быстрее, чем вафельный роутер. Вследствии чего остается висеть неподключенным к вафле. Как это побороть? Ресетить питанием неспортивно.

    • Alexey:

      В последних версиях я использую библиотеку WiFiManager в которой решена эта и многие другие проблемы

      • Олег:

        То есть поменять используемую при компиляции вафельную библиотеку на WiFiManager?

        Еще вопрос. Как будет термометр отображать отрицательную температуру?

        • Alexey:

          WiFiManager только дополнительный прибамбас к стандартной библиотеке. Стандартная библиотека в виде бинарника собирается в проект и заменить ее сложно. Но никто не мешает делать проверки подключения WiFi. И, при необходимости, перезагрузка радиомодуля. Если не помогла — перезагрузка контроллера

          • Олег:

            Приветствую.
            С библиотеками не стал заморачиваться. Проблему с подключением решил в лоб. Тупо поставил задержку на запуск, которая дает возможность точке доступа успеть стартовать после появления питания.

            Но вопрос с отображением отрицательной температуры все равно остался. Не получается почему-то. То есть, у меня при минусе в помещении градусник показывает 1 градус.

  42. Сергей:

    Пытаюсь заменить датчик DHT на BME280. Убрал ненужный мне функционал, такой как индикатор, время, отправку данных на внешний сервер. Заменил библиотеки и соответствующие строки с запросом температуры и влажности, но почему-то после старта сервера идет постоянная перезагрузка контроллера.
    Вот последние строки из консоли
    HTTP server started …
    Press button

    Exception (28):
    epc1=0x4020b7f4 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000

    >>>stack>>>

    ctx: cont
    sp: 3ffffdb0 end: 3fffffc0 offset: 0190
    3fffff40: 4023e614 00000000 3ffefd64 00000000
    3fffff50: 00a200a2 00a000a2 00a000a2 00a000a0
    3fffff60: 00000000 3ffefd64 3ffefd94 4020b8dc
    3fffff70: 4020e797 3ffefd64 3ffefd94 4020b960
    3fffff80: 3fffdad0 3ffefd64 000008e9 40204811
    3fffff90: 3fffdad0 00000000 3ffeffd4 3fff0120
    3fffffa0: 3fffdad0 00000000 3fff00e0 4020dc70
    3fffffb0: feefeffe feefeffe 3ffe84e4 40100ea9
    <<<stack<<<
    С чем это может быть связано?

  43. Сергей:

    Все, разобрался. Забыл прописать инициализацию датчика

  44. Alex:

    Если вентилятор работает в автоматическом режиме то при необходимости выключить его кнопкой не получается. Точнее он выключается на несколько секунд и опять включается. Второй момент — при достижении заданного уровня влажности вентилятор тоже не выключается пока таймер не обнулится. Это так задумано?

    • Alexey:

      Это старый алгоритм. В новом все переделал, но он на Atmegf328 + NRF24
      http://samopal.pro/fancontroller3/

      • Alex:

        Да я уже этот код переделал. Включение не зависимо от освещения при превышении порога, выключается сразу при нормализации. Кнопкой можно приостановить работу вентилятора в любой момент или наоборот принудительно включить на интервал в 2 раза больше чем в автоматическом режиме.

Ваш отзыв

Вы должны войти, чтобы оставлять комментарии.