[Модуль] MegaD (megad)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Victor_S
Сообщения: 265
Зарегистрирован: Пт дек 26, 2014 1:58 pm
Благодарил (а): 33 раза
Поблагодарили: 24 раза

Re: Модуль "MegaD"

Сообщение Victor_S » Чт фев 16, 2017 5:22 pm

avacs, в модуле, на закладке advanced, нужно один раз нажать кнопку read config. Если в окошке снизу появятся данные - идем на закладку Данные и радуемся. Если не появятся - идем на закладку свойства и проверяем ip и пароль.
avacs
Сообщения: 3
Зарегистрирован: Чт фев 16, 2017 4:33 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение avacs » Чт фев 16, 2017 7:43 pm

Victor_S, все это проверил, ни чего не заполняется при нажатии кнопки read config, IP указан верно, При поиске находит мегу на 192.168.0.14, сервер находится по адресу 192.168.0.10, это же и прописано во вкладке "настройки мегад". Пароль установлен по умолчанию "sec", он же и считался при обнаружении модуля. Модуль ввода-вывода установлен 7I7O-R, Мегай ID установлен "1", в настройках установил тоже "1", но фак в другом, модуль не работает!!! В итоге - "совсем не радуемся!!!" остается или костыли делать или разбирать модуль MEGAD и разбираться что делать! Грешил, что модуль самодельный, на ардуине с подпаянным клоком от ENC. Но походу траблы в модуле, т.к. через команды предложенные "Chainik"ом (за что ему спасибо еще раз) - работает!

UPD.
Раскоментировал в файле megad.php строчку дебаг мессаджа
в итоге увидел, что мега опросилась, и периодические (раз в минуту) идут запросы "/megad.php?mdid=1&all=",
но поле "Данные" - так же остается пустым.

мой лог:

22:54:37 0.64730100 megad: /megad.php?mdid=1&all=OFF;ON/1;ON/1;ON/1;ON/1;ON/1;ON/0;ON;ON;ON;ON;OFF;OFF;OFF;604;639 (192.168.0.14)
22:53:37 0.44993100 megad: /megad.php?mdid=1&all=OFF;ON/1;ON/1;ON/1;ON/1;ON/1;ON/0;ON;ON;ON;ON;OFF;OFF;OFF;615;636 (192.168.0.14)
22:52:38 0.31872400 megad: /megad.php?pt=5&m=2&cnt=1&mdid=1 (192.168.0.14)
22:52:38 0.30583500 megad: /megad.php?pt=4&m=2&cnt=1&mdid=1 (192.168.0.14)
22:52:38 0.29210400 megad: /megad.php?pt=3&m=2&cnt=1&mdid=1 (192.168.0.14)
22:52:38 0.27827900 megad: /megad.php?pt=2&m=2&cnt=1&mdid=1 (192.168.0.14)
22:52:38 0.26400700 megad: /megad.php?pt=1&m=2&cnt=1&mdid=1 (192.168.0.14)
22:52:37 0.36141300 megad: /megad.php?pt=5&cnt=1&mdid=1 (192.168.0.14)
22:52:37 0.34245900 megad: /megad.php?pt=4&cnt=1&mdid=1 (192.168.0.14)
22:52:37 0.32734900 megad: /megad.php?pt=3&cnt=1&mdid=1 (192.168.0.14)
22:52:37 0.30738900 megad: /megad.php?pt=2&cnt=1&mdid=1 (192.168.0.14)
22:52:37 0.29207000 megad: /megad.php?pt=1&cnt=1&mdid=1 (192.168.0.14)


Внимание вопрос, куда передается эта строка "OFF;ON/1;ON/1;ON/1;ON/1;ON/1;ON/0;ON;ON;ON;ON;OFF;OFF;OFF;604;639"?
в каком файле обработчик (парсер)???

Что то мне подсказывает нужно здесь копать, как то это не правильно парсится или неправильно дается запрос для меги.
"/megad.php?pt=5&m=2&cnt=1&mdid=1"
Victor_S
Сообщения: 265
Зарегистрирован: Пт дек 26, 2014 1:58 pm
Благодарил (а): 33 раза
Поблагодарили: 24 раза

Re: Модуль "MegaD"

Сообщение Victor_S » Пт фев 17, 2017 1:26 pm

