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), подключение по Wi-Fi возможно через шлюз.
Питание: +12В DC (+/- 10%)
Потребляемый ток: 57 мА (только контроллер без учета подключаемых датчиков и исполнительных модулей)
Общее количество портов (входов/выходов): 38
Количество портов с функцией ШИМ: 7 (4 в разъеме XP1, 3 в разъеме XP2)
Количество портов с функцией АЦП: 8 (2 в модуле контроллера в разъемах XP5/XP6, 6 в разъеме XP1)
Количество подключаемых полноразмерных (по 15 портов) исполнительных модулей (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 мм)
Рабочий температурный диапазон: от -40 до +85 С


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

Поддерживаемые протоколы для управления устройством и взаимодействия с сервером: HTTP, MQTT, SNMP (скоро!)
Поддерживаемые протоколы для работы с датчиками/считывателями/ведомыми устройствами: I2C, 1-wire/TouchMemory (DS18B20/DS2401/DS1990A - считыватели), Single-wire (DHT22/DHT11), Wiegand-26 (через устройство согласования уровней 5В-3.3В)
Функция выполнения заданий по расписанию (cron)
Программирование выполнения заданий по заранее определенным условиям (program)
Поддержка часов реального времени: DS3231 (исполнение MegaD-2561-RTC), DS1307
Поддержка GSM-модулей: SIM300, SIM800L, SIM900, M590E и совместимые (возможно работа в качестве GSM-сигнализации)
Возможность перепрошивки по сети и сохранения конфигурации (используется 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, MCP23017, PCA9685, ADS1115, T6703/T67xx, MLX90614, MCP4725, MCP4018 (средствами контроллера) и любые другие (с помощью библиотеки I2C-PHP)
Поддерживаемые устройства на портах типа ADC: любые аналоговые датчики с выходным напряжением не выше 3,3В (датчики газа, освещенности) напрямую и с любым другим выходным напряжением (датчики давления жидкости) через устройство согласования.
Функция управления техникой по ИК-протоколу.
Функция управления лентами WS2818/WS2811/WS2813
Функция периодической отправки состояния всех портов на сервер (srv-loop)
Функция контроллера доступа (для считывателей, работающих по протоколу TouchMemory/1-wire, Wiegand)
Функция сброса настроек с помощью кнопки Erase EEPROM
Встроенная функция сторожевого таймера (watchdog)

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

 

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

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

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

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

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

Занимаемое место на 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 (температура / атмосферное давление / влажность), MLX90614 (бесконтактный датчик температуры до +380С), MAX44009 (освещенность), BH1750 (освещенность), TSL2591 (освещенность), SSD1306 (OLED-дисплей), MCP23008/MCP23017 (расширители портов 8/16 каналов), PCA9685 (16 ШИМ каналов), ADS1115 (внешний 4-х канальный 16/15-битный АЦП), T6703/T67xx (CO2), MCP4725 (12-битный ЦАП), MCP4018 (7-битный переменный резистор).


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

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


Разъемы 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, MCP23017, PCA9685, ADS1115, T6703/T67xx, MLX90614, MCP4725, MCP4018, считывателей ключей 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-8I7O-R


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

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

 

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-IOR

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

Порты P0-P13: настраиваемые входы. Положение конфигурационных джамперов, которые находятся под лицевой крышкой определяют функциональность порта.
Правое положение: "стандартный" вход для подключения кнопок, выключателей, охранно-пожарных датчиков, U-Sensor и т.д.
Левое положение: "цифровой" вход для подключения цифровых датчиков и устройств
В режиме "цифрового входа" к портам P0-P5 можно подключать аналоговые датчики.
Подробнее о модуле и Краткое руководство.

 

MegaD-2R
MegaD-2R
MegaD-2R (2 релейных выхода 10А/2300Вт), 2 DIN

Модуль предназначен для ситуаций, когда нет необходимости в большом количество входов и выходов.
Подключается непосредственно к рахъемам XP1/XP2.
Подробнее о модуле.

 

MegaD-2W
MegaD-2W
MegaD-2W (2 симисторных выхода 1.4А/300Вт), 2 DIN

В отличие от от MegaD-2R, модуль MegaD-2W подключается к цифровым портам и работает по цифровой шине 1-wire. Это позволяет подключать его к цифровым портам разъема XT2 контроллера (когда, например, разъемы XP1/XP2 заняты другими стандартными модулями), а также к любым другим цифровым портам (MegaD-14-IN, цифровым портам MegaD-8I7O и т.д.). Причем для подключения модуля используется только один порт. Таким образом, задействуя только один порт контроллера можно получить два канала для управления нагрузками 220В переменного тока. Более того, MegaD-2W позволяет к одному порту подключить несколько модулей шиной. Что значительно расширяет возможности контроллера.
Подробнее о модуле.


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

Задача №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) - действие, которое необходимо произвести, в случае, когда сервер не указан, не отвечает или HTTP-статус ответа отличный от "200 OK".

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

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

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

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

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

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

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

Команда "r". Повтор записанного сценария несколько раз.
Пример сценария: 7:1;p5;7:0;p5;r4
Включить порт 7; пауза 0,5с; выключить порт 7; пауза 0,5с; повторить все это с самого начала еще 4 раза
Таким образом порт включится и выключится 5 раз.
Такую команду можно использовать для более компактной записи сценария.

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

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

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

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

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

Команды для управления диммируемыми каналами: ^, 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 определяет логику работы сценария. Если он не установлен (по умолчанию), то сценарий выполняется ТОЛЬКО если сервер не прописан, недоступен или HTTP-статус отличен от 200. Если флажок установлен, то сценарий выполняется всегда независимо от наличия сервера. Контроллер в этом случае будет сообщать на сервер о событиях, но его ответные команды в рамках одной 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 будет вызван ТОЛЬКО при недоступности сервера (или когда HTTP-статус ответа отличен от 200). По умолчанию вызывается всегда.

