Страница 136 из 140

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

Добавлено: Пт фев 05, 2021 12:34 pm
Ivan_A
Мужики, как реализуете двойное нажатие на старых мегах (МеgaD-328)? Судя по API параметр "click" не передается.
2 способами пытался реализовать и ни один не работает. Не могу понять почему.
1 способ:
СпойлерПоказать
//порт в режиме Р
//чтобы не париться с микросекундами таймаут на двойное нажатие 2 секунды, а на повторный вызов скрипта 3 секунды
if ($this->getProperty('Dubble') == 1) // признак необработанного недавнего нажатия
{
$interval = time() - $this->getProperty('TimeSwitch');
$this->setProperty('TimeSwitch', time());
if ($interval < 2) //двойной клик
{
file_get_contents("http://192.168.1.201/sec/?cmd=8:2"); //выполняем действие
$this->setProperty('Dubble',0); //нажатие обработано
}
else //значит скрипт запустился по таймеру
{
file_get_contents("http://192.168.1.201/sec/?cmd=7:2"); //выполняем действие
$this->setProperty('Dubble',0); //нажатие обработано
}
}
else //первое нажатие
{ //запоминаем время, выжидаем таймаут, запускаем скрипт, ставим признак необработанного нажатия
$this->setProperty('TimeSwitch', time());
ClearTimeOut("DubbleClickT");
SetTimeOut("DubbleClickT","callMethod('Sw2_4_2.DubbleClick');",3);
$this->setProperty('Dubble',1);
}
2 способ:
СпойлерПоказать
if ($this->getProperty('Dubble') == 0) //если произошло первое нажатие
{
$this->setProperty('Dubble',1); //установим признак необработанного нажатия
usleep(700000); //спим 0,7 секунды
if ($this->getProperty('Dubble') == 1) //если за это время нажатие не обработали
{
file_get_contents("http://192.168.1.201/sec/?cmd=7:2"); //выполним действие
$this->setProperty('Dubble',0); //нажатие обработано
}
}
else //пока скрипт спит повторное нажатие вызвало скрипт по новой - значит клик двойной
{
file_get_contents("http://192.168.1.201/sec/?cmd=8:2");// выполняем действие
$this->setProperty('Dubble',0); //нажатие обработано
};
Может кто поделится рабочим кодом или подскажет что у меня не так?

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

Добавлено: Пт фев 05, 2021 2:38 pm
Chainik
У Bagir было работающее решение по поводу разных вариантов нажатий на Меге-328. Но надо покопаться в коде. Еще важно уточнять, для какого режима работы порта вам нужны двойные нажатия: "P" или "P&R".
https://mjdm.ru/forum/viewtopic.php?f=8&t=403&start=257
https://mjdm.ru/forum/viewtopic.php?f=14&t=1832
Если по-простому, без заморочек с микросекундами, у меня так работает:
СпойлерПоказать

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

if ($_GET['m'] == 2) {
say('Удержание_'.time());
return;
}

if (timeOutExists('DoubleClickTimer')) {
say('Двойное_'.time());
ClearTimeOut('DoubleClickTimer');
return;
}

setTimeOut('DoubleClickTimer','say("Одинарное_".time());',1);

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

Добавлено: Пт фев 05, 2021 10:57 pm
Nail
Chainik писал(а):
denis писал(а):
Пт фев 05, 2021 8:47 am
Nail писал(а):
Вт янв 26, 2021 9:34 am
sergejey писал(а):
Пн янв 25, 2021 10:58 pm
Во-первых, уберите все привязки в модуле mega d и добейтесь, чтобы выключатель работал с контроллером без сервера...
А можно попросить , у MegaD-2561-31I15O-RTC модуль не считывает конфигурацию( только один порт №7 считывает ).
а так же просмотреть если не трудно ,в работе объекта "термостат" хоть ПУ, хоть напрямую создавая, при вк-выкл термостата, температура привязанная к нему (относительно которого он работает) -пропускает точку разделения сотых, т.е. если сработал термостат допустим вкл. ил выкл ,то датчик температуры показывает кратковременно до следующего опроса мегой 5578 град. вместо 55.78.( это происходит только при вкл или выкл. термостата по температуре или в ручную, в остальном работает норм)
Вот ответ, почему нет точки, если настроен термостат
Сам мучался, нигде это не нашел в описаниях.

https://ab-log.ru/forum/viewtopic.php?p ... 0c0#p43828
я так понимаю это все таки модуль MegaD -чуть не доработан(а наверно в модуле только чуть поправить код)?
Chainik , а вроде можно Сергею отправлять правки в МД на рассмотрение личку или connect, могли бы правки сделать? спс.

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

Добавлено: Сб фев 06, 2021 4:41 pm
Chainik
Nail писал(а):
Пт фев 05, 2021 10:57 pm
Chainik , а вроде можно Сергею отправлять правки в МД на рассмотрение личку или connect, могли бы правки сделать? спс.
Нет, правки в код модуля я сделать не могу. Не программист я, нет нужной квалификации.

