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

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Bonefolder
Сообщения: 617
Зарегистрирован: 30 мар 2017, 11:15
Откуда: г.Севастополь

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

Сообщение Bonefolder » 23 сен 2017, 21:03

Andry писал(а): используют расширители по RS485 интерфейсу.
Бесспорно, протокол жив и хорош. Но не забывайте, что помимо контролера (физическое подключение к серверу), вам понадобиться тащить провода от контролера к серверу. Здесь же используется Ethernet соединение между Мегой и сервером

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

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

Сообщение Vadim » 24 сен 2017, 23:51

Андрей,
Небольшие особенности интерфейса в прошивке (fw: 4.17b2)
4.17b2.jpg
4.17b2.jpg (36.51 КБ) 3886 просмотров
1. После установки, значение INT нельзя удалить, только заменить на другой порт.
Значение запоминается в конфигурации даже если основной порт перевести в NC и проделать с нуля процедуру по настройке расширителя.
2. Порты расширителя нельзя перевести в OUT (не запоминает).
3. Если основной порт перевести в NC, то меню с расширенными портами не пропадает.

Хотел уточнить по функционалу портов IN в расширителе. Их удел только "отлавливать" замыкания (герконы, охранные датчики, пожарные датчики..) или на них можно будет повесить что-то более сложное?

Bonefolder
Сообщения: 617
Зарегистрирован: 30 мар 2017, 11:15
Откуда: г.Севастополь

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

Сообщение Bonefolder » 25 сен 2017, 00:21

Vadim писал(а): или на них можно будет повесить что-то более сложное?
В режиме In только логический 0 или 1
В режиме out замыкающийся сухой контакт

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

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

Сообщение Andrey_B » 25 сен 2017, 18:09

http://ab-log.ru/files/File/megad-2561/ ... a3-hex.zip

- Исправлены все ошибки, на которые указал Vadim
- Расширена поддержка MCP23017. Теперь первые 8 портов можно настраивать IN/OUT (также, как и для MCP23008), вторые 8 портов автоматически конфигурируются как IN. В Web-интерфейсе их не видно, но при замыкании/размыкании на сервер будут отправляться сообщения ext8-ext15.

INTA/INTB для MCP23017 нужно подключать к одному порту INT, который указывается в настройках SDA порта.
Вход, к которому подключаются линии INT(A)/INTB нужно нужно настроить как простой IN, но обязательно поставить флажок Raw.
Повторю, что в качестве такого входа можно использовать любой из доступных портов контроллера.

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

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

Сообщение Andrey_B » 29 сен 2017, 10:55

http://ab-log.ru/files/File/megad-2561/ ... a4-hex.zip

- Добавлена полноценная поддержка MCP23017
megad-2561-mcp-17.gif
megad-2561-mcp-17.gif (7.72 КБ) 3756 просмотров
Прошивка автоматически определяет тип подключенного устройства (MCP23008 или MCP23017)
В Web-интерфейсе отображаются все 16 портов для MCP23017
Добавлен вывод типа порта в общем списке

Haus
Сообщения: 227
Зарегистрирован: 28 апр 2015, 13:13

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

Сообщение Haus » 30 сен 2017, 21:42

Андрей, порт I2C при выборе Mode SDA в поле SCL прописывается "0" но порт P0 как SCL использовать не получится так как в порте SDA больше нет никаких настроек. Наверно по умолчанию должно быть пусто.

smorigo
Сообщения: 42
Зарегистрирован: 28 май 2014, 23:30
Откуда: Витебск

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

Сообщение smorigo » 02 окт 2017, 12:03

Andrey_B, есть несколько вопросов , поясните пожалуйста . Для чего в настройках порта I2C можно выбирать "любое устройство" ANY ?
У меня на шине I2C висит bmp180 и mcp23008 . По запросу сmd=all позиция остаётся пустая .По запросу ?pt=30&scl=31&i2c_dev=bmp180 получаю значение давления. Значения портов mcp23008 так получить не удаётся ( ?pt=30&scl=31&i2c_dev=mcp23008) , а очень хочется, о чём я просил выше.
При сканировании шины I2C опознаётся адрес 0х40 ( это мой mcp23008) , но не пишет название устройства. BMP180 распознаётся . Может быть проблема в этом ? Если указать устройство MCP230xx, и зайти в настройки EXT-IO, то расширитель распознаётся -- Ports Ext (MCP23008) -- .
В моей конкретной реализации через некоторое время (1 час, 6 часов , сутки...) mcp23008 перестаёт управляться, все порты выключены (OFF) , хотя до этого некоторые были включены (ON) . Жмём ON или OFF - реакции никакой. Естественно , помогает передёргивание по питанию или переинициализация MCP23008. megaD2561 не виснет ( Uptime: 30d 00:30 ). Прошивка fw: 4.17b4 , длина проводов I2C минимальная, питание идеальное . В чём может быть проблема , куда копнуть ?

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

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

