Баг? Произвольное включение света при рестарте контроллера

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

ZyaK
Сообщения: 379
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск
Благодарил (а): 41 раз
Поблагодарили: 67 раз

Re: Баг? Произвольное включение света при рестарте контроллера

Сообщение ZyaK » Пт апр 24, 2020 8:28 am

mxz писал(а):
Чт апр 23, 2020 5:10 pm
Странно вот что: так себя ведут не все 7 моих контроллеров, а только 2 из 7. "Мистика" какая-то и не вписывается в логику объяснения.
а мне кажется вполне логично, потому, что разом все 7 устройств подключиться к серверу не могут при его появлении в сети, и скорее всего пока сервер после загрузки начинает отправлять предыдущие состояния первые 2 их успевают принять, а остальные 5 уже отправили свои фактические.
PI2 + MQTT + 5 ESP8266 + Atmega16
mxz
Сообщения: 14
Зарегистрирован: Пн сен 30, 2019 7:16 am
Благодарил (а): 3 раза
Поблагодарили: 4 раза

Re: Баг? Произвольное включение света при рестарте контроллера

Сообщение mxz » Пт апр 24, 2020 6:46 pm

Поясните плз,
по правилам форума нужно было не создавать новую ветку, а писать в существующую про модуль MegaD ?
Или все-таки надо писать в CONNECT, хотя не ясно баг ли это ...
(жаль что тот кто удаляет не дает пояснение что не так)

1. Админы форума грохнули вновь созданную мною ветку viewtopic.php?f=5&t=7079
(теперь вижу сообщение "Запрошенной темы не существует")

2. viewtopic.php?f=5&t=2263 - ветка на 131 страницу с 2011 года, где обсуждаются очень разные проблемы модуля MegaD в MJDM.
mxz
Сообщения: 14
Зарегистрирован: Пн сен 30, 2019 7:16 am
Благодарил (а): 3 раза
Поблагодарили: 4 раза

Re: Баг? Произвольное включение света при рестарте контроллера

Сообщение mxz » Пт апр 24, 2020 6:59 pm

ZyaK писал(а):
Пт апр 24, 2020 8:28 am
mxz писал(а):
Чт апр 23, 2020 5:10 pm
Странно вот что: так себя ведут не все 7 моих контроллеров, а только 2 из 7. "Мистика" какая-то и не вписывается в логику объяснения.
а мне кажется вполне логично, потому, что разом все 7 устройств подключиться к серверу не могут при его появлении в сети, и скорее всего пока сервер после загрузки начинает отправлять предыдущие состояния первые 2 их успевают принять, а остальные 5 уже отправили свои фактические.
Возможно. Однако:

1. У меня проблема проявляется при перезагрузке контроллеров (7 шт.) по причине, например, пропадания электричества.
При этом MJDM продолжал работать - он подключен к UPS, запаса батареи которого хватает по факту на долго.

2. Ручная перезагрузка по питанию одного "проблемного" контроллера Ab-Log (из 7) приводит ровно к такому же результату (проблеме с произвольным включением света)

3. Ранее, когда было только несколько контроллеров, то симптоматика была такая-же.

В любом случае спасибо за гипотезу.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4279
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1534 раза
Контактная информация:

Re: Баг? Произвольное включение света при рестарте контроллера

Сообщение sergejey » Пн апр 27, 2020 10:56 am

Здравствуйте,

Если я не ошибаюсь, то на уровне сервера заложена логика восстановления состояния с сервера при перезагрузке. Но согласен с тем, что эта опция должна быть настраиваемой (отключаемой). Если не сложно, добавьте пожалуйста идею в коннект для этого модуля.
За это сообщение автора sergejey поблагодарил:
Chainik (Пн май 04, 2020 6:09 pm)
Рейтинг: 1.18%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
mxz
Сообщения: 14
Зарегистрирован: Пн сен 30, 2019 7:16 am
Благодарил (а): 3 раза
Поблагодарили: 4 раза

Re: Баг? Произвольное включение света при рестарте контроллера

Сообщение mxz » Пн май 04, 2020 1:14 pm

Разместил: https://connect.smartliving.ru/ideas/805.html

Сергей, да, очень поможет иметь возможность на уровне настроек модуля отключить "синхронизацию" OUT-портов Ab-Log по состоянию от MJDM при появлении Ab-Log "на связи", а именно:
1. в момент восстановления сети передачи данных
2. завершения перезагрузки Ab-Log (иногда такое случается с Ab-log)
3. включении электричества

