[SLOT_n]
mode = flywheelВиртуальный модуль «маховик»: счётчик, значение которого само постепенно уменьшается.
Совместимость
Виртуальный модуль, аппаратной части не требует. Доступные слоты: 0-9.
Принцип работы
Модуль хранит числовое значение, которое каждые period миллисекунд
уменьшается на decrement. Значение увеличивается или задаётся командой
setCount — абсолютно либо приращением с префиксом + или -.
Абсолютное значение рапортуется событием count. При заданном пороге
(threshold) модуль дополнительно рапортует val — дискретное состояние
0 или 1.
Применяется для логики «активность»: пока поступают команды увеличения, значение держится выше порога; как только активность прекращается, значение сползает к минимуму и состояние переключается.
Топики
База топика события:
<deviceName>/flywheel_<slot>— напримерmoduleBox/flywheel_0
База топика действия:
<deviceName>/flywheel_<slot>— напримерmoduleBox/flywheel_0
Полный топик — база плюс направление и имя: moduleBox/flywheel_6/event/count.
Опции
Доступные опции:
- disableOnStart — флаг, стартовать в выключенном состоянии и ждать
action/enableсо значением1. По умолчанию модуль активен сразу. - decrement — число(float), значение декремента за один период. По умолчанию 0.1.
- period — число(int), период обновления в миллисекундах. Диапазон 1–10000. По умолчанию 100.
- threshold — число(int), пороговое значение. Диапазон 0–4096. По умолчанию 0.
- maxVal — число(int), максимальное значение. Диапазон 0–10000. По умолчанию 20.
- minVal — число(int), минимальное значение. Диапазон 0–10000. По умолчанию 0.
События
| Топик | Payload | Описание |
|---|---|---|
flywheel_<slot>/event/val | целое | Отчёт состояния в пороговом режиме (0/1) |
flywheel_<slot>/event/count | целое | Отчёт значения счетчика |
flywheel_<slot>/event/enable | 0 / 1 | Состояние модуля - активен 1 или спит 0 |
Пример: топик moduleBox/flywheel_6/event/count, payload 8.
Команды
| Топик | Payload | Описание |
|---|---|---|
flywheel_<slot>/action/setCount | целое либо +N / -N | Установить значение счётчика — абсолютное либо приращение с префиксом + / - |
flywheel_<slot>/action/enable | 0 / 1 | Включить (1) или выключить (0) модуль |
Примеры
[SLOT_6]
mode = flywheel
options = threshold:3, maxVal:10, decrement:0.5, period:200
;каждое нажатие кнопки добавляет единицу
crosslink = button_0/event/press:1->flywheel_6/action/setCount:+1, flywheel_6/event/val:@->led_0/action/enable:@Каждые 200 мс значение уменьшается на 0.5, то есть на 2.5 в секунду. Чтобы удерживать состояние активным, кнопку нужно нажимать не реже чем раз в секунду.
[SLOT_7]
mode = flywheel
options = maxVal:100, minVal:0, decrement:1, period:1000
;интенсивность нажатий задаёт яркость подсветки
crosslink = button_0/event/press:1->flywheel_7/action/setCount:+10, flywheel_7/event/count:@->pwmLeds_1/action/setMaxBright:@Подробнее — внутренние связи (crossLink).