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

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

Модератор: immortal

Аватара пользователя
Kod.Begemot
Сообщения: 358
Зарегистрирован: Чт июн 20, 2013 5:53 pm
Благодарил (а): 32 раза
Поблагодарили: 42 раза

Re: Модуль "MegaD"

Сообщение Kod.Begemot » Пн дек 21, 2015 9:49 am

Так жалею что у меня нет достаточных навыков, чтобы разобраться в этом модуле и его исправить... Может подскажет кто - хотя бы с чего стоит начинать, как модуль разобрать, в какой среде пробовать лучше?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль "MegaD"

Сообщение sergejey » Пн дек 21, 2015 11:49 am

Я в ближайшее время добавлю галочку в интерфейс по поводу выполнения дефолтных команд.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
Kod.Begemot
Сообщения: 358
Зарегистрирован: Чт июн 20, 2013 5:53 pm
Благодарил (а): 32 раза
Поблагодарили: 42 раза

Re: Модуль "MegaD"

Сообщение Kod.Begemot » Пн дек 21, 2015 12:10 pm

Будет великолепно!
Но всё же, не подскажете - на будущее, в чем лучше редактировать подобные вещи?
Интересно попробовать, а вдруг разберусь? :8
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль "MegaD"

Сообщение sergejey » Пн дек 21, 2015 12:46 pm

Kod.Begemot писал(а):Будет великолепно!
Но всё же, не подскажете - на будущее, в чем лучше редактировать подобные вещи?
Интересно попробовать, а вдруг разберусь? :8
Про редактирования -- тут нет однозначного ответа. Есть много различных средств для работы с кодом (так называемых IDE), но я сам лично пользуюсь просто Far-ом с набором вспомогательных плагинов для редактора.

По поводу модуля, добавил:
Изображение

Сейчас под рукой нет MegaD, чтобы проверить, так что пожалуйста потестируйте.
Работает следующим образом -- если эта галочка выставлена, то модуль не отдаёт устройству команду по-умолчанию при изменении значения входа. При этом, в случае необходимости, метод может выдать какую-то другую команду через return. Да, и ещё -- команда по-умолчанию может быть выполнена на устройстве и без участия модуля, например, если сервер слишком долго думал с ответом.
За это сообщение автора sergejey поблагодарил:
AHgpeu (Вт дек 22, 2015 9:19 pm)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
zelevova
Сообщения: 291
Зарегистрирован: Вт ноя 18, 2014 11:43 pm
Откуда: Краснодарский край
Благодарил (а): 32 раза
Поблагодарили: 68 раз

Re: Модуль "MegaD"

Сообщение zelevova » Пн дек 21, 2015 11:58 pm

Так как кубик устройство медленное, а мега нетерпеливое да еще и в методах много всего наворочено, пришлось делать заглушку что бы не ожидалось ответа от МЖД.
Пока сделал скрипт обертку который вызывает в фоне стандартный скрипт модуля и тут же возвращает пустую строку меге.
megad1.phpПоказать

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

<?php

@ini_set('zlib.output_compression', 'Off');
@ini_set('output_buffering', 'Off');
@ini_set('output_handler', '');
@apache_setenv('no-gzip', 1);

$url = 'http://localhost/megad.php';
$command = 'curl "'.$url.'?'.$_SERVER['QUERY_STRING'].'" > /dev/null 2>&1 &';

exec($command);
echo ""; exit; 
С такой оберткой наконец ушли ложные срабатывания.

Возвращать команды вида "8:2" не вижу смысла, так как часть устройств подключены к той же меге, а часть к соседней, а еще часть вообще не к меге.
Дабы общение было более однотипное думаю проще вызывать только методы ООП для нужных устройств, чем комбинировать их со строкой типа "8:2".

Может стоит сразу возвращать пустую строку? Оставить сценарии по умолчанию для автономного режима? А на события меги реагировать методами ООП? Что скажет Сергей как автор модуля и сообщество пользователей модуля?
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311
Аватара пользователя
Kod.Begemot
Сообщения: 358
Зарегистрирован: Чт июн 20, 2013 5:53 pm
Благодарил (а): 32 раза
Поблагодарили: 42 раза