Управление сценариями (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, чтобы действия не выполнялись дважды, если пользователь случайно нажал и удерживал кнопку дольше обычного.

Сценарии и длительное нажатие выключателя. Начиная с версии прошивки 4.29b4 контроллер позволяет указывать свой сценария для длительного нажатия.

Для режима "P"
7:2|8:2
При однократном нажатии кнопки переключится выход P7
При нажатии и удержании кнопки переключится сразу P7, а спустя полсекунды P8.

Для режима "C" (Click Mode)
7:2|8:2|9:2
Одинарный клик - переключится P7
Двойной клик - переключится P8
Удержание - переключится P9

 

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

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

Счетчик срабатываний входа

Контроллер считает количество срабатываний входа. Событие определяется настройкой типа входа. Например, в режиме "P", контроллер считает количество замыканий, но не считает количество размыканий, а в режиме "P&R" контроллер увеличивает счетчик как при замыкании входа, так и при размыкании.
Значение счетчика можно увидеть в Web-интерфейсе устройства. Также это значение передается на сервер с помощью параметра "cnt". Таким образом, используя контроллер можно получать данные с различных счетчиков (воды, газа, электроэнергии) с импульсным выходом.
Максимальное значение счетчика входа: 65535
Серверу не обязательно получать информацию при каждом срабатывании. Он может считывать значение счетчика периодически, к примеру, раз в час. После этого значения счетчика можно сбросить. Это можно сделать с помощью запроса типа: 192.168.0.14/sec/?pt=0&cnt=0

 

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

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

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

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

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

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

Group: поле для объединения портов в группы. Можно указать любой номер группы (от 0 до 99). Используется в нескольких случаях.
1. В режиме SW Link. В этом случае порты, для которых указан одинаковый номер в поле Group можно включить только по одному. Одновременно включить несколько портов нельзя.
2. В обычном режиме SW использование групп позволяет управлять всей группой одной командой типа g7:1, где 7 - номер группы. Это позволяет сократить количество команд в сценариях.

 

Режим 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'

В текущий момент контроллер поддерживает работу с модуля MegaD-2W/MM5 (и другими модулями на базе чипа DS2413) не только в режиме один порт - один модуль, но и в режиме общей шины, когда к одному порту подключается два и более модулей MegaD-2W.

У каждого модуля есть свой уникальный адрес, записанный производителем микросхемы DS2413. Адрес состоит из 7 байт: 1 байт код семейства + 6 байт уникальный идентификатор.
В новых версиях прошивки контроллера MegaD-2561 в режиме OUT/DS2413 появилась ссылка "Device List", по которой можно получить перечень адресов тех модулей, которые подключены к одному цифровому порту.
По ссылке "Device List" отображаются данные примерно так:

c6c439000000;15b039000000

Адреса разделяются точкой с запятой. Код семейства ("3А" для DS2413) не выводится. Выводится 48 битный уникальный идентификатор.
Зная этот идентификатор можно внешними GET-запросами (с сервера) управлять каналами модуля.

http://192.168.0.14/sec/?cmd=30A:1&addr=c6c439000000

Данный запрос включит канал "А" модуля с адресом "c6c439000000"
Интересная особенность. Если на шине висят несколько модулей, то если мы не укажем адрес, то включатся каналы "А" или "B" всех модулей.
Разумеется, адресное управление модулями недоступно в стандартных сценариях. Данный механизм работает только с внешними запросами.

Таким образом, появилась возможность на один цифровой порт (а это все порты клеммы XT2 контроллера; все порты MegaD-14-IN; порт P15 модулей MegaD-8I7O-R/S/SD, MegaD-14-R) повесить много дополнительных двухканальных модулей, расширив тем самым, количество доступных управляемых портов.

Еще одной интересной особенностью данного типа порта является то, что на одну шину можно повесить не только несколько модулей типа MegaD-2W или MM5, но и датчики DS18B20.
В том случае если, например, к порту подключен MegaD-2W и температурный датчик DS18B20, по клику на ссылку Device List отображается: 85a56a070000:85.00;79c439000000
85.00 - это значение датчика температуры с адресом "85a56a070000", когда конвертация температуры еще не производилась. Настройка порта OUT, поэтому контроллер сам не отправляет команду в шину датчикам на конвертацию температуры.
Чтобы контроллер отправил в шину команду на конвертацию, необходимо отправить запрос (пример): http://192.168.0.14/sec/?pt=32&cmd=conv
Теперь по клику на ссылку Device List у датчиков DS18B20 будет отображаться температура (пример): 85a56a070000:24.12;79c439000000

Таким образом на одной шине (на одном порту контроллера) могут висеть несколько DS2413 и DS18B20
Сервер должен сам давать команды на конвертацию с нужной ему периодичностью.
В "Device List" не отображается код семейства, а только 6-байтный адрес устройства, так как пока есть возможность однозначно идентифицировать датчики температуры по наличию значения температуры.


Настройка порта типа 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-2561

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

Иногда требуется изменить значение термостата внешним HTTP-запросом без перезагрузки контроллера и записи этого значения в энергонезависимую память.
Делается это командой вида: http://192.168.0.14/sec/?pt=32&misc=24
где pt=32 - номер порта, misc=24 - значение термостата.


Подключение датчиков 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

Важно! При подключении датчиков шиной крайне желательно обеспечить датчикам питание (от контроллера, +3,3В).
При подключении датчиков по схеме паразитного питания датчики могут периодически или всегда отображать температуру 85.00 градусов.


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

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

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

Так как W26 предполагает не 6, а 3 байта в качестве идентификатора ключа, то при указании "46efcb" записывается "46efcb000000".
В таблице могут содержаться как 6-и байтовые 1-wire ключи, так и 3-х байтовые W26 ключи.
Существуют считыватели, которые уже содержат в своей памяти списки разрешенных ключей. В этом случае передача адреса ключа говорит, что ключ находится в списке разрешенных. Подобные считыватели не передают адрес, если он не содержится в памяти. В такой ситуации нет смысла указывать адреса ключей в закладке iB Keys и можно просто прописать вместо адреса '*' (звездочку) - разрешать всем.

В настройке порта типа "iB" или "DSen/W26", к которому подключен считыватель, присутствуют стандартные поля "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 порта)

Начиная с версии прошивки 4.21b5 у портов типа W26/D0 есть поля Act и Net, а контроллер позволяет сохранять 3-байтовые идентификаторы ключей в закладке "iB Keys". Это позволяет использовать функцию контроллера доступа в том числе со считывателями, передающими данные по протоколу Wiegand.

 

Настройка порта типа 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, MCP23017, PCA9685, ADS1115, T6703/T67xx, MLX90614, MCP4725, MCP4018 (но этот перечень постоянно расширяется).
Вот так (стандартным образом) отображается информация с датчика 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
Отображение концентрации CO2 в воздухе (T6703/T67xx)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=t67xx
Отображение температуры окружающей среды и температуры объекта (MLX90614)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=mlx90614
Отображение температуры окружающей среды (MLX90614)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=mlx90614&i2c_par=1
Отображение температуры объекта (MLX90614)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=mlx90614&i2c_par=2
Установить напряжение примерно в районе 1.7В (i2c_par=2000, значения DAC от 0 (0В) до 4095 (~3.4В) / параметр i2c_par)
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=mcp4725&i2c_par=2000
У MCP4725 есть интересная особенность. При подаче питания микросхема сразу же выдает напряжение, сохраненное в собственной энергонезависимой памяти.
Для того, чтобы установить напряжение и одновременно записать его в память, необходимо указать параметр i2c_par2=1
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=mcp4725&i2c_par=100&i2c_par2=1
Установить значение (от 0 до 127; в примере 50) (MCP4018)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=mcp4x&i2c_par=50
Считать текущее значение (MCP4018)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=mcp4x

Некоторых пользователей, возможно, смущает, что для 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. Однако и входы работают вполне надежно в простых задачах: герконы на окнах и дверях, различного рода извещатели, выключатели освещения и т.д.

 

Работа с модулями на базе расширителя PCA9685

PCA9685 - это микросхема-расширитель портов, работающая по шине I2C и предоставляющая 16 ШИМ каналов с разрешением 12 бит (от 0 до 4095).
Для SDA-порта необходимо выбрать тип PCA9685

При выборе типа устройства PCA9685 появляется поле Freq.
Freq - частота работы ШИМ. Одна одна для всех расширенных портов.
По умолчанию частота ШИМ: 200Гц, но можно установить любую в диапазоне от 24 до 1526Гц.

Теперь у SDA-порта появляется ссылка Ext-IO

Перейдя по ссылке, можно увидеть список доступных ШИМ-каналов.

Выбрав нужный порт, можно задать уровень ШИМ (от 0 до 4095).

Также обеспечена обработка этих портов в сценариях и командах сервера.

Пример: http://192.168.0.14/sec/?cmd=10:2;31e3:4000;31e2:2000;11:2

31e3:4000 (31 - SDA-порт, к которому подключена микросхема, e3 - порт P3 расширитеря, 4000 - значение ШИМ)

Для данных портов поддерживается команда "get".

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

 

Работа с внешним АЦП ADS1115

Выбор типа устройства в поле Dev в данный момент отсутствует. Тип выбирается: ANY
Режим: 4 отдельных несимметричных входа, коэффициент усиления штатный. В этом режиме разрядность АЦП - 15 бит. Значения от 0 до 32767
Через функцию "Scan" чип находится с "адресом" 0x90.

Считывание значения канала (пример)

http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=ads1115&i2c_par=0

где i2c_par - номер канала (от 0 до 3)

 

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

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

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

Поле Bright определяет яркость дисплея (от 2 до 254). По умолчанию: 127
Флажок Clock позволяет вывести на экран часы в формате ЧЧ:ММ. Фукнция может быть полезной для пользователей RTC-версий с часами реального времени.
После того, как хотя бы один дисплей подключен к контроллеру, у большинства портов (за исключением NC) появляется поле "Disp"

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

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

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

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

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

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

Например, необходимо сделать так, чтобы по нажатию кнопки/выключателя, дислей отобразил информацию в течение 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" (пробел). Шрифт, который заложен в контроллер моноширинный, поэтому температура отображается всегда ровно, цифры не прыгают и не смещаются.

Также сервер может выводить на экране дисплея мелкий текст (подписи).

Сделать это можно так: http://192.168.0.14/sec/?pt=31&text=test&col=0&row=0
Здесь col и row - координаты (колонка, ряд), откуда выводить текст.

В прошивке заложены русские буквы. Кодовая страница CP866.
Из PHP вывести русские буквы можно примерно так:
file_get_contents("http://192.168.0.14/sec/?pt=31&text=".iconv("utf-8", "cp866", "Улица")."&col=0&row=0");

Пробелы кодируются символом "_".

Если нам нужно вывести на экран подпись к крупным цифрам, то сначала нужно отправить мелкий текст, а затем крупный.
Примерно так:
file_get_contents("http://192.168.0.14/sec/?pt=31&text=".iconv("utf-8", "cp866", "Улица_1")."&col=0&row=0");
file_get_contents("http://192.168.0.14/sec/?pt=31&text=+27.3:");

Для очистки строк целиком можно использовать специальную функцию.
Пример: http://192.168.0.14/sec/?pt=31&disp_cmd=1&row=0
где row - ряд, который нужно очистить.
 


Планировщик заданий (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)
*:/03:0 - выполняется каждые 3 минуты. Вместо значения "час" необходимо задать '*'. Последний ':0' - дни недели. 0 - каждый день. День недели учитывается. Можно задать выполнение циклической операции в определенные дни недели.
/02:15:0 - выполняется каждые 2 часа в 15 минут. То есть в 2:15; 4:15; 6:15 и т.д.

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", то сервер, получив это сообщение, может установить в контроллере правильное время.

 

Программирование условий для выполнения сценариев. Функция Program.

Контроллер MegaD-2561 может выполнять заданные команды (сценарии) в случае возникновения какого-то события: нажата кнопка, температура выросла выше определенного значения и т.д. Для этого у соответствующих портов присутствует поле "Act". Но у этого штатного механизма есть ряд ограничений: он работает для входов (IN, ADC, DSen/1W), но не работает для выходов (OUT); нельзя задать дополнительное условие для выполнение сценария (например: нажата кнопка -> включить свет, но только в том случае, если датчик освещенности не выше определенного заданного значения). Для решения этой проблемы можно использовать функцию Program, которая позволяет задавать сценарии в том числе для выходов и строить цепочки подчиненных условий. Таким образом, в каких-то не очень сложных задачах можно обойтись только средствами контроллера без использования сервера.

Ссылка на "Program" находится на странице "Config".


Всего можно задать до 10 условий типа  "если значение порта больше/меньше/равно, выполнить сценарий"
Пример: Если значение температурного датчика, который подключен к P32 равно 30.1 градусу выполнить сценарий "8:1" (включить порт P8)


Редактирование условия.
Задается номер порта, тип сравнения (больше / меньше / равно), значение, сценарий, тип условия (основное / подчиненное).

Самое интересное в данной функции - работа с подчиненными условиями.
Предположим нам необходимо, чтобы порт P7 переключился только в том случае, если нажаты одновременно обе клавишы, подключенные к разным портам P0 и P1.

Пример решения этой несложной задачи показан на скриншоте выше.
Здесь условие №0 является основным, а условие №1 подчиненным (флажок slave). В сценарии основного условия прописано "&1", что означает "AND (И) 1", то есть, проверить условие №1.
При возникновении события, связанное с портом P0 контроллер проверит состояние P1, и если оба условия соответствуют заданным в Program, выполнится сценарий "7:2".
Важно, что данный механизм работает в обе стороны - условия связаны. При нажатии на клавишу, подключенную к P1, произойдет проверка P0.

В общем списке подчиненные условия маркируются символом решетки "#".
Можно строить каскад условий, когда условие №3 подчиняется условию №2, а оно в свою очередь №1.

Также функцию Program можно использовать в тех случаях, когда не хватает размера стандартного поля Act для хранения длинного сценария.

 

MegaD-2561 в качестве GSM-сигнализации и SMS-шлюза

Контроллер MegaD-2561 может выполнять функции полноценной GSM-сигнализации в автономном режиме (без участия сервера), а также выполнять роль GSM-шлюза, принимая и отправляя SMS-сообщения по команде сервера. Для этого необходимо подключить к контроллеру GSM-модуль: SIM800L, SIM300, SIM900, M590E и другие совместимые по командам.
GSM-модуль подключается к портам P32, P33 клеммы XT2 контроллера. Пин TX модуля подключается к порту P32 (RX), а пин RX  модуля к порту P33 (TX).


После подключения GSM-модуля в настройках контроллера необходимо включить опцию "GSM" и указать номер телефона, на который будут отправляться SMS-сообщения.
Настройка SMS timeout определяет время в секундах (от 1 до 254), в течение которого не отправлять повторные SMS о срабатывании входов. Если какой-либо вход срабатывает слишком часто, то с помощью этой опции можно сократить число отправляемых сообщений.
Mode: "disarm" (наблюдение), "ARM" (охрана) - отображает текущий режим.

После того, как активирована опция GSM у всех входов появляются новая настройка.

Опция SMS определяет, необходимо ли отправлять SMS-сообщение при срабатывании входа в автономном режиме работы.
"no" - не отправлять SMS
"always" - всегда отправлять SMS независимо от режима охраны
"arm" - отправлять только в режиме "охрана" - ARM.

Для переключения режима охраны предусмотрена специальная стандартная команда "S"
"S:0" - снять с охраны (disarm)
"S:1" - поставить на охрану (ARM)
"S:2" - переключить (инвертировать) режим охраны

Управлять режимом охраны можно тремя разными способами

1. С помощью стандартных сценариев

Сценарий (например, "S:2" - переключить режим охраны) можно прописать для какой-либо кнопки, для считывателя, даже для температурного датчика. Везде, где есть поле Act. Также управлять режимом охраны можно через Cron (задания по расписанию) и Program (программирование условий).

2. С помощью сервера или другого контроллера MegaD-2561. Команда на включение (например, "cmd=S:1"), может поступить по сети Ethernet.

3. С помощью входящего SMS-сообщения. Если сообщение с текстом, например, "S:0" поступило от номера, прописанного в конфигурации, то контроллер выключит режим охраны

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

Обработка входящих SMS

Контроллер выполняет обработку входящих SMS-сообщений. В автономном режиме, когда сервер не используется и не прописан в конфигурации, контроллер обрабатывает сообщения только от того абонента, чей номер указан в настройках. Формат команд для SMS полностью соответствует тому, что используется в сценариях. Так, например, если необходимо, чтобы контроллер включил порт P7 необходимо отправить сообщение вида "7:1". В ответ контроллер пришлет "Done". Это означает, что MegaD-2561 получил и выполнил команду.
Для запроса состояния порта нужно отправить команду вида "get:n", где n - номер порта. Например, по команде "get:0" контроллер в ответном сообщении пришлет состояние порта P0. Ответ полностью идентичен тому, что устройство возвращает по запросу cmd=get через HTTP.

MegaD-2561 в качестве SMS-шлюза

Если в настройках контроллера указан сервер, то устройство становится SMS-шлюзом, которое передает все входящие SMS сообщения на сервер и отправляет SMS по команде сервера.
Входящее SMS-сообщение передается на сервер следующим образом.
/script.php?sms_phone=+79000001234&sms_text=hello
Уже сервер решает, нужно ли реагировать на сообщение от этого номера и как интерпретировать текст.

Сервер также может через контроллер отправлять произвольные сообщения. Для этого необходимо отправить запрос следующего вида.
http://192.168.0.14/sec/?sms=Alarm!&phone=+79000000000

Текст сообщения должен состоять только из символов "латинского алфавита".


Поддерджка протокола 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/n, где n - номер порта.
Например, при срабатывании P0 топик будет megad/14/0

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

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

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

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

1486454501: Received PUBLISH from megad-14 (d0, q0, r0, m0, 'megad/14/0', ... (22 bytes))
1486454501: Sending PUBLISH to server (d0, q0, r0, m0, 'megad/14/0', ... (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);
}
?>

Через протокол MQTT также можно запросить состояние порта устройства. Для этого следует отправить в топик "megad/14/cmd" (где 14 - последний байт IP-адреса) команду вида "get:10" (где 10 - номер порта). Устройство на это опубликует в топике megad/14/10 следующее: {"port":"10","value":"ON"}
В поле "value" в текущий момент содержится то, что содержалось бы в ответе на HTTP GET-запрос.
То есть, в случае, если к порту подключен датчик температуры, ответ будет примерно таким: {"port":"32","value":"temp:26.31"}

 

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

Контроллер 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.
Подробное описание принципов работы с ИК-передатчиком.

 

Управление LED-лентами на базе чипов WS2818, WS2811, WS2813

Контроллер MegaD-2561 также поддерживает работу с чипами WS2818, WS2811, WS2813 применяющихся для создания светодиодных лент, в которых можно управлять цветом каждого светодиода (или сегмента) в отдельности. Важной особенностью лент WS2818, WS2811, WS2813 является то, что для управления ими нужен всего один цифровой порт (неважно, с функцией ШИМ или без). А кроме того, нет необходимости в  использовании дополнительных драйверов или исполнительных модулей.

Управлять лентой можно с помощью простых HTTP-запросов.

Пример: включить все диоды красным цветом
http://192.168.0.14/sec/?pt=35&ws=FF0000

Поддержка подобных лент контроллером MegaD-2561 позволяет расширить возможности пользователя по созданию уникальных сценариев для гирлянд и различных подсветок, не ограничиваясь штатными алгоритмами специализированных контроллеров.
Подробное описание принципов управления лентами на базе WS2818/WS2811/WS2813

 

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

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

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

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

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

Пример: http://192.168.0.14/sec/?cmd=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

Пример управления группой (см. описании работы с группами)

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

 

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

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

MegaD-2561 Ver 2.0-2.2
MegaD-8I7O-R Ver 1.0
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-2-W Ver 1.0

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

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

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

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

О производстве

Все производство модулей находится в России.
Монтаж плат осуществляется на автоматических линиях (как SMD, так и DIP).
Закупка комплектующих осуществляется через официальных дилеров или напрямую у производителей.
При выборе комплектующих главным критерием является не цена, а надежность, стабильные характеристики, качество.
Фрезерование корпусов (в том числе отверстия для индикации) осуществляется на высокоточном станке с ЧПУ собственной сборки.
Каждый модуль проходит тщательное тестирование для выявления всех потенциальных дефектов. Отгрузка модулей с неисправностями исключена.

 

Автор: 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 подключить нагрузку, запитанную от разных фаз?


2017-11-05 16:09:57 | Vadim
Андрей, добрый день!
"Флажок (чекбокс) справа от поля Mode указывает, что при наличии сервера, устройство отправляет на сервер сообщения всегда в режиме P&R, а при его отсутствии Action выполняется только в том режиме, который установлен в Mode. Данная опция не доступна для Click Mode."
Можно расписать более однозначно? Я что-то туплю.
Если сам код не писал, то не очень понятна реализация из приведенного текста.
Русский язык позволяет трактовать фразу, как угодно:
"... а при его отсутствии..."
Отсутствии чекбокса, сервера, режима PR или сообщения?

Желательно расписать, что происходит с влюченным и выключенным чекбоксом.
Спасибо.


2017-11-05 21:35:39 | Andrey_B
Vadim, при отсутствии _сервера_.


2017-11-06 20:38:58 | Vadim
Андрей,
К сожалению, смысл написанного смог восстановить только с применением Wireshark.
Предлагаю изложить пункт в следующей редакции:

Устройство отправляет на сервер дополнительную информацию о факте размыкания контакта (...?pt=&m=1&cnt=ZZ).
Пример:
Mode P, CheckBox ON:
...md1.php?pt=8&cnt=10
...md1.php?pt=8&m=2&cnt=10 ( при долгом нажатии)
...md1.php?pt=8&m=1&cnt=10

Mode P, CheckBox OFF:
...md1.php?pt=8&cnt=3
...md1.php?pt=8&m=2&cnt=3 ( при долгом нажатии)


2017-11-24 02:21:24 | minimax
Андрей, здравствуйте.
Недавно нашел устройство, которое очень напомнило мне то, что я давно хотел - я хотел иметь радио-брелки для управления мегами, но хотел различать конкретные брелки и кнопки на них. Сейчас я использую roiscok но там просто реле и различить два брелка можно только сделав два приемника и используя два порта. Я нашел устройство /arsenal-sib.ru/seria_lider/pribory/lider_ver4/ которое умеет работать по протоколу touch memory и различать семь нажатий на одном брелке и брелки между собой. Я уже собрался воплотить свою мечту, но ничего не получилось потому, что подключенный как touch memory приемник генерил уникальные ключи на каждое нажатие кнопки брелка :) я в печали. Что может быть не так? Очень хочется использовать такую возможность. Тем более, что производитель утверждает, что это очень частый кейс использования их брелков - как удаленных карточек touch memory.


