Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
alex946
Сообщения: 204
Зарегистрирован: 05 дек 2015, 22:48
Контактная информация:

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение alex946 » 01 дек 2017, 11:31

Про "жить своей жизнью" согласен, но это может здорово осложнить работу... Какой таймаут ставить если сервер "тупит" и отвечает не мгновенно? Что во время ожидания будет делать Мега?

Evgeny_nd
Сообщения: 136
Зарегистрирован: 07 ноя 2015, 06:59
Откуда: г. Красноярск

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Evgeny_nd » 01 дек 2017, 12:12

alex946 писал(а):Про "жить своей жизнью" согласен, но это может здорово осложнить работу... Какой таймаут ставить если сервер "тупит" и отвечает не мгновенно? Что во время ожидания будет делать Мега?
Тайм-аут 1-5 мин с алгоритмом, при котором Мега переключалась бы в тот или иной режим. Здесь важно что если сервер «упал» то его восстановление значительное время займёт и в его отсутствие через этот тайм аут все начнёт функционировать без него.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 01 дек 2017, 12:43

Vadim писал(а):Ок, есть сеть\сервер, зачем R отрабатывать контроллеру? ;-) Контроллер же просто должен "P" отработать и сервер оповестить о событиях выполнения ACT и моментах "P" и "R".
Попробуйте.
Вход всегда работает в том режиме, который задан, но на сервер в случае установки флажка рядом с Mode отправляются данные в режиме P&R.

https://ab-log.ru/files/File/megad-2561 ... a1-hex.zip

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 01 дек 2017, 12:51

Alex_Jet писал(а):3. Условия 5 и 6 не работают вообще...
К P32 подключен датчик DS18B20
Прописал условия
if P32 > 28 -> 8=1
if P32 < 28 -> 8=0
Все сработало нормально.
Alex_Jet писал(а): 5. Самое плохое. Иногда после настройки условия, при нажатии ссылки Back соединение вешается...останавливаешь, нажимаешь снова и выходишь из настройки.
6. Еще хуже. Иногда в Program невозможно зайти. Нажимаешь ссылку и соединение висит.
Такого наблюдать пока не приходилось.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 01 дек 2017, 12:56

filippovsky писал(а):Если я правильно понимаю, то в режиме SW LINK - может быть включен только один порт из группы.
Да.
filippovsky писал(а):В Режиме SW - при включении группы (g1:1) будут включены все порты, входящие в группу, так?
Да.
filippovsky писал(а):Правильно ли я понимаю, что для SW LINK надо всегда сначала будет выключить все порты, входящие в группу, и только потом включать конкретный порт (именно через порт, не через группу) ?
Да.
filippovsky писал(а):Например, порты 7 и 8 настроены как SW LINK и объединены в группу 1, включен порт 7.
При получении команды 8:1 - будет ли автоматически отключен порт 7? Или команда 8:1 просто будет проигнорирована?
Автоматически порт 7 выключен не будет. Команда 8:1 будет проигнорирована.
filippovsky писал(а): Что произойдет с портами SW LINK при получении групповой команды, например, g1:2 ? Для группы из двух портов - логично предположить, что порты будут переключены. А если портов три и более? Какой из них включится? А при получении команды g1:1 ?
Ни один порт группы не будет включен. Это правильно с логической точки зрения. Очевидно, что эта команда была отправлена по ошибке.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 01 дек 2017, 13:02

Prokol писал(а): Со всех пультов, которые имею в наличии с каждой кнопки постоянно имею одни и те-же команды. Через MegaD один и тот-же код получаю через 3-4 команды. Все остальное сыпет какой-то мусор. Соответственно взяв из библиотеки LIRC код пульта имеющегося агрегата и подставив эти данные в MegaD, агрегат вообще никак не реагирует. Можете сами проверить?
Я был бы рад что-нибудь проверить, только не знаю что и как.
Передо мной телевизор и кондиционер. Оба отлично управляются с помощью ИК-передатчика. Не через раз, а всегда и гарантированно.
У меня есть USB ИК-приемник, который поддерживается lirc. Когда команды отправляются с ИК-передатчика, то никакого мусора не фиксируется. Всегда приходят нормальные данные. ИК-передатчик и родные пульты ведут себя по мнению этого ресивера примерно одинаково.
Я допускаю, что могут быть какие-то особенности или проблемы, но мне нужно их как-то увидеть своими глазами.