Re: Модуль "MegaD"

Сообщение Kod.Begemot » Вт дек 22, 2015 12:08 am

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

Re: Модуль "MegaD"

Сообщение Victor_S » Вт дек 22, 2015 8:19 am

Kod.Begemot писал(а):Поддерживаю! Сценарии только для автономной (читай аварийной) работы. А методами и несколько мег объединить просто, да и вообще это правильнее.
А я не поддерживаю...:)
Объединить несколько мег можно и сценариями. Не вижу ни малейшего смысла плодить десятки объектов не несущих никакой функциональной нагрузки(нефиксируемые кнопки). То что может автоматика делать без сервера, пускай делает. Или вы считаете что лишние объекты ускорят работу ваших кубиков? Я не очень понимаю, что значит ложные срабатывания, если вы сами закладываете данный функционал в мегу...:) Уберите сценарий из меги и пользуйтесь только командами сервера.
За это сообщение автора Victor_S поблагодарил:
Jager (Вт дек 22, 2015 10:22 am)
Рейтинг: 1.16%
Аватара пользователя
Kod.Begemot
Сообщения: 358
Зарегистрирован: Чт июн 20, 2013 5:53 pm
Благодарил (а): 32 раза
Поблагодарили: 42 раза

Re: Модуль "MegaD"

Сообщение Kod.Begemot » Вт дек 22, 2015 10:55 am

Victor_S писал(а): А я не поддерживаю...:)
Объединить несколько мег можно и сценариями. Не вижу ни малейшего смысла плодить десятки объектов не несущих никакой функциональной нагрузки(нефиксируемые кнопки). То что может автоматика делать без сервера, пускай делает. Или вы считаете что лишние объекты ускорят работу ваших кубиков? Я не очень понимаю, что значит ложные срабатывания, если вы сами закладываете данный функционал в мегу...:) Уберите сценарий из меги и пользуйтесь только командами сервера.
На мой взгляд смысл в том, чтобы сценарий в меге таки _выполнялся_!, но только когда сервер "склеил ласты"...
Живой сервер пропустив команду "через себя" сможет гораздо больше, нежели просто мега.
P.S. Попробую сегодня новый модуль, у меня главная проблема на калитке - там мега занимается отпиранием электрозамка по командам или с сервера или с "контроллера доступа". там периодически замок отпирался повторно, из-за срабатывания сценария. Приходилось убирать все сценарии, считывать конфигурацию в модуле, потом опять прописывать сценарии.
Victor_S
Сообщения: 265
Зарегистрирован: Пт дек 26, 2014 1:58 pm
Благодарил (а): 33 раза
Поблагодарили: 24 раза

Re: Модуль "MegaD"

Сообщение Victor_S » Вт дек 22, 2015 11:13 am

Kod.Begemot, у меня подход такой - есть некие жизненно важные функции(управление ими примитивное, не требует никаких сложных сценариев на сервере), они должны работать и без участия сервера, а есть сервисные(дополнительный комфорт), их пропадание при зависании сервера не является трагедией. Уберите сценарий по умолчанию из меги для калитки. Когда сервер работает - имеете дополнительный функционал, когда завис(это ведь форсмажор, а не обычная ситуация?) - откроете с контроллера.
zelevova
Сообщения: 291
Зарегистрирован: Вт ноя 18, 2014 11:43 pm
Откуда: Краснодарский край
Благодарил (а): 32 раза
Поблагодарили: 68 раз

Re: Модуль "MegaD"

Сообщение zelevova » Вт дек 22, 2015 11:30 am

Есть такая жизненно важная функция как включение света по датчику движения. Жизненно важная потому как без света местами можно и шею сломать... А ты приехал поздно, вокруг темно и в руках много всего...
Но когда светло на улице, свет включать не нужно... Понятно что если сервер не доступен то свет включается всегда, но вот сервер думает медленнее чем мега и получается что свет все равно включается всегда... Печаль...

Вот если галочку "skip default action" заменить на "send an empty response immediately". Может тогда будет более универсально?
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311
Ответить