2017-11-24 12:34:24 | Andrey_B
minimax, не имея данного прибора сложно что-то сказать. Возможно, есть какие-то особенности в части реализации протокола 1-wire.


2017-11-24 12:58:02 | minimax
Да я собственно об этом и говорю :). Не хотите потестить? там цена вопроса - 1500р или меньше. Если конечо Вы в этом смысл видите. Мне кажется функциональность появляется весьма богатая, гораздо круче чем карточки. думаю можно для начала просто с их поддеркой поговорить - там есть люди вполне в теме.


2017-11-24 18:21:18 | minimax
Андрей, не надо покупать брелки. Там в комплекте с приемником один идет. Я еще сам посмотрю на выходных. Может пойму что там не так.


2017-11-24 18:57:40 | Andrey_B
minimax, включу в планы. Кстати, Лидер-4 с двумя брелками без доставки - 2880 руб в их Интернет-магазине.


2017-11-25 13:48:55 | Константин
Андрей, здравствуйте!
В меге есть реализация протолокла SNMP?


2017-11-25 15:56:28 | Andrey_B
Константин, реализации SNMP в устройстве нет. Но при наличии всей заложенной функциональности, зачем нужна эта реализация?


2017-12-08 23:50:22 | Vadim
Андрей,
Кодонаборник ironLogic Matrix-IV EHT Keys Metal
https:/ironlogic.ru/il.nsf/htm/ru_matrixmkeys
будет работать по iB с контроллером по аналогии с картами?
Спасибо.


