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

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

Модератор: immortal

jonyzs
Сообщения: 86
Зарегистрирован: Чт фев 21, 2013 11:35 pm
Благодарил (а): 4 раза
Поблагодарили: 2 раза

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

Сообщение jonyzs » Вс апр 07, 2013 12:49 am

Я так понял что Дмитрий сделал что то хорошее,а как импортировать эти два класса?
Panchez
Сообщения: 99
Зарегистрирован: Вс апр 29, 2012 7:31 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение Panchez » Вс апр 07, 2013 1:12 am

Внизу объектов пунк - Импортировать класс из файла:
С уважением
Александр.
jonyzs
Сообщения: 86
Зарегистрирован: Чт фев 21, 2013 11:35 pm
Благодарил (а): 4 раза
Поблагодарили: 2 раза

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

Сообщение jonyzs » Вс апр 07, 2013 1:21 am

спасибо,ступил конкретно,попробую щас мегу помучать
Panchez
Сообщения: 99
Зарегистрирован: Вс апр 29, 2012 7:31 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение Panchez » Вс апр 07, 2013 1:35 am

Не за что. Я пока не разобрался, Дмитрий могли бы вы подробнее рассказать про конфигурирование, простой пример.
С уважением
Александр.
dimitrystd
Сообщения: 80
Зарегистрирован: Пн апр 01, 2013 10:20 pm
Откуда: Днепропетровск
Благодарил (а): 7 раз
Поблагодарили: 3 раза

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

Сообщение dimitrystd » Вс апр 07, 2013 11:31 am

Да, сделал небольшой мануал. Я писал код исходя из следующих определений:
- Физическая кнопка и лампочка принадлежат объекту Light
- Вся работа с железякой MegaD должна быть в отдельном "слое" (клас Megadevice)
- Решение включить или не включить принимается в Light

Итак начнём настройку
1. Настраиваем объекты Megadevice. У меня в квартире будет 3 физических девайса, поэтому надо создать 3 объекта и настроить каждый
Изображение
настройка каждого
Изображение
2. Пишем код для методов
2.1. statusChanged - Вызывается из megad.php когда произошло событие на input. По хорошему этот метод надо убрать из класа Megadevice, потому как он должен быть статический. Но система поддерживает только экземплярные методы. Его можно перенести в скрипты. Я пока решил оставить тут. Не буду вставлять код, там есть коментарии как работает:
- Найти конкретный объект девайса по айпи
- Найти Light у которого входящий девайс и порт совпадают
- Вызвать switchPressed. В этом методе Light будет принимать решение
2.2 Метод getOutput. Ему на вход нужна параметры:
- 'output' - номер порта
- 'propertyName' - имя свойства лампочки, к примеру Storeroom.enabled или Playroom.enabled. Мне этот параметр не нравится, но методы не умеют возвращать значения. Надо было крутить или через глобальные переменные, или сразу сказать в какое свойство положить значение. Лучше бы докрутить чтоб методы могли возвращать значение.
2.3 Метод setOutput - тоже 2 параметра 'output', 'value'. К примеру 8, 1 (включить 8 порт). Проверяем (свет должен вкл или выкл)
http://127.0.0.1/objects/index.php?object=MegaD1&op=m&m=setOutput&output=8&value=2

3. На каждую комнату заводим объекты Light
Изображение
настройка каждого
- В данном примере кнопка и лампочки подключены к одному мегадевайсу, поэтому значения inputDevice и outputDevice совпадают. Но будет у меня случай когда не совпадают
- inputPort где висит кнопка на мегадевайсе
- outputPort где висит лампочка на мегадевайсе
Изображение
4. Пишем код для методов
Изображение
Я думаю из описания ясно кто что делает, я опишу только последовательность вызовов
- switchPressed - Базовая реализация очень простая, вызывает toggleSwitch. Некоторые наследники будут менять её
- toggleSwitch - Перечитывает текущее состояние порта на девайсе, чтоб знать наверняка, и потом либо switchOn или switchOff
- switchOn - Просто дёргает MegaD1.setOutput. Ожидается что каждая комната сможет добавить логику и сюда тоже
- В объекте Storeroom метод switchOn перекрыт. Новый метод ставит ещё таймер на выключение (забывают в кладовке тушить свет)
Изображение
Примеры:
http://127.0.0.1/objects/index.php?object=Storeroom&op=m&m=switchPressed
http://127.0.0.1/objects/index.php?object=Storeroom&op=m&m=toggleSwitch

p.s. К администрации. Нельзя прикрепить больше 3х картинок. Пришлось выкладывать на гугл. Но не факт что я когда то удалю картинки. Можно немного поднять ограничение по кол-ву, но зарезать по размеру например?
Panchez
Сообщения: 99
Зарегистрирован: Вс апр 29, 2012 7:31 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение Panchez » Вс апр 07, 2013 2:10 pm

Спасибо Дмитрий, все получилось. Есть еще один вопрос, в megad.php при использовании нескольких контроллеров нужно их прописать так?
$object='MegaD1';
$object='MegaD2';
С уважением
Александр.
dimitrystd
Сообщения: 80
Зарегистрирован: Пн апр 01, 2013 10:20 pm
Откуда: Днепропетровск
Благодарил (а): 7 раз
Поблагодарили: 3 раза

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

Сообщение dimitrystd » Вс апр 07, 2013 2:40 pm

Нет, в вашем коде вы присваиваете последовательно два значения одной переменной. Т.е. в результате останется $object='MegaD2'. Внутренности моего файла:
$op='m';
$object='MegaD1';
$m='statusChanged';
Как я писал, поиск нужного объекта делается в statusChanged. На самом деле абсолютно всёравно имя какого объекта прописано в megad.php. Да, это немного конфузит. Именно поэтому я и писал, что лучше код вынести из statusChanged в отдельный скрипт и дёргать его из megad.php, тогда бы всё было логично.
Посмотрите методы, там в каждом есть строка закоментированная для записи в лог. Я их добавлял для себя пока разбирался как эта штука работает. Жаль что нет нормального дебагера.
Panchez
Сообщения: 99
Зарегистрирован: Вс апр 29, 2012 7:31 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение Panchez » Вс апр 07, 2013 2:59 pm

У меня сейчас так же. Понял теперь!
С уважением
Александр.
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

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

Сообщение Jager » Ср апр 10, 2013 8:59 pm

dimitrystd писал(а):Да, сделал небольшой мануал.
А можно пример "выключателя"?
dimitrystd
Сообщения: 80
Зарегистрирован: Пн апр 01, 2013 10:20 pm
Откуда: Днепропетровск
Благодарил (а): 7 раз
Поблагодарили: 3 раза

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

Сообщение dimitrystd » Пт апр 12, 2013 12:11 am

Так вроде ж мануал подробный с картинками. Там и ссылка выключателя есть http://127.0.0.1/objects/index.php?object=Storeroom&op=m&m=toggleSwitch. Приатачил последние версии классов. Там мегадевайс отдаёт 1\0 вместо ON\OFF. Это для совместимости с контролами меню.
Вложения
Objects.zip
(2.69 КБ) 364 скачивания
Ответить