Опрос


Что для Вас Умный Дом?


Результаты

MegaD-2561 - новая ступень в развитии проекта MegaD

01/09/2016 16:51:13

MegaD-2561 - многофункциональный контроллер, предназначенный для решения широкого спектр задач, связанных с автоматизацией: квартир, домов, офисов, производств.
Контроллер способен работать как под управлением сервера, так и автономно.
Контроллер MegaD-2561 - второе поколение устройств для домашней автоматизации, которое продолжает традиции MegaD-328. Если вы впервые знакомитесь с контроллером, рекомендуется также ознакомиться с вводной частью статьи о MegaD-328, в которой описываются основные идеологические особенности контроллеров MegaD. Вместе с тем, MegaD-2561 - существенный шаг вперед по сравнению с предыдущим поколением (MegaD-328). Возможности новых контроллеров MegaD-2561 значительно шире.


Контроллер MegaD-2561


Краткие технические характеристики

Основной интерфейс связи: Ethernet (RJ45)
Питание: +12В DC (+/- 10%)
Потребляемый ток: 57 мА (только контроллер без учета подключаемых датчиков и исполнительных модулей)
Общее количество портов (входов/выходов): 38
Количество портов с функцией ШИМ: 7 (4 в разъеме XP1, 3 в разъеме XP2)
Количество портов с функцией АЦП: 8 (2 в модуле контроллера в разъемах XP5/XP6, 6 в разъеме XP1)
Количество подключаемых стандартных исполнительных модулей (XP1/XP2, 34-пиновый шлейф): 2
Поддерживаемые "заводские" исполнительные модули: MegaD-8I7O-S/SD, MegaD-8I7O-R, MegaD-14-IN, MegaD-14-R, MegaD-8I7O-S/SD/R, MegaD-2R
Количество подключаемых I2C исполнительных модулей: определяется прошивкой
IP-адрес по умолчанию: 192.168.0.14 (маска подсети 255.255.255.0)
Корпус устройства предназначен для монтажа на DIN рейку: 4 DIN (ширина 71 мм)
Гарантированный рабочий температурный диапазон: от -10 до +70 С


Основные функциональные возможности

Поддерживаемые протоколы для управления устройством и взаимодействия с сервером: HTTP, MQTT (бета)
Поддерживаемые протоколы для работы с датчиками/считывателями/ведомыми устройствами: I2C, 1-wire/TouchMemory (DS18B20/DS2401/DS1990A - считыватели), Single-wire (DHT22/DHT11), Wiegand-26 (через устройство согласования уровней 5В-3.3В)
Функция выполнения заданий по расписанию (cron)
Поддержка часов реального времени: DS3231 (исполнение MegaD-2561-RTC), DS1307
Возможность перепрошивки по сети (используется PHP-скрипт и протокол UDP)
Поддерживаемые типы портов: IN (вход), OUT (выход), DSen (цифровые датчики), ADC (АЦП), I2C
Поддерживаемые режимы работы со входами: P (нажатие), R (отжатие), P&R (нажатие/отжатие), длительное удержание, C (режим фиксации одинарного/двойного клика)
Поддерживаемые устройства на портах типа IN (сухой контакт): выключатели, кнопки, герконы, датчики (протечки, ИК-извещатели, пожарные извещатели), счетчики (типа "геркон"), датчик напряжения U-Sensor и т.д.
Поддерживаемые устройства на портах типа OUT: любые нагрузки 0-250В AC/DC (для релейных модулей MegaD-8I7O-R/MegaD-14-R) и 170-220В AC (для симисторных модулей MegaD-8I7O-S/SD)
Функция диммирования (для MegaD-8I7O-SD и портов с поддержкой PWM/ШИМ): лампы накаливания, светодиодные и люминесцентные лампы типа Dimmable, светодиодные ленты (с помощью внешнего драйвера), некоторые модели бытовых вентиляторов, нагревательные приборы и другие устройства, допускающие регулировку тиристорными регуляторами мощности
Функция управления диммируемыми выходами с помощью одной кнопки (режим "~")
Поддерживаемые устройства на портах типа DSen: DS18B20 (в том числе шиной), DHT22, DHT11, считыватели TM (CP-Z2L/CP-Z2M, Matrix II и другие), считыватели Wiegand-26 (Matrix IV, Strazh SR-R150K и другие)
Поддерживаемые устройства на портах типа I2C: HTU21D, Si7021, BMP180, BMP280, BME280, MAX44009, BH1750, TSL2591, SSD1306, MCP23008 (средствами контроллера) и любые другие (с помощью библиотеки I2C-PHP)
Поддерживаемые устройства на портах типа ADC: любые аналоговые датчики с выходным напряжением не выше 3,3В (датчики газа, освещенности) напрямую и с любым другим выходным напряжением (датчики давления жидкости) через устройство согласования.
Функция управления техникой по ИК-протоколу.
Функция периодической отправки состояния всех портов на сервер (srv-loop)
Функция контроллера доступа (для считывателей, работающих по протоколу TouchMemory/1-wire)
Функция сброса настроек с помощью кнопки Erase EEPROM
Встроенная функция сторожевого таймера (watchdog)

Данный перечень не является конечным. Прошивка устройства регулярно обновляется, внедряется поддержка новых устройств, расширяется набор функций.

 

Программное обеспечение с поддержкой MegaD-2561

Контроллер MegaD-2561 может работать автономно (без сервера), но польностью функциональные возможности контроллера раскрываются при работе совместо с серверным программным обеспечением.

Демо-интерфейс - ПО, которое используется автором сайта. База данных, CMS (система управления), Web-интерфейс и набор скриптов, которые можно использовать для построения собственной системы (требуются навыки Web-программирования). Для опытных, подготовленных пользователей!
OpenHAB - Открытое программное обеспечение для домашней автоматизации. Пользователями сайт ab-log.ru написаны специальные компоненты "биндинги" для работы с MegaD-328/MegaD-2561
Majordomo - открытая и бесплатная платформа для комплексного управления домашней автоматикой. Поддерживает массу оборудования, в том числе MegaD-328/MegaD-2561. Неплохой материал по настройке данного ПО размещен на форуме.
ioBroker - это платформа для Интернета Вещей и служит центральным сервером для умного дома, автоматизации зданий. При помощи, так называемых модульных "драйверов", ioBroker может взаимодействовать с другими различными системами и устройствами.
intraHouse - платное ПО, которое поддерживает контроллер MegaD-2561 в тестовом режиме. Для всех пользователей MegaD-2561 предоставляется 50% скидка!
Apple HomeKit + HAP-NodeJS - управление устройствами через встроенное приложение "Дом" от Apple.
Бенукс - ПО для ОС Windows, что важно для начинающих пользователей. Создаваемое изначально для работы с 1-wire, программное обеспечение Бенукс ныне поддерживает широкий спектр оборудования, среди которого присутствует и контроллеры MegaD-328/2561.
Любое иное ПО, поддерживающее управление устройствами по протоколу HTTP или MQTT: iRridium, Domoticz, Node-RED и т.д.

Описание разъемов, подключения питания, сети, исполнительных модулей

Внешние габариты устройства, разъемы для подключения устройств

Занимаемое место на DIN-рейке: 4 DIN


Разъем XT1. Питание контроллера

Разъем XT1 предназначен для подключения питания.
Напряжение питания: 12В постоянного тока. Плюсовая клемма справа, минусовая клемма слева. Контроллер снабжен защитой от переполюсовки.
Максимальное сечение провода для данного разъема 1,5 мм2
В качестве блока питания можно использовать любой стабилизирванный БП. Хорошо зарекомендовали себя блоки питания MeanWell: DR-15-12, DR-30-12, DR-60-12, DR-100-12
Рекомендуемое отклонение от номинального напряжения питания: +/- 10%. Максимальное напряжение 13,2В. Контроллер может выдержать и бОльшее напряжение, но необходимо учитывать требования к исполнительным модулям, которые получают питание через контроллер. В частности при подключении релейных исполнительных модулей (MegaD-8I7O-R, MegaD-14-R) не рекомендуется подавать напряжение на разъем XT1 выше 13,2-13,5В. Симисторные исполнительные модули (MegaD-8I7O-SD, MegaD-8I7O-S) более лояльны к повышенному напряжению.
Блок питания выбирается исходя из потребляемого тока контроллера, исполнительных модулей, подключенных датчиков.
Максимальный потребляемый ток контроллером: 57мА (без исполнительных модулей, их потреблением смотрите в документации к ним)

Пример подбора БП.
Максимальный потребляемый ток MegaD-2561 и двух исполнительных модулей MegaD-8I7O-R: 57мА + 310 мА + 310 мА = 0,68А. Необходимо оставить запас.
Номинальная мощность DR-15-12 составляет 1,25A, значит один такой блок питания можно использовать с одним полным комплектом (контроллер + 2 релейных исполнительных модуля)
Номинальная мощность DR-30-12 составляет 2А, значит один такой блок питания можно использовать с двумя полными комплектами.


Разъем WT1. Подключение к сети Ethernet.

Разъем WT1 предназначен для подключения к сети Ethernet. Тип разъема: RJ-45. Поддержки PoE (Power over Ethernet) в текущий момент нет.
На разъеме RJ-45 присутствуют два светодиода (Link/Act), по которым можно судить о доступности сети и сетевой активности.


Разъемы XP1/XP2. Подключение стандартных исполнительных модулей

Разъемы XP1/XP2 предназначены для подключения стандартных серийно выпускающихся модулей: MegaD-8I7O-SD, MegaD-8I7O-R, MegaD-8I7O-S, MegaD-14-IN, MegaD-14-R.
Каждый исполнительный модуль подключается своим 34-пиновым шлейфом. Таким образом, к одному контроллеру можно подключить два любых исполнительных модуля в любой комбинации.
Исполнительные модули могут располагаться справа от контроллера, слева от него или по обе стороны от него. Короткий шлейф входит в комплект исполнительного модуля. Длинный шлейф, с помощью которого подключается второй исполнительный модуль, расположенный дальше от первого, входит в комплект контроллера.


Распиновка разъемов XP1/XP2

Розовым и голубым цветом выделены порты, которые имеют дополнительные функции, такие как АЦП (для подключения аналоговых датчиков) и ШИМ (для диммирования света, управления LED-лентами, ИК-диодами, выходами 0-10В и т.д.) Пользователи, разбирающиеся в радиоэлектронике могут создавать свои исполнительные модули. И информация о распиновке разъемов XP1/XP2 будет для них крайне полезной.


Разъем XT2. Подключение цифровых датчиков

Разъем XT2 предназначен для подключения цифровых датчиков и других цифровых устройств.
Важно! Контроллер позволяет подключать цифровые датчики не только к XT2, но и к любым портам, которые выведены на разъемы XP1/XP2 с помощью исполнительного модуля MegaD-14-IN. В модуле контроллера MegaD-2561 предусмотрен отдельный разъем XT2 на тот случай, если необходимо, к примеру, контролировать температуру, влажность или давление, выводить информацию на дисплей, а разъемы XP1/XP2 заняты исполнительными модулями MegaD-8I7O, которые предназначены для работы с кнопками и коммутации силовых линий. Подробнее описано в разделе "Как выбрать исполнительный модуль".
Для корректной работы цифровых шин все порты, выведенные на разъем XT2 имеют подтяжку 4,7кОм.
Количество и тип цифровых датчиков зависит от прошивки. Перечень поддерживаемых устройств постоянно расширяется.
На текущий момент к этим портам можно подключать следующие цифровые датчики: DS18B20, DHT22/DHT11, считыватели и кодовые панели, работающие по протоколу TouchMemory/1-wire (CP-Z2L/CP-Z2M, Matrix II и другие), считыватели, работающие по протоколу Wiegand-26 (Matrix IV, Strazh SR-R150K и другие, внимание! может потребоваться согласование уровней 5В-3,3В!), I2C-устройства: I2C: HTU21D, Si7021 (температура / влажность), BMP180/BMP280 (температура / атмосферное давление), BME280 (температура / атмосферное давление / влажность), MAX44009 (освещенность), BH1750 (освещенность), TSL2591 (освещенность), SSD1306 (OLED-дисплей), MCP23008 (расширитель портов).


Распиновка разъема XT2

Клемму 2 (+3,3В) можно использования для питания датчиков или I2C-устройств.
Кроме цифровых устройство к портам на разъеме XT2 в режиме "IN" можно подключать: датчики напряжения (U-Sensor), датчик протечки (Астра-361), ИК извещатели, выключатели/кнопки, но ввиду отсутствия на этих портах опторазвязки, защищающих порт от случайного попадания постороннего напряжения (в отличие от стандартных входов MegaD-8I7O и MegaD-14-IN в режиме стандартного входа), такое подключение не рекомендуется и допускается только в отдельных случаях и относительно короткими проводами.
Подробнее о подключении, настройке и работе с цифровыми датчиками описано ниже.


Разъемы XP5/XP6. Подключение аналоговых датчиков

Разъемы XP5 и XP6 предназначены для подключения аналоговых датчиков. Аналоговые датчики - это приборы, которые меняют свое выходное напряжение в зависимости от измеряемой характеристики: освещенности, температуры, давления, концентрации газа и т.д. Напрямую без дополнительного согласования можно подключать любые аналоговые датчики с выходным напряжением не более опорного (3,3В). Это такие датчики, как, например: TEMT6000 (датчик освещенности), MH-Z14 (датчик углекислого газа) и другие. Для упрощения подключения на клеммы XP5/XP6 также выведено питание для датчиков +3,3В.

