Связь выключателей

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

Модератор: immortal

Ответить
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Связь выключателей

Сообщение Divan » Пн июл 08, 2019 7:27 pm

Добрый вечер. Нужна ваша помощь.

Имеется радиовыключатель Broadlink TC2 на две зоны, настроил в простых устройствах выключатели, сделал 3 выключателя и прописал код согласно инструкции https://kb.mjdm.ru/broadlink_rm_switch_sd/ - тут вопросов нет.

if ($this->getProperty('status')) {
$this->setProperty('command_on',1);
} else {
$this->setProperty('command_off',1);
}


Кнопки выключателя я добавил в простые устройства:
1 кнопка, это вкл\выкл 1 зону выключателя
2 кнопка, это вкл\выкл 2 зоны выключателя
3 кнопка, это вкл\выкл обе зоны выключателя

Как сделать так, чтобы нажав на 3-ю кнопку, менялись статусы 1 и 2 кнопки?

Если я пропишу такой код (см.ниже), то он поэтапно включает и выключает освещение, мне такой вариант не подходит, нужно, чтобы нажав на кнопку 3, статусы кнопок 1 и 2 сменились на 0 одновременно или статусы кнопок 1 и 2 сменились на статус 1 тоже одновременно, без поэтапного включения и выключения.

$objects=array('SRelays01','SRelays02','SRelays03');
foreach($objects as $o) {
callMethod($o.'.turnoff');
}
Вложения
1.JPG
Простые устройства
1.JPG (33.66 КБ) 3469 просмотров
2.JPG
Объекты SRelays
2.JPG (51.51 КБ) 3470 просмотров
3.JPG
Метод
3.JPG (56.71 КБ) 3470 просмотров
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Связь выключателей

Сообщение Divan » Пт июл 12, 2019 10:02 am

Сделал как мне нужно. Теперь когда нажимаю включить все зоны света, все лампы включаются одновременно, не поэтапно, как было до этого. Было так, нажимаешь на кнопку "Выключатель Все зоны", сначала включались лампы "Зона-1", потом лампы "Зона-2", а статусы 1 и 2 зоны света менялись с 0 на 1 одновременно, теперь нажав на кнопку "Выключатель Все зоны", лампы 2-х зон включаются одновременно и сразу. Я добавил в методы turnOn и turnOff код статуса, но по мне кажется что это не правильно, может кто-то из знающих подскажет как правильно нужно написать код, чтобы при включении света?
Вложения
Вкл-Выкл статус света.jpg
Выключение и включение света
Вкл-Выкл статус света.jpg (25.91 КБ) 3397 просмотров
Методы - SRelays03.jpg
Методы
Методы - SRelays03.jpg (68.81 КБ) 3397 просмотров
Методы-SRelays03-методы.jpg
Коды в медодах
Методы-SRelays03-методы.jpg (88.69 КБ) 3397 просмотров
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: Связь выключателей

Сообщение xor » Пт июл 12, 2019 11:49 am

Divan писал(а):Сделал как мне нужно. Теперь когда нажимаю включить все зоны света, все лампы включаются одновременно, не поэтапно, как было до этого. Было так, нажимаешь на кнопку "Выключатель Все зоны", сначала включались лампы "Зона-1", потом лампы "Зона-2", а статусы 1 и 2 зоны света менялись с 0 на 1 одновременно, теперь нажав на кнопку "Выключатель Все зоны", лампы 2-х зон включаются одновременно и сразу. Я добавил в методы turnOn и turnOff код статуса, но по мне кажется что это не правильно, может кто-то из знающих подскажет как правильно нужно написать код, чтобы при включении света?
Да всё правильно вы сделали при вашем способе управления реле. Он у вас через статус реализуется или через метод вкл реле/выкл реле. Понятно, что это предложено в статье, но давайте проверим, так сказать, логистику.

Чтобы включить реле, вызывается метод турнон, который меняет статус, при смене статуса вызывается метод, привязанный к изменению свойства, который, в свою очередь устанавливает значение дополнительного свойства коммандОн, которое привязано к команде бродлинка, которая и передаёт команду на реле. При использовании для управления не метода, а свойства всё это сокращается на один шаг.
Не кажется, что это как-то заморочно?

Я у себя делал так - вообще не использовал привязку в модуле бродлинка к объектам.свойствам, использовал оттуда только конечные команды.

В методе турнон реле, например, srelay01 нажимаем кнопку настроить и прописываем там команду бродлинка на вкл этого реле, типа BrLinkCommang('srelay01_on');
Аналогично делаем это и для метода турнофф