Просьба к участникам - проголосовать за задачку, чтобы поднять ее приоритет в бэк-логе.
Заранее всем спасибо! Отдельное спасибо Сергею за его труд!
За это сообщение автора mxz поблагодарил:
Chainik (Пн май 04, 2020 2:04 pm)
Рейтинг: 1.18%
mxz
Сообщения: 14
Зарегистрирован: Пн сен 30, 2019 7:16 am
Благодарил (а): 3 раза
Поблагодарили: 4 раза

Re: Баг? Произвольное включение света при рестарте контроллера

Сообщение mxz » Вс май 17, 2020 8:41 am

Товарищи, поразбирался детально на досуге и благодаря вашим гипотезам в этой ветке обсуждения, нашел причину самопроизвольного включения света. Закоментировал одну строчку кода, перезагрузил библиотеку MegaD и все стало ОК (провел несколько испытаний по включению и выключению - проблема ушла).

Если интересны детали, то по пунктам:
1. Ищем на сервере MJDM файл megad.class.php
2. Открываем, находим function processRequest() и комментируем this.restoreDeviceStatus

if ($st == '1' && $rec['ID']) {
//restore on start
// $this->restoreDeviceStatus($rec['ID']);
return;
}


3. Заходим в web=интерфейс модуля MegaD, ждем кнопку "Restart"


На что обратил внимание в процессе анализа:
Для составления списка портов на включение света (портов Ab-Log, сконфигурированных для подключения полезной нагрузки) в коде megad.class.php используется такой select:

SELECT * FROM megadproperties WHERE COMMAND='output' and CURRENT_VALUE_STRING=1;

По факту данные, хранящиеся в CURRENT_VALUE_STRING таблицы megadproperties - не актуальные.
Что хранится в CURRENT_VALUE_STRING вы можете легко посмотреть сделав либо select к вашей БД MJDM (база db_terminal), либо через Web-интерфейс MJDM: устройства > MegaD > кнопка "Редактировать" > вкладка "Данные" > колонка "Текущее значение".

Лишний раз убедился, что библиотека MegaD содержит баг по определению перечня портов типа OUTPUT.
Голосую +1 за https://connect.smartliving.ru/ideas/652.html
За это сообщение автора mxz поблагодарили (всего 2):
Chainik (Вс май 17, 2020 8:58 am) • skysilver (Пн май 18, 2020 12:42 am)
Рейтинг: 2.35%
mxz
Сообщения: 14
Зарегистрирован: Пн сен 30, 2019 7:16 am
Благодарил (а): 3 раза
Поблагодарили: 4 раза

Re: Баг? Произвольное включение света при рестарте контроллера

Сообщение mxz » Вс июн 21, 2020 1:17 am

Печально признать, но баг в итоге не ушел. Фиксировал перезагрузку контроллера Ab-Log и в результате включение света. Выключал питание контроллеров - иногда (!) свет включается (восстанавливается). Я потерялся в догадках о причине. Либо нужно еще код где-то править или что-то закешировалось, а я не понимаю где. Need help.
Chainik
Сообщения: 1386
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 228 раз
Поблагодарили: 433 раза

Re: Баг? Произвольное включение света при рестарте контроллера

Сообщение Chainik » Чт июн 25, 2020 10:08 am

Надо бы с абсолютной точностью убедиться, что причиной такого поведения является ИСКЛЮЧИТЕЛЬНО модуль MegaD.
Поскольку возможны разные варианты, связанные с "железом". Например, при подаче напряжения и старте контроллера включается еще какое-нибудь мощное оборудование, возникает мощный импульс (наводки), срабатывает вход, а дальше происходит штатное действие, которое и должно происходить при срабатывании входа.

Понять все это можно из анализа трафика.
mxz
Сообщения: 14
Зарегистрирован: Пн сен 30, 2019 7:16 am
Благодарил (а): 3 раза
Поблагодарили: 4 раза

Re: Баг? Произвольное включение света при рестарте контроллера

Сообщение mxz » Вс июн 28, 2020 6:11 pm

Chainik писал(а):
Чт июн 25, 2020 10:08 am
Надо бы с абсолютной точностью убедиться, что причиной такого поведения является ИСКЛЮЧИТЕЛЬНО модуль MegaD.
Поскольку возможны разные варианты, связанные с "железом"...
Понять все это можно из анализа трафика.
Да, спасибо за идею. Попробую поймать снифером.

А вот и Sergejey сделал фикс, см. 27.06.2020
https://connect.smartliving.ru/tasks/371.html
https://github.com/sergejey/majordomo-m ... aee177ffe7

Вижу, что тогда в мае в правильном месте закоментировал вызов $this->restoreDeviceStatus($rec['ID']);

modules/megad/megad.class.php
function processRequest()
БЫЛО if ($st == '1' && $rec['ID']) {
СТАЛО if ($st == '1' && $rec['ID'] && $rec['RESTORE_ON_REBOOT']) {
Ответить