Начиная с [[https://github.com/anklimov/lighthub/commit/0044b741ac9f6fb8fc4b1ff8388e47c8bb8efd9b|этого коммита]] у прошивки появилась возможность отслеживать одинарные, двойные, тройные, долгие нажатия

Конечный автомат, согласно которому реализован алгоритм, приведен на рисунке

{{ :btnautomate_2_.png?800 |}}

Фрагмент конфига (раздел in, на примере pin 68), который задает обработчики для нажатий, приведен ниже.
Каждое событие описывается JSON объектом или массивом JSON обьектов.
Внутри объекта, возможны следующие строковые параметры:


==Типы нажатий==
  * scmd - начало первого нажатия
  * rcmd - конец первого нажатия
  * lcmd - первое длительное нажатие
  * click - одиночное нажатие
  * dclick - двойное нажатие
  * tclick - тройное нажатие
  * scmd2 - начало двойного нажатия
  * scmd3 - начало тройного нажатия
  * lcmd2 - второе длительное нажатие
  * lcmd3 - третье длительное нажатие
  * rpcmd - цикл первого длительного нажатия
  * rpcmd2 - цикл второго длительного нажатия 
  * rpcmd3 - цикл третьего длительного нажатия

==Параметры обработчика нажатий==

* emit - MQTT топик в который отправить значение из параметра ecmd (если в параметре отсутствует / он будет дополнен слева префиксом статусного топика)

* ecmd - MQTT payload

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

* item - имя локального устройства из items (может содержать суффикс для указания того, какое именно свойство объекта надо изменить. Например: "lamp/hue" или "lamp/sat")

* icmd - команда для локального устройства (ON | OFF | HALT | REST | XON | XOFF | INCREASE | DECREASE | %<цифра>  и т.д)

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



<code>
                "68":{"T":0,        
                  "scmd":{"emit":"cmd","ecmd":"scmd"},
                  "rcmd":{"emit":"cmd","ecmd":"rcmd"},
                  "lcmd":{"emit":"cmd","ecmd":"lcmd"},
                  "click":{"emit":"cmd","ecmd":"click","item":"a_bedr","icmd":"TOGGLE"},
                  "dclick":[{"emit":"myhome/in/bedr","ecmd":"TOGGLE"},{"emit":"myhome/in/bedrspot","ecmd":"TOGGLE"}],
                  "tclick":{"item":"spi","icmd":"TOGGLE"}, 
                  "scmd2":{"emit":"cmd","ecmd":"scmd2"},
                  "scmd3":{"emit":"cmd","ecmd":"scmd3"},
                  "lcmd2":{"emit":"cmd","ecmd":"lcmd2"},   
                  "lcmd3":{"emit":"cmd","ecmd":"lcmd3"},
                  "rpcmd":{"item":"a_bedr","icmd":"INCREASE"},
                  "rpcmd2":{"item":"a_bedr","icmd":"DECREASE"},  
                  "rpcmd3":{"emit":"cmd","ecmd":"rpcmd3"}
                  
                },
</code>                

Еще пример:

* Длительное нажатие через раз увеличивает или уменьшает яркость группы ligth (суффикс set позволяет менять яркость не включая канал, если он выключен)
* Соответственно, длительное нажатие через двойной или тройной клик позволяет так же управлять цветом и насыщенностью
* Двойное и тройное нажатие без удерживания включают/выключают группы kuhktc и gstall соответственно
* Команда %-Х уменьшает параметр на Х пунктов, соответственно %+Х увеличивает

<code>
                "63":{"T":2,
                "click":{"item":"light","icmd":"TOGGLE"},
                "rpcmd":{"item":"light/set","icmd":"%+5","irev":"%-5"},
                "rpcmd2":{"item":"light/hue","icmd":"%+5","irev":"%-5"},
                "rpcmd3":{"item":"light/sat","icmd":"%+5","irev":"%-5"},
                "dclick":{"item":"kuhktc/cmd","icmd":"TOGGLE"},
                "tclick":{"item":"gstall","icmd":"TOGGLE"}},                

</code>

Еще пара полезных примеров для обычных (не кнопочных) выключателей
В первом - кратковременное выключение выключателя включает белый свет на полную (повторное - включает максимально насыщенный цвет и яркость 30%)

Во втором - совсем упрощенный вариант - для одноцветных ламп - лампа через раз включается на 30 и на 100 процентов яркости

<code>
               "56":{"T":2,
               "scmd":{"item":"bedr","icmd":"ON"},
               "scmd2":[{"item":"bedr","icmd":"100","irev":"30"},{"item":"bedr/sat","icmd":"0","irev":"100"}],
               "rcmd":{"item":"bedr","icmd":"OFF"}},
               
               "60":{"T":2,
               "scmd":{"item":"bedrspot","icmd":"100","irev":"30"},
               "rcmd":{"item":"bedrspot","icmd":"OFF"}},
</code>           