Но я скажу сейчас удивительную вещь. У меня нет претензий к модулю, кроме одного единственного замечания по поводу бага, при котором при удалении любой строчки по порту удаляется порт целиком.
В остальном меня все устраивает. Модуль хорошо справляется с тем, что мне от него нужно. Он удобно для пользователя "маршрутизирует" сообщения от контроллеров, распределяя их по Мегам и портам. Он не "затирает" параметры, отсылаемые Мегой; все передает в запускаемый метод. В связи с этим я без проблем могу сделать любую логику, запустив по поступившему событию свой код.
А показания датчиков я и помимо модуля могу собрать.

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

Добавлено: Пн фев 08, 2021 8:30 am
Ivan_A
Chainik писал(а):
Сб фев 06, 2021 4:41 pm
Nail писал(а):
Пт фев 05, 2021 10:57 pm
Chainik , а вроде можно Сергею отправлять правки в МД на рассмотрение личку или connect, могли бы правки сделать? спс.
Но я скажу сейчас удивительную вещь. У меня нет претензий к модулю, кроме одного единственного замечания по поводу бага, при котором при удалении любой строчки по порту удаляется порт целиком.
Длинное нажатие от MegaD-328 тоже не отлавливается. Тоже баг?

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

Добавлено: Пн фев 08, 2021 8:57 am
Chainik
Сам параметр m=2 модулем отлавливается и передается в запускаемый метод. Там с ним можно делать что угодно.

А вот работает ли штатный функционал модуля по строчкам порта "long_press", даже не проверял. Поскольку базовый вариант настройки модуля предполагает, что контроллер выполняет прописанные у него в конфигурации команды по умолчанию. А мне надо, чтобы у меня была возможность давать разные команды в зависимости от множества условий (у нас же "умный дом" как никак). Поэтому пишу свой код методов, куда передаются от контроллера все параметры. Благо модуль это позволяет.

Все события от кнопок я собираю по строчкам типа "Counter", строчки с типом "In" удаляю, т.к. они могут мешать. Но поскольку в последней версии модуля есть баг с удалением строчек, приходится использовать предыдущую версию модуля (https://github.com/sergejey/majordomo-m ... cbe648b509), где такого бага не наблюдается.

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

Добавлено: Пт фев 19, 2021 11:56 am
Ivan_A
В общем, данный модуль толком НЕ РАБОТАЕТ. По крайней мере, с контроллерами MegaD-328.
В коробочке лежит мега 2561, но с ней начну экспериментировать после того, как полностью исследую все варианты и возможности старых мег.
Проверял на 2-х мажордомах. Сейчас установил линукс убунту сервер 18, на нее MajorDoMo. И одно единственное дополнение - MegaD. Естественно, все последнее.
Глюки:
1. В разделе "данные" на каждый порт можно создать несколько записей с разными типами. При удалении любой записи удаляются и все остальные с тем же номером порта.
2. При добавлении порта с типом "IN" создаются 3 строки (одна с типом counter и две одинаковые IN)
3. Если пощелкать выключателем, то появляется еще одна строчка - long press. А в режиме порта P&R еще и Release. При этом их состояние не обновляется. Так же, как и не обновляется состояние второй строки "iIN". А удалить эти строки нельзя!!
4. События Long Press и Release, как было выше сказано, не отлавливаются. То есть отпускание клавиши ловится, но не строкой Release, а IN.
5. Не работает действие по умолчанию. Никак. Значение "Skip Default Action" пробовал менять - оно не влияет. Действие по умолчанию игнорируется всегда.

Или это фичи, а не баги?

ЗЫ На всякий перезагрузился и перепроверил все вышесказанное. Все проблемы стабильны.

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

Добавлено: Пт фев 19, 2021 12:11 pm
Chainik
Ivan_A писал(а):
Пт фев 19, 2021 11:56 am
В общем, данный модуль толком НЕ РАБОТАЕТ. По крайней мере, с контроллерами MegaD-328.
...
Работает, но не в последней (августовской) версии, где нет возможности удалить по порту строчку без одновременного удаления всех строк по этому порту.
Ivan_A писал(а):
Пт фев 19, 2021 11:56 am
Глюки:
1. В разделе "данные" на каждый порт можно создать несколько записей с разными типами. При удалении любой записи удаляются и все остальные с тем же номером порта.
Вот тут про успешные варианты настройки с 328-й Мегой с предыдущей версией модуля.
https://mjdm.ru/forum/viewtopic.php?f=5 ... start=1340

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

Добавлено: Пн мар 01, 2021 1:35 pm
Ivan_A
Я все-таки не понимаю. Последняя версия модуля мега-Д не работает даже с контроллерами 2561 последней прошивки?
Подключил, нашел. Сервер прописан. В меге указан сервер и скрипт. В настройках порта режим входа "С". Конфигурация считывается.
Порты с типами "Long Press", "Double Click" и "Release" не обновляются.
надо что-то колдовать дополнительно или не мучаться и ставить предыдущую версию? Или этот функционал вообще не работает?

ЗЫ. Все-таки что-то работает. Привязал разные методы к "Long Press", "Double Click" и "Click". Длинное и двойное нажатие отрабатывает. Но при отпускании кнопки ВСЕГДА срабатывает метод, привязанный к Click. Поменял Click на Input. Все равно срабатывает при отпускании.

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

Добавлено: Пн мар 01, 2021 2:28 pm
Chainik
Вот из-за того, что модуль делает не то, что я прошу, или не только то, что я прошу и не пользуюсь штатным функционалом...
Когда все делаешь сам, все прозрачно и понятно по алгоритмам работы.