2017-12-09 10:10:59 | Andrey_B
Vadim, да будет, только мне не удалось получить данные по интерфейсу TM, а вот по Wiegand все прекрасно. Кроме того, эта модель интересна тем, что умеет отправлять данные в контроллер не по одной набранной цифре, а весь код целиком. То есть, пользователь ввел 123456 (6 знаков), нажал ENT и данные ушли в контроллер.
Если пользователь ввел 1234+ENT, то прилетит 001234
"0" кодируется как "а", чтобы отличить эту ситуацию от той, когда в коде меньше 6 цифр. Например, при вводе 6004+ENT прилетит 006aa4.


2017-12-09 20:45:13 | Vadim
Андрей,
А для W26 нельзя сделать список ключей в контроллере, по аналогии с IB?


2017-12-10 11:28:50 | Andrey_B
Vadim, теоретически, наверное, можно. Подумаю.


2018-02-17 11:26:08 | Павел
Андрей, приветствую. Когда будет третья версия? на новых ардуино? или может быть интел или самсунг?


2018-02-17 12:28:13 | Andrey_B
Павел, пока не могу сказать ничего определенного. Потенциал atmega2561 еще не раскрыт полностью.


2018-02-20 18:37:43 | Павел
а это именно 2561 или же все таки 2560 рев3 ??


