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

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

Модератор: immortal

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

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

Сообщение Chainik » Вс дек 15, 2019 5:57 pm

semkyskov писал(а):
Вс дек 15, 2019 4:13 pm
У Вас проблема как раз в том, что сервер никаким образом не получает состояние портов Меги.
...
Свою проблему я бы сформулировал по-другому. "С какого перепугу" MDM при старте синхронизирует состояние выходов Меги с тем, которое сохранилось у него в базе?
Я еще могу понять, когда речь идет о входах. Правда и тут надо проводить синхронизацию по направлению "Мега >>> MDM" (а не наоборот). Но вот когда при старте MDM синхронизирует выходы Меги, причем переключает их в соответствии с тем состоянием, которое было сохранено у него в БД...
Вот это я отказываюсь понимать... Мега умеет в простейших случаях работать автономно от сервера. И много всего может произойти, пока сервер "отсутствовал".
Считаю, что это надо исправить.
semkyskov
Сообщения: 29
Зарегистрирован: Вт июл 10, 2018 11:21 am
Благодарил (а): 40 раз
Поблагодарили: 1 раз

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

Сообщение semkyskov » Пн дек 16, 2019 4:14 am

Chainik писал(а):
Вс дек 15, 2019 5:57 pm
semkyskov писал(а):
Вс дек 15, 2019 4:13 pm
У Вас проблема как раз в том, что сервер никаким образом не получает состояние портов Меги.
...
Свою проблему я бы сформулировал по-другому. "С какого перепугу" MDM при старте синхронизирует состояние выходов Меги с тем, которое сохранилось у него в базе?
Я еще могу понять, когда речь идет о входах. Правда и тут надо проводить синхронизацию по направлению "Мега >>> MDM" (а не наоборот). Но вот когда при старте MDM синхронизирует выходы Меги, причем переключает их в соответствии с тем состоянием, которое было сохранено у него в БД...
Вот это я отказываюсь понимать... Мега умеет в простейших случаях работать автономно от сервера. И много всего может произойти, пока сервер "отсутствовал".
Считаю, что это надо исправить.
По крайней мере, у меня Ваша проблема никак не воспроизводится. При загрузке сервер считывает конфигурацию портов Меги (выходов в частности) и выставляет в интерфейсе соответствующие статусы. Да и судя по Вашим логам нигде не видно, что бы сервер отправлял Меге хоть какие то команды. Попробуйте найти подтверждение тому, что сервер отправляет Меге команду на "синхронизацию". Посмотрите трафик между сервером и Мегой Wiresharkом.
А вот почему в истории свойства статус дублируется команда от Меги на нажатие кнопки (cnt=3, cnt=5) это вопрос. Как раз это наверное и вызывает срабатывание метода два раза. При установленном методе switch, это вызовет ту самую смену статуса на противоположный, через короткий промежуток времени после нажатия кнопки.
likex2000
Сообщения: 3
Зарегистрирован: Ср дек 11, 2019 11:37 am
Благодарил (а): 0
Поблагодарили: 2 раза

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

Сообщение likex2000 » Пн дек 16, 2019 11:17 pm

Могу предположить, что двойная запись состояния свойства status в ноль происходит из-за указания связанного свойства в настройках стандартного входа в модуле MegaD (на вкладке "Данные") и связанного метода, который также меняет свойство status.
За это сообщение автора likex2000 поблагодарили (всего 2):
Chainik (Вс дек 22, 2019 10:04 am) • semkyskov (Пт мар 20, 2020 12:22 pm)
Рейтинг: 2.33%
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

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

Сообщение Chainik » Пн дек 16, 2019 11:28 pm

likex2000 писал(а):
Пн дек 16, 2019 11:17 pm
Могу предположить, что двойная запись состояния свойства status в ноль происходит из-за указания связанного свойства в настройках стандартного входа в модуле MegaD (на вкладке "Данные") и связанного метода, который также меняет свойство status.
Возможно, вы правы.
Проверить смогу только в выходные, когда доберусь до оборудования. Уберу из настроек Status, оставлю только метод и посмотрю, что будет.
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

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

Сообщение Chainik » Пт дек 20, 2019 11:50 pm

likex2000, вы оказались правы. В настройках на вкладке "Данные" действительно надо было оставить только метод (в котором осуществляется переключение свойства Status с обратной связью). "Связанное свойство", конечно же, надо было оставить пустым.
Именно поэтому в истории свойства Status появлялись двойные записи:
СпойлерПоказать
Opera Снимок_2019-12-20_200750_127.0.0.1.png
Opera Снимок_2019-12-20_200750_127.0.0.1.png (50.13 КБ) 4284 просмотра
Теперь порядок:
СпойлерПоказать
Opera Снимок_2019-12-20_200845_127.0.0.1.png
Opera Снимок_2019-12-20_200845_127.0.0.1.png (20.3 КБ) 4284 просмотра
Но проблема с ошибочной синхронизацией состояния выходов при старте Мажордомо осталась (viewtopic.php?f=5&t=2263&start=1197).
semkyskov
Сообщения: 29
Зарегистрирован: Вт июл 10, 2018 11:21 am
Благодарил (а): 40 раз
Поблагодарили: 1 раз

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