А статус устанавливается уж классовыми методами реле.

Управление реле только через методы.
И при вызове метода уже вторым шагом идёт отправка команды от бродлинка и не надо доп. свойств никаких.

Т е., в вашем случае для вкл всего света виртуальным общим выключателем надо в его методе турнон написать

cm('srelay01.turnon');
cm('srelay02.turnon');

Ну, вам решать)

Отправлено с моего Redmi 4X через Tapatalk

Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Связь выключателей

Сообщение Divan » Пт июл 12, 2019 11:58 am

Спасибо за ответ, а ваш метод намного проще, попробую. :)
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Связь выключателей

Сообщение Divan » Чт июл 25, 2019 9:48 am

xor писал(а):
Пт июл 12, 2019 11:49 am
Divan писал(а):Сделал как мне нужно. Теперь когда нажимаю включить все зоны света, все лампы включаются одновременно, не поэтапно, как было до этого. Было так, нажимаешь на кнопку "Выключатель Все зоны", сначала включались лампы "Зона-1", потом лампы "Зона-2", а статусы 1 и 2 зоны света менялись с 0 на 1 одновременно, теперь нажав на кнопку "Выключатель Все зоны", лампы 2-х зон включаются одновременно и сразу. Я добавил в методы turnOn и turnOff код статуса, но по мне кажется что это не правильно, может кто-то из знающих подскажет как правильно нужно написать код, чтобы при включении света?
Да всё правильно вы сделали при вашем способе управления реле. Он у вас через статус реализуется или через метод вкл реле/выкл реле. Понятно, что это предложено в статье, но давайте проверим, так сказать, логистику.

Чтобы включить реле, вызывается метод турнон, который меняет статус, при смене статуса вызывается метод, привязанный к изменению свойства, который, в свою очередь устанавливает значение дополнительного свойства коммандОн, которое привязано к команде бродлинка, которая и передаёт команду на реле. При использовании для управления не метода, а свойства всё это сокращается на один шаг.
Не кажется, что это как-то заморочно?

Я у себя делал так - вообще не использовал привязку в модуле бродлинка к объектам.свойствам, использовал оттуда только конечные команды.

В методе турнон реле, например, srelay01 нажимаем кнопку настроить и прописываем там команду бродлинка на вкл этого реле, типа BrLinkCommang('srelay01_on');
Аналогично делаем это и для метода турнофф

А статус устанавливается уж классовыми методами реле.

Управление реле только через методы.
И при вызове метода уже вторым шагом идёт отправка команды от бродлинка и не надо доп. свойств никаких.

Т е., в вашем случае для вкл всего света виртуальным общим выключателем надо в его методе турнон написать

cm('srelay01.turnon');
cm('srelay02.turnon');

Ну, вам решать)

Отправлено с моего Redmi 4X через Tapatalk
Попробовал, но в таком случает идет поэтапное включение света, сначала включается 1 зона, потом 2 зона и также выключается, меня это не устроило, поэтому я просто в "Вкл/Выкл Все зоны" вставил статусы и получилось то, что мне было нужно, когда все зоны сразу одновременно включаются и выключаются, то меняется статус на 1 и 2 зонах.
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: Связь выключателей

Сообщение xor » Чт июл 25, 2019 10:04 am

Divan писал(а):
xor писал(а):
Пт июл 12, 2019 11:49 am
Divan писал(а):Сделал как мне нужно. Теперь когда нажимаю включить все зоны света, все лампы включаются одновременно, не поэтапно, как было до этого. Было так, нажимаешь на кнопку "Выключатель Все зоны", сначала включались лампы "Зона-1", потом лампы "Зона-2", а статусы 1 и 2 зоны света менялись с 0 на 1 одновременно, теперь нажав на кнопку "Выключатель Все зоны", лампы 2-х зон включаются одновременно и сразу. Я добавил в методы turnOn и turnOff код статуса, но по мне кажется что это не правильно, может кто-то из знающих подскажет как правильно нужно написать код, чтобы при включении света?
Да всё правильно вы сделали при вашем способе управления реле. Он у вас через статус реализуется или через метод вкл реле/выкл реле. Понятно, что это предложено в статье, но давайте проверим, так сказать, логистику.

Чтобы включить реле, вызывается метод турнон, который меняет статус, при смене статуса вызывается метод, привязанный к изменению свойства, который, в свою очередь устанавливает значение дополнительного свойства коммандОн, которое привязано к команде бродлинка, которая и передаёт команду на реле. При использовании для управления не метода, а свойства всё это сокращается на один шаг.
Не кажется, что это как-то заморочно?