2018-02-20 23:21:44 | Павел
к чему вопрос - к модулю noolite приёмо-передатчика МТRF-64/ хочется подружить его напрямую... вот и все ))))


2018-02-21 10:13:38 | Andrey_B
Павел, контроллер использует чип производства Atmel/Microchip atmega2561.
"2560 рев3" - это не индекс микроконтроллера, это изделие Arduino 2560 R3, в котором используется чип atmega2560.
MegaD-2561 - это не Arduino, хотя аппаратно похож на него.
Насчет MTRF-64 - нужно разобраться. Наверное, можно как-то подружить.


2018-03-18 06:56:45 | Артем
Скажите пожалуйста, нету возможности делать Backup с настройками?


2018-03-18 10:47:20 | Andrey_B
Артем, сохранить конфигурацию контроллера можно с помощью скрипта megad-cfg-2561.php


2018-03-21 10:04:26 | Евгений
Доброго времени суток, Андрей!

Подскажи пожалуйста какой контроллер используется
ATmega2561-16AU или ATmega2561V-8AU


2018-03-21 11:53:10 | Andrey_B
Евгений, ATmega2561-16AU


2018-03-26 09:24:37 | Виктор
Здравствуйте Андрей!.
Возник такой вопрос. в каждую комнату у меня заходит витая пара 8 жил.
в комнате планируется:
1. подключение датчика температуры DS18B20;
2. Датчик открывания окон геркон с функцией при срабатывании
подключается электронная метка DS2401;
3. Датчик движения Астра;
4. один + провод питание на 5В;
5. один + провод питание на 12В.
Вопрос в следующем хватит ли мне этих 8 жил или нет?
Как я думаю:
DS18B20 - 2 жилы и одна одна общая жила это питание + 5В;
DS2401 - 2 жилы и одна общая жила это питание + 5В;
Датчик движения - 2 жилы и одна общая жила это питание + 12В;

Меня смущает питание все таки есть + и -, а я использую только +.


2018-03-26 09:52:51 | Виктор
Здравствуйте Andrey_B.
Второй вопрос, который у меня возникает это по поводу сигнализации?
У меня планируется на каждое окно установка геркона с электронной меткой DS2401,
окна разбиты на две группы и занимать два входа на MegaD-14-IN при замыкании геркона
в сети будет видна только электронная метка на сработавшем герконе
и при опросе выдаст именно ее. Таким образом я буду информирован о месте взлома.
Правильно ли я думаю по данному вопросу?


2018-03-26 12:16:03 | Andrey_B
Виктор, все земли (минусы питания) в любом случае нужно объединять, чтобы все это работало.


2018-03-26 12:20:28 | Andrey_B
Виктор, да, правильно. Порт можно настроить как iB, тогда контроллер сразу же сообщит на сервер, как только метка подключится к шине.
А с помощью команды "cmd=list" можно получать информацию обо всех метках, которые присутствуют на шине. Скорее не для охраны, а для контроля, какие окна в текущий момент открыты.


2018-03-26 19:12:05 | Виктор
Так 8 жил мне все-таки хватит? На вопрос 2018-03-26 09:24:37


2018-03-29 09:44:40 | Владимирович Петровский
В списке устройств подключаемых к MegaD-2561 отсутствует MegaD-7I7O-R, значит ли это что оно не подходит


2018-03-29 10:53:55 | Andrey_B
Любые стандартные исполнительные модули MegaD подходят, в том числе MegaD-7I7O.


2018-03-30 09:51:37 | Виктор
Формат поля Action следующий: X:Y;X:Y;X:Y
где, X - номер порта, а Y - действие
Не могу разобраться, если к MegaD-2561 подключено 2 блока MegaD-14-IN к порту XP-1
и исполнительный блок MegaD-14-R к порту XP-2.
Каким образом указать номер порта, если он находится на другом исполнительном блоке
подключенном например к XP-2, или вообще порт находится на исполнительном блоке
подключенном к другой MegaD-2561. Прошу показать для примера эти два варианта команд в поле Act,
без участия сервера. Спасибо.