Контроллер оцифровывает (измеряет) напряжение на входе АЦП порта и выводит в виде значения в Web-интерфейсе или передает на сервер.
Необходимо обратить внимание, что помимо двух АЦП-портов, выведенных на рахъемы XP5/XP6, в контроллере еще 6 портов имеют функцию АЦП. Это порты P0-P5, выведенные на разъем XP1. Эти АЦП порты можно использовать вместе с исполнительным модулем MegaD-14-IN.
К контроллеру можно подключать датчики и с более высоким выходным напряжением, а также датчики, которые выдают сигнал типа 4-20мА, но для подключения подобных сенсоров требуется несложное согласование.


Кнопки Reset и Erase EEPROM

Кнопка Reset (на схеме устройства слева) предназначена для перезагрузки устройства и используется в основном для отладочных целей. Необходимо отметить, что в процессе перезагрузки устройства состояние портов, в частности, выходов, принимает начальное положение.
Кнопка Erase EEPROM (на схеме устройства справа) предназначена для очистки энергонезависимой памяти устройства, в которой хранятся все настройки. Для того, чтобы запустить процедуру очистки EEPROM необходимо нажать кнопку в момент включения устройства ИЛИ, удерживая кнопку Erase EEPROM, одновременно нажать кнопку Reset. В процессе сброса настроек, который занимает приблизительно 5 секунд, светодиод Act на лицевой панели будет редко моргать.
Важно! В контроллерах MegaD-2561 Ver 2.0 процедура очистки EEPROM не сбрасывает IP-адрес устройства.
В контроллерах MegaD-2561 Ver 2.1 нажатие кнопки Erase EEPROM также сбрасывает IP-адрес на заводсткой: 192.168.0.14

 

Исполнительные модули MegaD. Зачем они нужны и как выбрать

Контроллер MegaD-2561 (на форуме его часто называет "головой" или "мозгами") оснащен 38 портами, которые распределены по разъемам следующим образом:
XP1: 15 портов (34-пиновый разъем для подключения исполнительного модуля)
XP2: 15 портов (34-пиновый разъем для подключения исполнительного модуля)
XT2: 6 портов (клеммная колодка на 12 контактов, для подключения цифровых устройств)
XP5/XP6: 2 порта (две 3-пиновые вилки, универсальные)

Каждый порт устройства в зависимости от настроек и с учетом дополнительных аппаратных функция может работать как: IN (вход), OUT (выход), DSen/I2C (цифровые устройства).
Некоторые порты могут работать как ADC (АЦП) и PWM (ШИМ).
Один и тот же порт в разных условиях может быть использован для подключения кнопки/выключателя, датчика или лампы/нагревателя/вентилятора. Но что это за условия и чем они определяются?


Использование контроллера без исполнительных модулей

Контроллер MegaD-2561 оснащен разъемами XT2, XP5, XP6.
Разъем XT2 можно использовать для подключения цифровых датчиков: DS18B20, DHT22, HTU21D, Si7021, BMP180, BMP280, BME280, MAX44009, FH1750, TSL2591, дисплея SSD1306, расширителя портов MCP23008, считывателей ключей iButton (DS1990A), EM-Marine/Mifare (CP-Z2L/CP-Z2M,  Matrix II и подобных) и других цифровых устройств.
Разъемы XP5/XP6 можно использовать для подключения аналоговых датчиков: TEMT6000, MH-Z14 и других.
В некоторых случаях разъемы XT2, XP5, XP6 можно использовать для подключения входов, датчиков типа "сухой контакт", датчиков напряжения U-Sensor.

Таким образом, если необходимо подключить считыватель ключей, несколько цифровых датчиков температуры, датчик освещенности, и того количества портов, которые выведены на разъемы XT2, XP5, XP6 достаточно, то можно использовать контроллер без исполнительных модулей.


Использование контроллера с исполнительными модулями

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

Важно! Настройка порта контроллера, которая производится через Web-интерфейс (будет описано ниже) должна соответствовать тому исполнительному модулю, который используется и тому оборудованию, которое подключено к порту.

Исполнительный модуль выбирается исходя из задачи и с учетом тех приборов, которыми нужно управлять.

Типы портов исполнительных модулей:

"Стандартный вход" - порт с опторазвязкой, защищающей контроллер от внеших факторов, который предназначен для подключения: кнопок, выключателей, герконов, датчиков протечки, охранных извещателей, датчиков напряжения и других датчиков, которые работают по принципу ВКЛ/ВЫКЛ. Этот порт не предназначен для подключения цифровых датчиков и устройств, аналоговых датчиков для которых требуется измерение выходного напряжения
"Релейных выход" - порт, где в качестве коммутирующего цепь элемента используется механическое реле. Этот порт предназначен для управления любыми приборами в диапазоне напряжений от 0 до 250В. Реле может коммутировать как постоянный, так и переменный ток. Максимальный ток (мощность) указан в документации к исполнительным модулям и находится в диапазоне от 6А до 10А (2300Вт) для переменного тока и активной нагрузки. К минусам реле можно отнести наличие звука при замыкании и размыкании контактов (щелчки), которые характерны для механических реле любого типа. В случае если в цепи используется защитные автоматы, реле относительно хорошо переносят кратковременные короткие замыкания.
"Симисторный выход" - порт, где в качестве коммутирующего цепь элемента используется полупроводниковый прибор симистор. Этот порт предназначен для управления любыми приборами, работающими от сети 220В переменного тока. Обратите внимание, что с помощью симисторов нельзя управлять, скажем, электромеханическими замками с напряжением 12В или приборами, работающими от постоянного тока. Симисторы могут коммутировать только переменный ток с напряжением выше 170В. В отличие от реле, симисторы абсолютно бесшумны. К минусам симисторов можно отнести неспособность переносить короткие замыкания. КЗ в управляемой цепи приводит к выходу симистора из строя и необходимости его замены.
"Цифровой вход" - порт с подтягивающим резистором 4,7кОм предназначен для подключения любых цифровых датчиков и устройств, а также (в случае наличия данной функции у порта) позволяет подключать аналоговые датчики.


Доступные исполнительные модули

MegaD-7I7O-R


MegaD-7I7O-R (7 входов / 7 релейных выходов 6А-10А), 6 DIN

Порты P0-P6 - "стандартные входы" для подключения кнопок, выключателей, охранно-пожарных датчиков, U-Sensor и т.д. Цифровые датчики с этими портами работать не будут.
Порты P7-P13 - "релейные выходы" для управления любым оборудованием с напряжением питания от 0 до 250В. Максимальная мощность (на портах P7, P9, P10, P12): 10A (2300Вт, переменный ток, активная нагрузка)

 

MegaD-8I7O-SD

MegaD-8I7O-SD (7 входов / 7 симисторных выходов, в т.ч. 3 диммируемых / 1 цифровой вход), 6 DIN

Порты P0-P6 - "стандартные входы" для подключения кнопок, выключателей, охранно-пожарных датчиков, U-Sensor и т.д. Цифровые датчики с этими портами работать не будут.
Порты P7-P13 - "симисторные выходы" для управления любым оборудованием с напряжением питания от 170 до 250В. Максимальная мощность: 1,4A (300Вт, переменный ток, активная нагрузка)
Порты P10, P12, P13 - "диммируемые" для плавной регулировки ламп накаливания (и другой нагрузки активного типа с потреблением не выше 300Вт), светодиодных и люминесцентных ламп для сети 220В с функцией диммирования (Dimmable).
Порт P14 - "цифровой вход" для подключения цифровых датчиков и шин (например, DS18B20, считыватели 1-wire, DHT22). Для этого порта отсутствует индикация на лицевой панели.
В данном модуле нет диммируемых каналов, в которых часто нет необходимости. Благодаря этому стоимость модуля ниже.
 

 

MegaD-8I7O-S

MegaD-8I7O-S
MegaD-8I7O-S (7 входов / 7 симисторных выходов / 1 цифровой вход), 6 DIN

Порты P0-P6 - "стандартные входы" для подключения кнопок, выключателей, охранно-пожарных датчиков, U-Sensor и т.д. Цифровые датчики с этими портами работать не будут.
Порты P7-P13 - "симисторные выходы" для управления любым оборудованием с напряжением питания от 170 до 250В. Максимальная мощность: 1,4A (300Вт, переменный ток, активная нагрузка)
Порт P14 - "цифровой вход" для подключения цифровых датчиков и шин (например, DS18B20, считыватели 1-wire, DHT22). Для этого порта отсутствует индикация на лицевой панели.
В данном модуле нет диммируемых каналов, в которых часто нет необходимости. Благодаря этому стоимость модуля ниже.
 


MegaD-14-R


MegaD-14-R (14 релейных выходов, 1 цифровой вход), 9 DIN

Порты P0-P13 - "релейные выходы" для управления любым оборудованием с напряжением питания от 0 до 250В. Максимальная мощность: 10A (2300Вт, переменный ток, активная нагрузка)
Порт P14 - "цифровой вход" для подключения цифровых датчиков и шин (например, DS18B20, считыватели 1-wire, DHT22). Для этого порта отсутствует индикация на лицевой панели.

 

MegaD-14-IN

MegaD-14-IN (14 настраиваемых входов), 6 DIN

Порты P0-P13: настраиваемые входы. Положение конфигурационного джампера (справа от разъема XT3) определяет функциональность порта.
Верхнее положение: "стандартный" вход для подключения кнопок, выключателей, охранно-пожарных датчиков, U-Sensor и т.д.
Нижнее положение: "цифровой" вход для подключения цифровых датчиков и устройств
В режиме "цифрового входа" к портам P0-P5 можно подключать аналоговые датчики.


Пример подбора конфигурации

Задача №1: подключить к автоматике 1 датчик протечки, 3 цифровых датчика температуры DS18B20, 5 выключателей, 5 осветительных приборов с лампами, 1 электромеханический замок, 1 датчик освещенности, 1 датчик углекислого газа.
Решение: MegaD-2561 + MegaD-8I7OR
DS18B20 x 3 подключаются к модулю контроллера MegaD-2561 на разъем XT2
Выключатели x 5 и датчик протечки подключаются к модулю MegaD-8I7O-R на входы
Лампы x 5 и электромеханический замок подключаются к модулю MegaD-8I7O-R на выходы
Датчик освещенности и датчи CO2 подключаются к модулю MegaD-2561 на разъемы XP5/XP6

Задача №2: подключить к автоматике 5 датчиков температуры и влажности HTU21D, 1 датчик атмосферного давления (BMP180), 5 ИК-извещателей (датчиков движения), 7 выключателей, 3 лампы с управлением яркостью, 4 лампы без управления яркостью, 1 светодиодную RGB-ленту
Решение: MegaD-2561 + MegaD-14-IN + MegaD-8I7O-SD
HTU21D x 5 и BMP180 подключаются к MegaD-2561 на разъем XT2
ИК извещатели x 5 подключаются к модулю MegaD-14-IN в режиме "стандартного входа"
RGB-светодиодная лента подключается через драйвер L298N к MegaD-14-IN в режиме "цифрового входа"
Выключатели x 7 подключаются к MegaD-8I7O-SD на входы
Диммируемые лампы x 3 подключаются к MegaD-8I7O-SD на выходы (порты P10, P12, P13)
Остальные лампы x 4 подключаются к MegaD-8I7O-SD на выходы

Комбинируя необходимые исполнительные модули, можно подобрать такую конфигурацию, которая отвечает поставленной задаче.
В том случае, если 38 портов, которыми оснащен контроллер MegaD-2561 не хватает, можно установить несколько контроллеров с разными IP-адресами.
В перспективе планируется выпуск модулей, работающих по цифровой шине I2C. В таком случае к одному контроллеру MegaD-2561 можно будет подключать более двух (в теории до 8 на порт) исполнительных модулей.


Настройка контроллера MegaD-2561 посредством встроенного Web-интерфейса

Встроенный Web-интерфейс предназначен, прежде всего, для настройки контроллера. HTML-разметка и внешний вид интерфейса адаптирован для достижения максимальной скорости работы при взаимодействии с управляющим программным обеспечением. Вот, почему он выглядит аскетично и просто. Необходима максимальная производительность при минимальном количестве затрачиваемых ресурсов. С помощью Web-интерфейса можно управлять из браузера выходами, просматривать состояние входов, значения, которые считываются с датчиков, но основная его задача - максимально быстро передать информацию по HTTP-протоколу на сервер. Предполагается что конечные пользователи, не связанные с администрированием автоматики, должны взаимодействовать с серверным программным обеспечением, которое имеет соответствующий внешний вид: openHAB, Majordomo, ioBroker, intraHouse и другое ПО.

IP-адрес устройства по умолчанию: 192.168.0.14 (маска подсети 255.255.255.0)
Пароль по умолчанию: sec
Для того, чтобы зайти на устройство через браузер необходимо, чтобы на компьютере была настроена сеть 192.168.0.0/24.
Если используется другая IP-сеть, то необходимо изменить IP-адрес устроойства. Сделать это можно двумя путями:
1. Временно установить на компьютере IP-адрес, например, 192.168.0.15, зайти в Web-интерфейс устройства и изменить его адрес
2. Воспользоваться PHP-скриптом megad-cfg-2561.php. Подробнее.


Системные настройки

Чтобы зайти на устройство, используя браузер, необходимо указать в строке URL IP-адрес и пароль.
Получается URL вида: http://192.168.0.14/sec


На центральной странице встроенного Web-интерфейса отображается:
версия прошивки;
ссылка на системную конфигурацию "Config";
ссылки на конфигурацию портов разъема XP1 (порты P0-P13);
ссылка на конфигурацию портов разъема XP2 (порты P15-P28);
ссылки на конфигурацию портов разъема XT2 (порты P30-P35);
ссылка на конфигурацию портов XP5/XP6 (порты P36-P37)