Я у себя делал так - вообще не использовал привязку в модуле бродлинка к объектам.свойствам, использовал оттуда только конечные команды.

В методе турнон реле, например, srelay01 нажимаем кнопку настроить и прописываем там команду бродлинка на вкл этого реле, типа BrLinkCommang('srelay01_on');
Аналогично делаем это и для метода турнофф

А статус устанавливается уж классовыми методами реле.

Управление реле только через методы.
И при вызове метода уже вторым шагом идёт отправка команды от бродлинка и не надо доп. свойств никаких.

Т е., в вашем случае для вкл всего света виртуальным общим выключателем надо в его методе турнон написать

cm('srelay01.turnon');
cm('srelay02.turnon');

Ну, вам решать)

Отправлено с моего Redmi 4X через Tapatalk
Попробовал, но в таком случает идет поэтапное включение света, сначала включается 1 зона, потом 2 зона и также выключается, меня это не устроило, поэтому я просто в "Вкл/Выкл Все зоны" вставил статусы и получилось то, что мне было нужно, когда все зоны сразу одновременно включаются и выключаются, то меняется статус на 1 и 2 зонах.
Тут подряд две команды бродлинку идут, не знаю, откуда у вас получается задержка между переключениями. Выполнение неск. команд на выключение всегда последовательное, кроме случая существования общей команды, поддерживаемой аппаратно

Отправлено с моего Redmi 4X через Tapatalk

Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Связь выключателей

Сообщение Divan » Чт июл 25, 2019 10:15 am

у вас все сразу включается, без последовательности? Я вот так добавил (см. скриншот), включается последовательно и также выключается последовательно.
Вложения
Включитть весь свет.JPG
Включитть весь свет.JPG (39.87 КБ) 3271 просмотр
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: Связь выключателей

Сообщение xor » Чт июл 25, 2019 12:57 pm

Divan писал(а):у вас все сразу включается, без последовательности? Я вот так добавил (см. скриншот), включается последовательно и также выключается последовательно.
Если у вас два выключателя и одна рука, то вы сможете выключить их только по очереди. Если вы будете делать это очень быстро, то будет казаться, что свет переключается одновременно.
По настоящему одновременно вы можете включить свет в двух местах либо общим выключателем одной рукой, либо теми же выключателями, но двумя руками.
Или вы знаете ещё способ?

Отправлено с моего Redmi 4X через Tapatalk

Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Связь выключателей

Сообщение Divan » Чт июл 25, 2019 1:55 pm

Нее ), тут речь идет про 1 выключатель и 1 люстру с двумя зонами. У радиовыключателя Broadlink TC2 на две зоны имеется 3 режима:

1) Вкл/Выкл 1 зону
2) Вкл/Выкл 2 зону
3) Вкл/Выкл все зоны

Когда нажимаю на кнопку "Вкл/Выкл все зоны", то все зоны одновременно включается или выключаются.

А так, конечно, вы правы, если в каждой комнате стоит умный выключатель, то естественно будет Вкл/Выкл последовательно, просто я изначально не написал, что речь идет про один двухзональный выключатель и одну люстру.
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: Связь выключателей

Сообщение xor » Чт июл 25, 2019 2:35 pm


Divan писал(а):Нее ), тут речь идет про 1 выключатель и 1 люстру с двумя зонами. У радиовыключателя Broadlink TC2 на две зоны имеется 3 режима:

1) Вкл/Выкл 1 зону
2) Вкл/Выкл 2 зону
3) Вкл/Выкл все зоны

Когда нажимаю на кнопку "Вкл/Выкл все зоны", то все зоны одновременно включается или выключаются.

А так, конечно, вы правы, если в каждой комнате стоит умный выключатель, то естественно будет Вкл/Выкл последовательно, просто я изначально не написал, что речь идет про один двухзональный выключатель и одну люстру.
Ну, тогда для общего выключателя (3 режим) тоже сделать обьект реле со своими турнон/турноф и в методах, конечно, прописать его команды бродлинка, а не две последовательные, единственно, при выполнении его методов принудительно менять статус для первых двух реле по факту

Вообще, интересно получается - у двух реле может быть только два состояния - вкл и выкл, а у третьего - три. Полностью вкл, полностью выкл и включено частично. Как это третье состояние отобразить бистабильным выключателем? Наверное, его надо заменить в интерфейсе на две кнопки - вкл и выкл, с вызовом соотв. методов и установкой статусов первых двух реле, упраалямых в интерфейсе выключателями с положением, зависимым от их статуса

Отправлено с моего Redmi 4X через Tapatalk



Ответить