LazyRolls icon indicating copy to clipboard operation
LazyRolls copied to clipboard

Неявная работа после сброса питания (save/restore position in eeprom?)

Open andrew-moiseyev opened this issue 3 years ago • 4 comments

Антон, спасибо за проект!

Есть один неочевидный и нигде не отражённый момент - после подачи питания кнопки теста работают корректно, нажатие "вниз" делает "вверх". Если кому-то тоже будет непонятно - в setup:

// start position is twice as fully open. So on first close we will go up till home position
position=ini.full_length*2+ini.up_safe_limit;

Предложения:

  1. Сделать это очевидным - отразить в документации, выдавать предупреждение в web-части, отдавать в mqtt.
  2. Всё же сохранять в eeprom - говорят про 100.000 записей и неограниченное чтение. Если писать 10 раз в день - это 27 лет. Делаем метод SetPosition, в нём присваивание position и запись в eeprom. В сетапе, соответственно, считывание и присваивание напрямую. Для подстраховки от отключения питания во время работы мотора - сохранять признак isRolling, если после возобновления питания он true - работать по Вашему алгоритму.

andrew-moiseyev avatar Feb 02 '22 10:02 andrew-moiseyev

Спасибо за фидбек!

Да, этот момент у многих пользователей вызывает вопросы при первоначальной настройке. Где-то с 0.10й версии прошивки я добавил на главном экране, с большими кнопками, комментарий внизу:

Напоминание. После перезагрузки, по любой команде (открыть или закрыть) штора вначале едет вверх, до концевика, чтобы найти нулевую точку. Это нормально.

Вопросов стало меньше (в почте, личке, тг-канале). Над документацией, конечно, ещё работать и работать. При первом старте, пожалуй, больше ничего не сделать.

При обычной работе это не должно быть заметно вообще, если шторы используются в режиме полного открывания/закрывания. И если питание не отключалось настолько, что был пропущен очередной момент переключения. Открытая штора (у концевика) закрывается сразу, закрытая - так и так едет в сторону концевика. Проблема только если из [полу]закрытого состояния получаем команду на закрытие или определенный процент. Имхо, не такой уж частый сценарий.

Сохранять положение я уже думал. Наверное, сделаю, хотя бы для пробы. Вообще, у esp8266 нет eeprom. Можно использовать часть внешней флеш-памяти программ. Китайцы в модули паяют разные чипы, разных производителей, разного качества. Сколько там циклов, я не знаю. Хорошо, если стандартные для микроконтроллеров 10000. При минимуме 4 записи в сутки (два цикла, запись перед и после) - 7 лет. Терпимо, если так. Конечно, можно будет провести ускоренное испытание, для гарантии. И использовать распределение записи на несколько ячеек.

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

Думаю, вариант, как сейчас, всё-таки оптимальный. Но опцию сохранения положения запишу в to do, постараюсь сделать, для тех, кому оно нужно.

ACE1046 avatar Feb 02 '22 13:02 ACE1046

Собрали NodeMCU + драйвер + мотор, без концевика. Начали крутить - тесты крутят в обе стороны, вниз - крутит вверх. Озадачились. Напоминания не читали, разумеется. Может, в сетапе ставить флаг "wasMoved=false" и пока ни разу не крутили - показывать предупреждение над кнопками красным/заметным цветом? С чекбоксом "да понял я, не показывайте больше".

andrew-moiseyev avatar Feb 02 '22 14:02 andrew-moiseyev

И на сайт бы ссылку на гитхаб.

andrew-moiseyev avatar Feb 02 '22 14:02 andrew-moiseyev

Принято, продумаю этот момент. Этот Issue пусть повисит открытым, чтобы не забыть.

ACE1046 avatar Feb 02 '22 14:02 ACE1046