По умолчанию все порты находятся в состоянии NC (Not configured - не настроены). При изменении конфигурации порта, его тип отображается рядом с номером.

Чтобы изменить системные сетевые настройки необходимо перейти по ссылке Config

В настройках можно изменить следующие параметры

IP: адрес устройства (MAC-адрес устройства генерируется динамически на основе IP-адреса)
Pwd: пароль для доступа к устройству (максимально 3 символа)
GW: шлюз. Важно! Имеет смысл указывать только если сервер находится за пределами текущей IP-сети. Если не указан, то в поле отображается значение 255.255.255.255
SRV: IP-адрес главного сервера, на который MegaD-2561 будет отправлять сообщения о сработавших входах. После IP-адреса возможно указать порт. По умолчанию 80.
Script: скрипт на сервере, который обрабатывает сообщения от устройства и формирует ответы (максимально 15 символов).
Wdog: функция слежения за сервером. Если используется сервер (указан его IP-адрес и скрипт), то устройство примерно раз в 2 минуты проверяет его доступность и в случае, если сервер не отвечает выполняет сценарий порта, который указывается в поле Wdog. Подробнее о сценариях описано ниже.
Uptime: время работы устройства после старта


Если в поле SRV указан IP-адрес, то появляется поле SRV Type, необходимое для выбора протокола: HTTP или MQTT (бета)


Настройка портов

Каждый порт может быть сконфигурирован под определенный исполнительный модуль / задачу

Поле Type может принимать следующие значения:
IN - Вход (например, "сухой контакт, выключатели света", U-Sensor, датчик протечки, охранные датчики и т.д.)
OUT - Выход (например, включение электроприборов)
DSen - Цифровой датчик (например, датчики температуры DS18B20, температуры-влажности DHT22, считыватели iButton, Wiegand-26)
ADC - АЦП, аналого-цифровой преобразователь (например, подключение аналоговых датчиков освещенности, давления, газа и т.д.) Доступен не для всех портов.


Настройка порта типа IN (Вход)

Порт, сконфигурированный как IN (Вход) предназначен для работы с кнопками, выключателями, счетчиками импульсов, герконами, датчиками протечки, ИК-извещателями (датчиками движения), пожарными извещателеями (датчиками дыма) и другими датчиками, которые на выходе имеют два состояния: включено/выключено.

Эта конфигурация порта может применяться для портов на клемме XT2 контроллера MegaD-2561, а также для входов исполнительных модулей: MegaD-8I7O, MegaD-14-IN

После того, как порт сконфигурирован как IN (вход), на странице появляется несколько новых опций.
Рядом с номером порта отображается текущее состояние входа OFF (не активен), ON (активен, когда соединяете контакты, нажимаете на выключатель) и счетчик срабатываний входа.
Action (Act) - действие, которое необходимо произвести, в случае, когда сервер не указан или не отвечает.

Контроллер MegaD-2561 по своей сути является исполнителем указаний центральной управляющей системы (сервера). В таком режиме в сетевых настройках конфигурируется IP-адрес сервера. При каждом нажатии на кнопку, устройство вызывает скрипт на сервере, в параметрах вызова которого указывается номер сработавшего входа. Выглядит запрос примерно следующим образом:

http://192.168.0.250/megad.php?pt=2

В ответ сервер дает указания, команду на переключение выходов. Подробнее о программировании скрипта на сервере описано ниже.

Но в случае, если сервер не прописан в конфигурации или прописан, но не отвечает, тогда срабатывает Action "сценарий по умолчанию". Тогда устройство самостоятельно переключает нужные выходы в соответствии с прописанным сценарием. Например, если MegaD-2561 подключен к системе для управления освещением, то пользователь не останется без света, даже когда сервер будет отключен. При работающем сервере команды будет давать он, при неработающем MegaD-2561 сам будет включать лампочки согласно тому алгоритму, который записан в поле Action.

Формат поля Action следующий: X:Y;X:Y;X:Y
где, X - номер порта, а Y - действие
0 - выключить;
1 - включить;
2 - изменить состояние на противоположное (переключить), т.е. если было включено выключить и наоборот

Номер порта, двоеточие, действие. Таких действий может быть несколько и тогда они разделяются точкой с запятой.
"10:2" означает, что необходимо состояние порта P10 изменить на противоположное.
В поле Action через точку с запятой можно описать до пяти действий.

В сценариях контроллер поддерживает паузы.
Например: 7:1;p10;7:0 (включить выход 7, подождать 1 секунду [единица 0,1с], выключить выход 7)
Важно: паузы в полном объеме и без ограничений работают только в сценариях по умолчанию (Action).
Начиная с версии прошивки 4.16b8 паузы также поддерживаются и в командах, поступающих извне. Но в этом случае одновременно может выполняться только один сценарий, содержащий паузы. Впрочем, если используется сервер, он может самостоятельно выдерживать любые паузы, не задействуя встроенный механизм контроллера.

Команда "a". Управление всеми выходами.
Например: a:0 (выключить все выходы), a:1 (включить все выходы)

Синхронизация входа и выхода. Команды 3 и 4.
Если вход сконфигурирован как P&R (читайте об этом ниже), то команда 3 - состояние выхода соответствует состоянию входа, команда 4 - состояние выхода противоположно состоянию входа.

Простейший пример синхронизации входа и выхода. Работа кнопки звонка. При нажатии на кнопку, которая подключена на вход, включается выход, к которому подключен звонок. При отпускании кнопки, звонок выключается.

Работа с ШИМ портами. Если выход сконфигурирован как ШИМ, то вместо команды указывается конкретное значение от 0 до 255. Например: 10:200
Контроллер поддерживает команду переключения для ШИМ-порта, которая аналогична команде "2". Для этого используется модификатор *. Например: 10:*200
Эта команда означает, что при первом нажатии кнопки, значение порта ШИМ будет установлено 200, а при повторном 0.

Команды для управления диммируемыми каналами: +, -, ~
Например, требуется управлять яркостью освещения двумя кнопками. Одна кнопка будет увеличивать яркость, а другая уменьшать.
Для одной кнопки необходимо прописать Сценарий: 10:+
Для второй кнопки необходимо прописать Сценарий: 10:-
Тогда однократное нажатие на кнопку прибавления включает свет на ту величину, на которую свет был включен предыдущий раз. Соответственно однократное нажатие на кнопку убавления выключает свет.
Нажатие и удержание кнопок плавно увеличивает или уменьшает яркость.
Но если требуется обойтись только одной кнопкой, то тогда в сценарии необходимо прописать так: 10:~
Работает управление аналогичным образом. Однократное нажатие включает или выключает нагрузку. Удержание изменяет яркость в то или другую сторону.

Команды для управления диммируемыми каналами: ^, v, x

Команды "+", "-" и "~", описанные ранее, работают только в режиме удержания кнопки и только в автономном режиме, то есть будучи прописанными в поле Act.
Но что, если необходимо управлять процессом диммирования с помощью сервера?

Плавно менять яркость с помощью сервера можно тремя способами.
1. С помощью отправки серии пакетов с запросом виде cmd=yy:xxx, где yy - номер порта, а xxx - значение ШИМ (PWM).
2. С использованием опции smooth, с помощью которой можно было отправить только один пакет с заданной яркостью (например, cmd=12:255), а контроллер самостоятельно увеличивал/уменьшал яркость в зависимости от заданного в этой опции значения скорости.
3. С помощью новых команд "^", "v", "x"
Команда "^" запускает процесс увеличения яркости. Например: 12:^
Команда "v" запускает процесс уменьшения яркости. Например: 12:v
Команда "x" останавливает ранее запущенный процесс изменения яркости. Например: 12:x

В отличие от "+-~" эти команды может использовать сервер.
Таким образом, сервер не задает конечное значение яркости, а запускает процесс изменения.
Эти же команды можно использовать в сценариях. Причем в отличие от "+-~" новые команды можно комбинировать с другими. Например: 12:^;7:2

Но и это еще не все. В этой же команде можно передавать скорость изменения яркости от 1 до 9. Пример: 12:^2 (чем меньше цифра, тем быстрее происходит изменение. По умолчанию: 5)
Для того, чтобы остановить процесс изменения яркости достаточно снова выполнить одну из команд "^" или "v".

Эти команды расширяют возможности сервера для управления диммируемыми каналами.
В автономном режиме (без сервера) эти команды можно использовать с двумя кнопками, когда нажатие на одну кнопку будет изменять яркость в одну сторону (без необходимости удержания), а нажатие на вторую кнопку в другую сторону.


Важно! После срабатывания входа MegaD-2561, если прописан сервер, пытается в течение примерно 2 секунд связаться с ним. В случае неудачи, выполняется сценарий, описанный в поле Action. Также этот сценарий выполняется сразу, если сервер в сетевых настройках не прописан.

Флажок (чекбокс) справа от поля Act определяет логику работы сценария. Если он не установлен (по умолчанию), то сценарий выполняется ТОЛЬКО если сервер не прописан или недоступен. Если флажок установлен, то сценарий выполняется всегда независимо от наличия сервера. Контроллер в этом случае будет сообщать на сервер о событиях, но его ответные команды в рамках одной TCP-сессии будут проигнорированы.

Дополнительная команда "d" (default). Если сервер на факт срабатывания входа, возвращает 'd', то это дает сигнал устройству выполнить сценарий по умолчанию (Act). Эта команда дублиует поведение контроллера в случае установленного флажка Act, но в этом случае сам сервер определяет когда выполнять сценарий по умолчанию.
Таким образом можно использовать сервер вместе в частности с командами управления диммируемыми выходами. Достаточно серверу при срабатывании нужных входов вернуть устройству 'd' и он обработает все операции с клавишами выключателя. Но серверу интересно было бы знать значение ШИМ, которое получилось на выходе. Это просто. Устройство ведь может сообщать о факте отжатия клавиши (m=1). Серверу необходимо лишь опросить состояние нужного выхода при получении сигнала об отжатии клавиши. Все остальное контроллер сделаем сам.

Иногда требуется, чтобы сценарий, описанный в поле Act для какого-либо порта, выполнялся не по какому-то конкретному событию, а вызывался в произвольный момент времени запросом с сервера. В этом случае сервер должен в GET-запросе для нужного порта передать: cmd=d
Пример: 192.168.0.14/sec/?pt=1&cmd=d
В этом случае выполнится сценария для входа P1, не смотря на то, что физически вход не замыкался.
 

NetAction (Net) - В этом поле записывается URL, который MegaD-2561 вызывает независимо от того, есть сервер или его нет. Этот URL вызывается после попытки связи с сервером и после того, как отработает сценарий, описанный в поле Action. После IP-адреса можно указать порт. По умолчанию 80.

Существует несколько ситуации, когда полезно использовать эту функцию.
- Предположим, в сети работает несколько устройств типа MegaD-2561/328 или любых других, которые воспринимают команды по протоколу HTTP. В случае, когда сервера нет или он недоступен, эта функция позволяет дать команду другому устройству по сети Ethernet. Например, датчик протечки подключен к одному устройству, а клапан, перекрывающий подачу воды в дом к другому. Даже если сервер не отвечает, устройство формирует команду по сети на закрытие клапана. Эта функция позволяет в значительной степени улучшить отказоустойчивость критически важных систем.
- Есть и другое применение этой функции. В сети может быть несколько устройств, которые бы хотели получать информацию о изменении состояния входов. Например, человек звонит в дверь,  компьютер включает звонок, но одновременно с этим HTTP пакет с командой NetAction получает, к примеру, телевизор, который выводит информацию о звонке на экран. Конечно, эту команду сможет сформировать и сервер, получив информацию от MegaD-2561, но с применением NetAction это будет а) быстрее б) надежнее.
- Можно придумать и другие варианты использования NetAction, которые были бы полезны: дублирование сервера, журналирование действий и прочее. К примеру, можно в сети иметь мощный производительный сервер и маленький мини-сервер (на базе роутера), который бы дублировал основные функции большого брата в случае его недееспособности.

Флажок (чекбокс) справа от поля Net указывает, что NetAction будет вызван ТОЛЬКО при недоступности сервера. По умолчанию вызывается всегда.

Управление сценариями (Act) на другом устройстве c помощью Net

Как описано выше (команда 'd') контроллер может выполнять сценарий по умолчанию (Act) по запросу извне, а не по событию на входе.
Например, можно запустить сценарий, записанный для порта P0, сделав следующий запрос: 192.168.0.14/sec/?pt=0&cmd=d
Не секрет, что паузы поддерживаются только в сценариях, и таким нехитрым образом вызывающая сторона может добиться выполнения команд с паузами. Если, конечно, они какие-то фиксированные.
Но в качестве вызывающего устройства может выступать не только сервер, но и другой контроллер.
Так Устройство №1 по событию на его входе без участия сервера может вызвать сценарий с паузами на Устройстве №2 в случае, когда в его поле Net указано, например: 192.168.0.14/sec/?pt=0&cmd=d

 

