Перейти к содержимому

Документация

Менеджер алертов

Свои условия, своя логика и свой звук. Самый большой раздел приложения.

Обычно в программах для колеса есть одна галочка: пищать, когда ШИМ превысил столько-то. Здесь вместо неё отдельный раздел, где предупреждение вы собираете сами.

Он состоит из трёх частей: сами алерты, шаблоны условий и звуковые паттерны.

Условия#

Условие это показатель, знак сравнения и порог. Показатели доступны такие: скорость, ШИМ, напряжение батареи, среднее напряжение ячейки, разброс ячеек, ток батареи, фазный ток, мощность, заряд, температура контроллера, температура мосфетов, температура мотора, температура АКБ, продольный и боковой углы, пробег поездки и общий пробег. Если привязан датчик давления, к списку добавляется давление в шине: медленный прокол это единственная поломка, которую райдер не чувствует, пока колесо не начнёт вести себя иначе, и следить за числом глазами — ровно то, ради чего алерты и придуманы. Датчик замолчал — условие молчит вместе с ним: севший датчик это не «давление в норме».

Список показывает не всё подряд, а то, что умеет ваше колесо. Датчика температуры в пачке нет ни у одного бегоды, например, — и температуры АКБ в списке у него не будет. Метрика, которой колесо не сообщает, помечена в редакторе прямо в строке, и условие на неё не срабатывает никогда: отсутствующее измерение это не ноль градусов.

Температура АКБ это самая горячая температура батареи, которую колесо сообщает. У колёс с несколькими пачками берётся максимум по ним, у колеса с одним датчиком — его показание. Так и задумано: алерт на батарею это предупреждение о перегреве, и самая холодная пачка его поднять не может.

У условия есть ещё два поля, ради которых всё и затевалось:

  • Значение сброса. Алерт замолкает не на том же значении, на котором сработал, а на заданном ниже. Без этого предупреждение дребезжит, когда показатель топчется у самого порога.
  • Минимальная длительность. Условие должно продержаться заданное время, прежде чем алерт сработает. Короткий выброс на кочке не поднимает тревогу.

Порог и оба этих поля правятся кнопками «минус» и «плюс», а само значение можно нажать и ввести с клавиатуры — степпером в 87 при шаге в 5 не попасть. Запятая принимается наравне с точкой, удержание вводится в секундах. Значение вне разумных пределов не принимается и откатывается к прежнему.

Знак сравнения меняется прямо на экране порога: ≥, >, ≤ или <. Если после переворота значение сброса или потолок разгона оказались не с той стороны порога — например, у «заряд ≤ 20» осталось отпускание на 15, которое правило никогда бы не отпустило, — они возвращаются в «авто», и модель сама берёт отступ в нужную сторону. «Равно» по-прежнему задаётся в редакторе шаблонов условий.

Показатель «Скорость по GPS» доступен как обычный: алерт на расхождение с показаниями колеса строится так же, как любой другой. Помните, что при потере сигнала он перестаёт срабатывать — это не поломка, а отказ судить по данным, которых нет.

  • Повторять с шагом N. Условие взводится заново каждые столько-то единиц показателя, не дожидаясь, пока тот уйдёт за значение сброса. Без этого «пробег больше километра» сработает один раз за поездку: пробег не убывает, и условие остаётся выполненным до самого конца. С шагом в километр вы услышите первый, второй, третий. Шаг считается в сторону сравнения, поэтому «заряд ниже пятидесяти, каждые десять» идёт вниз: 50, 40, 30. В редакторе под числом показан ряд отметок, на которых правило сработает.

Условий в одном алерте может быть несколько. Они объединяются по правилу «все сразу» или «любое из». Например: скорость выше сорока и ШИМ выше восьмидесяти.

Условие можно сохранить как шаблон и переиспользовать в других алертах.

Конструктор алерта: название, приоритет, область действия, команды колесу, тип срабатывания
Конструктор алерта. Приоритет, область действия и тип срабатывания в одном окне.

Как алерт срабатывает#

Три вида:

  • Разовый. Один раз при выполнении условий. Заряжается заново, когда показатель ушёл за значение сброса, либо по таймауту.
  • Постоянный. Повторяется с заданным интервалом, пока условия выполняются.
  • Ускоряющийся. Писк учащается по мере приближения к опасному значению: от редких сигналов у нижнего порога до слияния в один непрерывный тон у верхнего — точку слияния и кривую ускорения можно выбрать. Интервал первых писков задаётся отдельно: если «раз в секунду» в начале кривой для вас слишком редко, поставьте полсекунды — разгон пойдёт от неё. На конец кривой он не влияет: перед слиянием в тон писки всегда учащаются до предела. Вместе с учащением поднимается и высота тона: в редакторе задаётся множитель, на который вырастет частота паттерна к верхней границе. Отпустили газ — писк замедляется и понижается обратно.