Сообщение Andrey_B » 03 окт 2017, 18:38

http://ab-log.ru/files/File/megad-2561/ ... a5-hex.zip

- При выборе типа порта I2C/SDA по умолчанию в поле SCL пусто

smorigo, "ANY" можно использовать с датчиками, но не с теми устройствами, которые требуют инициализации.
MCP230XX требует инициализации, в EEPROM порта хранится информация о типах расширенных портов. Использовать ANY с расширителем не получится.
Вы можете выбрать тип устройства MCP230XX, но затем точно также запрашивать данные с датчиков, которые висят на этой шине через i2c_dev=xxx (кроме BMPx80, для которых также хранятся калибровочные коэффициенты в EEPROM).
Что касается "потери связи" с расширителем, то у себя такое не наблюдал, но длительного тестирования не проводил. Как-нибудь попробую.

Haus
Сообщения: 227
Зарегистрирован: 28 апр 2015, 13:13

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

Сообщение Haus » 03 окт 2017, 21:50

Andrey_B писал(а):http://ab-log.ru/files/File/megad-2561/ ... a5-hex.zip

- При выборе типа порта I2C/SDA по умолчанию в поле SCL пусто
Да но теперь при выборе SCL "0", остальные настройки не появляются.

Alex_Jet
Сообщения: 1251
Зарегистрирован: 12 янв 2014, 18:00
Откуда: Россия, г.Томск

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

Сообщение Alex_Jet » 04 окт 2017, 06:41

Andrey_B писал(а):smorigo, "ANY" можно использовать с датчиками, но не с теми устройствами, которые требуют инициализации.
MCP230XX требует инициализации, в EEPROM порта хранится информация о типах расширенных портов. Использовать ANY с расширителем не получится.
Вы можете выбрать тип устройства MCP230XX, но затем точно также запрашивать данные с датчиков, которые висят на этой шине через i2c_dev=xxx (кроме BMPx80, для которых также хранятся калибровочные коэффициенты в EEPROM).
Что касается "потери связи" с расширителем, то у себя такое не наблюдал, но длительного тестирования не проводил. Как-нибудь попробую.
Андрей, надо в статье по MegaD-2561 красным по белому расписать для каких I2C устройств нужно в выпадающем списке обязательно выбирать соответствующее наименование Dev. Многие не понимают, что, например, для BMP180/280, BME280, SSD1306, MCP230xx нужна обязательная первоначальная инициализация, иначе они нормально работать не будут! При этом на ту же шину можно повесить обычные датчики (SI7021, HTU21D, MAX44009, BH1750, TSL2591), не требующие инициализацию, и опрашивать их с помощью http-команд.
У меня несколько месяцев тестируется шина, на которой висят BME280, HTU21D, SSD1306. По умолчанию dev = SSD1306, значит при любой перезагрузке контроллера (перебой питания, перезагрузка при изменении настроек портов, зависание МК) показания с BME280 начинают приходить далекие от истины. Вывод - на одной шине SSD1306 и BME280 использовать не рекомендуется, поскольку обоим нужна первоначальная инициализация (в том числе хранение калибровочных данных BME280).
Последний раз редактировалось Alex_Jet 04 окт 2017, 18:50, всего редактировалось 1 раз.

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

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

Сообщение Andrey_B » 04 окт 2017, 13:04

Haus писал(а):Да но теперь при выборе SCL "0", остальные настройки не появляются.
http://ab-log.ru/files/File/megad-2561/ ... a6-hex.zip

Поправил.

Alex_Jet, да, вы правы. Нужно написать.

hawkeye
Сообщения: 98
Зарегистрирован: 06 окт 2016, 22:16

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

Сообщение hawkeye » 04 окт 2017, 15:32

Alex_Jet писал(а):показания с BME280 начинают приходить далекие от истины. Вывод на одной шине SSD1306 и BME280 использовать не рекомендуется, поскольку обоим нужна первоначальная инициализация.
Лучше тогда сделать посылку команд инициализации для всех поддерживаемых типов i2c устройств на порту в момент загрузки (или сканить шину и инициализировать то, что найдётся).

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

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

Сообщение Andrey_B » 04 окт 2017, 17:07