avacs, у меня есть и готовые модули от Андрея и самопальные на ардуинках. Модуль стоит как на рабочей системе на объекте,там не обновлял МД и модуль уже год это точно, так и дома на тестовом компе. Тут обновляю все регулярно и проверяю.
1. Пока не добъетесь чтения конфигурации из модуля - нет смысла ничего копать в МД.
2. Кроме неправильного ip, id и пароля, могут быть вопросы с настройкой сети в самой Меге. У меня были проблемы с одним маршрутизатором. Никак МД не видел Мегу по ip, только по id. Поэтому проверьте в Меге настройки сети, в частности уберите шлюз по умолчанию(поставьте туда 255.255.255.255, как это и было по умолчанию). А то Мега пытается слать серверу сообщения даже в одной сети через шлюз. В результате апач получает запрос от адреса шлюза, а не от Меги, и возникает путаница. Смотрите настройки nat на маршрутизаторе.
avacs
Сообщения: 3
Зарегистрирован: Чт фев 16, 2017 4:33 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение avacs » Пт фев 17, 2017 2:04 pm

Victor_S, все это неоднократно проверял, шлюз стоит (и стоял) 255.255.255.255, IP- megad-192.168.0.14, сервер МД на 192.168.0.10. При дебаге, вижу ответы от МЕГИ в МД раз в секунду вида "22:54:37 0.64730100 megad: /megad.php?mdid=1&all=OFF;ON/1;ON/1;ON/1;ON/1;ON/1;ON/0;ON;ON;ON;ON;OFF;OFF;OFF;604;639 (192.168.0.14)"

Маршрутизатора нет, есть свитч неуправляемый Dlink 10/100 и три соединения, сервер, ноут и МегаД. Единственное, что шлюз для МД прописан как ноутбук (192.168.0.100), а в ноуте сделан проброс с вайфая интернета.

Есть предположение, что у меня там две сетевухи, и одна из них не настроена в системе (да и к ней кабель не подключен).

При нажатии на кнопку "read config", некоторое время система висит, как будто ждет ответ, а потом выдает результат "ОК", при этом поле "конфиг" пустое на вкладке "advanced".

Я когда настраивал /etc/php5/apache2/php.ini и /etc/php5/cli/php.ini
для error_reporting задавал одинаковые параметры:
error_reporting = E_ALL & ~E_NOTICE

max_execution_time с 30 меняем на 90
max_input_time поменяем с 60 на 180
post_max_size меняем с 8M на 200M
upload_max_filesize меняем с 2M на 50M
max_file_uploads меняем с 20 на 150

Как и было написано в инструкции, может я что то не то сделал?!

Вот еще вопрос по самодельным модулям, сейчас у меня просто Ардуино нано + ENC шилд. К портам просто подключены светодиоды и кнопки. Работу светодиодов и кнопок через веб интерфейс я вижу. Не нужно ли что нибудь соединять (например перемычки между портами, резистор как в некоторых схемах?). Хотя по логике, оно же работает по прямым командам из МД....

В общем, может криво поставил систему, или может не нужно было обновлять?!
Victor_S
Сообщения: 265
Зарегистрирован: Пт дек 26, 2014 1:58 pm
Благодарил (а): 33 раза
Поблагодарили: 24 раза

Re: Модуль "MegaD"

Сообщение Victor_S » Пт фев 17, 2017 3:45 pm

avacs, у меня все ж стойкое ощущение проблем настройки сети. В сервере одна сетевуха?, сервер под виндой? И все ж гляньте логи апача.
По нано с шилдом не понял вопроса. Вообще, если делать МегаД на основе нано, нужно учитывать кучу моментов. Проще(и дешевле) спаять все на про мини. Тогда аппаратно получаем полный аналог и шьем hex прошивку через загрузчик Меги. Нано и его шилд рассчитаны на 5В и тогда тактировать нужно от кварца нано. Соответственно и прошивку нужно немного перекомпилировать под эти задачи. Я не смог на нано с загрузчиком, прошить Мегу(выдавало ошибку превышения размера прошивки). Только напрямую программатором, оставив ардуиновский загрузчик. По обвязке. На входах я использую по 2 сопротивления(последовательно от ножки ардуины 1 кОм, дальше 4.7кОм на питание, вход от датчика/кнопки в точку соединения сопротивлений). При таком варианте устойчиво работают кнопки(сухой контакт) и термодатчики ds18b20. Других датчиков к "Мегам" я не подключаю. Выходы прямо на микросхему 2003, с нее на 12В релюшки. ШИМ и симисторы не использую.
tsember
Сообщения: 52
Зарегистрирован: Ср фев 04, 2015 12:28 am
Благодарил (а): 54 раза
Поблагодарили: 6 раз

