Страница 13 из 41

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

Добавлено: Сб сен 13, 2014 8:59 pm
Dragon
да

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

Добавлено: Сб сен 13, 2014 9:00 pm
Bagir
Теперь настроим мегу через ее web интерфейс. Ссылочка Config. IP: - адрес Меги. Нужно выбрать ей постоянный адрес, т.к. он быдет использоваться для идентификации меги и отправки ей сообщений.
Pwd: - пароль для меги, чтобы сосед, которому дали пароль от вашего WiFi не мигал Вам ночью светом :) По умолчанию sec. Его надо будет указать такой же и в классе, но об этом чуть позже.
GW: - маска сети
SRV: адрес сервера MDM
Script:-php скрипт, который будет вызывать Мега. Пишем туда megad.php

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

Добавлено: Сб сен 13, 2014 9:02 pm
Bagir
По умолчанию все порты которые IN настроены как P. Это означает, что мега пошлет серверу сообщение только при нажатии (замыкании контактов) кнопки. Сейчас нам этого достаточно.

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

Добавлено: Сб сен 13, 2014 9:06 pm
Dragon
ip меги 192.168.1.14 пароль выставил, маска стоит, адрес сервера 192.168.1.41, скрипт прописал

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

Добавлено: Сб сен 13, 2014 9:11 pm
Bagir
Отлично!
Теперь давайте проверим, модем ли мы чем то управлять из MDM. Создайте в MDM новый скрипт, и добавьте туда этот код

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

callMethod('MegaD1.setOutput',array('port'=>10,'value'=>1));
где 10 это порт Меги, а 1 означает включить

Забыл еще кое что добавить. В web настройках Меги можно указать Megad-ID. У каждой меги этот идентификатор должен быть разный. Когда какаято мега посылает сообщения на сервер, файл megad.php ищет нужный объект в классе MegaD. Ищет сначала по этому идентификатору, а потом, если не нашел, ищет по ip адресу. Предлагаю просто выставить Megad-ID = 1. И так же указать в объекте класса MegaD1.id = 1

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

Добавлено: Сб сен 13, 2014 9:18 pm
Dragon
Извините пожалуйста, а где этот скрипт создать.

У моей меги нет нет настройки ID похоже у меня старая прошивка, у вас ее нет случайно яб ее и прошил

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

Добавлено: Сб сен 13, 2014 9:20 pm
Bagir
Да, скорее всего старая. Прошивка есть, и даже кое какой опыт имеется. Обязательно сделаем, но чуть позже. megad.php должен найти объект и без идентификатора по ip адресу. Заодно и проверим ))

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

Добавлено: Сб сен 13, 2014 9:22 pm
Bagir
А новый скрипт создайте в панели управления MDM. Там слева в меню есть сценарии. В группе Test создайте новый сценарий с любым именем. Это нам на пробу, а в него скопируйте тот код.
Потом выполните этот сценарий, и если все хорошо, то на меге должен включиться выход.

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

Добавлено: Сб сен 13, 2014 9:34 pm
Dragon
Создал скрипт сто вы предложили вместо 10 порта подставил 8, проверил включается

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

Добавлено: Сб сен 13, 2014 9:43 pm
Bagir
Так вообще отлично! Значит все работает. Тогда сейчас надо понять, приходят ли сообщения от Меги в MDM. Я так понял, что выключатель без фиксации состояния - проще говоря кнопка.
Открывает Class: MegaD, Объект: MegaD1, Метод incomingMessage, ссылка настроить
Там должен быть код с таким вот началом:

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

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

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

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

switch ($params['pt']) {
  case 0:
    //Этот порт на Меге настроен как P&R
    say('Передаю тестовому датчику статус '.$m);
    break;

  case 1:
    //Этот порт на Меге настроен как P
    say('Вызываю метод тестового объекта');
    break;
    
  // Далее идут уже лично мои настройки. Оставил их для примера.
  case 3:
    //Сообщение о начале открытии воздушной заслонки.
    //Скорее всего потом будет отключено и порт будет свободен
    break;

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

  default:
    say('Получено сообщение от Меги. Вход '.$params['pt'].' Статус '.$m);
  } 
Цифра после case это номер порта. Нас интересуют порты, которые настроены как IN, а конкретно порт, к которому подключен выключатель. Если система MDM умеет разговаривать, то в эту группу case можно написать какой нибудь код, к примеру

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

say('Наша кнопка нажата'); 
В будущем нужно создать группу сase для каждого входа Мега, данные которого нам интересны. В конце есть группа default: Полезно тем, что если у нас в группах case нет например 2 вхда, а на Меге он будет замкнут, то сработает код из группы default: и прозвучит сообщение с номером входа.