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

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

Модератор: immortal

Chainik
Сообщения: 1365
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 225 раз
Поблагодарили: 428 раз

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

Сообщение Chainik » Чт янв 21, 2021 2:55 pm

Настроить точно реально. И с MegaD-328 тоже в принципе проблемы быть не должно. Надо чуть-чуть поэкспериментировать.
Убедитесь, что в настройках модуля MegaD в Мажордомо прописан адрес сервера (поле "Local IP").
Попробуйте в поле "Skip dafault action" указать "Да" (возможно, контроллер не видит сервер и срабатывает действие по-умолчанию, прописанное у входа Меги).

Если в результате всех экспериментов ничего не выйдет, то всегда есть альтернативный вариант настройки (по ВАРИАНТу 2), который сработает (https://www.ab-log.ru/forum/viewtopic.p ... 104#p40104). Но версия модуля MegaD должна быть не старше апреля 2020 г. (ссылка там в конце имеется). Правда, там все настроено без ПУ. Настраиваются в большинстве случаев только входы.
И в вашем случае не надо указывать действие при удержании (LongPress), т.к. выключатели у вас стандартные (с фиксацией) и каждый раз при их переключении происходит еще и "удержание" с отправкой параметра "m=2". Кстати, может именно отсюда "растут уши" описанной вами проблемы (во всяком случае из логов это просматривается).

Пишите, что получилось. И если не выйдет, попробую предложить вариант настройки (хотя в работоспособности вышеуказанного альтернативного варианта не сомневаюсь). Но только в выходные, т.к. раньше не смогу.
Lewcom
Сообщения: 48
Зарегистрирован: Пн дек 30, 2013 6:37 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение Lewcom » Чт янв 21, 2021 4:16 pm

Все прописано, и тем не мение скрипт отрабатывает без параметра м, потом с параметром м=2.
Поля long_press и остальные появились в них поставил не отрабатывать действие по умолчанию, но результат тот же.
Думал что со временем исправили этот глюк, но видимо пока нет.
По альтернативному варианту просматривал но не знаю как установить модуль не последней версии в этой при удалении input удаляются все поля порта.
Если кто подскажет как это сделать под линуксом буду благодарен )
Chainik
Сообщения: 1365
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 225 раз
Поблагодарили: 428 раз

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

Сообщение Chainik » Чт янв 21, 2021 4:56 pm

Lewcom писал(а):
Чт янв 21, 2021 4:16 pm
Поля long_press и остальные появились в них поставил не отрабатывать действие по умолчанию, но результат тот же.
Я имел ввиду свойство "LongPress" при реализации ВАРИАНТА 2.
Lewcom писал(а):
Чт янв 21, 2021 4:16 pm
По альтернативному варианту просматривал но не знаю как установить модуль не последней версии в этой при удалении input удаляются все поля порта.
Ну да, в текущей версии модуля при удалении любой строчки по порту удаляется весь порт. Поэтому настройка становится невозможной и приходится использовать предыдущую версию модуля, в которой данного бага не было.
С Linux не подскажу, но на Windows работало так:
1. Сделать полный архив действующей системы.
2. Выключить Мажордомо и заменить содержимое папок по путям (для Windows):
\_majordomo\htdocs\modules\megad
\_majordomo\htdocs\templates\megad
заменить файл "megad.php" по пути: \_majordomo\htdocs
3. Включить Мажордомо и произвести настройку модуля.
Lewcom
Сообщения: 48
Зарегистрирован: Пн дек 30, 2013 6:37 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение Lewcom » Пт янв 22, 2021 1:54 pm

Пробовал скачивать с гитхаба старую версию, упаковывал в .tar .tgz устанавливал в MJ в ручном режиме - вываливается с ошибкой
Plugin 'majordomo-megad.tgz' (Unknown version) installed.
и не устанавливается.
Помогите кто умеет. :oops:
Chainik
Сообщения: 1365
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 225 раз
Поблагодарили: 428 раз

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

Сообщение Chainik » Пт янв 22, 2021 10:14 pm

Конечно, для начала надо справиться с возвратом на прежнюю версию модуля. Хотя были случаи у некоторых, когда строчки input не мешали запуску метода.

Попробовал реализовать вашу задачу на MegaD-328 и при настройке по ВАРИАНТУ 2. Результат положительный, только пришлось чуть-чуть подправить коды методов.
Код классового метода switch в классе Lighting:

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

//Переключение диммируемого канала
if ($this->getProperty('Dimmable') == 1) {
$value = file_get_contents("http://".$this->getProperty('ipAddress')."/".$this->getProperty('Password')."/?pt=".$this->getProperty('Port')."&cmd=get");
If ($value == 0 || $value == "") {
$this->callMethod('turnOn');
} else {
$this->callMethod('turnOff');
}
return "";}

//Отпускание клавиши выключателя игнорируем
//if ($_GET['m'] == 1) {
//return "";
//}

//Удержание клавиши выключателя игнорируем
if ($_GET['m'] == 2) {
return "";
}

//Стандартное переключение выхода
file_get_contents("http://".$this->getProperty('ipAddress')."/".$this->getProperty('Password')."/?cmd=".$this->getProperty('Port').":2");
$state = file_get_contents("http://".$this->getProperty('ipAddress')."/".$this->getProperty('Password')."/?pt=".$this->getProperty('Port')."&cmd=get");
if ($state == "ON") {
  $this->setProperty('Status', 1);
} else {
  $this->setProperty('Status', 0); }
Код классового метода action в классе Switches:

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

//Действие при одинарном нажатии
if ($_GET['click'] == 1) {
eval($this->getProperty('Click'));
return "";}

//Действие при двойном нажатии
if ($_GET['click'] == 2) {
eval($this->getProperty('DoubleClick'));
return "";}

