как к одному выключателю привязать два объекта?
Модератор: immortal
-
- Сообщения: 15
- Зарегистрирован: Чт сен 08, 2016 3:01 pm
- Благодарил (а): 8 раз
- Поблагодарили: 0
как к одному выключателю привязать два объекта?
Всем доброго дня!
Только начал увлекаться умным домом, программированием не владею, в интернете не нешел решения.
В зале две группы светильников, в меню управления, в разделе освещение/зал/ создал три выключателя: Весь свет, Группа1, Группа2, в объектах Relays/Switch4zal1grupp и Switch5zal2grupp.
Группа1 привязал к Switch4zal1, Группа2 к Switch5zal2grupp соответственно.
Подскажите, пожалуйста, как к выключателю Весь свет привязать два объекта Switch4zal1grupp и Switch5zal2grupp, чтобы включать и выключать весь свет в зале?
Спасибо!
Только начал увлекаться умным домом, программированием не владею, в интернете не нешел решения.
В зале две группы светильников, в меню управления, в разделе освещение/зал/ создал три выключателя: Весь свет, Группа1, Группа2, в объектах Relays/Switch4zal1grupp и Switch5zal2grupp.
Группа1 привязал к Switch4zal1, Группа2 к Switch5zal2grupp соответственно.
Подскажите, пожалуйста, как к выключателю Весь свет привязать два объекта Switch4zal1grupp и Switch5zal2grupp, чтобы включать и выключать весь свет в зале?
Спасибо!
- Вложения
-
- 1.jpg (284.6 КБ) 7548 просмотров
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: как к одному выключателю привязать два объекта?
Вписать код выключателя. Не видя ваших свойств у объектов - конкретного ничего не подскажу, но в кратце - выбираете не связанный объект, а код, и пишите на включение На выключение то же самое только с 0.
Код: Выделить всё
sg('Switch5zal1grupp.status', 1);
sg('Switch5zal2grupp.status', 1);
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".

>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 15
- Зарегистрирован: Чт сен 08, 2016 3:01 pm
- Благодарил (а): 8 раз
- Поблагодарили: 0
Re: как к одному выключателю привязать два объекта?
Спасибо, что ответили.
Но я не понимаю как прописать код на включение и на отключение.
При редактировании объекта Весь свет я могу вписать только один код, либо на включение
sg('Switch4zal1grupp.status', 1);
sg('Switch5zal2grupp.status', 1);
либо на выключение
sg('Switch4zal1grupp.status', 0);
sg('Switch5zal2grupp.status', 0);
и они работают (спасибо), но работают только при включении выключателя Весь свет. Возможно надо добавить какое-то условие?
Вот например в КНОПКЕ я добавлял два состояния вкл и выкл и код на включение и выключение соответственно. А как быть с выключателем? Там могу написать только один код.
Но я не понимаю как прописать код на включение и на отключение.
При редактировании объекта Весь свет я могу вписать только один код, либо на включение
sg('Switch4zal1grupp.status', 1);
sg('Switch5zal2grupp.status', 1);
либо на выключение
sg('Switch4zal1grupp.status', 0);
sg('Switch5zal2grupp.status', 0);
и они работают (спасибо), но работают только при включении выключателя Весь свет. Возможно надо добавить какое-то условие?
Вот например в КНОПКЕ я добавлял два состояния вкл и выкл и код на включение и выключение соответственно. А как быть с выключателем? Там могу написать только один код.
- Вложения
-
- 2.jpg (225.57 КБ) 7466 просмотров
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: как к одному выключателю привязать два объекта?
Аа...у вас выключатель в меню...на сцене просто можно 2 состояния прописать, и для каждого свой код... а тут будет примерно так
Привяжите к выключателю любой объект (к примеру SwitchAllzal) и свойство (к примеру status), и впишите вместо "общий статус" "SwitchAllzal.status"
Код: Выделить всё
if (gg('общий статус')==0) {
sg('Switch4zal1grupp.status', 0);
sg('Switch5zal2grupp.status', 0);
} else {
sg('Switch4zal1grupp.status', 1);
sg('Switch5zal2grupp.status', 1);
}
- За это сообщение автора nick7zmail поблагодарил:
- Unreal (Ср окт 05, 2016 2:07 pm)
- Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".

