Whilser / GyverLamp

Лампа-будильник на адресных светодиодах и esp8266. Добавлена интеграция с MQTT и Discovery Home Assistant, Apple Home Kit, Яндекс Алисой и Node-Red
106 stars 21 forks source link

Самостоятельное включение и перезагрузка лампы #13

Closed Fortunatto closed 4 years ago

Fortunatto commented 4 years ago

Интеграция с HA. Заметил 3 особенности работы лампы: 1) Если по каким-то причинам сервер HA перезагружается и лампа в этот момент была выключена, она включается самостоятельно - не замечал, пока жена не спросила "Ты специально лампу на ночь оставляешь?"... Я это поведение лампы даже как датчик перезагрузок HA использовал, когда стал подозревать что карта памяти НА умирает. Возможно лампа не может достучаться до mqtt-сервера и срабатывает перезагрузка, после которой она включается на крайнем работавшем эффекте. 2) С определенной периодичностью происходит такая цепочка: лампа работает -> эффект "подвисает" -> происходит отключение всех эффектов -> вспыхивают белым несколько крайних светодиодов -> эффект запускается заново. Происходит при стабильно работающем НА и mqtt. Создается впечатление, что с течением времени происходит переполнение буфера(?), после чего лампа перезапускается. 3) Если НА и mqtt не работают, то лампа или совсем не реагирует на сенсор или реагирует начиная со второго прикосновения.

vortigont commented 4 years ago

по 1) - так и есть, в процедуре реконнекта к MQTT есть код, который перегружает ESP после 10 неудачных попыток подключения. Оправданно ли такое поведение - большой вопрос, я бы убрал. по 2) - надо дебажить по 3) - в коде полно блокировок, нет асинхронности. В обработчике кнопки вызывается процедура обновления статуса MQTT, который мертв :)

Whilser commented 4 years ago

Касательно первого вопроса - это происходит когда лампа некоторое время не может достучаться до MQTT сервера. Тогда она считает, что код, отвечающий за работу с MQTT завис и выполняет перезагрузку. Такое встречалось у некоторых пользователей, поэтому была добавлена данная функция. Хотя все же немного странно, статус лампы должен сохраняться после перезагрузок. Если используешь актуальную версию прошивки и лампа включается самостоятельно если она была выключена - это ошибка с которой нужно разобраться. По второму вопросу - такое происходит когда модуль крашится. Из-за чего это происходит пока непонятно, но отмечается некая корреляция с уровнем сигнала WiFi. По третьему вопросу, вероятно это связано с задержкой при попытке восстановить соединение с MQTT сервером. Если он. не используется - его можно отключить, тогда задержек не будет. В нормальном состоянии MQTT должен большую часть времени быть доступен. все это в принципе можно поправить если проблема будем масштабной и актуальной для большого числа пользователей.

sashayohan commented 4 years ago

Тоже несколько раз лампа отваливалась и не могла подключиться к MQTT. Два раза даже приходилось полностью перепрошивать, заново водить пароли и настраивать. Никакие перезагрузки не помогали. Так же несколько раз замечал что лампа светилась, но в HA она отображалась как выключена, нажимаешь на выключить и включить, тогда статус уже начинал опять меняться. Повторяется на всех трёх лампах.

sergeolkhovik commented 4 years ago

У меня тоже были проблемы с отображением состояния в HA, и ещё в режиме огня масштаб не менял цвет (постоянно! Через родное приложение без проблем), смогу чуть позже заняться отладкой и предоставить больше информации, хочу корпус допечатать.

пт, 17 квіт. 2020 р., 23:06 користувач sashayohan notifications@github.com пише:

Тоже несколько раз лампа отваливалась и не могла подключиться к MQTT. Два раза даже приходилось полностью перепрошивать, заново водить пароли и настраивать. Никакие перезагрузки не помогали. Так же несколько раз замечал что лампа светилась, но в HA она отображалась как выключена, нажимаешь на выключить и включить, тогда статус уже начинал опять меняться. Повторяется на всех трёх лампах.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/Whilser/GyverLamp/issues/13#issuecomment-615440797, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABNKUZGYHPZIWE6FPOMRYMLRNCZF3ANCNFSM4MHJHVOQ .

vortigont commented 4 years ago

Я исправил целую пачку проблем с mqtt/UDP и полностью переписал планировщик. Если интересно, попробуйте код из моей тестовой ветки - vortigont/GyverLamp/tree/featured

vortigont commented 4 years ago

@sashayohan >Так же несколько раз замечал что лампа светилась, но в HA она отображалась как выключена, нажимаешь на выключить и включить, тогда статус уже начинал опять меняться.

Эту проблему тоже словил, исправлена в последнем комите

sashayohan commented 4 years ago

Я исправил целую пачку проблем с mqtt/UDP и полностью переписал планировщик. Если интересно, попробуйте код из моей тестовой ветки - vortigont/GyverLamp/tree/featured

Да надо поставить PlatformIO, разобраться как через него прошивать.

sashayohan commented 4 years ago

Я исправил целую пачку проблем с mqtt/UDP и полностью переписал планировщик. Если интересно, попробуйте код из моей тестовой ветки - vortigont/GyverLamp/tree/featured

Несколько вопросов по platformio.

  1. Как поменять размер матрицы, строки закомментированы, а где флаги сборки с этими параметрами я так и не смог найти.
  2. Ну и как собрать прошивку с командой 'pio run' так и не понял, где эту команду писать.
  3. Можно ли обновиться по воздуху? если да, то тоже подскажите куда тыкать.

Как будет время, напишите для таких как я, небольшой readme

vortigont commented 4 years ago

@sashayohan можно собирать в Arduino IDE если так привычнее, platformio не обязателен, небольшой ридми добавлю чуть позже.

  1. Да просто раскомментируйте их. Файл config.h.default нужно скопировать под именем config.h. Эту будет ваш конфиг, который не будет меняться при обновлениях репозитория.
  2. По воздуху обновлять можно, добавлено в последние изменения вилсера, просто открываете в браузере http://esp-xxxx/update и там через форму заливаете новый файл прошивки
vortigont commented 4 years ago

@sashayohan накидал краткую инструкцию, и список изменений

Whilser commented 4 years ago

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

ya-erm commented 4 years ago

@vortigont

Я исправил целую пачку проблем с mqtt/UDP и полностью переписал планировщик. Если интересно, попробуйте код из моей тестовой ветки - vortigont/GyverLamp/tree/featured

Не сразу удалось скомпилировать код из ветки featured. Ошибки компиляции, с которыми я столкнулся: gyverlamp\gyverlamp.h:25:18: fatal error: TZ.h: No such file or directory gyverlamp/gyverlamp.ino:323:31: error: invalid conversion from 'const char*' to 'int' gyverlamp/gyverlamp.ino:323:31: error: too few arguments to function 'void configTime(long int, int, const char*, const char*, const char*)' gyverlamp/time.ino:54:88: error: 'DAWN_MAX_BRIGHT' was not declared in this scope Исправьте их, пожалуйста.