hawkeye, в отличие, скажем, от 1-wire, адреса I2C-устройств не только не уникальны, адресное пространство - это всего лишь 112 возможных адресов (7 бит минус служебные).
Пока не сталкивался, но допускаю, что совершенно разные устройства могут иметь одинаковые адреса. Например, у MCP23008 такой же адрес, как у MCP23017. Это похожие микросхемы, хотя код, который автоматически определяет тип микросхемы, занимает далеко не две строчки. А если это принципиально другое устройство? Напомню, что для работы с конкретным I2C-устройством не обязательно иметь поддержвку в прошивке. Можно работать с ним через программную эмуляцию (I2C-PHP). Сканирование шины и обнаружение на ней адреса вовсе не гарантирует однозначную идентификацию устройства. А дополнительные меры по интеллектуальной идентификации могут быть слишком затратными с точки зрения реализации.
И проблема даже не в инициализации. Проблема в том, что для некоторых устройств (MCP230XX, BMPx80) необходимо хранение в EEPROM SDA-порта некоторых конфигурационных параметров. Как вы себе представляете хранение в одной и той же ячейке памяти двух значений, которые относятся к разным устройствам?

Alex_Jet
Сообщения: 1251
Зарегистрирован: 12 янв 2014, 18:00
Откуда: Россия, г.Томск

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

Сообщение Alex_Jet » 04 окт 2017, 18:58

hawkeye писал(а):Лучше тогда сделать посылку команд инициализации для всех поддерживаемых типов i2c устройств на порту в момент загрузки (или сканить шину и инициализировать то, что найдётся).
Мне кажется Вы путаете микроконтроллер с микрокомпьютером. Чувствуете разницу? На микрокомпьютере возможны любые хотелки, алгоритмы и прочее, но и стоимость соответствующая (особенно это касается грамотной программной части). Тут же микроконтроллер с простейшим интерфейсом, который "из коробки" уже очень многое умеет, при этом главным образом отличается от микрокомпьютера очень высокой надежностью и ничтожным энергопотреблением, однако при этом имеет "свои" ограничения.

Maxmen
Сообщения: 73
Зарегистрирован: 05 янв 2017, 01:00

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

Сообщение Maxmen » 05 окт 2017, 10:45

Баг или фича?
Если включать-выключать выход меги из ее же интерфейса, то изменения состояния на сервер не отправляются. Проверял на прошивке fw: 4.07b4.
Если замыкать вход перемычкой или кнопкой - изменение состояния входа отправляется, а если зайти в веб-интерфейс, выбрать нужный выход и сделать ON-OFF, то на сервер ничего не уходит, хотя логически изменение состояния выхода на него должно уходить.
Так и должно быть?
И на мой взгляд, было бы неплохо добавить в веб-интерфейсе megad текстовое поле для каждого входа-выхода, чтобы можно было его как-то читабельно обозвать, а то при отладке приходится все время заглядывать в таблицу подключений.

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

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

Сообщение Andrey_B » 05 окт 2017, 13:16

1. Контроллер не может определить кто именно переключил выход: пользователь через браузер, скрипт на сервере, другое устройство. HTTP-запрос одинаковый во всех случаях.
Вы предлагаете определять источник команд по User-Agent? Не слишком надежный и удобный способ.
2. Рядовому пользователю, который вот только оторвался от "ок" и "вк", строго говоря, нечего делать во встроенном Web-интерфейсе устройства. Это нехорошо ни для пользователя, ни для устройства.
3. Если есть сервер, то только он и должен переключать выходы. А раз так, то уведомлять его о факте переключения - лишнее. Команда управления от другого устройства (NetAction) возможна по логике только при каких-то форс-мажорных обстоятельствах.

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

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

Сообщение Ruslan » 05 окт 2017, 13:32

