Стандартные автоматы
Оригинал документа: https://docs.google.com/document/d/1HwX-Pm3Ye6fpgQr1xwZwuYLtVjQrUTAxAYkPagTO5T8/edit?usp=sharing
Инструкция: “Стандартные автоматы Rightech”
Автомат контроля выезда из геозоны проверяет местоположение самоката относительно разрешенных зон катания, которые добавлены к самокату в платформе.
Если самокат покидает разрешенную зону, алгоритм переходит в состояние «Зона запрещенного использования»:
Действия, формируемые системой:
Таймер №1 запускается на отсчет 20 секунд.
Если по истечении таймера №1 самокат не вернулся в разрешенную зону, алгоритм переходит в состояние «Выход из геозоны».
Действия, формируемые системой:1. Отправляем push-уведомление в мобильное приложение клиента: "Самокат покинул допустимую зону аренды"
Отправка уведомления уровня «Важное» в платформе: «Самокат покинул допустимую зону аренды».
Таймер №2 начинает отсчет 40 секунд.
Если по истечении таймера №2 самокат не вернулся в разрешенную зону, то алгоритм переходит в состояние «Длительный выезд из геозоны».
Действия, формируемые системой:
Самокату посылается команда: «Скоростной режим ECO».
Клиенту сервиса в мобильное приложение отправляется push-уведомление: «Ограничена скорость, вернитесь в допустимую зону аренды».
Отправка уведомления уровня «Критический» в платформе: «Ограничена скорость до режима ECO 5 км/ч, самокат вне зоны 1 мин».
Как только самокат возвращается в разрешенную зону, система:
Отправляет команду «Скоростной режим SPORT», если езда вне зоны продолжалась до третьего этапа выезда из разрешенной зоны;
Push-уведомление, отправленное клиенту сервиса в мобильное приложение: "Вы вернулись в разрешенную зону. Приятной поездки!"
Отправка push-уведомления для объекта в платформе уровня «Информационное»: «Самокат вернулся в допустимую зону аренды, режим SPORT».
Примечание:
В описании выше указан алгоритм контроля двух типов зон: нормальной и запрещенной. Дополнительно мы начали применять расширенную версию этого автомата с четырьмя типами возможных зон: нормальная зона, медленная зона, запрещенная зона, медленная зона выходного дня.
Клиенты в поездках могут полностью разрядить скутер, что сокращает срок службы батареи. Мы реализовали алгоритм защиты аккумулятора, который применяется для самокатов в любом из статусов аренды. Помимо этого существует потребность в своевременном обслуживании самокатов техниками компании. Для этих целей в алгоритме реализована логика перевода статуса объекта в “Поломка” при низких значениях заряда. При переводе статуса автоматически генерируется задание на замену батареи. Активные задания по обслуживанию самокатов техник может посмотреть во вкладке “Задания”.
Состояние, когда в аренде заряд батареи достигает 40% и ниже:
Отправка push-уведомления через клиентское приложение: «Батарея почти разряжена, припаркуйте самокат в разрешенной зоне».
Состояние, когда в аренде заряд батареи достигает 25% и ниже:
Отправка push-уведомления через клиентское приложение: «Батарея самоката разряжена, завершите аренду на ближайшей парковке»;
Отправка команды на самокат «Режим скорости ECO (лимит 5 км/ч)»;
Отправка push-уведомления в платформе: «Заряд {{object.state.batteryPercents}}%, ограничена скорость в аренде». Берется текущее значение заряда {{object.state.batteryPercents}}.
Защита данных от всплесков заряда батареи:
Иногда у самокатов со сменной батареей могут возникать единовременные значения заряда, что может привести к преждевременному срабатыванию логики. Для предотвращения таких ситуаций мы используем алгоритм защиты данных. Когда заряд батареи ≤ 25%, запускается таймер 30 сек. Если по истечению 30 сек. значение заряда батареи не стало больше 25%, то самокат считается разряженным, и соответствующая логика отработает корректно.
Состояние перевода в “Поломку” и создание задания на замену батареи:
Изменение статуса самоката на “broken”;
Отправка push-уведомления в платформе: заряд батареи {{object.state.batteryPercents}}, статус "Поломка". Создано задание на заряд;
Создание задания на змену батарею. Просмотр и управление заданиями осуществляется на вкладке “Задания”.
Для защиты скутера от различных сценариев угона мы реализовали логику контроля состояний. Данная логика оценивает основные статусы, находясь в которых, объект может быть подвержен незаконным действиям.
После инициализации работы логики происходит определение текущего статуса объекта. После чего логика ведет непрерывный контроль.
Если самокат находится в режиме офлайн более 90 секунд, система формирует уведомление операторам в платформе и пуш-уведомление в Rightech App. Логика проверки работает для любых статусов объекта.Если состояние офлайн зафиксировано в статусе Свободен, то формируется уведомление: “Офлайн более 90 секунд в статусе Свободен”, уровень критический.Если состояние офлайн зафиксировано в любом из статусов аренды, то формируется уведомление: “Самокат офлайн более 90 сек, состояние угона.”, уровень критический.
Логика проверки работает только в статусе «Свободен».Если скорость самоката согласно параметру Current Speed выше 3 км/ч в течение более 60 секунд, то система формирует уведомление в платформе и пуш-уведомление в Rightech App: “Угон из статуса Свободен: скорость самоката больше 3 км/ч более 60с”, уровень критический.
Логика проверки работает только в статусе «Свободен».Если самокат находится в движении согласно параметру Движение по GPS более 3-х минут, то система формирует уведомление в платформе и пуш-уведомление в Rightech App: “Угон из статуса Свободен: датчик движения активен 3 минуты”, уровень критический.
После формирования уведомлений согласно условиям п.1-п.3 автомат переходит в состояние “Ожидание после угона”, запускается таймер на 5 минут. После 5 минут автомат переходит в состояние мониторинга параметров самоката (п.1-п.3).
Этот автомат предназначен для мониторинга наличия разблокированных самокатов в статусе Свободен и их автоматической блокировки. Мы исходим из того, что все самокаты, готовые для аренд, стоят на улицах в статусе Свободен и в заблокированном состоянии.
В каких случаях самокат может остаться разблокирован в статусе Свободен?
отсутствие блокировки самоката из-за краткосрочного состояния офлайн при завершении аренды;
ошибка при выполнении команды согласно сценарию завершения аренды;
человеческий фактор, забывание самоката в разблокированном состоянии.
Если самокат присылает пакет с данными, где его состояние разблокировано в статусе Свободе, то автомат переходит в состояние «Самокат разблокирован в Свободен»:
Действия, формируемые системой:
Таймер №3 запускается на отсчет 60 секунд;2. Формирование уведомления уровня «Информационное» в платформе: «Самокат разблокирован в статусе Свободен».
Если по истечении таймера №3 самокат не вернулся в заблокированное состояние, автомат переходит в состояние «Блокировка самоката из статуса Свободен».
Действия, формируемые системой:1. Отправка уведомления уровня «Важное» в платформе: «Отправлена команда блокировки самоката из статуса Свободен».
Таймер №2 начинает отсчет 10 секунд, после чего автомат переходит в состояние «Свободен, самокат заблокирован».Таким образом, команды блокировки будут отправляться несколько раз с периодичностью 70 секунд, пока самокат не станет заблокирован.