Re: Модуль "MegaD"

Сообщение tsember » Пн фев 20, 2017 8:54 pm

После последнего обновления модуля начались какие то странности: при выполнении метода TurnOn статус должен меняться с 0 на 1, модуль должен это видеть и сразу отправлять команду меге типа 7:1 на включение. Раньше все работало как часы. Сейчас никакой реакции. Нажимаешь принудительно TurnOn, статус меняется на 1, через 2-3 секунды проверяет статус на меге (а там OFF) и перещелкивает статус обратно на 0.

Если в метод TurnOn прописать не присваивание status значение 1, а сразу отправлять команду меге типа getURL('...cmd=7:1',0), то все работает исправно. Но это ведь неправильно, этого некого рода хак. Прошу помочь советом: где искать?

Так же Сергея прошу несколько исправить настройку меги в модуле: lобавилась новая опция "Тип (контроллер)". Я считаю, что при выборе контроллера на 328 камне, предлагать одно поле: "Тип (периферия)" с возможностью выбора одного из четырех доступных на текущий момент исполнительных модуля. А если выбираем контроллер 2561, то предлагать два независимых поля: "Тип (периферия) - XP1" и "Тип (периферия) - XP2" с возможностью выбора в каждом поле одного из четырех доступных исполнительных модуля (ну и выбор "Не подключен" конечно тоже надо на случай отсутствия модуля в XP2)

UPD:
Отвечу сам себе. После долгих мучений с удалением/ установкой модуля, удалением/созданием свойств объекта, создал новый объект с новым свойством. Как прописал новый объект в модуле, сразу все заработало.
EvgenySM
Сообщения: 27
Зарегистрирован: Сб ноя 19, 2016 10:33 pm
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: Модуль "MegaD"

Сообщение EvgenySM » Вт мар 21, 2017 1:43 pm

tsember писал(а):
sergejey писал(а):
AHgpeu писал(а):и категорически необходима галочка для входов "обрабатывать отпускание кнопки"
Так вы поставьте в свойствах входа тип R&D (если не ошибаюсь) и событие будет приходить дважды -- как на нажатие так и на отпускание. При этом в метод передаётся парметр value, который говорит как раз о том, какое действие было произведено.
Сергей. Вопрос до сих пор актуален. В связанный метод передается два параметра: сработавший порт и его значение. Катострофически не хватает переданного параметра m (отпустили кнопку или держим свыше 1,5 сек).
Хочу сделать простую логику работы "железной" кнопки:
m=0. Кликнул - свет включился на Х минут; Кликнул еще - свет выключился;
m=1. На отжатие не реагируем, т.к. у нас кнопка
m=0, m=2. При выключенном свете нажал и подержал - свет сразу включится как бы на Х минут и через полторы секунды второй параметр скажет, что таймер Х минут нужно очистить (свет будет продолжать гореть до активации режима "Никого нет дома" или пока его не выключат).

Если два параметра уже передаются, то передать третий - не должно быть проблемой. Или кто может подсказать что нужно править что бы передавать параметр m?
Заранее большое спасибо участниками конференции.



UPD:
На удивление сам разобрался: примерно в середине файла megad.class.php есть код:
СпойлерПоказать

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