Maxmen писал(а):Баг или фича?
Если включать-выключать выход меги из ее же интерфейса, то изменения состояния на сервер не отправляются. Проверял на прошивке fw: 4.07b4.
...
Так и должно быть?
...
По-моему в отношении переключения выходов никогда ничего и не отправлялось. Исходя из идеологии Меги.
У меня, например, такой потребности нет. Для других такой функционал мог бы быть полезен. Я как-то писал здесь по этому поводу (http://ab-log.ru/forum/viewtopic.php?f= ... &start=535). Если всем рулит сервер, в то "пятое колесо" не нужно. А вот если Мегу переключают из других мест (как в описанном мной реальном случае), то отправка команд на сервер об этом нужна.
Если такой экзотический вариант работы с Мегой будет получать распространение, думаю для страждущих эту функцию можно реализовать в виде чекбокса (потому что в подавляющем большинстве случаев отправка команд не нужна, ибо всем рулит сервер, который и так "в курсе").

Maxmen
Сообщения: 73
Зарегистрирован: 05 янв 2017, 01:00

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

Сообщение Maxmen » 05 окт 2017, 13:53

Andrey_B писал(а):1. Контроллер не может определить кто именно переключил выход: пользователь через браузер, скрипт на сервере, другое устройство. HTTP-запрос одинаковый во всех случаях.
Вы предлагаете определять источник команд по User-Agent? Не слишком надежный и удобный способ.
Откуда пришла команда- неважно. Хотелось бы, чтобы контроллер просто сообщал серверу что состояние его выходи изменилось и не более.
3. Если есть сервер, то только он и должен переключать выходы. А раз так, то уведомлять его о факте переключения - лишнее. Команда управления от другого устройства (NetAction) возможна по логике только при каких-то форс-мажорных обстоятельствах.
Не могу согласиться. Возможность видеть реальное состояние выхода была бы полезна. Как минимум, для отладки. Также это позволило бы серверу видеть изменения состояния выходов независимо от того, каким способом это изменение было задействовано.
Например, если делать децентрализованную систему (что соответствует концепции megad) и контроллеры расположить в разных местах. Они большую часть информации отправляют друг другу напрямую минуя сервер и сервер при отсутствии информации о состоянии выходов просто не в курсе что происходит. Я, например, так сделал чтобы не зависеть от доступности сервера. Т.е. основные и самые важных механизмы работают без участия сервера. Пока это сделано потому что сервер до конца не настроен, но в перспективе планирую самые критичные части системы оставить независимыми от сервера.

Alex_Jet
Сообщения: 1251
Зарегистрирован: 12 янв 2014, 18:00
Откуда: Россия, г.Томск

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

Сообщение Alex_Jet » 05 окт 2017, 14:57

Maxmen писал(а):Например, если делать децентрализованную систему (что соответствует концепции megad) и контроллеры расположить в разных местах. Они большую часть информации отправляют друг другу напрямую минуя сервер и сервер при отсутствии информации о состоянии выходов просто не в курсе что происходит. Я, например, так сделал чтобы не зависеть от доступности сервера. Т.е. основные и самые важных механизмы работают без участия сервера. Пока это сделано потому что сервер до конца не настроен, но в перспективе планирую самые критичные части системы оставить независимыми от сервера.
Суть децентрализованной системы как раз в полях Act и NetAct. Пока сервер есть он управляет всем сам. Когда с ним что-то случилось, то вступают в игру поля Act и NetAct! Андрей и так уже сделал удобную "лазейку" в виде обработки контроллерами команды d от сервера - то есть получается, что код управляющего скрипта сводится к минимуму: в ответ на входящие событие отправляем команду d контроллеру и он выполняет действия которые записаны в Act или NetAct.
Я вижу полезность опроса состояния выходов только для случая "синхронизации" работы только что включенного сервера со всеми доступными контроллерами - чтобы в веб-интерфейсе умного дома при поднятии сервера отобразилась актуальная на текущий момент картина.

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

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

Сообщение Andrey_B » 05 окт 2017, 16:57

Maxmen, устройство предполагает максимальную производительность и эффективность при минимальных затратах вычислительных ресурсов. Так, например, вы можете сколь угодно быстро нажимать на выключатель или даже на два выключателя одновременно и все запрограммированные в устройстве или на сервере действия будут выполнены точно, предсказуемо и без каких-либо задержек.
При этом может показаться, что нажатие на выключатель - это всего лишь один пакет на сервер. На самом деле пакетов минимум семь. Каждое нажатие на выключатель - это целая процедура с точки зрения обмена данными между устройством и сервером. В прошивке сделано все для обработки ситуаций, когда новое нажатие фиксируется до завершения обмена данными в рамках предыдущего события.
Генерация сообщения на сервер об изменении состояния выхода фактически удвоит объем передаваемых данных без должного на то основания и необходимости, увеличит риск сбоя при сверхбыстрых событиях в режиме Raw.
В то же время ваша ситуация, когда сервер есть, но как бы не принимает активного участия в работе устройств, говорит о том, что можно с таким же успехом использовать функцию srv-loop или периодически (раз в 10-30-60 секунд) опрашивать состояние портов через cmd=all. Не вижу при данных условиях действительной необходимости получать информацию о состояние портов мгновенно.
Нужно еще понимать, как именно ваш как бы сервер хочет использовать информацию о состоянии выходов. Если только для какой-то визуализации по запросу пользователя, то легко реализовать механизм опроса состояния нужных портов по требованию, только тогда, например, когда это нужно.

Ответить