//Действие при удержании
if ($_GET['m'] == 2) {
//eval($this->getProperty('Click'));
return "";}

//Действие при отпускании
if ($_GET['m'] == 1) {
eval($this->getProperty('Click'));
return "";}

//Действие при одинарном нажатии при настройке режима работы входа = "P"
if(isset($_GET['pt'])) {
eval($this->getProperty('Click'));
return "";}
Все работает. Но замечу только, что использовать обычные выключатели (без фиксации) эргономически неудобно. Положение выключателя в этом случае ничего не говорит о состоянии освещения. Мозг каждый раз будет напрягаться и делать лишнее усилие при принятии решения, как правильно щелкнуть выключателем (ИМХО).
За это сообщение автора Chainik поблагодарил:
Lewcom (Сб янв 23, 2021 9:43 am)
Рейтинг: 1.18%
Аватара пользователя
sergejey
Site Admin
Сообщения: 4279
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1533 раза
Контактная информация:

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

Сообщение sergejey » Пн янв 25, 2021 10:58 pm

Вы чего-то намудрили лишнего и, как я понял из описания, работает именно так, как я ожидал бы.
Во-первых, уберите все привязки в модуле mega d и добейтесь, чтобы выключатель работал с контроллером без сервера (7:2 инвертирует состояние и если выключатель с фиксацией, то это не подходит и скорее подойдёт 7:3). Во-вторых, не привязывайте устройство к выключателю -- вам не важно что делает выключатель на самом деле, потому что вам важно чтобы устройство было связано с выходом OUT, т.е. привязывать нужно только к нему и, в принципе, в том виде как у вас на картинке.
За это сообщение автора sergejey поблагодарил:
Chainik (Вт янв 26, 2021 9:25 am)
Рейтинг: 1.18%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
Nail
Сообщения: 349
Зарегистрирован: Пн мар 05, 2018 7:09 am
Откуда: Самара
Благодарил (а): 153 раза
Поблагодарили: 21 раз

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

Сообщение Nail » Вт янв 26, 2021 9:34 am

sergejey писал(а):
Пн янв 25, 2021 10:58 pm
Во-первых, уберите все привязки в модуле mega d и добейтесь, чтобы выключатель работал с контроллером без сервера...
А можно попросить , у MegaD-2561-31I15O-RTC модуль не считывает конфигурацию( только один порт №7 считывает ).
а так же просмотреть если не трудно ,в работе объекта "термостат" хоть ПУ, хоть напрямую создавая, при вк-выкл термостата, температура привязанная к нему (относительно которого он работает) -пропускает точку разделения сотых, т.е. если сработал термостат допустим вкл. ил выкл ,то датчик температуры показывает кратковременно до следующего опроса мегой 5578 град. вместо 55.78.( это происходит только при вкл или выкл. термостата по температуре или в ручную, в остальном работает норм)
Mini AMD A6 1450 Quad-core.Ubuntu Server 18.04 (64-bit). MegaD. Zigbee2mqtt+SLS ZigBee Gateway. Broadlink.
Lewcom
Сообщения: 48
Зарегистрирован: Пн дек 30, 2013 6:37 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

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

Сообщение Lewcom » Вт янв 26, 2021 10:21 am

Добрый день.
С вариантом 7:3 (синхронизация) работает, это я сразу проверил, интересовала ситуация именно с 7:2 - переключением.
Если я правильно понял что если выключатель с фиксацией то метод прописанный в поле INPUT всегда будет отрабатывать дважды и для исключения второго нужно отлавливать параметр "m" и обрабатывать программно, а после будет исполнятся метод прописанный в поле LONG_PRESS.
Исправьте если я не прав.
kopyto80
Сообщения: 2
Зарегистрирован: Ср ноя 20, 2019 11:07 am
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение kopyto80 » Вт янв 26, 2021 7:00 pm

Chainik писал(а):
Пт янв 15, 2021 12:30 pm
Ссылка у вас битая. Вот работающая: https://ab-log.ru/forum/viewtopic.php?f ... 395#p37376
Как там с ПУ не подскажу, ибо не пользуюсь, но без ПУ и без модуля "MegaD" процесс будет выглядеть следующим образом.
Код для запроса значения и сохранения в свойство:

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

$Value = file_get_contents('http://192.168.0.14/sec/?pt=37&dev=sr04&echo=29');
sg('Имя_вашего_объекта.Имя_свойства',$Value);
Код размещаете в сценарии или в методе.
А дальше вызываете код по необходимости или периодически, например, 1 раз в минуту или 1 раз в пять минут.

Организуем периодический запуск сценария/метода с кодом опроса. Проще всего это сделать, записав в «onNewMinute» (Панель управления --> ОБЪЕКТЫ --> Объекты --> [класс] Timer --> ClockChime --> onNewMinute) такой код (ниже строки «$m=date('i',time());»):

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

//В случае сценария
if ($m%15 == 0) {runScriptSafe("Имя_вашего_сценария");}
//В случае метода
if ($m%15 == 0) {callMethodSafe("Имя_объекта.Имя_метода");}
Опрос будет происходить в данном случае раз в 15 минут.

Самый простой способ визуализации - создать на сцене информер и сослаться на объект.свойство, куда сохраняется значение с датчика. Еще хорошая конструкция - %объект.свойство% , которую можно использовать в меню, в элементах на сцене. Такая конструкция тоже позволяет "вытащить" и показать значение свойства.

Наши творцы (в хорошем смысле слова) уже давно расписали в статьях большую часть штатаного функционала системы. Вот про визуализацию данных: https://kb.mjdm.ru/commands_help/
Огромное спасибо!
denis
Сообщения: 281
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 26 раз
Поблагодарили: 28 раз

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

Сообщение 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
Ответить