Цитата Сообщение от Sel Посмотреть сообщение
Пример посмотрел, спасибо. Я понимаю, что связка, с использованием задержки выключения ТР спасает от ложных срабатываний, срезая передний фронт, но это костыль, который будет приводить к несрабатываниям (нажал на кнопку и задумался). А хотелось бы уйти от этого ограничения.

Понятно, что таймеры нужны будут, особенно там, где событие по удержанию клавиши. Но меня убивает ограничение, которые без танцев с бубнами не обойти. Те же таймеры удержания для переключения режимов это вынужденная мера из-за того, что я не понимаю как переключить контуры управления лампами. В коде все просто с точки зрения условий, а вот лоджик очень сильно ограничивает (если бы можно было вводить условия кодом, все было бы проще).

Для понимания чего хочу. Вариант временный. Удержание 2-х нажатых клавиш более 5-ти секунд выключает свет во всей квартире (здесь точно нужен таймер). l1 влк\вык лампу с 7-ю схемами включения Лампа_1, l2 управляет одной лампой Лампа_2. Если зажимаем l2, то нажатием l1 меняем режимы включения Лампа_1. (это реализовано). Выключение всего света в квартире производится путем сброса макроса Т-риггера в 0 (для Вашего примера везде устанавливается Q=0)
Что не реализовано:
1. если зажималась l2 и переключались режимы Лампа_1, то статус Лампа_2 не меняется (на данный момент Лампа_2 реагирует на любое нажатие)
2. если, после изменения режима Лампа_1 сначала отпустить l2, а потом l1, то Лампа_1 выключается.
3. При отпускании обеих клавиш после сброса, лампы должны оставаться выключенными. (в данном примере, если после сброса первой отпустить l2, Т-триггер поменяет статус, что приведет к выключению лампы. В случае сброса, если отпустить клавишу после обнуления переменных, триггер будет отрабатывать в обычном режиме)
4. Все переключения ламп должны происходить только если нет сброса (не уверен на счет заднего фронта выключателя, так как экспериментируя с фронтами, некоторые замечания уходят).


В этом примере хорошо, если бы прямая линия от l2 до Т-триггер2 разрывалась, если при удержании l2 была нажата l1 и восстанавливалась только при отпускании l2. Такое своеобразное программное реле. Даже не знаю как проще объяснить, чтобы Вы меня поняли.
пример 1:
1.jpg

Теперь вариант с двумя многорежимными лампами.
Я убрал таймеры, которые заставляют лишнее время стоять у выключателя, в итоге переключая режимы на Лампа_1 (удерживаем l2 и щелкаем l1), Лампа_1 переключает режимы, Лампа_2 мигает и переключает режимы.

Пример 2:
2.jpg

Для решения моего вопроса хорошо помогла бы функция оценки статуса выключателя (нажат\отпущен), в этом случае, можно сделать условие:
если были нажаты клавиши l1 и l2, то Лампа_2 игнорирует выключатель; иначе слушается
У меня создаётся впечатление, что Вы не смотрели мои варианты включения-выключения ламп, там как раз как Вы хотите при переключении режима работы кнопок с первого(включение-выключение) на второй(переключение по кругу выходов одного светильника 1-8), как раз первый режим блокируется на время и если кнопка не нажимается некоторое время(10 с) опять переключается на первый режим работы! Вам ничего и думать-понимать не нужно, можно сделать аналогично! И если Вы сторонник текстовых языков, то только из-за принципа должны были взять что-то вроде СПК, дюймов на 10 и не заморачиваться, там на экране места хватит для двух кнопок на каждый светильник и главное реализовали бы свои способности, может завидовать все вам стали!