2018-03-30 11:08:37 | Andrey_B
Виктор, в поле Act прописываются только локальные порты.
Нумерация портов "сквозная".
0-14 - это XP1
15-29 - это XP2
Для работы с удаленным портами предназначено поле Net.


2018-04-03 16:20:15 | Валерий
Здравствуйте Андрей!
Могу я в одном кабеле длиной 10 метров пустить 220В освещения и 12В на кнопку для вкл/выкл света? Будет ли стабильно работать MegaD-8I7O-SD?
Согласно п.2.1.16 ПУЭ это запрещено. Спасибо.


2018-04-04 11:19:47 | Andrey_B
Валерий, смотря какой кабель. И 12В - это что, подключение к стандартному входу? Если кабель предназначен для 220В и токи не очень большие (а на освещении они обычно не бывают очень большими), то так в принципе делать можно. Сбоев не будет.


2018-04-04 11:29:43 | Валерий
Да, к стандартному входу. Кабель ВВГнг 4х1.5 Попробую подключить так, а то не хочется прокладывать новый кабель. Спасибо.


2018-04-07 20:09:27 | Дмитрий А
А сколько в ней портов для 220В кабелей


2018-04-08 07:16:28 | Артем
Андрей здравствуйте. Можно ли корректировать температуру датчиков 18b20 на megaD 2561 без участия сервера?


2018-04-08 11:14:22 | Andrey_B
Дмитрий А, "сколько в ней портов для 220В кабелей" - в ней - это в ком? В системе MegaD есть различные модули под различные задачи.
Например MegaD-2561 + два MegaD-14-R = это 28 релейных портов для коммутации в том числе 220В. Могут быть и другие конфигурации. Да и контроллеров может быть несколько.


2018-04-08 11:15:05 | Andrey_B
Артем, а зачем температуру корректировать?


2018-04-08 16:28:35 | Артем
По эталонному термометру, дачик ds18b20 завышает.


2018-04-08 16:47:35 | Andrey_B
Во-первых, что это за "эталонный" термометр? Из музея международной системы Си? Во-вторых, даже если какой-то конкретный экземпляр DS18B20 дает в определенном диапазоне температур значения, слегка отличные от некоего прибора, что с того?
Если вы разместите рядом несколько разных "эталонных" термометров с очень большой долей вероятности все они будут показывать слегка различные значения. И я не вижу в этом ничего трагического.


2018-04-08 17:16:03 | Максим М
Сколько максимум модулей можно подключить на MegaD 2561?


2018-04-08 17:18:05 | Артем
Эталонный термометр, поверенный, в силу своей работы по нему калибруем приборы ( температуру ), занесенный в гос реестр. По нему сравнивал температуру и разница с разными датчиками ds18b20 имеет разбег 1-2 градуса. Считаю что это критично если применять в качестве термостата или в самогоноворении. P.s измерения проводились при температуре +50 градусов, не в домашних условиях.


2018-04-09 11:48:13 | Andrey_B
Максим М, это зависит от типа модуля. Если это "стандартный" исполнительный модуль для разъемов XP1/XP2, то все можно подключить соответственно два таких модуля. Если это модули для цифровых шин, такие как MegaD-2W, то теоретически их может быть много - пару сотен. Кроме того, самих контроллеров может быть много. Вовсе не обязательно ограничиваться одним, если есть необходимость в большом количестве портов.


2018-04-09 11:51:45 | Andrey_B
Артем, если вы используете встроенную в контроллер функцию термостата без сервера и вы по тем или иным причинам считаете, что DS18B20 завышает температуру, то вам никто не мешает устанавливать пороговое значение в контроллере выше на величину превышения. Скажем, не 50, а 51-52. Это ровно та же "коррекция".


2018-04-18 11:18:20 | DMITRIY
режим термостата работает с датчиками DHT22?


2018-04-18 12:58:26 | DMITRIY
Если штатный режим не работает, можно ли задействовать режим сценариев ?


2018-04-18 13:18:36 | Andrey_B
DMITRIY, встроенный автономный "термостат" работает в данный момент только с датчиками DS18B20 и АЦП-портами. А что такое "режим сценариев"?


2018-04-18 13:20:24 | DMITRIY
Андрей, имеется ввиду Программирование условий для выполнения сценариев. Функция Program. В нем также нельзя задать аналог режима термостата?


2018-04-18 13:21:57 | DMITRIY
Хотелось бы иметь такой режим и для более универсального датчика, где есть еще влажность


2018-04-18 13:27:12 | DMITRIY
Получается придется даласовский датчик доукомплектовывать датчиком DHT22, что само по себе очень странно. Может есть такая возможность включить термостат и для DHT?


2018-04-18 13:35:23 | Andrey_B
DMITRIY, Датчики типа DHT22 (особенно в исполнении AM2302) не отличаются надежностью. Я бы не стал такие использовать у себя. Я использую преимущественно HTU21D, которые хорошо себя зарекомендовали. Но для I2C-датчиков по целому ряду причин встроенная функция термостата недоступна.
При использовании же сервера возможно все.


2018-04-18 13:39:57 | DMITRIY
HTU21D ведь тоже получается нельзя использовать в термостате? Режим программирования program недоступен для этих датчиков?


2018-04-18 13:43:34 | DMITRIY
Причем я так понял, что даласовский датчик в таком случае должен быть подключен на один порт в единсвенном лице. Режим работы шиной тоже не работает с термостатом?


2018-04-18 13:57:22 | Andrey_B
DMITRIY, в предыдущем сообщении я писал: "для I2C-датчиков по целому ряду причин встроенная функция термостата недоступна." Program не исключение. Да, для DS18B20 функция термостата доступна только в том случае, если подключен один датчик. Ведь иначе контроллер не знает, какой датчик на шине следует опрашивать. Вот для всего этого нужен сервер, который можно запрограммировать как угодно. Контроллер отдаст серверу любые данные в лучшем виде и четко выполнит все его команды.


2018-04-18 14:15:37 | DMITRIY
Андрей, в том и суть, что задача контроллера продолжать работу автономно. Что за причины (кроме надежности), по которым использование других датчиков нецесообразно? Функция "термостата" используется много где, не только на контроле температуры, ее можно использовать на освещение, набор воды в бак и тд. Хотелось бы открыть данную возможность для остальных вариантов использования. Что же касается использования даласов на шине, разве нельзя конкретно указать, с каким датчиком общаться? С точки зрения программирования имеется какая-то не решенная задача?


2018-04-18 14:29:09 | DMITRIY
Хорошо, выкинули мы все DHT и поставили даласы. Контролер megad управляет шаровыми кранами коллектора теплого пола по 2м датчикам температуры (воздуха и пола). Как организовать на уровне контроллера (автономно без сервера) управление по 2м датчикам?


2018-04-18 19:58:10 | Andrey_B
DMITRIY, я думаю эти вопросы лучше обсудить на нашем форуме.


2018-05-03 21:47:53 | Николай
Проясните пожалуйста:
Настройка порта типа IN (Вход)
Mode - параметр, позволяющий использовать устройство в широком спектре задач. Эта опция определяет режим входа
С - 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

А при удержании как указать действие по умолчанию?


