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

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

Модератор: immortal

Аватара пользователя
AHgpeu
Сообщения: 117
Зарегистрирован: Чт мар 12, 2015 11:46 am
Благодарил (а): 26 раз
Поблагодарили: 16 раз

Re: Модуль "MegaD"

Сообщение AHgpeu » Чт май 21, 2015 2:46 pm

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

Re: Модуль "MegaD"

Сообщение sergejey » Чт май 21, 2015 3:19 pm

AHgpeu писал(а):
sergejey писал(а):Проблему смог воспроизвести, но решение пока в голову не лезет.
...
Я это связываю с тем, что на меге стоит очень маленький тайм-аут на запрос к серверу и в некоторых случаях мега просто считает, что не дождалась ответа от сервера, какой бы он там ни был, и, соответственно, выполняет команду по-умолчанию.
если, к примеру, меги реальной вообще нет, то по ссылке, имитирующей мегу, тоже различные ответы.
и тайм-аут 2 секунды. в принципе, это очень много
Да, дело не в таймауте. Попоробуйте ещё раз обновить модуль, кое-что смог у себя воспроизвести и исправил.
За это сообщение автора sergejey поблагодарил:
AHgpeu (Чт май 21, 2015 5:02 pm)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Victor_S
Сообщения: 265
Зарегистрирован: Пт дек 26, 2014 1:58 pm
Благодарил (а): 33 раза
Поблагодарили: 24 раза

Re: Модуль "MegaD"

Сообщение Victor_S » Чт май 21, 2015 4:36 pm

А можно поинтересоваться почему такая большая временная разница при переключении "железным" переключателем и "программным"? Т.е. есть лампочка на сцене, связана с выходом Меги. На входе Меги есть аппаратная кнопка. Щелкаю по лампочке на сцене - Мега реагирует сразу, и тут же меняется статус лампочки на сцене. Щелкаю аппаратной кнопкой - Мега реагирует так же быстро, а вот статус лампочки на сцене изменяется только секунд через 5. Момент не сильно важный, но у меня нигде никакой логики особо нету, а задержка приличная.
Аватара пользователя
AHgpeu
Сообщения: 117
Зарегистрирован: Чт мар 12, 2015 11:46 am
Благодарил (а): 26 раз
Поблагодарили: 16 раз

Re: Модуль "MegaD"

Сообщение AHgpeu » Пт май 22, 2015 8:58 am

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

Re: Модуль "MegaD"

Сообщение Victor_S » Пт май 22, 2015 12:39 pm

По сценам вообще отдельный вопрос...:( Чтобы не заводить отдельную тему, спрошу тут кратенько. Сцены - это на самом деле что такое? У меня сложилось впечатление, что это не сцены, а сцена(одна) и представляет собою некий один большой жаваскрипт или ему подобное...
А по реакции, так у меня ничего не изменилось в принципе, просто вместо класса МегаД, стал использовать модуль. Я и раньше получал статус этой лампочки после щелчка железного выключателя, только телодвижений было поболее...:) Обработка incommingmessages от Меги, отправка setdata, запрос getdata, вызов метода объекта по изменению статуса лампочки. Теперь же статус связан в модуле, а задание Мега получает эхо-ответом. Раньше я визуально не видел никакой разницы, теперь не заметить ее просто невозможно. Вот и интересуюсь в чем причина. Мне показалось, что запрос о состоянии выходов отправляется Меге не сразу после команд , а тупо периодически(3-5с)...
Аватара пользователя
AHgpeu
Сообщения: 117
Зарегистрирован: Чт мар 12, 2015 11:46 am
Благодарил (а): 26 раз
Поблагодарили: 16 раз

Re: Модуль "MegaD"

Сообщение AHgpeu » Сб май 23, 2015 10:30 am

прошу прощения, что пишу в эту тему не по теме, но я тут уже поднимал вопрос о падении циклов.
вот, нашёл причину
СпойлерПоказать

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

