Страница 14 из 41
Re: Подключение контроллера MegaD-328
Добавлено: Сб сен 13, 2014 9:56 pm
Bagir
Ну а дальше уже как говориться на вкус и цвет все фломастеры разные. Я выбрал для себя такую стратегию. Для каждого порта Меги, настроенного как 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- означает что нужно сменить состояние на противоположное
Re: Подключение контроллера MegaD-328
Добавлено: Сб сен 13, 2014 10:07 pm
Dragon
Кнопка подключена на 4 порт при нажатии проговаривает ..Передаю тестовому датчику статус 1.. ..Получено сообщение от Меги.. все правильно?
Re: Подключение контроллера MegaD-328
Добавлено: Сб сен 13, 2014 10:11 pm
Bagir
Ну то, что хоть как то реагирует, значит уже хорошо. Но реакция неправильная. Возможно забыли break; Пришлите весь код метода.
Порты я нумерую от 0 так же как на Меге. То есть, по счету 4 порт будет пятый канал. 0,1,2,3,4
Re: Подключение контроллера MegaD-328
Добавлено: Сб сен 13, 2014 10:16 pm
Dragon
так я 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);
}
Re: Подключение контроллера MegaD-328
Добавлено: Сб сен 13, 2014 10:19 pm
Bagir
Упростите для понимания, потом когда разберетесь, сами допишите чего угодно.
Код: Выделить всё
// запускается из файла 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);
}
Re: Подключение контроллера MegaD-328
Добавлено: Сб сен 13, 2014 10:30 pm
Dragon
упростил. периодически проговаривает ..Получено сообщение от Меги вход статус 1.. где это исправить?
Re: Подключение контроллера MegaD-328
Добавлено: Сб сен 13, 2014 10:34 pm
Bagir
Как так? просто само по себе говорит? Надо разобраться почему.
Говорит то тут:
Код: Выделить всё
say('Получено сообщение от Меги. Вход '.$params['pt'].' Статус '.$m);
А свет то переключает при нажатии?
Re: Подключение контроллера MegaD-328
Добавлено: Сб сен 13, 2014 10:40 pm
Dragon
да свет переключает и говорит ..свет..
но периодически проговаривает ..получено сообщение.......
Re: Подключение контроллера MegaD-328
Добавлено: Сб сен 13, 2014 10:44 pm
Bagir
По задумке в метод incomingMessage каждой Меги поступают от нее сообщения, обработанные файлом megad.php
Если говорит именно так: Получено сообщение от Меги вход статус 1 Это значит что не передан $params['pt']. Могу предположить, что Мега шлет какие то другие сообщения. Например с порта АЦП, если там задано условие, или же данные о температуре.
Скорее всего эти параметры просто я еще не добавил в файл megad.php. Посмотреть бы логи апачи сервера. Там видно весь GET запрос целиком. Это бы приоткрыло завесу тайны. Логи тут: путьк_серверу\Apache2.2\logs\ Файл access.log
Re: Подключение контроллера MegaD-328
Добавлено: Сб сен 13, 2014 10:47 pm
Bagir
Или как вариант убрать группу
Код: Выделить всё
default:
say('Получено сообщение от Меги. Вход '.$params['pt'].' Статус '.$m);
Но это никак не решит проблему поступающих от Меги сообщений, просто не будет говорит о них. В общем надо посмотреть логи сервера. Что именно ему шлет Мега.
Странно дело, у меня
http://ab-log.ru/ не открывается. Хотел поискать полный список сообщений Меги.