if ($prop['LINKED_OBJECT'] && $prop['LINKED_METHOD']) { // && $old_value!=$prop['CURRENT_VALUE_STRING']
      $params=array();
      $params['TITLE']=$rec['TITLE'];
      $params['VALUE']=$prop['CURRENT_VALUE_STRING'];
      $params['value']=$params['VALUE'];
      $params['port']=$prop['NUM'];
      $methodRes=callMethod($prop['LINKED_OBJECT'].'.'.$prop['LINKED_METHOD'], $params);
 
после строчки

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

      $params['port']=$prop['NUM']; 
добавляем строчку:

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

$params['m']=$m; 
оказывается в модуле уже все есть, только этот параметр в метод не передавался.
Добрый день. Не расскажете чуть более подробнее?
$params['m']=$m я добавил в megad.class.php. А как теперь в своём методе можно вытащить это параметр, чтоб назначить различные условия (нажал - свет включился, подержал - выключился весь)?
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Модуль "MegaD"

Сообщение Chainik » Вт мар 21, 2017 2:49 pm

EvgenySM писал(а):Добрый день. Не расскажете чуть более подробнее?
$params['m']=$m я добавил в megad.class.php. А как теперь в своём методе можно вытащить это параметр, чтоб назначить различные условия (нажал - свет включился, подержал - выключился весь)?
Может быть получится так:

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

if ( $_GET['m'] == "2" )
{
// Выполнить одно действие (например, "выключить все")
file_get_contents("http://192.168.0.14/sec/?cmd=7:0");
file_get_contents("http://192.168.0.14/sec/?cmd=8:0");
file_get_contents("http://192.168.0.14/sec/?cmd=11:0");
}
else
{
// Выполнить другое действие (например, включить где-то свет)
file_get_contents("http://192.168.0.14/sec/?cmd=8:1");
} 
За это сообщение автора Chainik поблагодарил:
EvgenySM (Вт мар 21, 2017 9:25 pm)
Рейтинг: 1.16%
sin
Сообщения: 4
Зарегистрирован: Сб мар 25, 2017 1:23 am
Благодарил (а): 0
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение sin » Сб мар 25, 2017 1:35 am

gagarin74 писал(а):Добрый день. Нужна помощь. Может уже это обсуждалось ,но полностью 57 листов просчитать не осилил,да и на форуме веток много.
Суть проблемы.
Имеем 3 устройства
1 телефон с андройдом
2 мега девайс
3 Умный дом на Rasperry.

Начнем с телефона. На нем установлен самописный софт который имеет две кнопки -включить свет и отключить свет. Соответственно отсылает команды по Http на мега девайс как у него написано в мануале. Включает и выключает реле (работает без проблем).
Заходя на веб морду мега девайса (или веб командой для просмотра состояние портов) -видим что все отображается правильно. Да и свет во всей квартире не даст соврать :).
Дальше наступают траблы и бубны (может только у меня). Умный дом ни как не хочет реагировать на изменение состояние портов.
Модуль мега в умном доме стоит -работает "корректно", но обновляет данные только при нажатие кнопки в модуле обновить!!!!!
Тобишь в сухом остатке получаем -что мегадевайс отработал (и мы видим это в его веб морде) ,а дальше КОСТЫЛЬ.
Причем если все это организовать без телефона,а воспользоваться прикруткой кнопок к мегадевайсу и с их помощью гасить свет,данные попадают в умный дом (и соответственно меняются показатели).

Нужен совет(ы).
1 как заставить обновиться данные в умном доме.
2 как заставить мега девайс послать волшебный пинок умному дому и сообщить что параметр изменился.

В мегадевайсе с кнопками вроде более менее понятно -там всяких настроик на входы полно. А вот как быть с выходами?!! если их задействовать на прямую без кнопок с мегадевайса.


Спасибо за понимание. (пока писал сообщение прошло минут 5), умный дом так и не оповестил меня(и себя тоже) что на меге один выход переключился с ON на OFF
Доброго времени суток, с недавних пор пользуюсь связкой md + mega md крутится на сервере (малина + Linux)
Появилась такая проблема, обновление данных с меги происходит только после нажатия кнопки обновить в интерфейсе мд:(
В какой момент появилась проблема сложно сказать скорее всего обновление.
Подскажите в каком направлении рыть.
Спасибо
andrey1509
Сообщения: 87
Зарегистрирован: Ср ноя 09, 2016 10:21 am
Откуда: Липецкая обл.
Благодарил (а): 22 раза
Поблагодарили: 2 раза

Re: Модуль "MegaD"

Сообщение andrey1509 » Сб мар 25, 2017 12:19 pm

sin писал(а): Доброго времени суток, с недавних пор пользуюсь связкой md + mega md крутится на сервере (малина + Linux)
Появилась такая проблема, обновление данных с меги происходит только после нажатия кнопки обновить в интерфейсе мд:(
В какой момент появилась проблема сложно сказать скорее всего обновление.
Подскажите в каком направлении рыть.
Спасибо
Такая же ........ В неопределенное время пропадает связь с Мегой. Передергивание по питанию Меги помогает восстановить связь. Грешил на сетевые соединения, но подключил через свич кабелем, проблема осталась. Сейчас набираю статистику, кто виноват. Дополнительно подключил esp8266. Будем посмотреть.

Загрузил другую прошивку на Мегу.......
Debian Linux 7,Linux 3.2.0-4-686-pae on i686
Intel(R) Celeron(R) CPU 1.70GHz, 1 cores
Ответить