Управление выключателем (кнопкой)



  • @intrapro:

    2. Создать новое устройство, назвать его BUTTON1, т.к. изменить ID устройства можно только при его создании, и привязать шаблонный сценарий "Нажатие кнопки" к нему.

    выбрал вариант 2. предложенный вами 😃

    создал по новой -

    1.добавил устройство "Датчик бинарный - Датчик универсальный два состояния" с ID BUTTON1

    2.[Поведение] добавил Шаблон сценария - "Нажатия кнопки (Короткое, длинное, двойное)"

    3.[Железо] привязал к GPIO21, Тип канала "Дискретный вход с подтяжкой pull_up", Инвертировать значение - вкл

    в результате - Ура, заработали и кнопка и лампочки!!! :!:

    но вылез проклятый "дребезг контактов" 😞 Подскажите, пожалуйста, как с ним бороться?

    для примера "длинное нажатие" нажал на кнопку и отпустил через пару секунд, а вот что записалось в журнале…
    2017-01-22_135213.jpg
    Причем если посмотреть Отладчик - Устройства - Монитор BUTTON1 - то там отображается 0, а при нажатии 1, и нет мерцания "дребезга контактов"…



  • @intrapro:

    Обычно сценарий можно создать двумя способами - через интерфейс (PM - сценарии - по событиям устройств) или написать скрипт в виде файла.

    Через интерфейс можно только обработать стандартное событие (нажато-отжато), а мы хотим нестандартное 🙂

    Именно поэтому мы написали скрипт, который вы сохранили как test.json и загрузили в систему.

    То есть сценарий по событию создавать НЕ НАДО, вместо него управлять лампами будет скрипт. Посмотрим, как его поменять для себя.

    ….

    СПАСИБО за развернутый ответ!

    оказывается всё довольно легко и просто (когда понимаешь) 😄



  • Надеюсь поможет эта информация в борьбе с "дребезгом контактов"

    Вот логи через Отладчик - Scene Server - Загрузка, старт/стоп сценариев

    Это одиночное нажатие кнопки
    2017-01-22_144255.jpg

    Это двойное
    2017-01-22_144320.jpg

    Это длинное
    2017-01-22_144356.jpg



  • У вас еще работают сценарии по событиям LAMP1 и LAMP2. Что они делают?



  • да, сделал на пробу два сценария, чтобы автоматом выключались лампы, LAMP1 через минуту после включения, LAMP2 через 10сек :oops:

    сценарии РАБОТАЮТ!

    Лампы выключаются через заданные интервалы, причем не зависимо как включать через физическую кнопку или мышкой на экране…



  • Как у вас проявляется дребезг? В логах не видим.



  • @intrahouse:

    Как у вас проявляется дребезг? В логах не видим.

    Проявляется - лампочки не понятно как срабатывают 😞 по крайней мере не так и не всегда как задумано, одно, двойное , длинное нажатие….



  • Попробуйте убрать все сценарии по событию для LAMP1 и LAMP2 и повторить эксперимент



  • Пробовал… То же самое...



  • Завтра проверим на работе



  • Хорошо, только кнопку подключите напрямую к raspberry



  • Проверили. На разных кнопках. И нашли кнопку где дребезг есть. Собственно это не кнопка, просто замыкал два проводочка.

    А раз есть, надо его убирать.

    Сделаем обработку дребезга на уровне плагина.

    О результате сообщу.





  • заменил кнопку, на другую, работать стало гораздо лучше 😉

    логика работы не много не устраивает!

    двойное нажатие зажигает сразу LAMP2, а вот одиночное нажатие - LAMP1 зажигается с задержкой ~2сек! не удобно…

    хотел поиграть с настройкой таймеров - fm_butpress.pat

      "timers":[
          {"name":"T1","interval":"1",  "call":"ontimer1"},
          {"name":"T2","interval":"1",  "call":"stop"}
    
    

    изменил на "1" на "0.1", но сохранить изменения не могу - Permission Denied

    подскажите, пожалуйста, как изменить и таймер и сохранить?

    я хочу поэкспериментировать с задержками…



  • не дождался ответа, пришлось самому разбираться :ugeek:

    сделал так, вместо 1 поставил 0.05

     "timers":[
          {"name":"T1","interval":"0.05",  "call":"ontimer1"},
          {"name":"T2","interval":"0.05",  "call":"stop"}
    
    
    

    стало быстрее реагировать!



  • @intrahouse:

    Сделаем обработку дребезга на уровне плагина.

    О результате сообщу.

    Сделали обработку дребезга контактов. Можно обновиться и протестировать.



  • @intrahouse:

    Сделали обработку дребезга контактов. Можно обновиться и протестировать.

    Потестил, работает стабильно, спасибо! 😉

    Работает и как просто кнопка (без Поведения), так и с Поведением (Нажатие Короткое, длинное, двойное) правда для уменьшения задержки при включении LAMP1 изменил значения обоих Таймеров T1 и T2 с 1 на 0.1

    "timers":[
          {"name":"T1","interval":"0.1",  "call":"ontimer1"},
          {"name":"T2","interval":"0.1",  "call":"stop"}
    ]
    
    


  • @MikrotikEr:

    А вот как здесь можно сделать,принцип вроде тот же нажал один раз включилось, нажал второй раз-выключилось?

    Можно сделать двумя событийными сценариями.

    Первый: при сработке включает светильник если он выключен

    Второй: при сработке выключает светильник если он включен


Авторизуйтесь, чтобы ответить