Страница 1 из 2

Как заставить работать Switch с свойством (значения ON\OFF)

Добавлено: Сб апр 06, 2013 8:52 pm
dimitrystd
У меня есть свойство для лампочки Light.enabled. Оно содержит значения 'ON'\'OFF', вместо привычных 1\0. Прописал это свойство в меню, но переключатель не хочет правильно отображаться. Т.е. он переключается когда нажимаю, всё правильно срабатывает, но автоматически возвращается в положение Выкл. после автообновления. Приложил картинку. Пробовал вписывать "Текущее значение", оно пропадает и не помогает.
Помогите с настройкой, а лучше подскажите где посмотреть работу выключателя в коде. Похоже читать код быстрее чем опытным путём подбирать чтоб заработало.

Re: Как заставить работать Switch с свойством (значения ON\O

Добавлено: Сб апр 06, 2013 11:54 pm
Urbas81
if (($params['VALUE'])&&(gg("Storeroom.enabled")=="ON"))
{
sg("Storeroom.enabled","ON");
}
else
{
sg("Storeroom.enabled","OFF");
}
если так попробовать, пол часа назад себе подобное делал, но у меня 0 и 1 вместо ON OFF

это прописать в поле Код

Re: Как заставить работать Switch с свойством (значения ON\O

Добавлено: Вс апр 07, 2013 12:02 am
Panchez
Я так понимаю, это для Мегадевайса? Там в прошивке на крайний случай легко поменять на значения 0 и 1 и посмотреть как будет.

Re: Как заставить работать Switch с свойством (значения ON\O

Добавлено: Вс апр 07, 2013 1:06 am
dimitrystd
Urbas81 писал(а):if (($params['VALUE'])&&(gg("Storeroom.enabled")=="ON")
Этот код меняет свойство когда кликаешь. У меня проблема с другой стороны. Switch отлично вызывает указанный метод и свет вкл\выкл. У меня проблема в том что switch не понимает моих значений on\off и в результате показывает не тот статус. Т.е. я включаю свет, он включился, а switch остаётся в состоянии выключен.

P.s. мне не сложно переделать код чтоб было 0\1, но пока интересно.

Re: Как заставить работать Switch с свойством (значения ON\O

Добавлено: Пн апр 08, 2013 9:47 am
dmw
Введите вторую переменную Storeroom.enabled_switch, она будет только для установки положения (привяжите её к переключателю).
в коде toggleSwitch присваивайте этой переменной 1/0 в зависимости от значения основной Storeroom.enabled

Re: Как заставить работать Switch с свойством (значения ON\O

Добавлено: Пн апр 08, 2013 10:51 am
sergejey
Выключатель действительно понимает только 1/0, а вот "On" и "Off" всегда воспринимается как 1.

Re: Как заставить работать Switch с свойством (значения ON\O

Добавлено: Пн апр 08, 2013 12:28 pm
dimitrystd
Ну раз автор рекомендует переделать на 1\0, сделаем. Думал я ещё не познал все тонкости.
И подскажите по контролу "Текущее значение". Какова его цель? Почему я могу его редактировать?

Re: Как заставить работать Switch с свойством (значения ON\O

Добавлено: Пн апр 08, 2013 1:23 pm
sergejey
dimitrystd писал(а):Ну раз автор рекомендует переделать на 1\0, сделаем. Думал я ещё не познал все тонкости.
И подскажите по контролу "Текущее значение". Какова его цель? Почему я могу его редактировать?
Контролы могут работать и без привязки к свойствам объектов и в таком случае текущее значение отражает последнее состояние. Собственно, оно всегда отражает последнее установленное состояние, просто в случае привязки к свойству это состояние обновляется автоматически из свойства. Редактировать его можно, но если есть привязка к свойству объекта, то оно ни на что не влияет.

Re: Как заставить работать Switch с свойством (значения ON\O

Добавлено: Пн апр 08, 2013 4:28 pm
Stanislav
Всем привет!
Я, как и все, собравшиеся на этом форуме, "добавляю мозгов" своему дому. Управление решил сделать на Arduino Мега. В принципе, скелет уже готов, все работает как мне надо, но появилась проблема с интерфейсом. Вот и нашел такую замечательную разработку! Спасибо авторам и всем, кто участвует в данном проекте!
После установки сервера, занялся подстройкой системы к дому. И сразу появился вопрос.
Я хочу сделать переключение реле объектом "Switch". Переключая переключатель, все отлично срабатывает. Но к ардуино у меня подключен радио пульт. который тоже переключает нужное реле.
Как из ардуино возвращать к серверу информацию о том, какой переключатель включен?
Например, я включил свет с радио пульта, а не с сервера, но в "Web морде", переключатель, естественно, остался в положении "0" т.е. "Выкл".
Мега подключена через W5100. Что нужно отправить серверу, чтобы переключатель встал в положение "Вкл" при нажатии кнопки на радио пульте?

Re: Как заставить работать Switch с свойством (значения ON\O

Добавлено: Пн апр 08, 2013 4:48 pm
sergejey
Stanislav писал(а):Всем привет!
Я, как и все, собравшиеся на этом форуме, "добавляю мозгов" своему дому. Управление решил сделать на Arduino Мега. В принципе, скелет уже готов, все работает как мне надо, но появилась проблема с интерфейсом. Вот и нашел такую замечательную разработку! Спасибо авторам и всем, кто участвует в данном проекте!
Добро пожаловать :)
После установки сервера, занялся подстройкой системы к дому. И сразу появился вопрос.
Я хочу сделать переключение реле объектом "Switch". Переключая переключатель, все отлично срабатывает. Но к ардуино у меня подключен радио пульт. который тоже переключает нужное реле.
Как из ардуино возвращать к серверу информацию о том, какой переключатель включен?
Например, я включил свет с радио пульта, а не с сервера, но в "Web морде", переключатель, естественно, остался в положении "0" т.е. "Выкл".
Мега подключена через W5100. Что нужно отправить серверу, чтобы переключатель встал в положение "Вкл" при нажатии кнопки на радио пульте?
Во-первых, лучше всего завести объект, который будет отвечать за этот выключатель (а лучше целый класс на будущее). В этом объекте добавить свойство status. Далее, сделать привязку переключателя к этому свойству (там можно задать связанный объект). Теперь изменение положение выключателя будет менять свойство объекта. Более того, изменение свойства объекта будет менять состояние переключателя. Нам лишь нужно, чтобы мега могла устанавливать это свойство. Для этого нужно просто инициировать http-запрос вида:
http://сервер/objects/?object=myObject&p=status&op=set&v=1
вместо myObject имя объекта, вместо 1 (включено) может быть и 0 (выключено)