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

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

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

Сообщение Jager » Пн апр 28, 2014 10:00 pm

Lewcom писал(а):у меня заработало с кодом
Спасибо, заработало.
Stunt
Сообщения: 39
Зарегистрирован: Вс мар 16, 2014 8:17 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

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

Сообщение Stunt » Пт май 30, 2014 2:54 pm

Доброго дня всем.
Столкнулся вот с какой необходимостью, надо определять включен ли где либо в доме свет.
Если везде все выключено - ставим 0, если где-то что-нибудь светит (подключенное к MegaD) - ставим - 1
Создал для этого доп.свойство globalStatus и объект globalStatusLight:
globalstatuslight.jpg
globalstatuslight.jpg (56.4 КБ) 16575 просмотров
По задумке в него должно прописывать 0 или 1 каждый объект класса Light
В методе, который вызывается при нажатии на выключатель, дописал строчку:
metod.jpg
metod.jpg (57.67 КБ) 16575 просмотров
Но заветные нолик или единичка в свойстве globalStatus не появляются...
Наверняка я что-то сделал не так?
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

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

Сообщение Vit » Вт июн 03, 2014 10:21 am

Вопрос к Сергею и dimitrystd.

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

Заранее благодарен.
dimitrystd
Сообщения: 80
Зарегистрирован: Пн апр 01, 2013 10:20 pm
Откуда: Днепропетровск
Благодарил (а): 7 раз
Поблагодарили: 3 раза

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

Сообщение dimitrystd » Вт июн 03, 2014 11:36 pm

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 объдиняет в себе кнопку (датчик движения) и выполнение команды.
У себя я попробовал сделать немного подругому, я добавил доп. абстракцию, но пока больших плюсов не обнаружил, поэтому не буду выкладывать.
Stunt
Сообщения: 39
Зарегистрирован: Вс мар 16, 2014 8:17 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

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

Сообщение Stunt » Ср июн 04, 2014 1:55 pm

Создал сценарий
Script.jpg
Script.jpg (72.6 КБ) 16458 просмотров
Прописал вызов в методы switchOn, switchOff.
Создал свойство ThisComputer.globalStatus
proper.jpg
proper.jpg (44.42 КБ) 16458 просмотров
При вызове методов switchOn, switchOff свойство .globalStatus=1, а вот при выключении всех линий на MegaD .globalStatus=0 не устанавливает :(
dimitrystd
Сообщения: 80
Зарегистрирован: Пн апр 01, 2013 10:20 pm
Откуда: Днепропетровск
Благодарил (а): 7 раз
Поблагодарили: 3 раза

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

Сообщение dimitrystd » Ср июн 04, 2014 3:25 pm

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

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

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

$log = getLogger();
$log->trace(sprintf('%s = %d', $obj['TITLE'], getGlobal($obj['TITLE'].'.enabled')));
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

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

Сообщение Vit » Чт июн 05, 2014 10:17 am

dimitrystd приветствую. Сделал в классе light объект датчик движения . В методе switchon этого объекта прописал вызов метода другого объекта с изменением статуса на 1 не работает. Подскажи пожалуйста в чем проблема? Может выложишь как у тебя датчик движения обрабатывается для примера . Понять принцип . Заранее благодарен.
Stunt
Сообщения: 39
Зарегистрирован: Вс мар 16, 2014 8:17 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

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

Сообщение Stunt » Чт июн 05, 2014 12:23 pm

Нашел в чем проблема. Есть два объекта (кнопки), выключают весь свет в доме.
Настройки такие:
Новый.jpg
Новый.jpg (56.24 КБ) 16402 просмотра
Метод такой:
Новый1.jpg
Новый1.jpg (124.63 КБ) 16402 просмотра
Так вот их свойство .enabled=1, постоянно, из за этого и ThisComputer.globalStatus=1
Если вручную выставить .enabled=0 - ThisComputer.globalStatus встает в =0
Последний раз редактировалось Stunt Вс июн 08, 2014 9:47 pm, всего редактировалось 2 раза.
Lewcom
Сообщения: 48
Зарегистрирован: Пн дек 30, 2013 6:37 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение Lewcom » Вс июн 08, 2014 12:03 pm

Есть в MegaD дополнительные АЦП-порты А6, А7.
Кто нибудь пробывал даные с этих портов записывать в базу и обрабатывать значения.
Хотелось бы прикрутить датчик освещенности.
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

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

Сообщение Vit » Вт июн 24, 2014 10:50 am

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

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