Три вещи, которые нужно делать в любой непонятной ситуации:
- Посмотреть комментарии в коде, основная часть которых находится в файле Constants.h. Это даст понимание очень многих настроек и снимет много сязанных с этим вопросов.
- Открыть монитор порта и посмотреть отладочные сообщения, там понятным языком написано, что делает и как настроена лампа. Особенно ценны первые сообщения сразу после старта лампы.
- В случае совсем необъяснимого и нежелательного поведения лампы нужно перепрошить её с полной очисткой flash памяти - в меню Arduino IDE "Инструменты" - "Erase Flash" нужно выбрать "All Flash Contents". Это сотрёт ВСЕ настройки лампы, но и также проинициализирует необходимые настройки значениями по умолчанию при первом запуске.
И только после этого можно задавать вопрос на форуме. Иначе есть все шансы зафлудить форум так, что знающие энтузиасты не будут успевать ответить на все публикуемые вопросы.
FAQ
В: Почему не работает android приложение?
О: К прошивке от gunner47 подходят android приложения от gunner47 и koteyka. Убедитесь в том, что установлено правильное приложение и правильная его версия. Для android приложения от gunner47 это означает, что приложение должно быть из того же архива, что и прошивка.
В: Почему после первого запуска не появляется точка доступа лампы с запросом WiFi настроек для подключения к домашней WiFi сети в рабочем режиме ESP_MODE 1?
О: Точка доступа для запроса WiFi настроек должна появиться при первом запуске после прошивки. Она ожидает подключения и ввода настроек 5 минут. После этого лампа переключается в рабочий режим ESP_MODE 0, сохраняет его и перезагружается, точка доступа для ввода WiFi настроек уже появляться не будет. При последующих рестартах лампа также будет работать в рабочем режиме ESP_MODE 0. Для переключения в рабочий режим ESP_MODE 1 нужно семикратно коснуться кнопки - лампа переключит и сохранит новый рабочий режим, перезагрузится и запросит WiFi настройки.
Если всё было сделано правильно, а страница с запросом WiFi настроек
http://192.168.4.1 не может быть загружена, нужно проверить, к какой WiFi точке доступа в данный момент подключено мобильное устройство или ноутбук, с которого производится настройка, лучше выключить/включить WiFi и повторно подключиться. В случае мобильного устройства, нужно отключить мобильный интернет и проверить, чтобы не было активно VPN соединение (и в настройках android, и в настройках браузера - см. "турбо режим", "экономия трафика", "сжатие трафика", "оптимизация загрузки изображений, аудио и видео"... всё это в настройках браузера нужно отключить или использовать браузер без таких опций).
В: Как стереть WiFi настройки? Как перенести лампу в новую WiFi сеть?
О: Если после старта в рабочем режиме ESP_MODE 1 лампа не находит заданную WiFi сеть (толстые стены, модуль esp в металлической экранирующей трубе, уровень WiFi сигнала меньше 8%, выключен или не успел загрузиться после сбоя питания роутер и т.д.), то разворачивается WiFi точка доступа для ввода новых параметров WiFi сети. В это время матрица не светится, лампа не реагирует на одиночные клики по кнопке. Ожидание ввода WiFi параметров длится 5 минут. Это означает, что для переноса в новую WiFi сеть принудительно ничего стирать не нужно, нужно заново ввести WiFi параметры на новом месте после первого запуска лампы.
Но способ принудительно очистить WiFi параметры есть. Для этого в файле Constants.h нужно найти строку "#define ESP_RESET_ON_START (false)" и установить true вместо false. Затем нужно в течение 1 секунды после подачи питания коснуться кнопки - лампа сотрёт сохранённые WiFi параметры.
В: Почему не работает будильник, в android приложении нельзя им управлять?
О: Будильник и некоторые другие функции, например, вывод времени бегущей строкой недоступны, если лампе не удалось синхронизировать время с сервером времени в интернете, указанном в прошивке в параметре NTP_ADDRESS. Это может произойти, если лампа работает в режиме ESP_MODE 0, если нет доступа в интернет или сеть сконфигурирована так, что препятствует обмену ntp пакетами. Доступность сервера времени можно проверить, напрмер, утилитой NTPTool, введя в неё адрес сервера времени. Если ответ от сервера пришёл, он отобразится в окне утилиты. В сети должен быть открыт порт 123. Лампа запрашивает время сразу после старта и далее раз в полчаса. Если первая попытка была неудачной, лампа будет запрашивать время раз в 5 минут до первой удачной попытки.
В: Какой выбрать сервер времени?
О: Территориально ближайший. В принципе, это не критично, подойдёт любой рабочий, т.к. лампе не требуется точность времени на уровне микросекунд.
В: Что делать, если сервера времени недоступны/сеть блокирует доступ к ним?
О: Закомментировать в прошивке строку "#define USE_NTP". В таком случае лампа не будет отсылать запросы и ждать ответа. Функции, связанные со временем, работать не будут.
В: Почему невозможно прошить лампу по воздуху?
О: Причин может быть несколько: от файерволов и настроек сети (при настройке сети в windows как публичной операционная система может препятствовать обмену данными - обновление по воздуху не работает) и до ограничений esp8266. В ней доступны всего 4 сетевых сокета, т.е., одновременно открытых сетевых подключения. Лампа использует одно подключение для управления аднроид приложением, синхронизирует время, у неё есть возможность вывода логов в telnet, может быть включен mqtt, плюс перепрошивка по сети - может не хватить доступных сетевых подключений. Если проблема в esp, то лечится так: нужно ввести пароль от лампы при запросе в Arduino IDE, но не нажимать Enter, а оставить окно висеть. Тем временем нужно перезагузить лампу, не подключаясь приложением, сразу запросить прошивку OTA (двумя четырёхкратными тапами по кнопке) и после включения эффекта "Матрица" нажать Enter в Arduino IDE в окне запроса пароля.
Также нужно убедиться, что компьютер с Arduino IDE находится в той же сети, что и лампа. И это не должна быть точка доступа лампы.
В: Почему android приложение недоступно в google play market'е?
О: Пока жалко денег на девелоперскую учётку, но вполне возможно, в скором будущем приложение там появится.
В: Как посмотреть отладочные сообщения?
О: В Constants.h найти и раскомментировать строку "#define GENERAL_DEBUG", если она закомментиррована. Прошить esp8266. Открыть монитор порта в arduino IDE, установить скорость порта 115200. В монитор будут выводиться все предусмотренные в прошивке отладочные сообщения. Этот метод работает только, если esp8266 подключен к компьютеру с Arduino IDE usb кабелем.
Есть способ получить отладочную информацию по сети (по воздуху). Для этого нужно в файле Constants.h найти строку "#define GENERAL_DEBUG_TELNET (false)" и установить true вместо false. После чего основная часть отладочных сообщений будет выводиться в telnet ВМЕСТО монитора порта (serial). Чтобы подключиться к лампе по сети нужно установить и запустить любую программу, способную получать данные по telnet, например, putty. В ней указать ip адрес лампы и порт 23. Важно! Данный способ работает только в рабочем режиме ESP_MODE 1, и можно увидеть сообщения только после получения лампой ip адреса в сети, т.е., начальные сообщения, выводимые сразу после старта лампы, увидеть нельзя.