Vadim
Сообщения: 122
Зарегистрирован: 04 мар 2017, 17:38

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Vadim » 01 дек 2017, 17:41

Evgeny_nd писал(а):Андрей, теряется вся прелесть и смысл этой функции/чекбокса. Я тоже все время недоумевал почему так работает, но т.к. сильно это не доставало, то не разбирался детально. Доступность сетевого интерфейса совсем не говорит о доступности сервера. И при неответе сервера с конкретным IP и портом, МЕГА должна жить своей жизнью.
Может сделать со стороны контроллера опрос доступности порта сервера, IP + порт в соотв. с настройками (опционально с возможностью задать интервал опроса) и хранить этот бит доступности в памяти контроллера?
По этому признаку контроллер и будет быстро принимать решение о доступности сервера при событии на входе.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 01 дек 2017, 19:37

Vadim, вы пробовали 4.20b1?
Вроде бы решили, что должно работать так, как написано: порт контроллера при любых обстоятельствах, то есть всегда, работает в том режиме, который указан в настройках. Но флажок рядом с Mode задает отправку всех событий на сервер.

Vadim
Сообщения: 122
Зарегистрирован: 04 мар 2017, 17:38

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Vadim » 01 дек 2017, 19:44

Andrey_B писал(а):Vadim, вы пробовали 4.20b1?
Вроде бы решили, что должно работать так, как написано: порт контроллера при любых обстоятельствах, то есть всегда, работает в том режиме, который указан в настройках. Но флажок рядом с Mode задает отправку всех событий на сервер.
Андрей,
Спасибо за правки.
Смогу глянуть только вечером дома.

Про проверку доступности сервера писал не применительно с особенностям работы P и R. Так, мысли в слух.
Я пока не дошел до тех моментов, когда это было бы критично.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 01 дек 2017, 19:54

orlov писал(а):Приветствую!
Поясните откуда берется этот баг:
https://i.snag.gy/MzAIha.jpg
d.v.ermakov верно сказал. Это не баг, это фича.
Дело в том, что контроллер позволяет такие ужасные на первый взгляд штуки, как реализацию низкоуровневых протоколов поверх HTTP. Например, I2C-PHP.
Для этого нужно иметь к порту особый доступ для возможности менять его тип IN/OUT без записи конфигурации в EEPROM. Такой доступ реализован на основе NC.
Чтобы "дергать" порт в таком режиме можно использовать стандартные команды, а запрос cmd=get позволяет получать информацию о текущем состоянии пина.
То, что при включенной нагрузке в состоянии NC запрос 'get' отображает OFF совершенно нормально. У входов и выходов в контроллере разная интерпретация высокого уровня. А в режиме NC порт отображает ON/OFF как для входа.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 01 дек 2017, 20:14

Vadim писал(а):Про проверку доступности сервера писал не применительно с особенностям работы P и R. Так, мысли в слух.
"Бит доступности сервера" сделать можно.
Однако на практике, если в системе есть сервер, и он собран не из глючного железа, купленного с рук на Удельной, то даже по самым пессимистичным прогнозам 99,99% времени никакие аварийные режимы задействованы не будут.
Я не фанат того подхода, когда каждая даже самая простецкая железка без всякого на то желания пользователя непременно должна слать в сеть широковещательные пакеты, что-то без конца опрашивать, куда-то лезть, кого-то пинговать.
Если посмотреть трафик обычной несложной сети с десятком различных "умных" девайсов, то можно ужаснуться тому, что там происходит вроде бы в состоянии полного покоя. И все во имя Великого Плугэндплея... Это, конечно, не создает сколько-нибудь значимую нагрузку на гигабитную сеть, но "палочки [все равно] должны быть перпендикулярны". Тоже всего лишь мысли в слух.

orlov
Сообщения: 5
Зарегистрирован: 27 ноя 2017, 22:12

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение orlov » 01 дек 2017, 20:24

Andrey_B писал(а):То, что при включенной нагрузке в состоянии NC запрос 'get' отображает OFF совершенно нормально. У входов и выходов в контроллере разная интерпретация высокого уровня. А в режиме NC порт отображает ON/OFF как для входа.
не понял только одного - как через http понять реальное состояние пина?

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 01 дек 2017, 20:32