Ускоряющийся тип придуман ровно под ШИМ: вы слышите не «превышено», а насколько близко край. Кнопка предпрослушивания в редакторе для этого типа проигрывает всю кривую от порога до слитного тона, а не один проход паттерна.

Голос#

Алерт может не пищать, а говорить. В редакторе есть переключатель «Чем сигналит»: звук или голос. Выбрали голос — приложение произносит показатель и его значение системным синтезатором речи: «Скорость 60», «Аккумулятор 10», «Пробег 5».

Голосовой алерт всегда одноразовый. Повторяющегося и ускоряющегося голоса не бывает: фраза, которая повторяется, перестаёт быть сообщением, а ускоряться ей нечем. Чтобы услышать показатель несколько раз за поездку, поставьте условию шаг «Повторять с шагом».

Фразу можно переписать. По умолчанию она подставляется по показателю, и единицы измерения в ней не произносятся: вы сами завели правило и знаете, в чём меряется ваша скорость, а «шестьдесят километров в час» звучит вдвое дольше «шестидесяти» — на 60 км/ч это лишние пятнадцать метров дороги. Если единицы всё же нужны, вставьте {единицы}: слово согласуется с числом само, и получится «1 километр», а не «1 километров».

Под полем фразы стоит строка «как это прозвучит» — предложение целиком, с подставленным числом, и оценка его длины в секундах. Она нужна, чтобы сравнивать варианты между собой: длинная фраза договаривается тогда, когда ситуация уже изменилась.

Голос требует, чтобы у правила было одно условие верхнего уровня. При двух ветках через «любое из» неизвестно, какая сработала, и фраза назвала бы не то — в этом случае переключатель голоса недоступен, и редактор говорит почему. Связка «все сразу» голосу не мешает: когда она выполнилась, все её условия истинны одновременно.

Речь никогда не накладывается на писк. Если в момент срабатывания звучит тревога, фраза ждёт её конца; если тревога начинается посреди фразы — фраза обрывается. Ждущая фраза перед тем как прозвучать проверяется заново и пересобирается по свежим данным: «Скорость 80» не переживёт вашего торможения до сорока и не прозвучит вовсе, а «Аккумулятор 10», дождавшийся конца долгого аларма, скажется как «Аккумулятор 8».

Голосовые оповещения выключаются целиком одним переключателем в менеджере алертов — писки при этом остаются. Голос берётся системный: если в телефоне нет голоса нужного языка, редактор скажет об этом и предложит открыть настройки речи. На часы голосовые правила не отправляются: вибрация означает «что-то не так», а «Пробег 5» — не «не так».

Список алертов на Android: приоритет, область действия, тип срабатывания и условия в строке
Android. Полоса слева несёт приоритет, условия видны, не открывая алерт.
Список алертов на iPhone: условия и команды колесу видны прямо в списке
iPhone. Условия и команды видны, не открывая алерт.

Приоритеты#

У каждого алерта есть приоритет: критический, высокий, средний и фоновый. Если условия сработали у нескольких сразу, вы услышите самый важный, а не кашу из всех. На Android это буквально один голос: пока звучит самый приоритетный, остальные молчат полностью — без чередования и без наложения писков друг на друга — и видны только глазами на приборе.

Область действия#

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

Звук#

Звук собирается в своём конструкторе, шаг за шагом. У каждого шага своя частота, длительность, пауза после, громкость и форма волны:

  • синусоида, мягкий писк;
  • меандр, резкий сигнал тревоги;
  • пила, самый агрессивный;
  • треугольная, нейтральная.

Получившийся паттерн слушается прямо в редакторе и сохраняется в библиотеку, чтобы переиспользовать его в других алертах.