Сообщение semkyskov » Вс дек 22, 2019 4:19 am

После того, как сломалась работа по нажатию кнопки при привязанном только методе status (viewtopic.php?f=5&t=2263&start=1170#p111928) всегда привязываю настройках модуля на вкладке "Данные" только метод, но тогда, в любом случае, команда на контроллер отправляется почему то два раза.

только status, команда не передается, реле не включается
СпойлерПоказать
Изображение
Изображение
Изображение
только turnOn, команда передается дважды, реле включается
СпойлерПоказать
Изображение
Изображение
Изображение
только turnOff, команда передается дважды, реле выключается
СпойлерПоказать
Изображение
Изображение
Изображение
только switch, команда передается дважды, реле включается и через несколько сек выключается
СпойлерПоказать
Изображение
Изображение
Изображение
Denmish83
Сообщения: 1
Зарегистрирован: Пн дек 23, 2019 1:26 am
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение Denmish83 » Пн дек 23, 2019 1:33 am

То же обновил всю модули и остался без света и климата во всем доме ((
Команды у меня не дублируются как у semkyskov, а вот по изменению "status" не переключаются.
Метод Switch работает.
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 317 раз
Поблагодарили: 466 раз

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

Сообщение Logrus » Вт дек 24, 2019 2:16 am

добавлю в копилку, у клиента модуль несколько месяцев не обновлялся, сам мдм аналогично в свойствах еще соурсе нет
история в статусах была отключена, реле в пу (методы правленые - суть та же, но без лишнего)

процессцикле, с какого-то перепуга 9-е обновлял 0_0
из меня включил, изменением свойства, перестало, выключил не повторилось 0_0
Снимок.PNG
Снимок.PNG (35.45 КБ) 4186 просмотров
Снимок.PNG
Снимок.PNG (28.37 КБ) 4182 просмотра
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Kirch
Сообщения: 51
Зарегистрирован: Чт июл 26, 2018 4:50 pm
Благодарил (а): 12 раз
Поблагодарили: 7 раз

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

Сообщение Kirch » Вс дек 29, 2019 12:25 pm

Chainik писал(а):
Вс сен 02, 2018 10:53 pm
Mr.Lia писал(а):
Вс сен 02, 2018 9:31 pm
...Такой вопрос, как реализовать команды типа 12:^;7:2 и т.п.?
Собственно, для управления диммированием не обязательно нужно использовать модуль MegaD.

Примерная схема действий такая. Предположим, что диммируемая нагрузка подключена к порту P13.
1. Создаете Объект диммера, например, "Dimmer01". У него должно быть свойство "value".
2. Пусть у Объекта Dimmer01 будет "общеклассовый" метод, где расположен алгоритм этого процесса. Назовем метод, к примеру, "dimming".
Код метода такой:

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

$val = $this->getProperty('value');
$val = round(($val/100)*255, 0);
$command="http://192.168.0.14/sec/?cmd=13:".$val;
file_get_contents($command);
Тут пересчитываются проценты (от 0 до 100) в диапазон для ШИМ-порта Меги (от 0 до 255).
3. Создаете в меню объект Слайдер. Задаете мин.значение "0" и макс. "100". Шаг изменений - 1. Выставляете Связанный объект Dimmer01, Свойство value, Метод dimming.

В простейшем случае это все. Сейчас проверить не на чем, но по идее, должно работать.
Прошу помочь настроить свет перед самым НГ.
Захотелось плавного света, но начал с простого вкл/выкл через Простые устройства.
@Chainik предложил способ замены команд, но топорно выходит реализовать.
В коде TurnOn поставил команду file_get_contents("http://192.168.2.12/sec/?pt=12&pwm=255&cnt=2");
Если не менять опцию "Вызывать родительский метод" на "Перед", то вначале MD шлет команду на 100 на стандартный метод MegaD порта, где стоит плавное включение опцией Smooth, а потом мой код шлет другую команду 255.
Если убрать родительский метод - выбрать "Никогда", то Простое устройство не реагирует на нажатие, индикатор не загорается. Лампа включается, но не выключается, видимо, MD думает, что устройство не включилось.
Может есть какая настройка по пересчету %Majordomo в %MegaD? Каждый метод переписывать у каждого устройства не гуд.

Второй вопрос про разметку списка Простые устройства.
На скриншоте видно - поле выбора % налезает на название лампы и вообще не видно. Как исправить?
Вложения
img-2019-12-29-11-58-14.png
img-2019-12-29-11-58-14.png (18.11 КБ) 4098 просмотров
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 317 раз
Поблагодарили: 466 раз

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

Сообщение Logrus » Вс дек 29, 2019 3:05 pm

1. прекрасно настраивается через пу, с двумя нюансами, настройка слайдера в меню и изменение кода пу что б при плавности не было кросслинков
а совет выше без ос или через такие дебри 0_0
п.с. уже не раз, имхо, за такие деньги, ну его такую связку ...
2. сократить название
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Ответить