orlov, чтобы ответить на ваш вопрос по существу, нужно понять, что вы пытаетесь сделать. С какой целью вы конфигурировали порт как NC, зачем отправляли в порт этого типа команды и запрашивали его состояние через "get"?

Vadim
Сообщения: 122
Зарегистрирован: 04 мар 2017, 17:38

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Vadim » 01 дек 2017, 21:09

Andrey_B писал(а):
Vadim писал(а):Про проверку доступности сервера писал не применительно с особенностям работы P и R. Так, мысли в слух.
"Бит доступности сервера" сделать можно.
Однако на практике, если в системе есть сервер, и он собран не из глючного железа, купленного с рук на Удельной, то даже по самым пессимистичным прогнозам 99,99% времени никакие аварийные режимы задействованы не будут.
Я не фанат того подхода, когда каждая даже самая простецкая железка без всякого на то желания пользователя непременно должна слать в сеть широковещательные пакеты, что-то без конца опрашивать, куда-то лезть, кого-то пинговать.
Если посмотреть трафик обычной несложной сети с десятком различных "умных" девайсов, то можно ужаснуться тому, что там происходит вроде бы в состоянии полного покоя. И все во имя Великого Плугэндплея... Это, конечно, не создает сколько-нибудь значимую нагрузку на гигабитную сеть, но "палочки [все равно] должны быть перпендикулярны". Тоже всего лишь мысли в слух.
Все так, но больно заманчиво использовать под сервак SoC решения с EMMC Flash из-за габаритов и низкого энергопотребления.
По поводу их надежности, уж как повезет с системой и БП.
Использую Orange Pi Plus 2E + Armbian. Особых нареканий пока нет.
Но бывало сервак полностью зависал из-за Beta версий серверного ПО. Знаю, для этого есть wdog, да и беты на продуктив ставить не стоит. :-)
Но это так, мысли в слух. :-) Наверно, да, для обработки типов нажатий клавиш проверка сервака несколько излишняя.

Кстати. по поводу ширковещательных пакетов.... раз уж тема зашла. :-) Отправляю на оценку целесообразности (понимаю ,что это можно сделать на сервере).
Одна из самых востребованных функций для управления светом, на мой взгляд, это центральное включение\выключение всех\отдельной группы осветительных приборов.
Раньше, это нормально можно было сделать только на сервере.
Сейчас появились Группы для портов, это упрощает задачу. Но есть нюанс, будет работать только в рамках одного контроллера.
Для дома этого мало.
Вопрос бы решился, если контроллер мог бы отсылать и обрабатывать широковещательный запрос для групп портов.
Как бонус, в т.ч. можно было бы сократить размеры полей NET. Зачем указывать IP, если можно на контроллере портам присвоить номер группы и обрабатывать широковещательный трафик с номером этой группы (как распределить эту группу по контроллерам это уже задача\фантазия владельца)?
Естественно тема только для контроллеров в одной подсети.

orlov
Сообщения: 5
Зарегистрирован: 27 ноя 2017, 22:12

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение orlov » 01 дек 2017, 21:44

Andrey_B писал(а):orlov, чтобы ответить на ваш вопрос по существу, нужно понять, что вы пытаетесь сделать. С какой целью вы конфигурировали порт как NC, зачем отправляли в порт этого типа команды и запрашивали его состояние через "get"?
Вообще я пытаюсь проконтролировать чтобы прибор был выключен (или выключался) когда мне этого не надо.
Например я приконфигурировал порт для вкл и выкл вентилятора по нажатию кнопки. Проверил - все работает ок.
Через некоторое время обнаружил что вентилятор включен, т.е. порт замкнут - но сие событие не вызывалось намеренно, а было вызвано несанкционированно (причина не имеет значения, н.п. восстановленеи сессии браузера или разовое выполнение какого-то кода на включение порта).
Я отключил через http и перевел порт в NC, чтобы разобраться в этом позже - но вентилятор вновь включился, уже сквозь NC. :shock:
Вопрос по существу - как сделать так, чтобы вентилятор отключался даже при несанкционированном запуске (через http или в ином варианте - ошибка кода, ошибочное выполнение кода и т.п.)?
Или как отключить определенный порт до дополнительных указаний для его включения?

Ruslan
Сообщения: 2184
Зарегистрирован: 06 янв 2014, 20:44

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Ruslan » 01 дек 2017, 22:06