2015-03-21 17:17:55    1146: Table 'MajorDoMo.system_errors_data' doesn t exist INSERT INTO `system_errors_data`(`ERROR_ID`, `COMMENTS`, `ADDED`) VALUES('2', '1146: Table \'MajorDoMo.system_errors\' doesn\'t exist\nSELECT * FROM system_errors WHERE CODE LIKE \'sql\'', '2015-03-21 17:17:55')
2015-03-21 17:17:55    1146: Table 'MajorDoMo.system_errors_data' doesn t exist INSERT INTO `system_errors_data`(`ERROR_ID`, `COMMENTS`, `ADDED`) VALUES('5', '1146: Table \'MajorDoMo.system_errors\' doesn\'t exist\nSELECT * FROM system_errors WHERE CODE LIKE \'sql\'', '2015-03-21 17:17:55')
2015-03-21 17:17:55    1146: Table 'MajorDoMo.system_errors_data' doesn t exist INSERT INTO `system_errors_data`(`ERROR_ID`, `COMMENTS`, `ADDED`) VALUES('3', '1146: Table \'MajorDoMo.system_errors\' doesn\'t exist\nSELECT * FROM system_errors WHERE CODE LIKE \'sql\'', '2015-03-21 17:17:55')
как вылечить? таблицы system_errors_data и system_errors присутствуют.
по времени до секунды совпадает с падением циклов.
Аватара пользователя
AHgpeu
Сообщения: 117
Зарегистрирован: Чт мар 12, 2015 11:46 am
Благодарил (а): 26 раз
Поблагодарили: 16 раз

Re: Модуль "MegaD"

Сообщение AHgpeu » Сб май 23, 2015 2:38 pm

sergejey, ещё проблема:
есть объект RELAY
на кнопку меги повешен простейший тестовый RELAY.method:

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

$status=$this->getProperty("status");

if ($status) {
 $this->setProperty("status", 0);
} else {
 $this->setProperty("status", 1);
}

return ''; 
соответственно реальное реле той же меги привязано к RELAY.status

при самой первой подаче команды (щёлкнул кнопкой) свет включается, через секунду выключается.
дальше вроде бы работает корректно, НО! при status=1 свет выключен, при status=0 свет включен.
как только перезаписался статус любой другой релюхи этой же меги (со сцены, или с кнопки, работающей по умолчанию), status перезаписывается на реальное положение дел.
и начитается всё с начала, т.е. вкл-выкл, далее норма, но инвертированная.

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

Re: Модуль "MegaD"

Сообщение sergejey » Пн май 25, 2015 11:50 am

AHgpeu, честно говоря, не понял с методом. Он сам по себе несколько странный. Если и метод и свойство привязаны в модуле МегаД, то лучше что-то отвязать или разнести по разным объектам.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
AHgpeu
Сообщения: 117
Зарегистрирован: Чт мар 12, 2015 11:46 am
Благодарил (а): 26 раз
Поблагодарили: 16 раз

Re: Модуль "MegaD"

Сообщение AHgpeu » Вт май 26, 2015 10:54 am

это было сделано для упрощения.
точно такая же бага при методе другого объекта:
СпойлерПоказать

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

$status=$this->gg("RELAY.status");

if ($status) {
 $this->sg("RELAY.status", 0);
} else {
 $this->sg("RELAY.status", 1);
}

return ''; 
соответственно RELAY.status остался привязан к выходу меги

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

Re: Модуль "MegaD"

Сообщение Victor_S » Вс май 31, 2015 2:54 pm

Есть проблема со считыванием и установкой конфигурации в закладке advanced. Думаю проблема с использованием нестандартного пароля(т.е. берется не пароль из свойств, а тупо пароль по умолчанию sec). Поставил систему на объект. В реальной Меге один выключатель подключил к другому порту, чем было на тестовой. В результате имею проблему, модуль видит тестовую конфигурацию, а не реальную. Приходится бегать к туалету чтобы включить свет в комнате и наоборот...:)))
Ответить