Привычная тревога по PWM — такой же алерт, собранный из этого же конструктора, только с наивысшим приоритетом среди всех. Она включена в наборе по умолчанию и правится в менеджере вместе со всеми: там её порог, там же условия, приоритет и рисунок писка. Отдельной карточки с ползунком в настройках больше нет — она правила ровно этот алерт, и настроенный в двух местах один порог рассказывал о себе две разные вещи. Отдельного звукового механизма для PWM тоже нет: правило «звучит только самый важный» действует и для неё наравне с вашими алертами. При обновлении со старой версии её порог, диапазон частот и точка слияния в непрерывный тон переносятся автоматически, ничего перенастраивать не нужно.

Сигналы по умолчанию играют поверх музыки, не меняя её громкость. Переключатель «Приглушать музыку при тревоге» — общий на все алерты — остался на первом экране настроек, рядом со входом в менеджер, и по умолчанию выключен. Если его включить, музыка приглушается один раз на всю тревогу и возвращается после неё, а не дёргает громкость между соседними сигналами.

Тревогу можно чувствовать рукой. Переключатель «Вибрация телефона» в менеджере алертов включён по умолчанию и работает вдобавок к писку, а не вместо него: слот звука забирает то навигатор, то входящий звонок, а между телефоном и ушами бывает ещё и микшер гарнитуры. Рисунок импульсов тот же, что на часах, и зависит от приоритета правила — критическое правило отдаёт двойной удар, остальные один. Вибрирует телефон на срабатывание, а не на каждый писк ускоряющегося алерта: чаще пяти раз в секунду мотор всё равно не отрабатывает.

На iPhone у этого канала есть ограничение, которое стоит знать заранее: система глушит вибрацию у свёрнутого приложения, и фонового режима для неё не существует. Пока экран с дашбордом открыт, вибрация работает; с погашенным экраном до вас доходит только звук. На Android такого ограничения нет.

Команды колесу#

Алерт умеет не только пищать, но и сам отправить команду в колесо. Например, снизить порог или включить свет.

Это работает не везде и намеренно обвешано ограничениями:

  • только для колёс, которые вообще принимают настройки;
  • только если алерт привязан к конкретному колесу, а не общий;
  • только после подтверждения предупреждения о том, что менять настройки на ходу опасно.

Относитесь к этому как к острому инструменту.

Если алерт нужен только ради команды — «скорость выше 60, педали жёстче», — писк на каждом пересечении порога ни к чему. В переключателе «Чем сигналит» есть третий вариант, «Без звука»: такое правило не пищит и не вибрирует, не перебивает другие тревоги, а команды отправляет и откатывает как обычно.

Строб фары#

Отдельная команда в том же списке: пока тревога держится, фара мигает, а как только тревога снята — гасится мигание и фара возвращается включённой. То же самое при остановке приложения и при паузе плеера дампов: строб не переживает поездку.

А вот обрыв связи мигание не доигрывает: чтобы вернуть фару, нужно колесо на том конце, а его уже нет. Если связь оборвалась в тёмной фазе, фара останется выключенной до следующей команды — своей кнопкой на колесе или из приложения после переподключения.

Устроено это по-разному у разных марок, и потому доступно не всем.

  • KingSong — строб у колеса свой, и команда на него обычная: строка «Стробоскоп фары» в списке команд алерта, включается и откатывается вместе с тревогой. Колесо должно успеть ответить, какое у строба текущее значение, иначе откатывать будет не к чему.
  • LeaperKim и NOSFET — своего строба у колеса нет, мигает само приложение, переключая режим света: вспышка примерно полтора раза в секунду, и горит фара вдвое дольше, чем погашена. В списке команд это строка «Строб фары (приложением)». NOSFET идёт по протоколу LeaperKim и получает ту же самую команду.
  • Oryx и Lynx-S мигают ближним: у них та же команда — это кнопка ближнего света. Если вы ехали на дальнем, приложение вернёт дальний после тревоги — но только если сам дальний включали из приложения. Свет, включённый кнопкой на колесе, приложению не виден: колесо своего состояния не сообщает, и после строба там останется ближний.
  • InMotion, Begode и Ninebot строба из приложения не получают. У InMotion фара идёт тем же путём, что и подтверждение настройки; у Begode мигание есть в кнопке фары, но команда подтверждена единственным источником, а этого мало, чтобы слать её сама по тревоге; у Ninebot фара из приложения не управляется вовсе.

Мигание не запускается при воспроизведении дампа: колеса там нет, и писать некуда.

Работает на Android и на iPhone одинаково: и таблица марок, и тайминг мигания лежат в общем ядре, так что правило, заведённое на одном телефоне, на другом не замолчит. Родной строб KingSong работает на обеих платформах и подавно — он обычная настройка.