Сенсор Starline EC-1: логика
Дорого дня. В дополнение к StartStop наконец встроил EC-1 себе. Подключил к постоянному плюсу и статусному выходу(из постоянного только режим пляж).
И задумался, что хочу оставить возможность ввода экстренного кода разблокировки через ручку, на случай если метка потеряется/телефон разрядится. Задумался как это сделать, так как без метки датчик работать не будет, а если сделать постоянную массу - то датчик будет работать неадекватно так как, если я правильно понял, то там автокалибровка только при включении, а не автоматически переодическая.
Задумался как можно сделать, чтобы калибровка происходила периодически автоматически.
Условное обозначение:
Программа 15 - текущая программа
Питание - выход, который подключен к питанию сенсора
300 сек - 5 минут
Ничего не делать - замораживаем логику, делаем отсрочку перезапуска
Есть идея написать логику формата:
Есл
(программа 15: завершила работу),
то
(питание: выключить);
задержка перед выполнением 0.3 сек:(питание включить);
задержка перед выполнением 300.3 сек:(ничего не делать:ничего не делать, прервать если - метка(любая):появилась; дверь:открылась)
Опишу что в ней вижу, кто не вник:
Программа по порядку - 15ая.
Делаем её цикличной, запуская её заново, когда она закончит работать.
Первым действием выключаем питание сенсора
2ым действием включаем питание снова через 30 милисекунд. Сенсор перезапускается и калибруется.
3им действием замораживаем исполнение программы на 5 минут, после чего программа перезапустится. Но прерываем эту паузу если откроют дверь или появится метка, чтобы программа перезапустилась. А с ней перезапустилось питание, запустилась калибровка и таймер начался заново.
Соотвественно вопрос возник: хватит ли 30 милисекунд сенсора обесточится? Нет ли там конденсатора, остаточного питания со стабилизатора и тп. Никто не эксперементировал?
Или может кто уже похожее делал и я велосипед изобретаю? Или ещё у кого какие идеи есть?
Сервис поддержки клиентов работает на платформе UserEcho
Ах да, забыл, саму ту же программу же нельзя контролировать на перезапуск. Надо контролировать перезапуск выходом дополнительным, как переменной, например
В общем подумал пока что, решил сделать так:
Посмотрим, прокатит ли
В текстовом формате:
Если: Питание сенсора - стало неактивно
То Задержка 0,3 сек Питание сенсора - подать импульсы 4700мсек, прервать если - появилась метка или открыта дверь водителя
Чуть позже проверю
А вообще было бы удобно, если бы в функциях каналов была бы функция Питание сенсора, которая выполняла бы похожий алгоритм(там написать более правильную логику легче)
Вобщем сделал так:
т.е. ручка не работает в сервисном режиме. И есть 3 нюанса:
1. Ввиду того, что в самом начале и после перезагрузки(мягкой и полной) входы выключаются - логика не отрабатывает - цикл завершается - нужно вручную первый раз выполнить. Первый цикл выполняется из приложения. После программа переходит в самоподдерживающий режим.
2. Подачу импульса нельзя ограничить более 1 минуты. Поэтому пока поставил интервал в минуту. Чуть позже сделаю по другому - Через включить и выключить с отсрочкой. Там получится.
3. Перезагрузка может прервать касание - не критично(в принципе ничего такого я в этот момент не встретил). Но хочется, чтобы можно было при нажатии, если осталось меньше 10 секунд - добавить 60 секунд к таймеру перезагрузки
А в целом - работает адекватно. В течении этих суток артефактов не нашел. Ввод экстренного кода работает исправно. Падение чувствительности не встречал. Правда сегодня жарко, без дождя, но в целом - алгоритм рабочий.
3 дня теста. Был дождь и жара - нареканий не заметил. Ведет себя адекватно.
Правда сейчас у меня сделано на интервале 5 минут. Последим дальше что будет.
Завтра напишу предложение в раздел идеи. Потому что если будет встроено в логику сигналки - как минимум не потребуется стартовый импульс, можно будет сделать отсрочку перезагрузки при касании. И сделать настройку интервала перезапуска.
Надеюсь снова не отправят в "Самостоятельную установку":)