Mode - параметр, позволяющий использовать устройство в широком спектре задач. Эта опция определяет режим входа
P - устройство реагирует (то есть отправляет сообщения на сервер, выполняет сценарии и т.д.) только при замыкании контакта/выключателя (Пример: http://192.168.0.1/megad.php?pt=4)
R - устройство реагирует только при размыкании контакта/выключателя. На сервер отправляется дополнительный параметр "m=1". (Пример: http://192.168.0.1/megad.php?pt=4&m=1)
P&R - устройство реагирует как на замыкание, так и на размыкания контакта.
С - Click Mode

В режиме Click Mode:
При однократном нажатии на выключатель на сервер передается параметр click=1
Пример: /md.php?pt=0&click=1&cnt=1
При двойном нажатии (двойной клик) на сервер передается параметр click=2
Пример: /md.php?pt=0&click=2&cnt=2
При удержатии клавиши как и в других режимах передается параметр m=2
Пример: /md.php?pt=0&m=2&cnt=3
После отпускания клавиши после длительного нажатия передается параметр m=1 (как в режиме P&R)
Пример: /md.php?pt=0&m=1&cnt=3

Есть изменения и в работе сценария по умолчанию (Action).
Теперь допустимо написать так: 7:2|8:2
Это означает, что при одинарном клике выполнится 7:2, а при двойном 8:2

Необходимо отметить, что в случае одинарного клика (в режиме "C") информация на сервер (или выполнение сценария) происходит с задержкой в 500 мс, которая требуется для фиксации двойного клика.

Обработка длительных нажатий

Часто возникает задача по-разному реагировать на длительность нажатия. Например, короткое нажатие включает/выключает свет в одной комнате, а нажатие и удержание (длительное нажатие) включает свет во всех комнатах. Не всегда удобно и легко делать такую обработку на сервере. Но на помощь приходит наше устройство. В том случае, если вход (в режиме P или P&R) удерживается более 1,5 секунд, на сервер отправляется второй запрос, в котором передается параметр m=2. Пример.

http://192.168.0.1/megad.php?pt=4
// спустя 1,5 секунды удержания клавиши выключателя
http://192.168.0.1/megad.php?pt=4&m=2

Это в значительной степени облегчает обработку таких событий на сервере.
Но если необходимости в этой функции нет (к примеру, используются обычные выключатели вместо кнопочных), и в серверном ПО функция не используется, то обязательно необходимо делать проверку на наличие параметра m=2, чтобы действия не выполнялись дважды, если пользователь случайно нажал и удерживал кнопку дольше обычного.

Флажок (чекбокс) справа от поля Mode указывает, что при наличии сервера, устройство отправляет на сервер сообщения всегда в режиме P&R, а при его отсутствии Action выполняется только в том режиме, который установлен в Mode. Данная опция не доступна для Click Mode.

Raw - параметр отключает встроенную защиту от дребезга. Когда человек нажимает на обычный выключатель или кнопку, то коммутация контактов, когда две металлические пластины внутри выключателя только касаются друг друга, бывает ненадежной. И за этот крайне небольшой промежуток времени, измеряемый миллисекундами, контроллер может зафиксировать десятки пограничных значений "включено-выключено". Этот эффект называется "дребезгом контактов" и может генерировать большое количество ложных событий. С самого начала в контроллере заложена защита от дребезга, которая позволяет выполнять сценарий по умолчанию или отправлять сообщение на сервер только тогда, когда контакт надежен и состояние входа не меняется. Однако в определенных ситуациях эта защита может мешать. Например, в случае подключения к входам устройства энкодера. При вращении ручки энкодера длительность контакта не превышает 10 миллисекунд. Это слишком короткий промежуток времени, чтобы встроенная защита от дребезга смогла распознать срабатывание входа. В этой ситуации можно отключить этот механизм и переложить его на сервер. Другой пример - подключение к контроллеру различных импульсных счетчиков, где длительность импульса не превышает 10-15 миллисекунд.

 

Настройка порта типа OUT (Выход)

Порт, сконфигурированный как OUT (Выход) предназначен для управления различными приборами: лампами, нагревателями, клапанами, кранами, насосами, вентиляторами, двигателями, внешними реле/контакторами и любыми другими приборами.

Эта конфигурация порта может применяться для выходов исполнительных модулей: MegaD-8I7O, MegaD-14-R, а также в отдельных случаях для клемм XT2, XP5, XP6 и модуля MegaD-14-IN в случае подключения к ним внешних драйверов или реле (для опытных пользователей).

Ссылки ON и OFF позволяют управлять состоянием выхода: включить, выключить.

Default state (Def): состояние порта после включения или перезагрузки устройства. В ряде случаев требуется, чтобы отдельные приборы по умолчанию были включены.

Mode: режим работы выхода. SW - обычный ключ (ВКЛ, ВЫКЛ), PWM - ШИМ (широтно-импульсная модуляция), DS2413 - двухканальный 1-wire модуль на базе микросхемы DS2413.
Режим SW (простое переключение) устанавливается для "релейных" или "симисторных" выходов модулей MegaD-8I7O и MegaD-14-R.
Режим PWM (ШИМ) предназначен для управления мощностью нагрузки, диммирования ламп, управления скоростью вращения вентилятора (для вентиляторов, способных управляться тиристорным регулятором) и других функций. Этот режим устанавливается для отдельных "симисторных" выходов модуля MegaD-8I7O-SD. PWM (ШИМ) доступен только на портах P10 (P25), P12 (P27) и P13 (P28).
Режим DS2413 предназначен для управления внешним двухканальным модулем, работающим по протоколу 1-wire. Этот режим можно установить для портов разъема XT2 или для любого порта модуля MegaD-14-IN в режиме цифрового входа (нижнее положение конфигурационного джампера). Модули на базе DS2413 можно применять в нескольких случаях: когда функциональность исполнительного модуля MegaD-8I7O избыточна и требуется всего 1-2 порта для управления нагрузками; когда требуется вынести модуль управления нагрузками на определенное расстояние (в этом случае достаточно проложить до модуля DS2413 кабель UTP).

Режим PWM

В случае, если выход настроен как PWM (ШИМ), появляется возможность задать значение от 0 до 255, соответствующее уровню выхода. 0 - нагрузка отключена, 255 - 100% мощности.

Опция Freq

В ряде случае при управлении с помощью ШИМ-сигнала сторонним оборудованием возникает необходимость использовать более низкую или более высокую частоту ШИМ.
Частоту для ШИМ-каналов можно настроить: (Norm - 3064Гц, Low - 383Гц, High - 24510Гц)
Важно! Настройка частоты ШИМ, сделанная для одного порта, распространяется и на другие порты, связанные с этим же таймером.
Таймеры и связанные с ними порты:
Таймер1: P10, P12, P13
Таймер3: P25, P27, P28
Таймер2: P11

Опция Smooth

Опция Smooth позволяет воспользоваться аппаратной возможностью устройства плавно менять значение ШИМ. При этом в поле справа это этой опции указывается скорость изменения. Значение 1 примерно равно 1 секунде при изменении значения от 0 до 255. Если указать в этом поле значение 180, то изменение от 0 до 255 будет происходить очень медленно в течение 3 минут.

Важно! В некоторых случаях серверу может потребоваться управлять скоростью включения/выключения ШИМ порта. В этом случае менять каждый раз значение Smooth, которое хранится в энергонезависимой памяти контроллера, не нужно. Достаточно в запросе передать дополнительно параметр "cnt".

Пример: http://192.168.0.14/sec/?pt=13&pwm=255&cnt=2

В этом случае незвисимо от настроек порта (поле Smooth) скорость изменения от 0 до 255 составит около 2 секунд (cnt=2). Данная функция работает только в том случае, если включена опция Smooth. Если необходимо при включенной опции Smooth управлять ШИМ портом мгновенно (без плавного изменения), тогда необходимо указать cnt=0.

Режим DS2413

Так как модуль на базе DS2413 двухканальный, то в Web-интерфейсе присутствует две пары ссылок для управления каналами A и B.
Готовые симисторные двух-канальные модули предназначены для управление двумя независимыми нагрузками 220В.
Для работы с подобными модулями в общем случае требуется мастер 1-wire сети (например, DS9490R) и соответствующее ПО (например, owfs).
MegaD-2561 может работать с модулями на базе DS2413 напрямую, то есть выполнять роль мастера.

Выходами модуля DS2413 можно управлять из встроенного Web-интерфейса или через сервер.
Для того, чтобы указать, какой именно канал переключить, в команде передается дополнительно 'A' или 'B'
Например: cmd=33B:1
Для данного порта также доступны команды группового включения/выключения 'a:1/a:0/a:2'


Настройка порта типа ADC (АЦП)

Порт, сконфигурированный как ADC (АЦП) предназначен для работы с аналоговыми датчиками: датчики освещенности, газа, давления жидкости и т.д.

Данный тип порта применяется для разъемов XP5, XP6, а также для входов исполнительного модуля MegaD-IN (нижнее положение конфигурационного джампера) для портов с функцией АЦП (P0-P5).
Выходное напряжение датчика не должно превышать 3,3В. В случае, если выходное напряжение превышает 3,3В необходимо дополнительное согласование.

В Web-интерфейсе отображается текущее значение, формируемое АЦП микроконтроллера в диапазоне от 0 до 1023. Это значение может быть считано и конвертировано в необходимые единицы измерения (согласно документации на конкретный датчик) сервером.

Контроллер MegaD-2561 способен не только отображать значение АЦП в Web-интерфейсе или передавать его по запросу сервера. Он может отслеживать значение и сообщать серверу о достижении определенного порога самостоятельно. Такая возможность позволяет избежать постоянного опроса контроллера сервером. Когда это будет необходимо, устройство само сообщит о критическом уровне. Более того, MegaD-2561 может управлять выходами в зависимости от значений подключенных датчиков. Например, может самостоятельно включать/выключать свет, если к АЦП-порту подключен датчик освещенности.
Данную функциональность обеспечивают параметры Mode, Val, Action и NetAction

Mode - режим работы АЦП порта
N (Norm)  в этом режиме значения АЦП контроллером самостоятельно не проверяются, никакие действия устройство не предпринимает
> Порт считается активным, если значение больше заданного порога. Активностью считается момент перехода через пороговое значение
< Порт считается активным, если значение меньше заданного порога. Активностью считается момент перехода через пороговое значение
<> Порт считается активным, если значение проходит порог как в меньшую, так и в большую сторону.

Val - Пороговое значение
Hst - Гистерезис (допустимое отклонение от порогового значения)
Параметры Action и NetAction и флажки (чекбоксы) полностью соответствуют тому, что описано для портов типа In (Вход). Action - сценарий по умолчанию, который выполняется устройством. NetAction - URL, который вызывается устройством.


Настройка порта типа DSen (цифровые датчики и устройства)

Порт, сконфигурированный как DSen предназначен для работы с цифровыми датчиками и устройствами, работающими по цифровым шинам.
Данный тип порта применяется для разъема XT2 контроллера MegaD-2561, а также для любых входов исполнительного модуля MegaD-IN (нижнее положение конфигурационного джампера).

В данном режиме контроллер поддерживает работу с датчиками: DHT11/DHT22 (также более известными как AM2302), датчиками DS18B20 (1W), любыми считывателями, поддерживающими протокол 1-wire (iButton, TouchMemory) и работу с DS1990A (считыватели "таблеток", а также считыватели EM-Marine/Mifare в режиме эмуляции, например, CP-Z2L/CP-Z2M, Matrix-II), любыми считыватели, поддерживающими протокол Wiegand-26 (W26).

Локальный и "удаленный" термостат с помощью DS18B20 и MegaD-328

Порт, настроенный для работы с датчиком температуры DS18B20, может не только отображать температуру или передавать ее на сервер. У него есть интересная особенность - режим термостата, когда можно управлять нагрузкой в зависимости от значения температуры. Принцип настройки аналогичен АЦП-порту. А также доступны команды "3" и "4, синхронизирующие значение температуры и состояние выхода. Например, если мы установим режим (Mode) "<>", значение температуры (Val) 25, а сценарий (Act) 7:3, то когда температура будет выше 25 градусов, выход 7 будет включен, а когда ниже, то выключен.
А кроме того, устройство может управлять не только локальным выходом, но и выходом другого устройства. Для этого в поле Net мы прописываем, например "192.168.0.15/sec/?cmd=8:3". Тогда порт 8 совершенно другого устройства будет синхронизирован со значением температуры так, словно этот порт локальный. Разумеется, доступны и другие стандартные команды: выключить - "0", включить - "1", переключить - "2".


Подключение датчиков DS18B20 шиной (несколько на один порт)

Контроллер MegaD-2561 поддерживает подключение цифровых датчиков DS18B20 шиной (то есть несколько на один порт). Для этого в Web-интерфейсе контроллера выбрать типа датчика: 1WBUS

При нажатии на ссылку Device List или через запрос вида
http://192.168.0.14/sec/?pt=32&cmd=list
Можно получить в ответ примерно следующий результат: 8aad6a070000:32.43;85a56a070000:32.43;
Результат отображается по следующему принципу: [адрес датчика]:[температура];[адрес датчика]:[температура];

Контроллер автоматически каждые 30 секунд отправляет в шину команду на конвертацию температуры.
Если шина занята конвертацией, то в ответ вернется просто "Busy"
Но можно отправить такой запрос и вручную (или автоматически при опросе с сервера), вызвав URL вида
http://192.168.0.14/sec/?pt=32&cmd=conv


MegaD-2561 в качестве контроллера доступа

Если хотя бы один порт настроен как "DSen iB" (работа со считывателями DS1990A: iButton, EM-Marine в режиме эмуляции iButton), то в системных настройках появляется новый пункт "iB Keys".

Перейдя по ссылке можно указать до 5 ключей, которые контроллер сохранит в энергонезависимую память.
Важно! Перечень ключей один для всех портов типа "iB".
"Last key" - адрес последнего ключа, который считал контроллер. Это позволяет проверить адрес ключа и при необходимости занести его в память.

В настройке порта типа "iB", к которому подключен считыватель, присутствуют стандартные поля "Action" и "NetAction"

На скриншоте типовой пример работы с электромеханическим замком: включить порт; подождать 0,2 секунды; выключить порт. Другими словами, на электромеханический замок подается импульс длительностью 0,2 секунды. Разумеется, могут быть любые другие сценарии.

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

Поля Action и NetAction, а также флажков (чекбоксы) рядом с этими полями работают также как для портов типа IN (Вход), которые описаны выше.


Работа со считывателями по протоколу Wiegand-26

В данном режиме контроллер поддерживает работу с любыми считывателями или кодовыми панелями, передающими информацию по протоколу Wiegand-26.
Важно! Большинство считывателей (или даже все) для реализации интерфейса Wiegand используют уровни 5В. Для подключения линий D0/D1 к контроллеру необходимо использование платы согласования уровней 5В-3,3В.

Для передачи данных в стандарте Wiegand используется две линии (два порта на контроллере: D0 (для передачи бита "0"), D1 (для передачи бита "1").
Необходимо выбрать тип W26 и указать режим: D0 или D1.
Затем для линии D0, необходимо указать какой порт (номер порта) используется в качестве линии D1. Таким образом создается "пара" и контроллер понимает какие порты подключены к одному считывателю.

При поднесении к считывателю ключа или наборе кода на сервер передается информация вида:
/md.php?pt=30&wg=ec532f

где в параметре "wg" содержится адрес ключа или набранный код.

Важно! Считыватели можно подключать к любым портам, но в силу особенностей работы протокола Wiegand стабильность работы многократно улучшается при подключении считывателя к портам, имеющим функцию внешнего прерывания.

Перечень портов с функцией EINT:
XT2: P30, P31, P32, P33 (4 порта)
XP2: P22, P23, P25, P27 (4 порта)


Настройка порта типа I2C

Порт, сконфигурированный как I2C предназначен для работы с цифровыми датчиками и устройствами, работающими по цифровой шине I2C.
Данный тип порта применяется для разъема XT2 контроллера MegaD-2561, а также для любых входов исполнительного модуля MegaD-IN (нижнее положение конфигурационного джампера).

Важно! Особенность прошивки контроллера MegaD-2561 заключается в том, что I2C-устройства и датчики можно подключать к любым портам, а не только к тем, у которых есть аппаратная поддержка I2C на уровне микроконтроллера.

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

В данный момент поддерживаются датчики/устройства: HTU21D, Si7021 (в выпадающем списке выбрать HTU21D), MAX44009, BH1750, TSL2591, BMP180, BMP280, BME280, SSD1306, MCP23008 (но этот перечень будет расширен).
Вот так (стандартным образом) отображается информация с датчика HTU21D.

Другие датчики отображают информацию (люксы, мм. рт. столба и прочие значения) аналогичным образом.
Для данного типа порта, также как и для остальных портов, поддерживается команда cmd=get для получения только значений от датчика.

Пример: http://192.168.0.14/sec/?pt=30&cmd=get

В этом случае датчик вернет все свои значения, которых может быть несколько.
Для запроса определенных значений следует использовать команды:

Отображение влажности (HTU21D/Si7021)
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu21d
Отображение температуры (HTU21D)
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu21d&i2c_par=1
Отображение освещенности (MAX44009)
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=max44009
Отображение освещенности (BH1750)
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=bh1750
Отображение освещенности (TSL2591)
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=tsl2591
Отображение атмосферного давления (BMP180)
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=bmp180
Отображение температуры (BMP180)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmp180&i2c_par=1
Отображение атмосферного давления (BMP280/BME280)
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=bmx280
Отображение температуры (BMP280/BME280)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmx280&i2c_par=1
Отображение влажности (BME280)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmx280&i2c_par=2

Некоторых пользователей, возможно, смущает, что для I2C-датчиков необходимо использование двух портов.
Это так, но есть определенные нюансы.

1. К двум портам SDA/SCL можно повесить несколько различных датчиков с разными адресами:
В этом случае независимо от типа выбранного устройства во встроенном Web-интерфейсе для получения данных можно вызывать URL вида:

http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=htu21d
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=max44009
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=bh1750
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=tsl2591
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=bmp180
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=bmx280

Словом, все эти датчики могут подключаться к одним и тем же портам.

2. У двух одинаковых датчиков (например, HTU21D) одинаковый адрес, поэтому их нельзя подключить к одной и той же SDA линии. Но можно использовать одну SCL линию.
Это позволяет фактически использовать для каждого датчика не 2, а 1 порт. (* На одной линии SCL не работают вместе датчики HTU21D и Si7021)

Ссылка I2C Scan позволяет просканировать шину на предмет подключенных датчиков/устройств. Эта функция выводит адреса подключенных устройств и их тип (если контроллер этот тип поддерживает).

 

MegaD-I2C-API

Существенным преимуществом контроллера является то, что возможна работа даже с теми I2C-устройствами, которые не поддерживается прошивкой. Для этого на сервере программируется программный "драйвер" для устройства, а MegaD-2561 является посредником между устройством и сервером, который берет на себя низкоуровневую работу с шиной.

pt - номер порта, к которому подключена линия SDA
scl - номер порта, к которому подключена линия SCL

i2c_cmd - команды (1 - инициализация; 2 - старт; 3 - стоп)
Пример: http://192.168.0.14/sec/?pt=35&scl=34&i2c_cmd=1

i2c_send - отправка данных в HEX-виде
Пример: http://192.168.0.14/sec/?pt=35&scl=34&i2c_send=80

i2c_read - считывание данных в HEX-виде (0 - на конце ACK; 1 - на конце NACK [конец связи])
Пример: http://192.168.0.14/sec/?pt=35&scl=34&i2c_read=0

i2c_sendp - отправка пакетных данных в HEX-виде
Пример: http://192.168.0.14/sec/?pt=35&scl=34&i2c_send=780020

Это означает, что к системе управления посредством контроллера MegaD-2561 можно подключить любые I2C-устройства. Описанное выше API позволяет без знаний в области программирования микроконтроллеров управлять I2C-устройствами из любого прикладного языка программирования: PHP, Python, Perl, Java и т.д. Другими словами, даже если контроллер "не поддерживает" какой-либо датчик, можно написать плагин для системы управления, которая используется на сервере, например, OpenHAB, ioBroker, Majordomo, Демо-интерфейс и таким образом получить доступ к I2C-датчику. Изменений в прошивке при этом не потребуется.

 

Работа с модулями на базе расширителей MCP23008/MCP23017

Контроллер позволяет работать с микросхемами-расширителями портов MCP23008 (дополнительно 8 портов) и MCP23017 (дополнительно 16 портов) и модулями, постронных на этих микросхемах.
Таким образом, подключив подобный расширитель к любому цифровому порту (клемма XT2 контроллера или любой порт MegaD-14-IN) и сконфигурировав порт как I2C/SDA можно к штатным портам контроллера получить дополнительно 8/16 портов. Важно, что тип этих дополнительных портов также конфигурируется. Порты могут быть "входами" IN и "выходами" OUT. Тип подключенной микросхемы (MCP23008, MCP23017) контроллер определяет автоматически.

Настройка порта, к которому подключена линия SDA расширителя.


В верхней части отображается состояние всех дополнительных портов расширителя (состояние всех портов также можно запросить с помощью стандартной команды "cmd=get")

Обязательно необходимо в перечне устройств выбрать Dev: MCP230XX. Интересно! На этом же порту могут висеть и другие I2C-устройства, не требующие специальной инициализации: HTU21D, MAX44009, BH1750 и т.д. Запросить их состояние можно с помощью запросов типа "?pt=30&scl=31&i2c_dev=max44009", которые описаны выше.

В поле INT необходимо указать номер порта, к которому подключена линия INT (прерывание) расширителя. Это необходимо ТОЛЬКО в том случае, если порты расширителя используются в качестве входов. Если расширитель используется только для организации дополнительных выходов (реле, симисторы), то заполнять это поле не требуется.

Когда SDA-порт настроен на работу с устройством MCP230XX, в общем списке портов появляется ссылка Ext-IO, которая ведет к настройкам и управлению расширенными портами.

На странице конфигурации расширенных портов отображается тип микросхемы, а также текущее состояние и тип портов.

Каждый расширенный порт можно сконфигурировать как вход (IN) или выход (OUT) согласно аппаратной конфигурации подключаемого модуля.
Если порт настроен как выход, им можно управлять с помощью ссылок ON и OFF.
Управлять такими портами из сценариев или с помощью команд сервера можно следующим образом.
Пример: 31e4:1
31 - номер порта, который подключен к линии SDA расширителя.
e4 - номер порта расширителя (e - сокращенно от expander/extended port)
:1 - стандартная команда включения порта

В виде HTTP GET-запроса это выглядит так: http://192.168.0.14/sec/?cmd=31e4:2
Собственно, все аналогично управлению обычными выходами за исключением добавления к номеру основного порта номера расширенного порта: eN

Важно! Если порт настроен как вход, то линия INT (прерывание) должна быть обязательна подключена к свободному порту и указана в настройках SDA порта.
Что такое линия INT? Модуль на базе расширителей MCP23008/MCP23017 по сути совершенно независимое, отдельное от основного контроллера устройство, подключенное к нему по цифровой шине I2C. Эта шина предполагает, что только "мастер" (контроллер) может инициировать связь с устройством и запросить у него какую-то информацию. Но если расширенные порты используются как входы, то без использования отдельной линии прерывания это озночало бы, что контроллеру нужно постоянно опрашивать расширитель, чтобы не пропустить срабатывание входа. Не очень надежное и правильное решение. Вот почему у модуля расширителя должен быть отдельная линия INT. Когда происходит срабатывание входа, расширитель замыкает порт, к которому подключена линия INT (прерывание), тем самым сообщая контроллеру о том, что произошло какое-то событие. Только тогда контроллер считывает состояние портов и определяет, какой именно порт сработал.

Порт, к которому подключена линия INT расширителя, должен быть настроен как вход IN в режиме "P" с обязательно установленным флажком "Raw".

Когда происходит срабатывание входа расширителя, на сервер отправляется сообщение.

?pt=22&ext0=1

где pt=22 - номер порта, к которому подключена линия INT,
ext0 - номер порта расширителя вида extN (ext0 - это порт 0, ext7 - порт 7 и т.д.)
=1 - тип срабатывания. (1 - замыкание, 0 - размыкание).

На сервер всегда отправляется информация как о замыкании, так и о размыкании портов расширителя.
Интересно, что если происходит одновременное событие по разным портам, то информация передается в одном пакете таким образом:

?pt=22&ext0=1&ext1=1

В данном случае произошло замыкание на портах 0 и 1

В целях экономии портов контроллера, при подключении модулей на базе расширителя MCP23017 (16 дополнительных портов) линии INTA и INTB следует подключить к одному входу контроллера.

Поскольку для расширенных портов нет возможности настройки сценариев (Act), сетевых сценариев (Net), различных режимов (управление диммированием, Click mode) целесообразнее использовать подобные модули для реализации выходов. В этом случае не потребуется также настройка и подключение линии INT. Однако и входы работают вполне надежно в простых задачах: герконы на окнах и дверях, различного рода извещатели, выключатели освещения и т.д.

 

Работа с OLED-дисплеями SSD1306

Контроллер MegaD-2561 на аппаратном уровне поддерживает работу с дисплеями SSD1306.

Дисплей можно подключить к ЛЮБОМУ порту.
После настройки порта как I2C/SDA и указав номер порта I2C/SCL, можно выбрать тип устройства: SSD1306

Поле Bright определяет яркость дисплея (от 2 до 254). По умолчанию: 127
После того, как хотя бы один дисплей подключен к контроллеру, у большинства портов (за исключением NC) появляется поле "Disp"

Если в этом поле указать номер порта, к которому подключен дисплей, то информация о состоянии порта будет отображаться на этом дисплее.

При изменении состояния порта, информация тут же отображается на дисплее.

В данный момент поддерживается отображение состояний для типов: IN, OUT (в режиме SW) и DSen (в режиме 1W)
К контроллеру может быть подключено несколько дисплеев. Таким образом, оперируя значением в поле Disp, можно выводить состояние разных портов на разных дисплеях.

Если для вывода информации на дисплей выбран только один порт, к которому подключен датчик DS18B20, то значение температуры на экране отображается так.

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

Иногда требуется, чтобы информация на дисплее отображалась не все время, а по какому-то событию (при срабатывании ИК-извещателя или при нажатии кнопки). Это можно реализовать с помощью стандартных сценариев. Дисплей поддерживает команды 0 - выключить и 1 - включить.

Например, необходимо сделать так, чтобы по нажатию кнопки/выключателя, дислей отобразил информацию в течение 5 секунд.
В этом случае в поле Act кнопки достаточно прописать следующий сценария (SDA-линия дисплея подключена к P35): 35:1;p50;35:0

Подобным же образом, через стандартные команды сценариев, можно управлять и яркостью дисплея (например, снижать яркость в темное время суток). Например: 35:50 (где 50 - яркость дисплея).

Вывод крупных цифр на экране дисплея можно реализовать и с помощью сервера.

http://192.168.0.14/sec/?pt=33&text=25.8:

pt=33 - порт, к которому подключена SDA-линия дисплея
text=25.8: - значение, которое нужно вывести.

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

Когда для отображения температуры используется сервер, есть только одна маленькая хитрость - форматирование отображаемого значения. Дело в том, что количество символов в значении температуры может быть разным: 0.0 (3 символа), 25.8 (4 символа), -22.7 (5 символов). Чтобы любое значение в диапазоне от -99.9 до +99.9 отображалось по центру дисплея, я написал простенький скрипт на PHP.

<?php
$my_temp = number_format("25.82", 1); // Получаем значение из базы и форматируем его
if ( strlen($my_temp) < 4 && $my_temp > 0 )
$my_temp = "s+$my_temp";
elseif (strlen($my_temp) < 4 )
$my_temp = "ss$my_temp";
elseif (strlen($my_temp) < 5 )
$my_temp = "s$my_temp";

file_get_contents("http://192.168.0.110/sec/?pt=33&text=$my_temp:");
?>

Здесь мы видим, что скрипт в зависимости от количества цифр добавляет символ "s", который означает "space" (пробел). Шрифт, который заложен в контроллер моноширинный, поэтому температура отображается всегда ровно, цифры не прыгают и не смещаются.


Планировщик заданий (cron) и поддержка часов (RTC) DS3231/DS1307

Контроллер MegaD-2561 поддерживает работу с часами реального времени (RTC).
Часы - это небольшие платки, на которых смонтирована микросхема, например, DS3231 и элемент питания.
При отсутствии питания ход часов не останавливается, благодаря батарейке. При включении MegaD-2561 устройство синхронизируется с часами. Таким образом, время в устройстве всегда актуальное.
Работа с часами реального времени используется для выполнения команд (переключения выходов) по расписанию.

Контроллер поддерживает микросхемы DS3231 и DS1307.
Целесообразно использовать DS3231 по двум причинам.
1. Питание +3,3В (есть в модуле MegaD-2561). В то время как DS1307 требует +5В.
2. DS3231 точнее.

Подключить DS3231 можно к любым двум портам. Эти часы работают по протоколу I2C, поэтому необходимо использование 2-х портов.
Важно! Контроллер в исполнении MegaD-2561-RTC поставляется уже с часами реального времени DS3231, которые подключены к внутреннему служебному разъему. Количество портов при таком подключении остается прежним.

Для настройки выполнения команд по расписанию необходимо перейти по ссылке Cron, которая находится на странице системных настроек.

Кликнув по ссылке, пользователь попадает страницу управления планировщиком.

Cur time: текущее время. В квадратных скобках указан день недели (1-7). В частности [5] - пятница.
Set time: здесь можно задать время. Формат ЧЧ:ММ:СС:ДН, то есть 15:30:00:5 - последняя цифра - день недели
SCL/SDA: порты микроконтроллера, к которым подключены часы. Здесь указывается не номер порта (как обычно), а его индекс (можно посмотреть в документации). Это сделано для того, чтобы имелась возможность подключить часы не только к разъему XT2 (зеленые клеммники внизу) и исполнительным модулям MegaD-14-IN, но и к внутреннему 16-пиновому разъему XP4.
Важно! К исполнении MegaD-2561-RTC можно оставить эти поля пустыми. Контроллер сам определит наличие платы часов, подключенных к служебному разъему XP4 и синхронизируется с ними.

T/Act: Сами задания. Их может быть 5 шт.
Немного подробнее о заданиях
T: формат ЧЧ:ММ:ДН
Примеры
14:30:0 - выполнять в 14:30 каждый день (последний 0 - означает каждый день)
08:00:3 - выполнить в 8:00 в среду (3 - среда)
03:15:3-7 - выполнять в 03:15 со среды по воскресенье включительно (3-7)

Act - стандартное поле сценария.
Важно, что здесь работают паузы (команды p). То есть, если необходимо включить, например, автополив на 30 минут, то не обязательно разносить это на два задания. Можно ограничится одним.

Важно! Замечание по поводу готовых плат DS3231. Они продаются с батарейками и аккумуляторами. В случае подключения к MegaD-2561 необходимо выбирать те платки, которые снабжены батарейкой CR2032 3V, а не аккумулятором. При питании от +3,3V аккумулятор не будет заряжаться.

Интересной особенностью является то, что часы внутри микроконтроллера, когда он работает, идут и без дополнительной платы RTC (DS3231), но в этом случае они, во-первых, всегда сбрасываются в момент выключения/включения и, во-вторых, не являются точными. Использование DS3231 гарантирует, что устройство "не забудет" время при перебоях в электроснабжении (даже если отключение электроэнергии будет очень длительным), а время будет всегда точным.

Но если вы решили использовать контроллер без часов, то синхронизировать время можно от сервера.
Достаточно отправить контроллеру запрос вида

http://192.168.0.14/sec/?cf=7&stime=10:57:06:4

Так как контроллер в момент своего включения отправляет на сервер сообщение с параметром "st=1", то сервер, получив это сообщение, может установить в контроллере правильное время.


Поддерджка протокола MQTT

Для того, чтобы связать контроллер MegaD-2561 с сервером по протоколу MQTT, необходимо выбрать опцию MQTT в поле SRV Type.
Порт 1883 пропишется автоматически.

После старта устройство соединяется с сервером и подписывается на топик: megad/14/cmd
Здесь 14 - последний байт IP адреса устройства. Если прописан MegadID, то используется он.

1486454199: New connection from 192.168.0.14 on port 1883.
1486454199: New client connected from 192.168.0.14 as megad-14 (c1, k30).
1486454199: Sending CONNACK to megad-14 (0, 0)
1486454200: Received SUBSCRIBE from megad-14
1486454200:     megad/14/cmd (QoS 0)
1486454200: megad-14 0 megad/14/cmd
1486454200: Sending SUBACK to megad-14

В данный момент при срабатывании входа устройство публикует информацию в топике: megad/14
Принцип формирования описан выше

1486454392: Received PUBLISH from megad-14 (d0, q0, r0, m0, 'megad/14', ... (22 bytes))

Передача информации происходит в JSON-формате

{"port":"0","cnt":"1"}

Соответственно "сервер", подписанный на megad/14 и получивший информацию о событии, публикует сообщение в топике megad/14/cmd
Формат этого сообщения пока прежний и соответствует стандартным командам сценариев: 7:2;8:2 (пример)

1486454501: Received PUBLISH from megad-14 (d0, q0, r0, m0, 'megad/14', ... (22 bytes))
1486454501: Sending PUBLISH to server (d0, q0, r0, m0, 'megad/14', ... (22 bytes))
1486454501: Received PUBLISH from server (d0, q0, r0, m0, 'megad/14/cmd', ... (7 bytes))
1486454501: Sending PUBLISH to megad-14 (d0, q0, r0, m0, 'megad/14/cmd', ... (7 bytes))

В качестве "брокера" можно использовать mosquitto.
В качестве "сервера" можно использовать PHP-скрипт с библиотекой phpMQTT.php

Вот грубый пример такого "сервера".

<?php
require("phpMQTT.php");
$mqtt = new phpMQTT("192.168.0.250", 1883, "server");

if(!$mqtt->connect()){
   exit(1);
}

$topics['megad/14'] = array("qos"=>0, "function"=>"procmsg");
$mqtt->subscribe($topics,0);

while($mqtt->proc()){}

$mqtt->close();

function procmsg($topic,$msg){
   global $mqtt;
      echo "Msg Recieved: ".date("r")."
Topic:{$topic}
$msg
";
      $mqtt->publish("megad/14/cmd","8:2;7:2",0);
}
?>

 

Управление техникой по ИК-каналу

Контроллер MegaD-2561 можно использовать для управления техникой по ИК каналу. Любой техникой, работающей по стандартным протоколам. Это не только телевизоры, плееры и другие бытовые приборы, но и, что наиболее важно, кондиционеры. По сути MegaD-2561 способен работать в роли Ethernet-ИК шлюза (Ethernet-IR gate), когда команды, отправляемые сервером, транслируются по сети Ethernet, кодируются контроллером и передаются по ИК-каналу. В этой статье я расскажу, как это работает.

В текущий момент (прошивка 4.16b6 или выше) функция "ИК" доступна для портов P10, P11, P12, P25, P27, P28 (разъем XP1 контроллера MegaD-2561). Для удобства подключения можно использовать исполнительный модуль MegaD-14-IN. Для того, чтобы попробовать ИК-управление достаточно взять простейший ИК-диод стоимостью 3-5 рублей, подключив его через токоограничивающий резистор непосредственно к порту, например, P12 без какого-либо дополнительного питания. Но в этом режиме максимальное расстояние от приемника до ИК-диода составит не более метра. Поэтому лучше использовать ИК-передатчик, который был разработан специально для подключения к модулям MegaD.
Подробное описание принципов работы с ИК-передатчиком.

 

Аварийное сохранение состояний выходов

Иногда возникают такие задачи, которые требуют, чтобы после аварийного выключения питания контроллер восстанавливал состояние своих выходов без участия сервера.
Очевидное на первый взгляд решение сохранять состояние портов в энергонезависимой памяти микроконтроллера при каждом переключении выходов в действительности не слишком удачное. У ячеек EEPROM есть хоть и довольно большой, но конечный ресурс записи, а в некоторых задачах порты переключаются очень часто. Значит необходимо сохранять состояние выходов только в момент выключения устройства.

Есть довольно интересный вариант решения этой задачи. Известно, что современные импульсные БП такие как MeanWell DR-(60/30/15)-12, которые часто используются для питания модулей, после отключения 220В отключаются не сразу, а примерно через секунду-полторы. Это то самое время, когда состояние портов можно сохранить. Реализация очень простая. Необходимо задействовать любой свободный вход, подключив к нему U-Sensor, который соединить с клеммами входного напряжения 220В блока питания. Когда напряжение 220В пропадет, контроллер это зафиксирует.

Настройка порта, к которому подключен датчик напряжения, может выглядеть следующим образом.

Флажок, рядом с полем сценария (Act) запускает сценарий независимо от наличия сервера.
Mode: R - запускает сценарий при размыкании порта (отключении электроэнергии)
"s" - это и есть команда сохранения состояния выходов.
При необходимости команду 's' для сохранения состояния портов может отправить и сервер.

 

Пример интеграции контроллера MegaD-2561 с сервером по протоколу HTTP

Обработка сообщений от MegaD-2561 и формирование ответов

Для того, чтобы принимать от устройства сообщения, необходим Web-сервер. Простейший Web-сервер можно написать самостоятельно. Однако значительно проще использовать уже готовый, например, Apache или lighttpd. Установка Web-сервера на Linux или Windows занимает не более нескольких минут.
Далее необходим какой-либо язык программирования. Самым очевидным в этой ситуации будет использовать PHP. Это достаточно простой язык программирования с низким порогом вхождения, в котором легко освоиться начинающим пользователям.

MegaD-2561 формирует сообщения вида http://ip-address/script?pt=n, где ip-address - адрес сервера, указанный в сетевых настройка, scipt - скрипт, указанный в сетевых настройках, а n - номер активированного порта. Например, запрос может выглядеть так http://192.168.0.250/megad.php?pt=6

Соответственно можно создать на сервере простейший скрипт megad.php

<?php
if ( $_GET['pt'] == "6" )
{
// Выполнение действий
}
?>

Собственно, вот и все программирование. Если мы получили сообщение от устройства о нажатии кнопки, подключенной к порту 6, выполняем необходимые действия.
Но мы можем сразу же сформировать ответ, где скажем MegaD-2561, какие выходы должен включить, выключить или переключить контроллер. Тогда скрипт приобретает такой вид.

<?php
if ( $_GET['pt'] == "6" )
{
   echo "7:1";
}
?>

Если сработал порт 6, включаем нагрузку, подключенную к порту 7. Формат команды описан выше и соответствует формату поля Action.
Первая цифра - номер порта
Вторая цифра после двоеточия - действие (0 - выключить, 1 - включить, 2 - переключить, изменить состояние на противоположное).
Как и в случае с полем Action, есть возможность дать команды на управление сразу нескольким портам.

echo "7:1;8:0";

Команды разделяются точкой с запятой. Порт 7 - включить, Порт 8 - выключить.


Получение состояния портов

Получить состояние порта можно с помощью любого Web-клиента, в том числе с помощью функций PHP.

URL для получения текущего состояния порта:

http://192.168.0.14/sec/?pt=4&cmd=get

где параметр pt определяет номер порта.

Можно использовать любые удобные функции: file_get_contents(), curl() или socket'ы. Например:

<?php
$state = file_get_contents('http://192.168.0.14/sec/?pt=4&cmd=get');
?>

После выполнения данной команды в переменной $state у нас будет содержаться ON (если порт находит в активном состоянии), OFF или текущее значение, если порт настроен в режим PWM (ШИМ) или ADC (АЦП).

Контроллер также позволяет вывести состояние всех своих портов по команде cmd=all

http://192.168.0.14/sec/?cmd=all

 

Управление выходами

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

http://192.168.0.14/sec/?cmd=10:1

Где формат команды (cmd) стандартный, который описан в разделе про Сценарии (Act).
Если выход настроен как PWM (ШИМ), то допускается указывать значения от 0 до 255

http://192.168.0.14/sec/?cmd=12:150

 

Краткие руководства

Актуальные версии модулей

MegaD-2561 Ver 2.0
MegaD-7I7O-R Ver 5.2+
MegaD-8I7O-S Ver 1.0
MegaD-8I7O-SD Ver 1.0
MegaD-14-IN Ver 6.2
MegaD-14-R Ver 2.0
MegaD-2-R Ver 1.0

Снятые с производства версии модулей

MegaD-2561 Ver 1.0
MegaD-7I7O-SD Ver 5.2+
MegaD-14-R Ver 1.0
MegaD-328 Ver 5.2
MegaD-328 Ver 5.0
MegaD-328 Ver 4.0

Для использования в схемах и документациях можно скачать основные изображения модулей в векторном формате

Изображения устройств в формате EPS
 

 

Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



Добавить комментарий:



Сортировка комментариев: Последние сверху | Первые сверху

2016-09-01 17:47:21 | Иван
Похоже MegaD-2561 получился отличным контроллером! А датчик шума к нему можно подключить будет?


2016-09-01 18:53:54 | Andrey_B
Иван, если вы имеете ввиду подключение аналоговых датчиков, то в этом плане MegaD-2561 ничем принципиально не отличается от MegaD-328. Подключать можно любые датчики с выходным напряжением менее 3,3В. Датчики шума - это отдельная история, в которой есть много нюансов.


2016-09-09 21:03:11 | Mixman
Правильно ли я понимаю, что к контроллеру напрямую можно подключить Считыватель карт?


2016-09-09 22:54:54 | Andrey_B
Mixman, вы какие карты имеете ввиду?


2016-09-10 10:18:01 | Mixman
Считыватель. который у Вас тут на сайте - Считыватель карт Proximity EM-Marime (накладной)


2016-09-10 11:48:11 | Andrey_B
Да, можно подключать.


2016-09-18 18:32:03 | Роман
Андрей,что за графа Wdog(в ранних версиях меги 328 точно помню было,а найти никак не могу) и какие значения вписывать?


2016-09-19 11:16:30 | Andrey_B
Роман,
В настройках устройствах поле Watchdog, в котором прописан номер порта, с описанным сценарием. (В данном случае 0, то есть P0).
Если поле пустое, функция не активна.
Устройство проверяет наличие сервера примерно раз в 2 минуты и в случае его отсутствия выполняет сценарий по умолчанию для указанного порта.


2016-09-22 11:02:13 | Роман
Андрей здравствуйте. Если покупать MegaD-2561 обязательно нужен (MegaD-7I7O-R, MegaD-7I7O-SD, MegaD-14-IN и т.д.). Или же с помощью обычный портов можно управлят реле или принимать синал от кнопку.


2016-09-22 12:24:01 | Andrey_B
Роман, для того, чтобы управлять реле или принимать сигнал от кнопки нужна электронная обвязка для "голого" порта. Вот именно эта электронная обвязка и присутствует в исполнительных модулях. "Голый" порт не может управлять реле и качественно работать с кнопкой.


2016-09-23 10:50:36 | Волков Юрий
Добрый день. А к MegaD-2561 возможно подключить ds2423 для считывания показаний ?


2016-09-23 17:27:42 | Andrey_B
Юрий, в текущий момент DS2423 не поддерживается. И есть ли смысл в этой поддержке, если MegaD может сам считать импульсы, а DS2423 уже много лет как снят с производства?


2016-09-28 16:05:43 | Руслан
Здравствуйте.
Столкнулись со следующей проблемой: на новом MegaD-2561 на прошивке 4.01b2 на ШИМ портах P10-P13 разъема XP1 возможно выставить значение по умолчанию и оно сохраняется, а на портах P25,P27,P28 разъёма ХР2 это значение всегда сбрасывается на "2". После обновления прошивки до версии 4.03.b2 этот функционал перестал работать и для разъёма ХР1. Есть ли какие-то пути решения этой проблемы?
И еще один вопрос - возможно ли получить исходники прошивки для MegaD-2561 - самостоятельные поиски не увенчались успехом?


2016-09-28 18:47:48 | Andrey_B
Руслан, прошивка 4.03b2. Проблем пока не вижу ни на разъеме XP1, ни на разъеме XP2. Значения, которые я указываю в поле Default сохраняются корректно.
Исходники прошивки доступны прямо с главной страницы сайта.


2016-09-29 10:55:26 | Руслан
Андрей, спасибо за ответ, но, вероятно я не правильно описал суть проблемы. Значение, указанное в поле Default, сохраняется, но, после перезагрузки устройства, вне зависимости от значения указанного в этом поле, полю PWM (0-255) всегда присваивается значение 2.


2016-09-29 16:49:20 | Andrey_B
Руслан, проверил у себя. Проблема не выявилась. После перезагрузки значение поля PWM такое, какое указано в Default. Проверил все PWM порты на XP1 и XP2.
Хочу только обратить ваше внимание, что максимальное значение в этом поле 255.


2016-10-03 13:15:47 | Евгений
Добрый день, планируется ли к выпуску устройство, в котором в одном компактном корпусе, как у контроллера, будет и контроллер и исполнительный модуль с небольшим количеством портов?


2016-10-03 14:22:07 | Andrey_B
Евгений, в ближайшие месяцы выпуск такого модуля не планируется.


2016-10-20 06:57:12 | Юрий
Здравствуйте, Андрей!
Я прочитал статью и у меня появился вопрос. Например я подключаю на шину несколько датчиков (Подключение датчиков DS18B20 шиной). Но не понимаю, как эти датчики использовать. Как сделать, что бы при достижении заданной температуры измеряемой среды включались/отключались порты, к которым подключены термоэлектрические приводы на батареях и гребёнках тёплого пола?


2016-10-20 11:08:01 | Andrey_B
Юрий, режим встроенного термостата работает только тогда, когда к порту подключен один датчик. В случае подключения датчиков шиной необходимо использовать "сервер" для считывания/анализа данных с датчиков.


2016-10-23 05:19:31 | Юрий
Ок! Спасибо, Андрей!


2016-10-25 15:31:40 | Денис
Здравствуйте. Не совсем понял, как у вас реализована аппаратная поддержка I2C для любого из цифровых портов? Ведь аппаратный I2C есть только на портах PD0 и PD1 и, судя по datasheet на atmega2561, функции мультиплексирования (как для ADC) для I2C не предусмотрено.


2016-10-25 17:26:02 | Andrey_B
Денис, аппаратная в данном случае означает средствами устройства без применения дополнительных программных библиотек на сервере. Реализация работы с I2C выполнена в прошивке для любого из портов.


2016-10-26 12:06:24 | Денис
Понятно, я подумал, что вы имели ввиду аппаратную реализацию I2C в самой atmega2561.


2016-11-23 16:12:44 | Nishiki
Андрей!
Вы не планировали добавить именно в Мегу функцию тахометра?
Большинство двигателей имеют встроенный тахометр.
Допустим в поле Action можно будет вписать при 1000 об включаем нагрузку а при 1100 выключаем.


2016-11-23 17:45:26 | Andrey_B
Nishiki, а чем это отличается от стандартной функции, которую мы называем "термостат"? Она доступна для АЦП-портов. Или "тахометр" предполагает учет количества импульсов в минуту?


2016-11-23 20:49:38 | Nishiki
Да предполагаю учет импульсов но не в минуту, а гораздо быстрей с интервалом 100-10 мс.
Если нужно было в минуту, то можно обойтись скриптом на php используя параметр "cnt".


2016-11-24 12:15:26 | Andrey_B
Nishiki, а в каких практических задачах это может потребоваться?


2016-11-25 01:58:15 | Nishiki
Для меня лично, самое основное это - контроль потока жидкости в контуре испарителя теплового насоса.
Еще можно контролировать поток воды в системе фильтров Clack.
Контроль оборотов всевозможных двигателей.


2016-11-25 20:59:15 | Andrey_B
Конечно, это очень специфические задачи, которые редко требуются в быту.
Реализовать такое, безусловно, можно. Вопрос в целесообразности...


2017-01-06 18:18:44 | Виктор
А можно получить разводку платы, этого девайса.


2017-01-09 15:38:32 | Maxmen
Все классно, только не могу понять- по 1-wire можно только 1 устройство подключить к контроллеру? Можно ли на 1 линию 1-wire к контроллеру подключить несколько устройств? Например, на 1 линию "повесить" 2-х канальный силовой ключ с интерфейсом 1-wire и 2 датчика S18B20? Какая максимальная длина 1-wire провода, если тянуть экранированной витой парой 6 категории?


2017-01-09 22:22:54 | Andrey_B
Maxmen, во-первых, каждый порт микроконтроллера может быть отдельной 1-wire шиной. Все 36/38 портов. Во-вторых, чисто технически нет никаких проблем подключать к одной шине несколько различных устройств. Проблема только в том, что функции порта привязаны к его настройкам. Это не позволяет в текущий момент одновременно осуществлять управление модулями DS2413 и считывание данных с DS18B20. По очереди (меняя настройки порта) можно, но не одновременно. Другой вопрос, при наличии такого количества портов, действительно ли это необходимо? Дело в том, что разделение управляющих элементов DS2413 от датчиков DS18B20 определенно имеет смысл. Если, к примеру, датчики подключены по схеме паразитного питания, то в процессе конвертации температуры никакие команды по шине 1-wire передаваться не могу. Это особенность работы 1-wire. Два ключа DS2413 тоже в данный момент подключить нельзя. То есть теоретически, конечно же, можно, но пока нет поддержки адресации. Все дело в том, что вообще связка MegaD-2561 + DS2413 - вещь достаточно специфическая в силу того, что гораздо удобнее использовать в качестве исполнительных модулей MegaD-7I7O/MegaD-14-R. DS2413 имеет смысл использовать в узких задачах, когда требуется вынести исполнительный модуль далеко от контроллера. Это редкие ситуации и пока спроса на адресное управление 1-wire модулями нет.


2017-01-10 12:10:07 | Maxmen
Андрей, спасибо. У меня задача несложная. Требуется управлять 2-мя вытяжными вентиляторами (1 с задержкой отключения, другой в ванной будет по датчику влажности срабатывать), считывать показания 2-х счетчиков воды с импульсными выходами, мониторить 2 датчик затопления и управлять 2-мя перекрывающими кранами. Хотя, наверное лучше отдельную megad поставить на все это и еще свет через нее же запустить.


2017-01-16 17:47:34 | Сергей Т
Скажите, а вы сертифицировали в России это устройство? Если да, то в кратце какие сложности были связанные с этим? Аесли нет, то почему? Спасибо


2017-01-29 23:37:00 | Дмитрий
Добры день,
Какая рабочая температура для Меги-2561 а также исполнительных блоков(хочу понять если можно ставить шкаф на улице где -20 зимой а так-же в чердачном помещении где летом +30 )

Спасибо


2017-01-30 00:44:03 | Дмитрий
наткнулся на док : "Для всех модулей рабочая температура, град. C: от 0 до +55." , так понимаю для уличной установкой не подходит.


2017-01-30 11:05:31 | Andrey_B
Дмитрий, формально температурный диапазон от 0 градусов. Производители отдельных компонентов заявили именно такой диапазон. Фактически, думаю, контроллер должен работать без каких-либо особенностей при температурах до -15.


2017-01-31 18:06:15 | Александр
Здравствуйте!
подключив на шину 1-wire 25 датчиков температуры, я могу регулировать эти зоны обоими исполнительными модулями?? Или все таки необходим отдельный сервер?
И вообще как реализовать такое?


2017-01-31 21:58:11 | Andrey_B
Александр, не понял ваш вопрос. Если вы спрашиваете, доступна ли функция термостата для порта, работающего с 1-wire шиной, то ответ - нет, в текущий момент не доступна. Если вы спрашиваете о другом, то пожалуйста сформулируйте вопрос иначе.


2017-01-31 22:26:05 | Александр
Если у вас реализовано подключение нескольких датчиков или исполнительный устройство на шину 1-wire, то как их читать или ими управлять? У меня задача управлять теплым электрическим полом на площади 100 кв.М. Нужно регулировать температуру в 25 зонах нагрева. Подскажите пожалуйста варианты.


2017-01-31 22:28:59 | Александр
И еще вопрос. Планируете ли вы добавление этого функционала?


2017-02-01 12:16:58 | Andrey_B
Александр, с помощью сервера. В качестве сервера может выступать любой ПК или мини-ПК типа raspberry Pi, перепрошитые роутеры и т.д.


2017-02-09 17:39:55 | Андрей
Добрый день! Очень интересует Ваша разработка для организации системы Умный дом. Но как минус со своей стороны считаю ограниченное количество подключаемых исполнительных модулей и не возможность установить исполнительный модуль на удалении от контролера, т.е. если мне нужно более 34 портов или установить исполнительный модуль в другом месте, то требуется приобрести дополнительный контролер.
Нашел еще одну похожую разработку - REAVISOR, где к одному контролеру можно подключить 10 исполнительных модулей, но там по 8 входов/выходов.
Возможно ли что в будущем появиться Мега на большее количество исполнительных модулей (выходов)?
Может в помощь Вам будет информация одного из участников форума по данной тематике: "Порты увеличил банально 8 сдвиговых регистров на выход по 8 каналов итого +64 выхода дискретных, в двух корпусах D6MG. Так же спаял в корпусе D6MG переходник для 4-х 16-ти портовых мультиплексоров и получил +64 входа дискретно/аналоговых. Понаследовал в своих классах функции DigitalWrite/DigitalRead/analogRead научив их работать с портами номерами выше 70 (54 дискретных на arduino + 16 аналоговых) и имея 198 портов ни в чем себе не отказываю :) Могу еще хоть три раза по столько же портов прикрутить."
Я в этой области не очень смыслю, может Вам будет понятнее.
Спасибо!


2017-02-09 19:01:08 | Andrey_B
Андрей, это вопрос скорее не технический, а философский.
Где лучше держать деньги? В одном банке с высоким процентом или в нескольких банках под более низкий процент? Чувствуете аналогию? И это только одно из обстоятельств. Компоновка конечного устройства может быть разной. И вариантов на самом деле очень много. Но и есть другая народная мудрость - про "зайцев" и про "не поймаешь". Предложенная компоновка сложилась исторически и пока она отвечает поставленным задачам. Есть у нее и плюсы и минусы. Я работаю над поддержкой и развитием выбранной компоновки. Но вы также не забывайте, что соразмерно количеству портов растут и требования к ресурсам микроконтроллера. Ему нужно больше памяти, больше производительности. А используя более оснащенные микроконтроллеры мы увеличиваем и стоимость. Грубо говоря, чудес не бывает. И здесь больше вопрос оптимального сочетания свойств.
А что касается увеличения количества исполнительных модулей, то, уверяю вас, это можно сделать не только с помощью "сдвиговых регистров". Есть и другие способы, некоторые из которых, надеюсь контроллер скоро будет поддерживать.


2017-02-10 12:00:01 | Андрей
Можно надеяться, что в будущем исполнительный модуль можно будет установить на удалении от контролера, или просто будет осуществлено увеличение количества исполнительных модулей поддерживаемых контролером?


2017-02-10 16:59:07 | Andrey_B
Андрей, существующие исполнительные модули, которые подключаются к контроллеру 34-проводным шлейфом нельзя удалять от контроллера.
Контроллер + исполнительный модуль - это фактически одно устройство, разделенное на два корпуса. Можно сделать исполнительный модуль в одном корпусе с контроллером и тогда он может располагаться везде, где есть Ethernet. Но стоимость при этом изменится мало. Я же говорил про поддержку исполнительных модулей, которые подключаются по I2C. Они могут располагаться на некотором (не очень большом) удалении. "Логическая" часть таких модулей проще и дешевле, но есть нюансы: передача данных между контроллером и исполнительным модулем будет существенно медленнее, чем в случае подключения по 34-проводному шлейфу. Для работы с выключателями это имеет значение.


2017-02-19 16:17:34 | Владимир
Подскажите почему при настройке порта в режиме 1WBUS и подключении двух термодатчиков ds18b20 выдаёт всё время разные значения, причём довольно странные:
0ad5d7020000:23.25;0ad5d7020000:23.25
0ad557020000:-0.06
0ad557020000:-0.06;0ad557020000:-0.06
0ad5d7020000:-104.62

Одно и тоже при подключении к портам Xt2 и через MegaD-14-IN

Прошивка 4.07b2


2017-02-19 21:38:30 | Andrey_B
Владимир, как подключены датчики? Проблема, скорее всего, в подключении. Напомню, 1-wire шина предполагает, что датчики висят на одной линии (кабеле) с минимальным ответвлением.


2017-02-22 07:01:31 | Владимир
Датчики подключены на шину параллельно. Один датчик сразу возле колодки устройства, потом припаян кабель 15 метров, на конце кабеля еще один датчик. Правильно ли я понимаю, что у датчика 3-й и 1-й контакт замыкаются м/у собой и подключаются на ноль, средний контакт - это плюс. Если отключить кабель, т.е. когда висит только один датчик, то показывает нормально.


2017-03-12 22:24:14 | Константин
В чем разница устройств с прошивками ver.1 и ver.2?


2017-03-13 11:54:55 | Andrey_B
Константин, прошивка для Ver 1.0 и Ver 2.0 абсолютно одинаковая. Разница в "железе" с функциональной точки зрения только в том, что в Ver 2.0 есть кнопки Reset и Erase EEPROM.


2017-04-15 20:12:14 | Виталий
Добрый день Андрей!

Девайс 2561 v2.0

Обновил прошивку такой командой:
php megad-cfg-2561.php --local-ip 192.168.0.188 --ip 192.168.0.14 -w -p sec

ответ такой был:

Connecting... OK (chip type: atmega2561)
Downloading firmware... OK
Checking firmware... OK
Erasing firmware... OK
Writing firmware... FAULT
Please firmware in recovery mode (-f -e)
OK
Restarting device... OK

после этого девайс не доступен по адресу и не пингуется
лампочка Act постоянно мигает (раньше мигала при загрузке и потом переставала)

Что делать чтобы оживить девайс?


2017-04-15 23:01:47 | Andrey_B
Виталий, прошить в режиме восстановления (ключи -f -e). И скрипт об этом написал и в статье про перепрошивку по сети об этом есть информация. При обновлении прошивки лучше сбрасывать все настройки (ключ --ee).


2017-04-16 00:39:30 | Виталий
Андрей, сделал так:

php megad-cfg-2561.php --local-ip 192.168.0.188 --ip 192.168.0.14 -w -f -e -p sec --ee

Connecting... OK (chip type: atmega2561)
Downloading firmware... OK
Checking firmware... OK
Erasing firmware... OK
Writing firmware... OK
Erasing EEPROM... OK
Restarting device... OK

и все заработало.

смутило изначально то, что по IP девайс не пинговался. я решил что и пытаться восстановить его не получится, раз уж по IP не отвечает. ан нет - есть какая-то хитрость. Расскажете в чем дело?

В любом случае - спасибо за помощь!


2017-04-16 11:06:54 | Andrey_B
Виталий, отсутствие ответа по ICMP-протоколу (ping) вовсе не означает, что устройство не может работать с другими протоколами стека TCP/IP. В коде загрузчика содержится только самое необходимое для обеспечения процесса прошивки.


2017-04-30 15:05:17 | Bonefolder
Андрей, что-нибудь получилось с датчиком освещённости MAX44009?


2017-04-30 21:14:20 | Andrey_B
Bonefolder, эти датчики у меня уже есть. В скором времени проведу сравнительное тестирование MAX44009 и TSL2591.


2017-05-23 11:19:02 | Rustam
"Подключение датчиков DS18B20 шиной (несколько на один порт)" - в каком интервале в штуках исчисляется "несколько", и максимальная длины провода с питанием или без


2017-05-23 20:12:53 | Andrey_B
Rustam, это зависит от буферов, размер которых может меняться в зависимости от версии прошивки. Ориентировочно можно подключить до 30 датчиков на один порт. Максимальную длину не определяет даже сам производитель, так как она зависит от целого ряда факторов. Фактически же на тех расстояниях, которые обычно встречаются в домашних условиях, 1-wire шина с датчиками DS18B20 нормально работает и с питанием и без. Хочу только предупредить, что в природе существует китайская разновидность DS18B20, к которой относятся и DS18B20 Waterproof. Эти датчики нормально работают с питанием, но некоторые экземпляры могут не работать на паразитном питании при любых расстояниях. Возможно, китайцы используют "отбраковку" производства.


2017-06-01 13:18:21 | Стас
на сколько ампер максимум можно подключить блок пит. и второй вопрос какая максимальная длина UTP провода от MegaD-2561 до датчика.


2017-06-01 16:09:24 | Andrey_B
Стас, не понял вопрос про блок питания. Максимальная мощность блока питания никак не ограничивается. Блок питания должен выдавать минимальный ток, требуемый для работы модулей. Если он способен выдать значительно больше - хорошо. Максимальную длину кабеля UTP для подключения датчиков заранее заявить невозможно. Это зависит от самого кабеля и от того, какие в нем жилы используются и от наличия рядом электромагнитных помех и от самого датчика и от протокола, который используется для передачи информации. В этой формуле очень много неизвестных. Могу только сказать, что в домашних условиях обычно нет таких расстояний, на которых невозможно было бы подключить датчики.
Например, датчик MAX44009 у меня дома подключен к контроллеру UTP кабелем длиной 15 метров. Сбоев нет.


2017-06-05 09:08:02 | Юрий
Здравствуйте!
Андрей, уточните, пожалуйста информацию о режиме Клик.
Режим работает только приналичии сервера или контроллер сам способен выполнять команды в режиме Клик?
У меня нет необходимости устанавливать сервер. Но я хочу управлять освещением кликами и длительными нажатиями.
Спасибо!
Хорошего дня!


2017-06-05 18:01:24 | Andrey_B
Юрий, режим Click работает и без сервера. А вот действия на длительные нажатия пока в автономные сценарии прописать нельзя.


2017-06-08 15:35:00 | Александр
Здравствуйте, Андрей.
Можно ли получить схему электрическую принципиальную MegaD-2561 Ver 2.0?


2017-06-09 06:51:32 | Юрий
Доброго дня!
Андрей, нужно ли прошить данный контроллер, что бы он общался по сети с другими девайсами или же эта функция уже включена?
Сможет ли данный девайс не только сам работать по расписанию, но и управлять таким же девайсом?
Например, для управления наружным освещением я буду использовать 2 таких контроллера. В каждом из них можно задать 5 событий по расписанию. Расширится ли расписание до 10 при использовании 2х девайсов?


2017-06-09 06:54:37 | Юрий
Андрей, планируете ли Вы научить контроллер понимать длительные нажатия?


2017-06-09 17:34:03 | Andrey_B
Юрий, передача команд другому контроллеру возможна через поле Net входа. То есть при срабатывании входа один контроллер может передать команду другому контроллеру. В заданиях по расписанию (Cron) нет поля Net, есть только поле Act (выполнение собственных сценариев).


2017-06-09 17:36:36 | Andrey_B
Юрий, контроллер понимает длинные нажатия и сообщает об этом на сервер.
Но если вы имеете ввиду выполнение отдельного сценария по факту длинного нажатия в автономном режиме, то пока такая функция не заложена, так как для этого нужно либо дополнительное поле Act, либо изменение синтаксиса текущего.


2017-06-09 21:45:33 | Стас
Доброе время суток, подскажите можно подключить датчики от arduino HR-SR501, HCSR04, светочувствительный датчик и какие датчики от arduino можно подключить. какой лучше сервопривод на коллектор теплого пола выбрать и на какие контакты цепляются.


2017-06-16 04:57:51 | Николай
Верно ли я понимаю, что на 1 порт SDA и SLC я могу подключить датчик Si7021 и дисплей SSD1306?


2017-06-16 11:35:45 | Andrey_B
Николай, да, верно.


2017-07-10 20:11:51 | Константин
Купил на тест MegaD-2561+MegaD-7I7O-R, хочу поблагодарить за разработку.
Тут много вопросов по режиму 1wbus, меня реализация режима полностью устраивает, без сервера все равно не обойтись.
Единственным вопрос для меня пока стало: как часто мега отправляет состояние портов на сервер с настройкой "srv-loop", и интересен синтаксис команды запроса меги на состояние всех портов, было бы удобно просить ее с сервера.


2017-07-12 15:19:05 | Andrey_B
Константин, функция srv-loop отправляет данные на сервер примерно раз в минуту.
Опрос состояния всех портов (пример): http://192.168.0.14/sec/?cmd=all


2017-08-18 22:14:35 | Руслан
Добрый день! Подключил к модулю 14-IN датчик htu21d. Вроде нигде не "накосячил" в проводах. Порты сконфигурировал. Положение джамперов - нижнее. Но почему-то показывает явно какую-то "охинею". Каждую секунду обновляю данные и получаю: temp:25.89/hum:56.06; temp:4294967250.4294967219/hum:4294967290.00; temp:4294967272.4294967208/hum:4294967291.4294967201; temp:62.60/hum:111.55; temp:99.80/hum:64.05; temp:4294967251.4294967249/hum:4294967290.00 и т.д. Что могло вызвать такое странное поведение? (MegaD-2561 fw: 4.13b8)


2017-08-19 11:10:10 | Andrey_B
Руслан, трудно сказать. Если датчик действительно подключен правильно и порты настроены, то такого быть не должно. На каком расстоянии находится датчик от контроллера?


2017-08-19 12:15:28 | Руслан
Датчик висит на "родных" проводах. Т.е. это примерно 37 см. Сейчас подключил к другим портам исп. модуля. Картина такая же. Может сам датчик "дурит" (к сожалению, другого экземпляра нет, чтобы проверить)?


2017-08-19 12:23:31 | Руслан
Питание для htu21d брал с клемм 14-IN. Специально измерил мультитестером - стабильно выдает 3,51 В.


2017-08-19 14:54:28 | Andrey_B
Руслан, можно попробовать заменить датчик. Напишите мне по электронной почте и пришлите пожалуйста скриншоты настроек портов, к которым подключен датчик.


2017-09-06 10:54:55 | Виталий
Добрый день. Нигде не увидел ограничения по длине проводов до кнопок. Они есть? Интересуюсь в плане наводок, т.к. пока этого параметра нет, не возможно определится с размещением Меги.


2017-09-06 14:19:38 | Andrey_B
Виталий, подобные ограничения трудно декларировать, так как это зависит не только от длины, но и от типа провода, от того как он уложен, от других внешних факторов. Но я думаю, что при установке контроллера в доме, невозможно будет упереться в такое ограничение с любым проводом.


2017-09-07 14:06:09 | Юрий
Подскажите, какой максимальный ток можно снимать с контакта +3,3В и +12В?


2017-09-07 17:07:46 | Andrey_B
Юрий, теоретически при температуре окружающего воздуха +25 градусов, по +12 можно снять до 1А, а по +3,3 до 500мА, НО! снимать столько крайне не рекомендуется из-за возможного негативного влияния на работу микроконтроллера. Поэтому безопасно снимать до 500мА по +12В и до 300мА по +3,3В.


2017-09-08 07:18:34 | Vital
Я собирался в одном из щитков освещения установить MegaD-2561 с двумя MegaD-7I7O-R. Но получается, что второй MegaD-7I7O-R может не поместиться в щитке. Поэтому вместо него можно установить один или два MegaD-2R. Но тут все равно остается вопрос - входы тоже нужны (для выключателей). Здесь написано, что обычные бинарные выключатели можно подключить к цифровым входам самого MegaD-2561. Но как?


2017-09-08 07:27:55 | Andrey_B
Vital, обычные выключатели (механические, "сухой контакт") можно подключать к цифровым входам так: один провод на землю (любую), другой на порт. Но стоит предупредить, что если стандартные входы модуля MegaD-7I7O защищены от помех и наводок специальной обвязкой, то на цифровых портах такой защиты нет. На длинных линиях (десятки метров) и если провода будут проходить рядом с силовыми теоретически возможна нестабильная работа таких входов.


2017-10-21 07:38:03 | Эрик
Есть ли электрическая развязка у выходов? Можно ли к соседним портам одного MegaD-14-R подключить нагрузку, запитанную от разных фаз?