[SLOT_n]
mode = counter

Виртуальный модуль счётчика: хранит целое значение, принимает абсолютные и инкрементальные команды.

Совместимость

Виртуальный модуль, аппаратной части не требует. Доступные слоты: 0-9.

Принцип работы

Модуль хранит целочисленное значение. Команда set принимает как абсолютное значение, так и приращение с префиксом + или -. Рапортует при каждом изменении.

При заданном пороге (threshold) вместо абсолютного значения рапортуется дискретное состояние: 0, пока значение меньше порога, и 1 начиная с него.

Флаг circularCounter зацикливает счёт: при переполнении значение сбрасывается к противоположной границе диапазона minValmaxVal.

Топики

База топика события:

  • <deviceName>/counter_<slot> — например moduleBox/counter_0

База топика действия:

  • <deviceName>/counter_<slot> — например moduleBox/counter_0

Полный топик — база плюс направление и имя: moduleBox/counter_6/event/val.

Опции

Доступные опции:

  • disableOnStartфлаг, стартовать в выключенном состоянии и ждать action/enable со значением 1. По умолчанию модуль активен сразу.
  • maxValчисло(int), максимальное значение счётчика. По умолчанию максимум int32.
  • minValчисло(int), минимальное значение счётчика. По умолчанию 0.
  • thresholdчисло(int), пороговое значение. При ненулевом пороге модуль рапортует дискретное состояние вместо абсолютного значения. По умолчанию 0 — порог выключен.
  • circularCounterфлаг, при переполнении сбрасывать значение к противоположной границе диапазона.

События

ТопикPayloadОписание
counter_<slot>/event/enable0 / 1Состояние модуля - активен 1 или спит 0
counter_<slot>/event/valцелоеОтчёт значения счетчика

Пример: топик moduleBox/counter_6/event/val, payload 4.

Команды

ТопикPayloadОписание
counter_<slot>/action/setцелое либо +N / -NУстановить значение — абсолютное либо приращение с префиксом + / -
counter_<slot>/action/enable0 / 1Включить (1) или выключить (0) модуль

Примеры

[SLOT_6]
mode = counter
options = minVal:0, maxVal:10, circularCounter
;каждое нажатие кнопки увеличивает счётчик
crosslink = button_0/event/press:1->counter_6/action/set:+1

Циклический счётчик от 0 до 10: после 10 следующий инкремент даёт 0.

[SLOT_7]
mode = counter
options = threshold:5, minVal:0, maxVal:100
;одна кнопка увеличивает счётчик, другая уменьшает
crosslink = button_0/event/press:1->counter_7/action/set:+1, button_1/event/press:1->counter_7/action/set:-1

Счётчик с порогом 5: пока значение меньше 5 — рапортуется 0, с 5 и выше — 1.

Подробнее — внутренние связи (crossLink).