Две лампы, один выключатель



  • Решил провести эксперимент, УПРАВЛЕНИЕ ОДНИМ ВЫКЛЮЧАТЕЛЕМ ДВУМЯ ЛАМПАМИ

    может кому и пригодится для освоения intraHouse.

    прошу сильно не пинать! однако любые замечания и предложения приветствуются :oops:

    сценарий следующий - Лампы выключены, нажатие выключателя - загорается Лампа1, следующее нажатие - горят Лампа1, Лампа2, нажатие - горит Лампа2, нажатие - все погасли… т.е. получается такой примитивно-"двоичный" сценарий управления 😃

    00

    01

    11

    10

    00

    Допустим у нас уже есть LAMP1, LAMP2

    Этап 1 - Добавляем кнопку - PM (Project Manager) - Система - Устройства, делаем как показано на картинках 😉
    2017-01-31_102758.jpg
    2017-01-31_103103.jpg

    Далее "привязываем" созданную кнопку к входу Raspberry, например GPIO21

    Выбираем мышкой строку SENSOR1, внизу экрана жмем на кнопку "Железо", Плагин Raspberry Pi GPIO, Канал GPIO21

    чтобы "сработка" была при нажатии на кнопку, выбираем "Типа канала" pull_up, и ставим галочку "Инвертировать значение", чтобы когда кнопка не нажата она отображалась как OFF, а при нажатии ON

    и жмем "сохранить"
    2017-01-31_104007.jpg

    Теперь мы можем проверить нашу кнопочку, разместив её на плане и открыв главную страницу intraHouse - Устройства. Видим нашу кнопочку "Off" нажимаем на кнопку и на экране она стала "On", отпустили опять "Off" :ugeek:

    Тут вроде всё достаточно понятно и легко.

    Итого у нас есть две лампы (которые мы также разместили на плане) и выключатель в форме кнопки.

    продолжение следует…



  • Теперь переходим к написанию сценариев управления (так сказать создадим логику работы)

    Этап 2. открываем PM - Сценарии - По событиям устройств
    2017-01-31_110349.jpg
    на закладке основные "Событие" выбираем "При сработке датчика"
    2017-01-31_110948.jpg
    настраиваем на закладках "Выполнить" и "При условии"
    2017-01-31_111519.jpg

    первый шаг сценария готов!

    при нажатии на кнопку включает Лампу1, при условии, что обе лампы выключены.



  • Теперь нам нужно создать еще подобные сценарии, отличающиеся закладками ВЫПОЛНИТЬ, ПРИ УСЛОВИИ

    второй сценарий:

    Выполнить:

    LAMP1 - ВКЛЮЧИТЬ

    LAMP2 - ВКЛЮЧИТЬ

    При условии

    LAMP1 = on

    LAMP2 = off

    третий сценарий:

    Выполнить:

    LAMP1 - ВЫКЛЮЧИТЬ

    LAMP2 - ВКЛЮЧИТЬ

    При условии

    LAMP1 = on

    LAMP2 = on

    четвертый сценарий:

    Выполнить:

    LAMP1 - ВЫКЛЮЧИТЬ

    LAMP2 - ВЫКЛЮЧИТЬ

    При условии

    LAMP1 = off

    LAMP2 = on

    Вроде всё должно работать, но НЕ работает так как задумывалось!

    получается за одно нажатие мгновенно срабатывает несколько сценариев подряд 😞

    пробовал в сценарии на закладке "Выполнить" добавлять задержку 1 сек, не помогло.

    вопрос к разработчикам, как настроить, чтобы заработало, так как написано в первом посте, в условия данного примера ?

    как сделать, чтобы отрабатывал только один из четырех сценариев, а остальные не "мешали"?



  • Вы все сделали правильно 😉

    Повторил у себя, все работает.

    Проверьте, возможно у Lamp1 или к Lamp2 есть другие сценарии. Типа при включении Lamp1 включить Lamp2

    Или к кнопке привязан шаблонный сценарий длинных-коротких нажатий.



  • Всё проверил, ничего лишнего и мешающего нет!

    Видимо это тот самый "дребезг" контактов :x

    Вопрос - а у кнопки нет возможности нажимать мышкой на плане? Или только физическое нажатие, замыкание контактов…?



  • Кнопка это сенсор (датчик). На плане не нажимается.

    Вы можете поставить на план любой актуатор и сценарий по событию сделать на нем. Для теста.



  • @chas99:

    Далее "привязываем" созданную кнопку к входу Raspberry, например GPIO21

    Выбираем мышкой строку SENSOR1, внизу экрана жмем на кнопку "Железо", Плагин Raspberry Pi GPIO, Канал GPIO21

    чтобы "сработка" была при нажатии на кнопку, выбираем "Типа канала" pull_up…

    Для информации. Тип канала "pull_up" и "pull_down" - это способ физического подключения кнопки (датчика) http://intrahouse.ru/shemy-podkljuchenij-k-raspberry-pi/

    Резистивная подтяжка сверху - "pull_up", или снизу - "pull_down"



  • @intrahouse:

    @chas99:

    Далее "привязываем" созданную кнопку к входу Raspberry, например GPIO21

    Выбираем мышкой строку SENSOR1, внизу экрана жмем на кнопку "Железо", Плагин Raspberry Pi GPIO, Канал GPIO21

    чтобы "сработка" была при нажатии на кнопку, выбираем "Типа канала" pull_up…

    Для информации. Тип канала "pull_up" и "pull_down" - это способ физического подключения кнопки (датчика) http://intrahouse.ru/shemy-podkljuchenij-k-raspberry-pi/

    Резистивная подтяжка сверху - "pull_up", или снизу - "pull_down"

    А есть разница когда какой вариант использовать ? Всмысле если схема по pull_up мы выбираем "сработку" pull_up , и наоборот, это понятно, а когда какое подключение выбирать ?



  • @chas99:

    А есть разница когда какой вариант использовать ? Всмысле если схема по pull_up мы выбираем "сработку" pull_up , и наоборот, это понятно, а когда какое подключение выбирать ?

    Для теста выбирайте любое. Какое больше нравится.

    В нашем интерфейсном модуле iHM12I8O используется pull_up



  • Хорошо, спасибо.

    А когда сделаете 'обещанную' программную обработку (задержку) 'дребезга контактов'?



  • Постараемся в ближайшую субботу



  • не могу никак понять, что за глюк с кнопкой ?! :twisted:

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

    первое нажатие когда обе лампы выключены, после нажатия загорается LAMP1 - всё правильно

    второе нажатие, срабатывает сразу несколько скриптов (обратите внимание на секунды - 19:13:18) и в результате обе лампы погашены!

    и так практически всегда ! не зависимо сколько времени проходит между первым и вторым нажатием…

    вопрос - почему именно когда обе лампы выключены, то сценарий отрабатывает правильно, а когда LAMP1 горит, то глючат сценарии :?: :?:
    2017-02-01_191404.jpg



  • Вышлите мне на почту ваш проект.

    В разделе ProjectManager/Система/Системные настройки/Сохранение и восстановление данных - кнопка Commands

    1. Сохранить текущую конфигурацию в архив

    2. Сохранить архив на мой компьютер

    Затем этот файл отправьте мне на почту. Посмотрю.



  • @intrahouse:

    Вышлите мне на почту ваш проект.

    В разделе ProjectManager/Система/Системные настройки/Сохранение и восстановление данных - кнопка Commands

    1. Сохранить текущую конфигурацию в архив

    2. Сохранить архив на мой компьютер

    Затем этот файл отправьте мне на почту. Посмотрю.

    отправил, если надо могу дать адрес для доступа (логин и пароль)



  • @chas99:

    … если надо могу дать адрес для доступа (логин и пароль)

    Надо. Отправьте в личку



  • @intrahouse:

    Вы все сделали правильно 😉

    Повторил у себя, все работает.

    Проверьте, возможно у Lamp1 или к Lamp2 есть другие сценарии. Типа при включении Lamp1 включить Lamp2

    Или к кнопке привязан шаблонный сценарий длинных-коротких нажатий.

    сейчас взял другую sd-карту установил на неё образ из архива (с вашего сайта)

    зашел в intraHouse -> PM - Система - Сохранение и восстановление данных - выбрал архив Factory settimg (Empty) - Commands - Восстановить конфигурацию из архива, перезапустил intraHouse, зашел в устройства добавил кнопку и сценарии (все как вначале этой темы) в результате ничего не работает 😞 вернее работает, но см.лог
    2017-02-02_190121.jpg
    далее создаю Актуатор и опять четыре сценария и результат такой же 😞
    2017-02-02_185118.jpg
    насколько я вижу по логам, то все сценарии срабатывают сразу…

    больше ничего не делал!

    **Внимание вопрос - что я делаю не правильно? почему у вас работает а у меня нет?

    конфигурация ваша ЧИСТАЯ ни каких других настроек и экспериментов не делал!** :roll:

    конфигурацию отправил на почту…



  • Загрузил вашу конфигурацию.

    Ведет себя так как вы описали.

    В вашей конфигурации кнопка привязана ко входу Raspberry, а светильники нет.

    Проведем эксперимент. Будем работать с Lamp1, Lamp2 и Sensor1 (кнопка).

    Sensor1 уже привязан к Raspberry. Попробуйте привязать Lamp1 и Lamp2 к выходам Rapberry и понажимать на кнопку. Все работает.

    А без привязки нет. На первый взгляд странно. Но имеет четкое объяснение.

    Все сценарии работают асинхронно. Это важно понимать.

    При нажатии на кнопку проверяется условие запуска сценария.

    Срабатывает один сценарий со своими условиями и меняет состояние Lamp1 и Lamp2.

    Другой сценарий тоже проверяет условие запуска, но видит уже другое состояние Lamp1 и Lamp2 и в соответствии с условием тоже переключает эти Lamp1 и Lamp2

    Когда мы привязываем их к Raspberry, требуется время на работу плагина (включение/выключение реальных выходов Raspberry).

    Конечно это время мизерное, но его достаточно для того чтобы второй сценарий не успел увидеть переключение светильников.

    Вывод.

    Не рекомендуется делать сценарии, которые срабатывают по одному и тому же датчику (кнопке) и переключают одни и те же актуаторы (Lamp1,Lamp2)

    Но очень хочется. Как быть?

    Добавляем в сценарий блокировку. Блокировка так же является условием запуска сценария. То есть если датчик (кнопка) заблокирован, сценарий не запустится.

    Ниже показано показан сценарий с блокировками
    scen121.jpg
    @chas99:

    НЕ ВЕРЮ

    @chas99:

    Внимание вопрос - что я делаю не правильно? почему у вас работает а у меня нет?

    конфигурация ваша ЧИСТАЯ ни каких других настроек и экспериментов не делал!

    У вас светильники не привязаны к выходам, у меня привязаны. Поэтому в тесте у меня работало, у вас нет.


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