# Как написать сценарий длинного нажатия?

**URL:** <https://support.wirenboard.com/t/kak-napisat-sczenarij-dlinnogo-nazhatiya/2342>\
**Category:** Умный дом\
**Created:** [December 29, 2018, 8:07am UTC](https://support.wirenboard.com/t/kak-napisat-sczenarij-dlinnogo-nazhatiya/2342 "2018-12-29T08:07:19Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![Ianni](https://avatars.discourse-cdn.com/v2/letter/i/49beb7/32.png) [@Ianni](https://support.wirenboard.com/u/Ianni)\
**Post date:** [December 29, 2018, 1:51pm UTC](https://support.wirenboard.com/t/kak-napisat-sczenarij-dlinnogo-nazhatiya/2342/3 "2018-12-29T13:51:21Z")

</div>

Добрый вечер. Написал небольшое правило. Работать будет хорошо с дискретными модулями ввода (С модбас устройствами к сожалению возникнут трудности). Например WBIO-DI-DR-14.  
логика довольно проста: При нажатии смотрим время. При отпускании смотрим ещё раз и сравниваем сколько прошло. Если меньше секунды - короткое нажатие, если больше секунды - длинное нажатие. Вместо wb-gpio/A1\_OUT укажите нужное Вам устройство. Вместо логов укажите нужные Вам реакции.

```
var timerLast;
var timerTime;
defineRule("long_press", {
    whenChanged: "wb-gpio/A1_OUT",
    then: function(newValue, devName, cellName) {
        if (newValue) {
          timerLast = Date.now();
        }else{
           timerTime = Date.now();
          if ((timerTime - timerLast) <= 1000) {
                log("короткое нажатие");
            } else if ((timerTime - timerLast) >= 1000) {
                log("длинное нажатие");
            }
        }
    }
});
```

---

_[View the full topic](https://support.wirenboard.com/t/kak-napisat-sczenarij-dlinnogo-nazhatiya/2342)._
