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

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

Модератор: immortal

Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Сб сен 13, 2014 9:56 pm

Ну а дальше уже как говориться на вкус и цвет все фломастеры разные. Я выбрал для себя такую стратегию. Для каждого порта Меги, настроенного как IN, я создаю отдельные объекты в классе keySensors. Для портов OUT создаю объекты в классе Relays. Весь код с логикой и алгоритмами работы храню в этих объектах. А объекты Меги просто перенаправляют сообщения в объекты класса keySensors. В примере видно, как при замыкании контактов порта 4 вызывается метод statusChanged моего объекта outdoorAirDamperClose.

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

 case 4:
    callMethod("outdoorAirDamperClose.statusChanged",array("status"=>$m));
    //say('Передаю датчику воздушной заслонки статус '.$m);
    break; 
тут еще сделана передача состояния порта, т.к. в Меге он настроен как P&R

Ну а как вариант "на поиграться" могу предложить в нужную группу case прямо добавить код на переключения состояния порта

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

callMethod('MegaD1.setOutput',array('port'=>8,'value'=>2)); 
где 8 - номер порта, 2- означает что нужно сменить состояние на противоположное
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Dragon
Сообщения: 96
Зарегистрирован: Ср авг 27, 2014 6:14 am
Благодарил (а): 36 раз
Поблагодарили: 0

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

Сообщение Dragon » Сб сен 13, 2014 10:07 pm

Кнопка подключена на 4 порт при нажатии проговаривает ..Передаю тестовому датчику статус 1.. ..Получено сообщение от Меги.. все правильно?
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Сб сен 13, 2014 10:11 pm

Ну то, что хоть как то реагирует, значит уже хорошо. Но реакция неправильная. Возможно забыли break; Пришлите весь код метода.
Порты я нумерую от 0 так же как на Меге. То есть, по счету 4 порт будет пятый канал. 0,1,2,3,4
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Dragon
Сообщения: 96
Зарегистрирован: Ср авг 27, 2014 6:14 am
Благодарил (а): 36 раз
Поблагодарили: 0

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

Сообщение Dragon » Сб сен 13, 2014 10:16 pm

так я break; не прописывал он у меня пустой

// запускается из файла megad.php с передачей параметров $params['pt'] , $params['m']

//Параметр 'm' не передается при нажатии. А при отпускании кнопки его значение = 1
//Переводим его в статус. 0-не нажата 1-нажата
$m=!$params['m']+0;

/*
Тут планирую сделать реакцию на двойное и долгое нажатие.
Порт Меги при этом должен быть настроен как P&R т.е.
Мега отправляет сообщение при замыкании порта и при размыкании.
Долгое нажатие:
При замыкании создадим таймер на 2 секунды, и если он сработает до размыкания - это долгое нажатие
Двойное нажатие:
При замыкании создадим таймер на 0.5 секунды, но если такой таймер уже существует - это двойное нажатие
*/

switch ($params['pt']) {
case 4:
//Этот порт на Меге настроен как P&R
callMethod('MegaD1.setOutput',array('port'=>8,'value'=>2));
say('Передаю тестовому датчику статус '.$m);
break;

case 1:
//Этот порт на Меге настроен как P
say('Вызываю метод тестового объекта');
break;

// Далее идут уже лично мои настройки. Оставил их для примера.
case 3:
//Сообщение о начале открытии воздушной заслонки.
//Скорее всего потом будет отключено и порт будет свободен
break;

case 5:
callMethod("outdoorAirDamperClose.statusChanged",array("status"=>$m));
//say('Передаю датчику воздушной заслонки статус '.$m);
break;

default:
say('Получено сообщение от Меги. Вход '.$params['pt'].' Статус '.$m);
}
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Сб сен 13, 2014 10:19 pm

Упростите для понимания, потом когда разберетесь, сами допишите чего угодно.

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

// запускается из файла megad.php с передачей параметров $params['pt'] , $params['m']

//Параметр 'm' не передается при нажатии. А при отпускании кнопки его значение = 1
//Переводим его в статус. 0-не нажата 1-нажата
$m=!$params['m']+0;

switch ($params['pt']) {
case 4:
callMethod('MegaD1.setOutput',array('port'=>8,'value'=>2)); 
say('Свет');
break;

default:
say('Получено сообщение от Меги. Вход '.$params['pt'].' Статус '.$m);
}
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Dragon
Сообщения: 96
Зарегистрирован: Ср авг 27, 2014 6:14 am
Благодарил (а): 36 раз
Поблагодарили: 0

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

Сообщение Dragon » Сб сен 13, 2014 10:30 pm

упростил. периодически проговаривает ..Получено сообщение от Меги вход статус 1.. где это исправить?
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Сб сен 13, 2014 10:34 pm

Как так? просто само по себе говорит? Надо разобраться почему.
Говорит то тут:

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

say('Получено сообщение от Меги. Вход '.$params['pt'].' Статус '.$m); 
А свет то переключает при нажатии?
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Dragon
Сообщения: 96
Зарегистрирован: Ср авг 27, 2014 6:14 am
Благодарил (а): 36 раз
Поблагодарили: 0

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

Сообщение Dragon » Сб сен 13, 2014 10:40 pm

да свет переключает и говорит ..свет..

но периодически проговаривает ..получено сообщение.......
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Сб сен 13, 2014 10:44 pm

По задумке в метод incomingMessage каждой Меги поступают от нее сообщения, обработанные файлом megad.php
Если говорит именно так: Получено сообщение от Меги вход статус 1 Это значит что не передан $params['pt']. Могу предположить, что Мега шлет какие то другие сообщения. Например с порта АЦП, если там задано условие, или же данные о температуре.
Скорее всего эти параметры просто я еще не добавил в файл megad.php. Посмотреть бы логи апачи сервера. Там видно весь GET запрос целиком. Это бы приоткрыло завесу тайны. Логи тут: путьк_серверу\Apache2.2\logs\ Файл access.log
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Сб сен 13, 2014 10:47 pm

Или как вариант убрать группу

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

  default:
    say('Получено сообщение от Меги. Вход '.$params['pt'].' Статус '.$m);
Но это никак не решит проблему поступающих от Меги сообщений, просто не будет говорит о них. В общем надо посмотреть логи сервера. Что именно ему шлет Мега.

Странно дело, у меня http://ab-log.ru/ не открывается. Хотел поискать полный список сообщений Меги.
За это сообщение автора Bagir поблагодарил:
Dragon (Сб сен 13, 2014 10:57 pm)
Рейтинг: 1.16%
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить