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

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

Модератор: immortal

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

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

Сообщение Bagir » Ср фев 04, 2015 7:55 pm

Обновил класс в ветке http://smartliving.ru/forum/viewtopic.php?f=14&t=1832
У кого уже установлено, изменения проще взять у меня в коннекте.
Из нового:
Таймер свойства alive перезапускается не только по опросу температуры Меги, но и при каждом любом сообщении от нее.
Добавлены все исправления, о которых тут писали. Тем, кто настраивает первый раз, не придется собирать по кусочкам.

Кто нибудь пробовал ПинКод хотя бы подключенный к кнопке на столе? Я так уже давно домой захожу ))
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Victor_S
Сообщения: 265
Зарегистрирован: Пт дек 26, 2014 1:58 pm
Благодарил (а): 33 раза
Поблагодарили: 24 раза

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

Сообщение Victor_S » Ср фев 04, 2015 8:58 pm

Bagir писал(а): Похоже в нашей компании Мегаводов пополнение )) Я с php знаком недавно, и мало что еще знаю.
Это точно про пополнение...:) Сейчас у меня 3 Меги от Андрея(играюсь пока с одной), ожидаю еще парочку термостатов от Виктора(ТНК). С php я знаком еще более "шапочно" чем Вы.
Как говорил, кажется, Козьма Прутков - Есть люди знающие все ни о чем(кодеры в нашем случае) и люди знающие ничего обо всем(постановщики задач)...:) Я скорее ко вторым себя отношу, так что в коде мало чем смогу помочь, если только указать нужное направление...:)
И вот о чем я хочу для начала поговорить... В моем случае получается так, что код в megad.php работает абсолютно в холостую, т.е. получив 3 ошибки(Мега не найдена и метод incomingMessages не запущен) тем не менее сама Мега нормально функционирует в MD(есть двухсторонняя связь и определение самой Меги живой). В таком случае зачем он нужен? Только тратит время и энергию...;) Завтра попробую удалить код из скрипта и проверить что будет... Тестовый стенд у меня на работе... Ну и надо будет несколько Мег подключить и посмотреть...
По остальным Вашим постам - тоже завтра все посмотрю и проверю, спасибо.
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Чт фев 05, 2015 12:29 am

Виктор! Это чудеса какие то )) Никак без megad.php, и Вы скоро это сами поймете. Этот файл обязательное звено между Мегами и объектами МД.
Да, конечно можно попробовать заменить его на скрипт. И в настройке Меги писать Script: не megad.php а например objects/?script=megad. Совершенно не представляю, прокатит ли это вариант запуска скрипта Мегой с именем megad. Просто я не вижу явных преимуществ такого варианта перед файлом. Хотя можно будет и попробовать. Но сейчас разговор не об этом.
Меги ломятся на наш сервер, и обращаются к указанному нами скрипту, а именно файлу megad.php. В этом файле происходит поиск нужного объекта Меги из класса MegaD и вызов его метода incomingMessage с передачей ему параметров. При вызове в родительской части метода incomingMessage устанавливается свойство alive и если это был запрос температуры внутреннего датчика, то и свойство temperature. Затем, по правилам МД, выполняется уже личная часть кода метода incomingMessage, которая пишется в каждом объекте Меги.
То есть, если есть связь между физической Мегой и ее объектом в МД, значит что то где то все равно должно запустить метод incomingMessage. А делает это файл megad.php к которому обращаются Меги.
Пишите о своих экспериментах )) Я постараюсь помочь чем смогу. Обратите особое внимание на конец файла megad.php, там, где идет вызов метода incomingMessage. Там однозначное условие if. Либо запуск метода incomingMessage, либо сообщение Cannot find object of MegaD class ...
Еще стоит добавить, что файл megad.php нужен только для входящих сообщений от Мег. Тут не важно спрашивали мы, или Мега сама шлет этот пакет. Всё входящее от Мег проходит через megad.php главная задача которого найти нужный объект Меги и передать ему сообщение.
А вот команды на коммутацию реле идут совершенно другим путём. megad.php тут не используется. Строка GET запроса формируется в методе setOutput и отправляется на Мегу командой getURL($cmdUrl, 0);
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Victor_S
Сообщения: 265
Зарегистрирован: Пт дек 26, 2014 1:58 pm
Благодарил (а): 33 раза
Поблагодарили: 24 раза

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

Сообщение Victor_S » Чт фев 05, 2015 7:59 am

Bagir, я понимаю общую схему взаимодействия. Поэтому и удивился тому что получаю сообщения от меги о сработавшем входе при том что в логах три ошибки(т.е. фактически мега не найдена и incomingMessage не должен был вызваться).
Victor_S
Сообщения: 265
Зарегистрирован: Пт дек 26, 2014 1:58 pm
Благодарил (а): 33 раза
Поблагодарили: 24 раза

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

Сообщение Victor_S » Чт фев 05, 2015 8:37 am

Bagir писал(а): Для начала надо посмотреть что вообще Мега шлет серверу. Посмотрите в логах Апача. Есть ли в сообщении параметр mdid ?
А для решения второй загадки можно прямо из браузера спросите Мегу http://<ip>/sec/?tget=1 В ответе должно быть только одно число. Это градусы.
tget - работает как надо,
mdid в логах не нахожу...
Упс... нашел mdid и в апаче и в мажордомо.
Victor_S
Сообщения: 265
Зарегистрирован: Пт дек 26, 2014 1:58 pm
Благодарил (а): 33 раза
Поблагодарили: 24 раза

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

Сообщение Victor_S » Чт фев 05, 2015 9:51 am

Кажется нашел зацепку...:)
У меня в меге не стояла температура алярма. И мега постоянно слала на сервер сообщения at. При этом она не шлет свой mdid. Нужно переговорить с Андреем по этому вопросу. Поэтому megad.php и не мог его определить...
Сейчас я выставил температуру на 30 градусов и ошибка по mdid в логе пропала. При срабатывании портов мега исправно шлет свой mdid.
Но, тем не менее вопрос остается открытым. В логах апача видно что мега шлет сообщения не со своего адреса напрямую, а через адрес шлюза по умолчанию, даже если этот шлюз и не прописан в меге.
Так вот интересна реакция megad.php на это...
Если я не прописываю адрес шлюза в меге, и она отправляет сообщение на сервер без mdid, то скрипт не ругается на ip адрес меги(хотя он и не ее) и соответственно вызывает какой-то метод incomingMessage(только чей?, может класса?) и устанавливает свойство alive в 1(опять же чье? возможно класса, а моя единственная в данный момент мега все это наследует?)
Если же я в явном виде укажу в меге адрес шлюза(а он тот же) - проверка в megad.php по ip уже не проходит и метод incomingMessage не вызывается.
Возможно у меня некоторые проблемы с сетью. Сейчас параллельно тестирую разное оборудование в ней, пришлось недавно сменить адрес подсети, да и сам шлюз только появился, еще не до конца с ним разобрался(может нат внутри сети включен)...
Но тем не менее понятно 2 вещи:
1. Мега не шлет свой mdid с сообщением at(как минимум). Это нужно обсуждать на другом форуме.
2. megad.php некорректно обрабатывает определение ip адреса Меги. Видимо лучше вообще исключить данную проверку, ИМХО.
Victor_S
Сообщения: 265
Зарегистрирован: Пт дек 26, 2014 1:58 pm
Благодарил (а): 33 раза
Поблагодарили: 24 раза

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

Сообщение Victor_S » Чт фев 05, 2015 10:11 am

Victor_S писал(а): 2. megad.php некорректно обрабатывает определение ip адреса Меги. Видимо лучше вообще исключить данную проверку, ИМХО.
Bagir, у Вас majordomo на какой операционке стоит? У меня win7. Вроде как Андрей где-то писал о проблемах определения адреса меги именно под виндой. Вроде там сокеты нужно использовать... В общем посмотрите как он определяет адрес в megad-cfg.php. Может оттуда код позаимствовать?
zelevova
Сообщения: 291
Зарегистрирован: Вт ноя 18, 2014 11:43 pm
Откуда: Краснодарский край
Благодарил (а): 32 раза
Поблагодарили: 68 раз

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

Сообщение zelevova » Чт фев 05, 2015 10:39 am

Мне кажется тут проблема с сетью. У меня сервер на WinXP все нормально работает. НЕдавно только обновил прошивку, до этого по ip определял и все работало.
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311
Victor_S
Сообщения: 265
Зарегистрирован: Пт дек 26, 2014 1:58 pm
Благодарил (а): 33 раза
Поблагодарили: 24 раза

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

Сообщение Victor_S » Чт фев 05, 2015 10:57 am

zelevova писал(а):Мне кажется тут проблема с сетью. У меня сервер на WinXP все нормально работает. НЕдавно только обновил прошивку, до этого по ip определял и все работало.
Возможно, с этим я разберусь. Но это не отменяет проблему определения адреса Меги в megad.php.
Victor_S
Сообщения: 265
Зарегистрирован: Пт дек 26, 2014 1:58 pm
Благодарил (а): 33 раза
Поблагодарили: 24 раза

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

Сообщение Victor_S » Чт фев 05, 2015 11:29 am

Только что Андрей выложил прошивку в которой исправлена проблема с mdid в сообщении at
Ответить