Прочитал и не вполне понял суть вопроса.
Для включения/отключения ответственных нагрузок иногда используют подтверждение действия. Но это нужно предусматривать в коде на сервере. Если включение/отключение делает сама Мега, выполняя действие по умолчанию, то там такая сложная логика не предполагалась изначально (т.к. это в сущности "аварийный режим"). Если, например, в адресной строке браузера набрана команда на включение/отключение какого-то выхода Меги и страница будет обновлена, команда будет послана и выполнена. Т.к. Мега задумывалась при создании не как организатор витиеватой логики, а как надежный исполнитель команд и отправитель срабатываний входов. Если я не прав, пусть меня поправят.

Или же вы имели ввиду вопрос о том, как сконфигурировать выход Меги таким образом, чтобы он гарантированно ничего не исполнял при любых командах "с любой стороны"?

Vadim
Сообщения: 122
Зарегистрирован: 04 мар 2017, 17:38

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Vadim » 01 дек 2017, 22:31

Andrey_B писал(а):
Vadim писал(а):Ок, есть сеть\сервер, зачем R отрабатывать контроллеру? ;-) Контроллер же просто должен "P" отработать и сервер оповестить о событиях выполнения ACT и моментах "P" и "R".
Попробуйте.
Вход всегда работает в том режиме, который задан, но на сервер в случае установки флажка рядом с Mode отправляются данные в режиме P&R.

https://ab-log.ru/files/File/megad-2561 ... a1-hex.zip
Андрей,
Теперь все работает отлично, и контроллер отрабатывает корректно, и сервер получает необходимые данные.
Спасибо.

orlov
Сообщения: 5
Зарегистрирован: 27 ноя 2017, 22:12

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение orlov » 01 дек 2017, 23:20

Ruslan писал(а):Но это нужно предусматривать в коде на сервере
Вы не поняли, речь и идет про работу сервера. Но серверу нужна входная информация, чтобы ее интерпретировать - например, знать состояние порта в текущий момент.
Ruslan писал(а):а как надежный исполнитель команд и отправитель срабатываний входов.
Под надежным исполнителем лично я понимаю четкое следование логике.
н.п. если я опрашиваю порт - замкнут ли он? мне нужно получить да или нет, 1 или 0, ВКЛ или ВЫКЛ - чтобы дать нужную команду в зависимости от входной информации
в данном же случае я получаю ответ ВЫКЛ, хотя порт замкнут.
Спрашиваю - горит ли свет в коридоре? И получаю ответ - нет, хотя лампочка при этом горит.
Ruslan писал(а):Или же вы имели ввиду вопрос о том, как сконфигурировать выход Меги таким образом, чтобы он гарантированно ничего не исполнял при любых командах "с любой стороны"?
Нет, мне надо получить надежное значение текущего состояния порта. Либо программно отключить порт, чтобы никакие команды не могли включить прибор. Я так понимаю сейчас это невозможно? Т.е. нет возможности поставить порт в значение "Disable"

Ruslan
Сообщения: 2184
Зарегистрирован: 06 янв 2014, 20:44

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Ruslan » 01 дек 2017, 23:45

orlov писал(а):
Ruslan писал(а):Но это нужно предусматривать в коде на сервере
Вы не поняли, речь и идет про работу сервера. Но серверу нужна входная информация, чтобы ее интерпретировать - например, знать состояние порта в текущий момент.
...
Вообще, чтобы получить состояние любого порта, нужно "спросить" порт об этом. Например выполнить из адресной строки браузера команду

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

http://192.168.0.14/sec/?pt=16&cmd=get
В приведенном примере мы узнаем состояние порта P16.
В коде PHP это может выглядеть, например, так

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

$state = file_get_contents("http://192.168.0.14/sec/?pt=16&cmd=get");
Тут состояние порта сохранится в переменную $state.

Сейчас проверил, можно ли узнать состояние порта, если он не сконфигурирован (NC). Увидел, что да. Теми же стандартными запросами мы узнаем, находится ли этот порт в состоянии ON или OFF.

Vadim
Сообщения: 122
Зарегистрирован: 04 мар 2017, 17:38

Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)

Сообщение Vadim » 02 дек 2017, 00:06

Андрей,
При перепрошивке контроллера с ...--ee --read-conf megad.cfg --write-conf megad.cfg
не сохраняются настроки портов расширителя (сбрасываются в IN).
Ждем Ver 2.05 megad-cfg-2561.php ;-)

Ответить