[SLOT_n]
mode = button_ledПрограммный модуль для кнопки с обычным (одноцветным) светодиодом подсветки.
Совместимость
Принцип работы
Рапортует об изменении состояния кнопки: нажатие, отпускание, а при включённых опциях — длинное и двойное нажатие. Подсветкой управляет по командам и внутренним связям.
Яркость меняется плавно: за время fadeTime значение переходит от minBright к maxBright и обратно, кадрами с частотой ledRefreshRate.
Топики
База топика события:
<deviceName>/button_<slot>— напримерmoduleBox/button_0
База топика действия:
<deviceName>/led_<slot>— напримерmoduleBox/led_0
Полный топик — база плюс направление и имя: moduleBox/button_0/event/press.
Опции
Доступные опции для кнопки:
- buttonInverse — флаг, флаг определяет инверсию кнопки.
- buttonDebounceGap — число(int), глубина фильтра от дребезга контактов в мс. Диапазон 1–4096. По умолчанию 10.
- longPressTime — число(int), продолжительность длинного нажатия. Диапазон 0–65535. По умолчанию 0.
- doubleClickTime — число(int), длительность промежутка между нажатиями для регистрации двойного нажатия. Диапазон 0–65535. По умолчанию 0.
- eventFilter — флаг, подавляет короткое событие
press, когда сработало длинное или двойное нажатие. По умолчанию выключен — короткие события шлются всегда. - switchModeButton — флаг, режим переключателя: каждое нажатие меняет состояние
0/1и рапортуетevent/switch, событиеpressпри этом не шлётся. На старте модуль рапортуетswitch=0. По умолчанию выключен.
Доступные опции для подсветки:
- ledInverse — флаг, флаг определяет инверсию светодиода.
- ledDefaultState — число(int), состояние при запуске. Диапазон 0–1. По умолчанию 0.
- minBright — число(int), минимальное свечение. Диапазон 0–255. По умолчанию 0.
- maxBright — число(int), максимальное свечение. Диапазон 0–255. По умолчанию 255.
- fadeTime — число(int), время затухания свечения в мс. Диапазон 10–10000. По умолчанию 100.
- ledMode — строка(enum), задаёт режим анимации. Значения:
none,flash. - ledRefreshRate — число(int), частота перерисовки подсветки, кадров в секунду. Диапазон 1–4096. По умолчанию 40.
Общие опции:
- buttonRefreshRate — число(int), частота опроса кнопки, кадров в секунду. Диапазон 1–4096. По умолчанию 40.
События
| Топик | Payload | Описание |
|---|---|---|
button_<slot>/event/press | 0 / 1 | Рапортует при изменении состояния кнопки |
button_<slot>/event/longPress | 0 / 1 | Рапортует при регистрации длинного нажатия |
button_<slot>/event/doubleClick | 0 / 1 | Рапортует при регистрации двойного нажатия |
button_<slot>/event/switch | 0 / 1 | Состояние переключателя, при опции switchModeButton |
Пример: топик moduleBox/button_0/event/longPress, payload 1.
События longPress и doubleClick рапортуются только при ненулевых опциях longPressTime и doubleClickTime соответственно.
Команды
| Топик | Payload | Описание |
|---|---|---|
led_<slot>/action/toggleLedState | — | Переключить состояние подсветки на противоположное |
led_<slot>/action/setMinBright | 0–255 | Установить минимальное значение яркости |
led_<slot>/action/setMaxBright | 0–255 | Установить максимальное значение яркости |
led_<slot>/action/setFadeTime | 10–10000 | Время переходного процесса при изменении яркости, |
led_<slot>/action/enable | 0 / 1 | Включить (1) или выключить (0) подсветку |
Пример: топик moduleBox/led_0/action/setMaxBright, payload 200.
Режимы анимации
- none — без анимации. В состоянии «включено» яркость равна maxBright, в состоянии «выключено» — minBright.
- flash — вспышки с равными промежутками времени, от minBright до maxBright.
Примеры
[SLOT_0]
mode = button_led
options = ledMode:flash, minBright:0, maxBright:255, fadeTime:500
;включить подсветку при нажатии кнопки, погасить при отпускании
crosslink = button_0/event/press:1->led_0/action/enable:1, button_0/event/press:0->led_0/action/enable:0При активации подсветка плавно моргает: каждый кадр текущее значение яркости изменяется на рассчитанное приращение, после достижения максимума яркость начинает уменьшаться.
[SLOT_1]
mode = button_led
options = longPressTime:1000, eventFilter
;короткое нажатие переключает подсветку, длинное - перезагружает устройство
crosslink = button_1/event/press:1->led_1/action/toggleLedState:1, button_1/event/longPress:1->system/action/restart:1Флаг eventFilter подавляет короткое событие press, когда сработало длинное
нажатие — иначе оба события пришли бы одновременно.
Подробнее — внутренние связи (crossLink).
Архив
Описание модуля для прошивок до перехода на конституцию — button_led (архив).