[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/enable0 / 1Состояние модуля - активен 1 или спит 0

Пример: топик moduleBox/flywheel_6/event/count, payload 8.

Команды

ТопикPayloadОписание
flywheel_<slot>/action/setCountцелое либо +N / -NУстановить значение счётчика — абсолютное либо приращение с префиксом + / -
flywheel_<slot>/action/enable0 / 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).