>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 15
- Зарегистрирован: Чт сен 08, 2016 3:01 pm
- Благодарил (а): 8 раз
- Поблагодарили: 0
Re: как к одному выключателю привязать два объекта?
Спасибо большое!!!
Все получилось, принцип понял, уже легче)
Все получилось, принцип понял, уже легче)
-
- Сообщения: 15
- Зарегистрирован: Чт сен 08, 2016 3:01 pm
- Благодарил (а): 8 раз
- Поблагодарили: 0
Re: как к одному выключателю привязать два объекта?
Понял, но не до конца)
При включении в меню управления группа1 и группа 2 - выключатель весь свет остается выключенным
думаю, надо что-то вроде этого
if (gg('Switch4zal1grupp.status')==1)
И
(gg('Switch5zal2grupp.status')==1)
{sg(SwitchAllzal.status', 1);}
else {
sg('SwitchAllzal.status', 0);
}
но где и как (синтаксис никакой).
При включении в меню управления группа1 и группа 2 - выключатель весь свет остается выключенным
думаю, надо что-то вроде этого
if (gg('Switch4zal1grupp.status')==1)
И
(gg('Switch5zal2grupp.status')==1)
{sg(SwitchAllzal.status', 1);}
else {
sg('SwitchAllzal.status', 0);
}
но где и как (синтаксис никакой).
-
- Сообщения: 21
- Зарегистрирован: Пн фев 29, 2016 10:21 pm
- Благодарил (а): 0
- Поблагодарили: 3 раза
Re: как к одному выключателю привязать два объекта?
Если я правильно понял задачу, то как-то так
Но без понимания того, какое оборудование и объекты вы используете нет гарантии, что физически будет переключаться свет. Вы уверены, что при изменении статуса объекта у вас отправляется что-то на реле?
Код: Выделить всё
// Если одна из групп включена, то все выключаем
if ((gg('Switch4zal1grupp.status') ==1) || (gg('Switch5zal2grupp.status')==1) {
sg('Switch4zal1grupp.status', 0);
sg('Switch5zal2grupp.status', 0);
} else {
// иначе ничего не включено, значит все включаем
sg('Switch4zal1grupp.status', 1);
sg('Switch5zal2grupp.status', 1);
}
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: как к одному выключателю привязать два объекта?
"И" это "&&", "ИЛИ" это "||", загуглите "PHP Операторы сравнения" - там еще много интересных функций, которые понадобится вам могут.
Я вам код написал - что если вы щелкаете общим выключателем, он смотрит в каком положении этот общий выключатель, и вне зависимости от того что было включено/выключено до этого - включает или выключает обе группы. Разумеется мой код подразумевает, что выставление свойства, к примеру Switch4zal1grupp.status - включает или выключает соответствующую группу.
PS: не совсем правильно понял вопрос...перечитал - дошло, что вам надо, только товарищ выше почему-то что-то не то написал, как мне кажется. Моя версия
Перепроверьте имена объектов)) И привязать надо метод к свойствам Switchzal1group.status и Switchzal2group.status
Я вам код написал - что если вы щелкаете общим выключателем, он смотрит в каком положении этот общий выключатель, и вне зависимости от того что было включено/выключено до этого - включает или выключает обе группы. Разумеется мой код подразумевает, что выставление свойства, к примеру Switch4zal1grupp.status - включает или выключает соответствующую группу.
PS: не совсем правильно понял вопрос...перечитал - дошло, что вам надо, только товарищ выше почему-то что-то не то написал, как мне кажется. Моя версия
Код: Выделить всё
// Если одна из групп включена, то все выключаем
if ((gg('Switchzal1group.status') ==1) || (gg('Switchzal2group.status')==1) {
sg('SwitchzalAll.status', 1);
} else {
// иначе ничего не включено, значит все включаем
sg('SwitchzalAll.status', 0);
}
- За это сообщение автора nick7zmail поблагодарил:
- Unreal (Пт окт 07, 2016 11:06 am)
- Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".

>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 21
- Зарегистрирован: Пн фев 29, 2016 10:21 pm
- Благодарил (а): 0
- Поблагодарили: 3 раза
Re: как к одному выключателю привязать два объекта?
В вашем коде вы включаете свет, если что-то включено и выключаете, если все выключено. Если оба света будут включены, то вы также будете пытаться их включить.
SwitchzalAll, это, как я понимаю, дополнительный объект для отображения статуса выключателя?
У меня был примерно похожий вопрос, и самый простой вариант - либо создать еще один объект, либо дополнительное свойство у обоих объектов. Этот дополнительный объект нужен для привязки в меню, он отображает статус включения для двух обоих объектов - Switch5zal1grupp и Switch5zal2grupp.
Дополню код - если ТС использует объекты класса Relays, то вероятнее всего смены статуса ему недостаточно. Поэтому предполагаю, что код выглядит так:
Я не знаю как в реализации базового класса Relays (сейчас нет возможности посмотреть), но в дочернем классе Noolite методы turn/on включают в себя смену статуса у объекта. Если в классе Relays такого нет, то в коде также нужно добавить sg('объект.status', статус-в-зависимости-от-метода);
Но теперь проблема - при включении/выключении света в зале по отдельности для каждого элемента (не из слайдера) SwitchzalAll не будет меняться, а значит информация в нем будет неактуальная. Значит надо переопределять методы turnOn/turnOff для того, чтобы устанавливать SwitchzalAll.status.
В общем ТС, сделайте кнопку, а не слайдер, будет проще.
Сергей, задумайтесь пожалуйста о том, чтобы элемент меню можно было привязать не только к свойству объекта, но и к результату работы метода, тогда решение задачи ТС было бы гораздо проще
SwitchzalAll, это, как я понимаю, дополнительный объект для отображения статуса выключателя?
У меня был примерно похожий вопрос, и самый простой вариант - либо создать еще один объект, либо дополнительное свойство у обоих объектов. Этот дополнительный объект нужен для привязки в меню, он отображает статус включения для двух обоих объектов - Switch5zal1grupp и Switch5zal2grupp.
Дополню код - если ТС использует объекты класса Relays, то вероятнее всего смены статуса ему недостаточно. Поэтому предполагаю, что код выглядит так:
Код: Выделить всё
// Если одна из групп включена, то все выключаем
if ((gg('Switch4zal1grupp.status') ==1) || (gg('Switch5zal2grupp.status')==1) {
callMethod('Switch4zal1grupp.turnOff'); // выключаем свет
callMethod('Switch4zal2grupp.turnOff');
sg('SwitchzalAll.status, 0); // записываем, что мы все выключили
} else {
// иначе ничего не включено, значит все включаем
callMethod('Switch4zal1grupp.turnOn'); // включаем свет
callMethod('Switch4zal2grupp.turnOn');
sg('SwitchzalAll.status, 1); // записываем, что мы все включили
}
Но теперь проблема - при включении/выключении света в зале по отдельности для каждого элемента (не из слайдера) SwitchzalAll не будет меняться, а значит информация в нем будет неактуальная. Значит надо переопределять методы turnOn/turnOff для того, чтобы устанавливать SwitchzalAll.status.
В общем ТС, сделайте кнопку, а не слайдер, будет проще.
Сергей, задумайтесь пожалуйста о том, чтобы элемент меню можно было привязать не только к свойству объекта, но и к результату работы метода, тогда решение задачи ТС было бы гораздо проще

- Рейтинг: 1.16%
-
- Сообщения: 15
- Зарегистрирован: Чт сен 08, 2016 3:01 pm
- Благодарил (а): 8 раз
- Поблагодарили: 0
Re: как к одному выключателю привязать два объекта?
Сделал так:
в каждую группу добавил
теперь при включении группа 1 и группа 2 вместе подтягивается и выключатель весь свет тоже в состояние вкл
Всем огромное спасибо, буду экспериментировать дальше)
в каждую группу добавил
Код: Выделить всё
if ((gg('Switch4zal1grupp.status') ==1) && (gg('Switch5zal2grupp.status')==1)) {
sg('SwitchAllzal.status', 1);
} else {
sg('SwitchAllzal.status', 0);
}
Всем огромное спасибо, буду экспериментировать дальше)