2018-05-04 10:47:18 | Andrey_B
Николай, на текущий момент Act на удержание в контроллере прописать нельзя. Но если есть сервер, то это событие легко можно принять и обработать.


2018-05-07 09:03:57 | Юрий
Здравствуйте, Андрей!
Я не могу разобраться с новой функцией Program в меню Config.
Описан случай, что бы сценарий срабатывал при одновременно нажатых клавишах, а мне нужно сделать, что б датчик движения не мог включать и отключить свет, пока он включен на выключателе. Никак не могу понять, как это сделать. Уж по всякому пробовал.
Спасибо!


2018-05-07 09:10:03 | Юрий
Потенциально я могу датчик подключить паралельно группе освещения. Тогда он не будет включать и выключать свет, пока выключатель включен.
Но есть нюанс. У меня на выключателе несколько групп, а на датчике только одна и не хочется, что б ночью зажигался весь свет. В то-же время не хочется, что б датчик вносил свои коррективы, пока включен свет.


2018-05-08 16:28:00 | Andrey_B
Юрий, выключатель кнопка или обычный?


2018-05-10 10:16:17 | Юрий
Да, обычный выключатель с фиксацией.


2018-05-10 17:30:07 | Andrey_B
Юрий, тогда нужно убрать сценарий (Act) из конфигурации порта, к которому подключен датчик движения и прописать правила в Program
0. Если порт датчика = 0 (датчик сработал), то смотрим подчиненное правило 1
#1. Если порт выключателя = 0 => включаем свет (правило slave)
2. Если порт датчика = 0 (датчик отключился), то смотрим подчиненное правило 3
#3. Если порт выключателя = 0 => выключаем свет (правило slave)
Прошивка должна быть не ниже 4.25b4, а желательно последняя.
Дальнейшее обсуждение, если потребуется, целесообразно вести не в комментариях, а по электронной почте или на форуме.


2018-06-04 00:48:11 | Александр
Добрый день!
Допустимо ли расположение двух исполнительных модулей (MegaD-8I7O и/или MegaD-14 IN в различных комбинациях) не на одной DIN-рейке рядом с контроллером MegaD-2561, как в описании, а в соседних рядах (выше или ниже) с подключением обоих устройств длинными 34-пиновыми кабелями из комплекта поставки?


2018-06-04 09:13:29 | Andrey_B
Александр, конечно, допустимо.


2018-07-08 18:58:34 | Артем
Здравствуйте. Подскажите пожалуйста как на megad2561 сделать вольтметр 3х канальный с выводом на OLED дисплей.


2018-08-17 22:53:43 | Андрей
Здравствуйте! В режиме P&R на сервер приходят только нажатия кнопок, а отжатия с m=1 приходят только после выдержки нажатия примерно 1,5 секунд после нажатия или уже после m=2. То есть если клацать быстро, то приходят только нажатия с cnt через один (без отжатий). Так же нажатия приходят на сервер иногда с легкой задержкой до секунды. Это нормально? Какая обычно скорость передачи команд серверу?


2018-08-18 01:14:58 | Андрей
Оказалось нужно обязательно слать ответ сразу какой-то на пришедший датчик. Без этого мега считала что сервер не отвечает и ждала.


2018-08-18 10:32:05 | Andrey_B
Андрей, не обязательно давать какой-то конкретный ответ. Необходимо просто корректно завершить текущую TCP-сессию. В PHP, например, это можно сделать с помощью вызова функции flush(). Иначе сессия остается открытой и контроллер предполагает, что сервер что-то будет отвечать, поэтому не открывает новую сессию по событию "отжатия".


2018-08-26 09:51:23 | Алексей
Здравствуйте Андрей!
Необходимо контролировать температуру и влажность в нескольких помещениях удаленных от дома от 2 до 7 метров. Будет ли работать I2C корректно на больших расстояниях? Возможно ли осуществлять вывод на ЖК дисплей, а не на компьютер? Так как для пожилого человека это было бы удобнее.
Спасибо!


2018-08-27 11:54:19 | Andrey_B
Алексей, датчики с интерфейсом I2C будут работать на расстоянии 2-7 метров от контроллера. С помощью сервера можно вывести информацию на дисплеи SSD1306, которые поддерживает контроллер. Но они достаточно мелкие. Альтернатива - использование недорогих планшетов, которые будут выполнять роль дисплеев, и применение Web-интерфейса.


2018-09-02 11:34:25 | Сергей
Андрей, добрый день!
Скажите пожалуйста, возможно ли использование с MegaD модулей управления освещением на базе ds2406, в частности с сайта radioseti (/radioseti.ru/index.php?route=product/product&path=63_64&product_id=138)


2018-09-02 12:44:06 | Andrey_B
Сергей, в текущий момент нет. В текущий момент MegaD-2561 поддерживает только микросхему DS2413. Такие модули есть и у "радиосетей" и у меня.


2018-09-07 15:17:27 | Сергей
Андрей, добрый день! Подскажите пожалуйста, есть ли у вас релейные исполнительные модули, позволяющие коммутировать нагрузку 1кВт (нагреватель)? Использую реле, поскольку нет нормального места для радиаторов на симисторы, не хочется ими стенку изнутри греть. К сожалению у меня не получится использовать исполнительные блоки MegaD поскольку в доме уже проложена сеть 1-wire и силовая проводка проведена в каждой комнате от местной распаячной коробки. Третий год у меня работают самодельные блоки с развязкой на КР293КП1Б по схеме, которая раньше была опубликована на сайте benuks, но уже дважды по непонятным причинам эта микросхема выходила из строя. Это настораживает и хочется поставить что-то сделанное профессионально а не с помощью ЛУТ. Спасибо!


2018-09-07 18:24:31 | Andrey_B
Сергей, не совсем понятно. Если вы спрашиваете именно про 1-wire модули, то в текущий момент модули с реле мы не производим. Только с симисторами. Может быть, такие модули появятся в будущем.


2018-09-10 09:39:06 | Вадим
Добрый день.
Планирую купить несколько головных блоков 2561. Достаточно ли будет одного головного блока с RTC, чтобы им по расписанию управлять всеми устройствами в сети?


2018-09-11 11:10:52 | Andrey_B
Вадим, если в системе будет сервер, то RTC модули вообще не обязательны. Если в системе не будет сервера и модули будут работать автономно, то одного RTC для управления разными контроллерами будет недостаточно. Контроллер по расписанию не может давать команды другим контроллерам. Функция Net (управление другими контроллерами) работает только со входами (IN), но не с функцией cron.


2018-09-12 13:40:31 | Вадим
Андрей, спасибо за ответ.
Может быть подскажите, какие типичные (а может и специфичные) задачи по использованию крона?
Я планировал взять из разряда "чтобы было", но так я товарищ неопытный, может не догадываюсь о каких-то прелестях его использования.


2018-09-13 10:02:15 | Andrey_B
Вадим, cron - это выполнение заданий по расписанию. Все, что угодно. Освещение, отопление, вентиляция, полив, промывка фильтров и т.д. Если есть сервер, то встроенный в контроллер планировщик не нужен. У сервера гораздо больше возможностей, чтобы выполнять задания по расписанию. Но если сервера нет, то можно использовать встроенный в контроллер.


