Closed G1K closed 2 months ago
Вроде бы так и реализовано, тут выставляется задержка, если двигатель включен в данный момент (если выключен, то и задержка же не нужна, по умолчанию задержка 50мс для этого случая) : https://github.com/4mr/wb-engine/blob/a3f45dc898175526db6543cb9208b71648e2d866/wb-engine-module.js#L515
Выключаем привод: https://github.com/4mr/wb-engine/blob/a3f45dc898175526db6543cb9208b71648e2d866/wb-engine-module.js#L518
Команда выше отключает реле R1, снимая полностью нагрузку с двигателя.
Функция таймера сработает через задержку (500мс если реле было включено): https://github.com/4mr/wb-engine/blob/a3f45dc898175526db6543cb9208b71648e2d866/wb-engine-module.js#L520
Внутри второго таймера реле отключается через заданный интервал открытия, поэтому переключения направления во время движения не должно произойти.
сейчас подряд одновременно переключается DIR и движение (уже после отключения и ожидания 500 мс). Без исходной нагрузки шанс возникновения дуги отсутствует? Я просто думаю может стоит дожидаться окончания замыкания R2, а уже после отправлять на замыкание R1? там же прослойка в виде mqtt / js асинхронность и нет гарантии что оно выполнится строго по очереди.
Я просто думаю может стоит дожидаться окончания замыкания R2, а уже после отправлять на замыкание R1?
Я так понимаю dev[name] = true работает в синхронном режиме, надо код wb-rules смотреть или в поддержке спросить для уверенности.
ps: Посмотрел документацию https://github.com/wirenboard/wb-rules/tree/master#%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82-dev
Операция присваивания dev[...] = ... в then всегда приводит к публикации MQTT-сообщения, даже если значение параметра не изменилось.
Но MQTT не гарантирует порядок и доставку, в теории такая ситуация возможна видимо...
Добавил задержку в 100мс после смены направления
Мне кажется чтобы соблюсти рекомендации для DO-R10R-4 https://wirenboard.com/wiki/WBIO-DO-R10R-4_Relay_Module_For_Roller_Shutter
Нужно здесь еще 1 таймер добавить на 500 мс и дожидаться переключения реле направления если оно не в том направлении что требуется для движения. Сейчас подряд оба устанавливается без паузы. Пауза есть только если реле движения было включено. https://github.com/4mr/wb-engine/blob/a3f45dc898175526db6543cb9208b71648e2d866/wb-engine-module.js#L523