Страница 10 из 41

Re: Подключение контроллера MegaD-328

Добавлено: Пн апр 28, 2014 10:00 pm
Jager
Lewcom писал(а):у меня заработало с кодом
Спасибо, заработало.

Re: Подключение контроллера MegaD-328

Добавлено: Пт май 30, 2014 2:54 pm
Stunt
Доброго дня всем.
Столкнулся вот с какой необходимостью, надо определять включен ли где либо в доме свет.
Если везде все выключено - ставим 0, если где-то что-нибудь светит (подключенное к MegaD) - ставим - 1
Создал для этого доп.свойство globalStatus и объект globalStatusLight:
globalstatuslight.jpg
globalstatuslight.jpg (56.4 КБ) 18204 просмотра
По задумке в него должно прописывать 0 или 1 каждый объект класса Light
В методе, который вызывается при нажатии на выключатель, дописал строчку:
metod.jpg
metod.jpg (57.67 КБ) 18204 просмотра
Но заветные нолик или единичка в свойстве globalStatus не появляются...
Наверняка я что-то сделал не так?

Re: Подключение контроллера MegaD-328

Добавлено: Вт июн 03, 2014 10:21 am
Vit
Вопрос к Сергею и dimitrystd.

Подскажите пожалуйста, как обработать вход с подключенным датчиком движения по примеру страницы http://ab-log.ru/smart-house/ethernet/megad-alarm.

Заранее благодарен.

Re: Подключение контроллера MegaD-328

Добавлено: Вт июн 03, 2014 11:36 pm
dimitrystd
Stunt писал(а):Доброго дня всем.
Столкнулся вот с какой необходимостью, надо определять включен ли где либо в доме свет.
Если везде все выключено - ставим 0, если где-то что-нибудь светит (подключенное к MegaD) - ставим - 1
Создал для этого доп.свойство globalStatus и объект globalStatusLight:
С таким кодом не заработает, и перед тем как предложить решение, напишу почему данное смотрится плохо
- Сделали спец свойство globalStatus в классе Light, а используете только в одном объекте. Т.е. заходишь в другой объект Lighta и думаешь что это за хрень, ещё и пустая
- Можно было не делать свойство в классе Light, а добавить прямо в объект
- Раз свойство такое супер глобальное, то добавлять уже в объект ThisComputer
- В коде вижу $params['globalStatus'], но его никто не устанавливает. Код МД очень простой и в нём нету магии, надо самому его как то инициализировать

Данным способом наверное вообще невозможно получить желаемого результата. Я бы наверное сделал так:
- Написал скрипт

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

$objects = getObjectsByClass("Light");
$globalStatus = false;
foreach ($objects as $obj) {
  $globalStatus = $globalStatus || getGlobal($obj['TITLE'].'.enabled');
}
setGlobal('ThisComputer.globalStatus', $globalStatus);
- Ну и этот скрипт можно вызывать из switchOn, switchOff. тогда вы будете уверены что ThisComputer.globalStatus всегда актуальна
Vit писал(а): Подскажите пожалуйста, как обработать вход с подключенным датчиком движения по примеру страницы http://ab-log.ru/smart-house/ethernet/megad-alarm.
Если использовать классы Megadevice и Light из этой ветки, то просто создать объект класса Light, но имя дайте ему ДатчикДвижения например, и в метод switchOn вставить код из той статьи. Клас Light объдиняет в себе кнопку (датчик движения) и выполнение команды.
У себя я попробовал сделать немного подругому, я добавил доп. абстракцию, но пока больших плюсов не обнаружил, поэтому не буду выкладывать.

Re: Подключение контроллера MegaD-328

Добавлено: Ср июн 04, 2014 1:55 pm
Stunt
Создал сценарий
Script.jpg
Script.jpg (72.6 КБ) 18087 просмотров
Прописал вызов в методы switchOn, switchOff.
Создал свойство ThisComputer.globalStatus
proper.jpg
proper.jpg (44.42 КБ) 18087 просмотров
При вызове методов switchOn, switchOff свойство .globalStatus=1, а вот при выключении всех линий на MegaD .globalStatus=0 не устанавливает :(

Re: Подключение контроллера MegaD-328

Добавлено: Ср июн 04, 2014 3:25 pm
dimitrystd
Stunt писал(а): Прописал вызов в методы switchOn, switchOff.
Вызов скрипта прописан последней строкой в этих методах? Суть в том чтоб вызвать скрипт после того как устанавливается свойство enabled ($this->setProperty('enabled', 1);)

Раз не работает, то надо дебажить. Выключите везде свет, сами руками просмотрите что у всех объектов light свойство enabled = 0. В лог можно писать из скрипта

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

$log = getLogger();
$log->trace(sprintf('%s = %d', $obj['TITLE'], getGlobal($obj['TITLE'].'.enabled')));

Re: Подключение контроллера MegaD-328

Добавлено: Чт июн 05, 2014 10:17 am
Vit
dimitrystd приветствую. Сделал в классе light объект датчик движения . В методе switchon этого объекта прописал вызов метода другого объекта с изменением статуса на 1 не работает. Подскажи пожалуйста в чем проблема? Может выложишь как у тебя датчик движения обрабатывается для примера . Понять принцип . Заранее благодарен.

Re: Подключение контроллера MegaD-328

Добавлено: Чт июн 05, 2014 12:23 pm
Stunt
Нашел в чем проблема. Есть два объекта (кнопки), выключают весь свет в доме.
Настройки такие:
Новый.jpg
Новый.jpg (56.24 КБ) 18030 просмотров
Метод такой:
Новый1.jpg
Новый1.jpg (124.63 КБ) 18030 просмотров
Так вот их свойство .enabled=1, постоянно, из за этого и ThisComputer.globalStatus=1
Если вручную выставить .enabled=0 - ThisComputer.globalStatus встает в =0

Re: Подключение контроллера MegaD-328

Добавлено: Вс июн 08, 2014 12:03 pm
Lewcom
Есть в MegaD дополнительные АЦП-порты А6, А7.
Кто нибудь пробывал даные с этих портов записывать в базу и обрабатывать значения.
Хотелось бы прикрутить датчик освещенности.

Re: Подключение контроллера MegaD-328

Добавлено: Вт июн 24, 2014 10:50 am
Vit
Vit писал(а):dimitrystd приветствую. Сделал в классе light объект датчик движения . В методе switchon этого объекта прописал вызов метода другого объекта с изменением статуса на 1 не работает. Подскажи пожалуйста в чем проблема? Может выложишь как у тебя датчик движения обрабатывается для примера . Понять принцип . Заранее благодарен.

Может кто подскажет этот вопрос?