2018-09-13 13:54:52 | Вадим
Благодарю. Сервер планирую, но хочется жизненно важные функции(логику) продублировать в штатной прошивке, на случай если сервер по каким-то причинам будет недоступен.


2018-09-17 13:30:55 | Артем
Андрей здравствуйте. Подскажите пожалуйста, Опция Smooth меняет 0..255 то есть плавно, а в обратную сторону тоже плавно или сразу 0 , если используется сервер?


2018-09-20 10:22:51 | Andrey_B
Артем, конечно, Smooth работает в обе стороны.


2018-09-24 15:18:26 | Сергей
Добрый день. Насколько я смог найти информацию - несколько MCP23008/MCP23017 нельзя вешать на один порт SDA. Если я не ошибаюсь, то возможно использование одного SLC. А возможно ли использование одного порта INT для нескольких микросхем MCP23008/MCP23017 (например для двух MCP23017)?


2018-09-24 15:30:40 | sorgchik
Подскажите пожалуйста, можно ли с megad-14-i использовать
1. обычные выключатели
2. выключатели с подсветкой
3. есть ли в этом какие либо ограничения по сравнению с кнопками?


2018-09-26 08:10:05 | Andrey_B
Сергей, для двух микросхем MCP23008/MCP23017 использовать один порт INT нельзя.


2018-09-26 12:28:55 | Ruslan
to sorgchik
1. Обычные выключатели использовать, конечно, можно.
2. Выключатели с подсветкой, полагаю, использовать тоже можно, но подсветка работать не будет, т.к. для нее требуется наличие 220 В. Для себя решил делать подсветку в некоторых выключателях-кнопках путем встраивания в рамку выключателя светодиода, запитываемого с выхода Меги.
3. Особых ограничений нет, но, во-первых, использовать в УД обычные выключатели просто неудобно, т.к. положение выключателя ничего не скажет нам о том, включен свет или выключен (поскольку свет может быть включен/выключен со смартфона/планшета или по команде сервера как "забытый" или по факту детекции движения в помещении). Во-вторых, с обычными выключателями теряется функционал длительных нажатий, а также сложно и неудобно реализовывать функционал множественных нажатий.


2018-09-27 16:39:26 | Артем
Андрей здравствуйте. Делаю монтаж контроллеров и модулей. Так получается, что снизу megad2561 где разъем ХТ2 идет кабель от модуля 8170-s к этому разьему подключены витая пара, скажите пожалуйста, это критично к сетевым наводкам? И какие рекомендации можете дать при монтаже слаботочных кабелей, витых пар и кабелей (не силы где килловаты), а 220 вольт , котрые запитывают разную мелочь. Сила в отдельном шкафу.


2018-09-27 20:49:52 | Andrey_B
Артем, силовые провода с небольшими токами и бытовыми потребителями (особенно освещение) не должны оказывать заметного влияния на работу слаботочных цепей. У меня во многих местах провода цифровых шин и Ethernet соседствуют с 220В. Никаких проблем не отмечено.


2018-10-08 14:01:08 | Дмитрий
Андрей здравствуйте. Объясните пожалуйста что такое в
ver 4.29 beta8
- поддержка групп для PWM-портов?


2018-10-08 15:58:44 | Andrey_B
Дмитрий, работа групп для выходов типа "SW" описана в данной статье.
А что касается PWM, то это обсуждалось на форуме. Вот здесь.


2018-10-10 14:00:17 | Andrey
Андрей, добрый день. Настраиваю порт 13 IN (Act 10:~). Порт 10 (PWM, Mode:P&R). Кнопкой на 13-м порту меняю значение ШИМ - всё ОК. Кнопкой выключаю-включаю, при включении значение ШИМ такое же, как до выключения (Допустим 200). ОК. Затем из браузера передаю /192.168.5.40/sec/?cmd=10:100. Значение ШИМ изменилось на 100 - реагирует. Далее выключаю кнопкой и включаю ею - значение 200. То есть, значение при передаче из браузера (сервера) не запоминается. Мне кажется что это не очень удобно... Или я что-то делаю не так?


2018-10-10 21:37:29 | Andrey_B
Andrey, проверю.


2018-10-13 21:28:30 | Andrey_B
Andrey, исправлено в 4.30b2


2018-10-15 10:53:15 | Andrey
Спасибо. Работает как надо. Значения ШИМ сохраняются.


2018-11-04 08:39:41 | Дмитрий
Андрей здравствуйте. Возможно ли на megad 2561 rtc чтобы импульсы от от какого либо счетчика не просто считались и по их заданному значению срабатывал сценарий, а чтобы это было с интервалом времени. Например 100 импульсов на 2 минуты и срабатывает сценарий.


2018-11-04 10:34:15 | Andrey_B
Дмитрий, в текущий момент такой функции нет.


2018-11-04 23:16:55 | Олег
Здравствуйте, Андрей! Ситуация такая - на первой MegaD-2561 висят 4 штуки SSD1306 , два DS18B20 и кнопка.
На второй MegaD-2561 висят 2 штуки D18B20. При нажатии кнопки на первой загораются 1-й и 2-й дисплеи по
Act 31:1;32:1;p100;31:0;32:0 и нажатие кнопки ловит сервер. Берет у себя из базы температуры второй меги и выполняет такой код

file_get_contents("/192.168.1.16/sec/?cmd=33:1;34:1"); / зажигает 2 оставшихся дисплея
sleep(1);
file_get_contents("/192.168.1.16/sec/?pt=33&text=$t3"); /отправляет на 3-й дисплей температуру
sleep(1);
file_get_contents("/192.168.1.16/sec/?pt=33&text=$t4"); /отправляет на 4-й дисплей температуру
sleep(10); /ждет 10 сек и
file_get_contents("/192.168.1.16/sec/?cmd=33:0;34:0"); /гасит 3-й и 4-й дисплеи

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

Судя по плавному отображению информации на 2-х последних дисплеях, информация попиксельно идет с сервера, и, неуспев закончить с первым
сервер начинает общаться с другим. Если увеличиваю sleep больше 1 наступает полный хаос. Первые 2 дисплея( которые без сервера) работают четко.
На планшете все отображается, сервер - мажордомо, скрипт - megad.php . SCL подключал и вместе и по-отдельности. Можно ли решить проблему?


2018-11-05 11:02:03 | Andrey_B
Олег, подключил к портам P33, P34 два дисплея и проверил ваш код. Все отработало нормально. Каких-то особенностей не заметил.
Пара мыслей.
1. Без задержки совсем отправлять две команды на вывод крупных цифр нельзя. Микроконтроллеру требуется время на отображение информации. Секундная задержка - более, чем достаточно.
2. В вашем коде обе температуры отправляются на P33. Это ошибка?
3. Необходимо, чтобы прошивка была последней. Также необходимо проверить, не установлен ли чекбокс GSM в настройках.
4. Если ничего не помогает, попробуйте перенести один дисплей с P33, на P35. Также временно сконфигурируйте два других порта, к которым подключены дисплеи, отображающие информацию средствами контроллера, в состояние NC. Проверьте, меняет ли эту ситуацию.
И просьба дальнейшее обсуждение перенести на форум или в электронную почту, так как в комментариях это делать не очень удобно.