Инструменты пользователя

Инструменты сайта


двойные_тройные_длительные_нажатия

Начиная с этого коммита у прошивки появилась возможность отслеживать одинарные, двойные, тройные, долгие нажатия

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

Фрагмент конфига (раздел 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 будут подставляться попеременно для каждого нажатия. Позволяет обеспечить, например, увеличение и уменьшение яркости лампы одной клавишей.

                "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"}
                  
                },

Еще пример:

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

                "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"}},                

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

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

               "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"}},
двойные_тройные_длительные_нажатия.txt · Последнее изменение: 2021/10/25 00:23 — prizzrak14