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

Программирование физического выключателя.

Добавлено: Пт янв 03, 2014 11:39 pm
gans
Приветствую всех. Программить не умею, пытаюсь делать все по вашим примерам, но такого так и не нашел. Имеем кнопку на дуине которая при нажатии присылает на сервер команду http://192.168.253.252/objects/?object= ... tusChanged& с еденицей и имеем нагрузку управляемую так http://192.168.253.211/command?9=ON вкл или OFF выкл соответственно, нагрузкой с сервера получается управлять по всякому, получать статус кнопки тоже научился. Вопрос: как сделать так что бы при первом нажатии физической кнопки с сервера улетало http://192.168.253.211/command?9=ON а при втором http://192.168.253.211/command?9=OFF. Что бы прикрутить выключатель без фиксации например. Спасибо за внимание.

Re: Программирование физического выключателя.

Добавлено: Пт янв 03, 2014 11:56 pm
sergejey
gans писал(а):Приветствую всех. Программить не умею, пытаюсь делать все по вашим примерам, но такого так и не нашел. Имеем кнопку на дуине которая при нажатии присылает на сервер команду http://192.168.253.252/objects/?object= ... tusChanged& с еденицей и имеем нагрузку управляемую так http://192.168.253.211/command?9=ON вкл или OFF выкл соответственно, нагрузкой с сервера получается управлять по всякому, получать статус кнопки тоже научился. Вопрос: как сделать так что бы при первом нажатии физической кнопки с сервера улетало http://192.168.253.211/command?9=ON а при втором http://192.168.253.211/command?9=OFF. Что бы прикрутить выключатель без фиксации например. Спасибо за внимание.
в коде метода прописать что-то вроде:

Код: Выделить всё

if ($this->getProperty('status')==1) {
 $this->setProperty('status',0);
 openURL('http://192.168.253.211/command?9=OFF',0);
} else {
 $this->setProperty('status',1);
 openURL('http://192.168.253.211/command?9=ON',0);
}
теперь при каждом вызове метода будет либо включение либо выключение

Re: Программирование физического выключателя.

Добавлено: Сб янв 04, 2014 11:08 pm
ROM
У меня контроллер с похожими х-ками, как у ТС.
Хочу реализовать такую же задачу: при нажатии на физическую кнопку в комнате, включить или включить свет.
С железом все понятно. Для переключения ON/OFF мого выхода нужно дать команду мк:

Код: Выделить всё

getURL("http://192.168.1.14/sec/?cmd=2:1");
Когда кто-то нажимает на кнопку в комнате - мк передает команду о нажатии на сервер. Т.е. мк нужно выполнить метод какого-то объекта на сервере.
Теперь описания проблемы: Не исполняется метод объекта по кнопке "test" или через командную строку.
Все что удалось - это выполнить метод первый раз после перезапуска сервера. Второй раз - уже не работает! Вчем может быть проблема? сервер по адресу 127.0.0.1:81. На 80 порт перевести никак не могу. Порт ничем не занят, но после установки сервера с нуля - стает на 81.
Вопрос 2: как можно изменить порт на 80?

Re: Программирование физического выключателя.

Добавлено: Вс янв 05, 2014 12:51 pm
gans
sergejey писал(а):
gans писал(а):Приветствую всех. Программить не умею, пытаюсь делать все по вашим примерам, но такого так и не нашел. Имеем кнопку на дуине которая при нажатии присылает на сервер команду http://192.168.253.252/objects/?object= ... tusChanged& с еденицей и имеем нагрузку управляемую так http://192.168.253.211/command?9=ON вкл или OFF выкл соответственно, нагрузкой с сервера получается управлять по всякому, получать статус кнопки тоже научился. Вопрос: как сделать так что бы при первом нажатии физической кнопки с сервера улетало http://192.168.253.211/command?9=ON а при втором http://192.168.253.211/command?9=OFF. Что бы прикрутить выключатель без фиксации например. Спасибо за внимание.
в коде метода прописать что-то вроде:

Код: Выделить всё

if ($this->getProperty('status')==1) {
 $this->setProperty('status',0);
 openURL('http://192.168.253.211/command?9=OFF',0);
} else {
 $this->setProperty('status',1);
 openURL('http://192.168.253.211/command?9=ON',0);
}
теперь при каждом вызове метода будет либо включение либо выключение
Что то не работает :( пишу код метода для проверки вот так:

Код: Выделить всё

if ((int)$params['status']==1) {
 say("Свет в гараже включился.",5);
} else {
 say("Свет в гараже выключился.",5);
}
Все работает, Алиса все говорит.

Re: Программирование физического выключателя.

Добавлено: Вс янв 05, 2014 8:08 pm
Ivan
Лучше сделать серверо независимую кнопку, чтобы она управляла нагрузкой, и отправляла статус. Вопервых время срабатывания = 0. Во вторых если повиснет сервер, не придётся ждать его отвисания и пользоваться светом. А на сервере мониторить статус. И включать и выключать ели нужно удалённо.

Re: Программирование физического выключателя.

Добавлено: Вс янв 05, 2014 10:47 pm
shemnik69
Полностью согласен!. На "Дуине" лучше сделать сам "триггер" управления реле лампы (или тиристора) и пусть он переключает, а на систему выдает просто статус.
Причем желательно чтобы со стороны системы запрос на статус не приводил к ступору Дуины. Поясню. Например при переключении Ардуинка сбрасывает openURL('http://192.168.253.211/command?9=ON',0); (либо OFF) и не ожидала ответа . Т.е. получил ли сервер команду бывает не совсем важно. Просто потому что сам статус важен при переключениях со стороны сервера.
Иными словами, он его, должен запросить, только, в момент переключения.
Тогда отсутствие, по каким либо причинам, реакции сервера не лишит Вас возможности включения света. У меня такая связка работает больше года только на основе простого (на микросхеме) триггера. А статус опрашивается по наличию 220 на лампе. Причем система работает как с кнопкой (качели) так и с обычным выключателем а управление возможно как при работе сервера так и при его отсутствии.

Re: Программирование физического выключателя.

Добавлено: Пн янв 06, 2014 12:02 am
sergejey
gans писал(а):
sergejey писал(а):

Код: Выделить всё

if ($this->getProperty('status')==1) {
 $this->setProperty('status',0);
 openURL('http://192.168.253.211/command?9=OFF',0);
} else {
 $this->setProperty('status',1);
 openURL('http://192.168.253.211/command?9=ON',0);
}
теперь при каждом вызове метода будет либо включение либо выключение
Что то не работает :(
Извиняюсь, вместо openURL должно быть getURL

Re: Программирование физического выключателя.

Добавлено: Пн янв 06, 2014 3:21 pm
gans
sergejey, спасибо! Все получилось.
Ivan, shemnik69, Полностью с вами согласен, но отсутствие знаний в программирование ставит меня в тупик :( Можно например взять за основу http://smartliving.ru/forum/viewtopic.p ... =496#p3104 и завести физ. кнопки в аналоговые порты. В этом же скетче выводится информация о состоянии выходного порта вот ее можно забирать через веб-переменные на сервере через определенное время, например для смены состояния выключателя в веб интерфейсе ну т.п.. Вот кто помог бы с таким скетчем, буду очень благодарен. Вообще при упоминания Умного дома сразу представляешь какое то особое управление светом, но что то у нас это мало обсуждается, или я просто не шарю) Спасибо за внимание.