ФОРУМ КУПИТЬ

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

MegaD-2561 - многофункциональный контроллер, предназначенный для решения широкого спектр задач, связанных с автоматизацией квартир, домов, офисов, производств. Контроллер способен работать как под управлением сервера, так и автономно.

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

Контроллер MegaD-2561 выпускается в 3-х исполнениях:
MegaD-2561-RTC V3 и MegaD-2561-31I15O-RTC PoE (Моноблок), MegaD-2561 V2 (снят с производства).
Все исполнения являются актуальными и производятся в текущий момент. Данная документация описывает основные функциональные возможности контроллеров, общие для всех исполнений.

MegaD-2561-RTC V3
Исполнения контроллеров MegaD-2561
V2, V3, Моноблок (слева направо)


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

  • Основной интерфейс связи: Ethernet (RJ45), подключение по Wi-Fi возможно через шлюз.
  • Дополнительные интерфейсы: I2C/1-wire/Single-wire (на любых портах), UART (TTL/RS-485 через адаптер) на портах P32/P33 разъема XT2.
  • Питание: +12В DC (+/- 10%) для исполнений V2 и V3, PoE 802.3af Class 3 (только для контроллера в исполнении моноблок).
  • Потребляемый ток: 57 мА (только контроллер без учета подключаемых датчиков и исполнительных модулей)
  • Встроенные мощные преобразователи на 3.3В и 5В до 3А для (V3 и моноблока)
  • Общее количество портов (входов/выходов): 38 (для V2) и 45 (для V3 и моноблока)
  • Количество портов с функцией ШИМ: 7 (возможно подключение любого количества расширителей MegaD-16PWM / MegaD-16U-X / MegaD-16M-XT - плюс 16 ШИМ каналов каждый)
  • Количество портов с функцией АЦП: 8  (возможно подключение любого количества плат расширения ADS11115 - плюс 4 АЦП канала каждый)
  • Количество подключаемых полноразмерных (по 15 портов) исполнительных модулей (XP1/XP2, 34-пиновый шлейф для V2 и V3): 2 + любое количество расширителей
  • Доступные "заводские" исполнительные модули: MegaD-8I7O-S/SD/R/X, MegaD-14-IOR, MegaD-14-R, MegaD-2R; расширители MegaD-16I-XT, MegaD-16R-XT, MegaD-16PWM, MegaD-16U-XT, MegaD-16M-XT, MegaD-2W/RW
  • Количество подключаемых I2C исполнительных модулей: определяется прошивкой
  • Встроенный зуммер (для V3)
  • Встроенные часы реального времени RTC (для версии RTС и контроллера в исполнении "Моноблок")
  • IP-адрес по умолчанию: 192.168.0.14 (маска подсети 255.255.255.0)
  • Корпус устройства (пластик ABS UL94-V0) предназначен для монтажа на DIN рейку: 4 DIN (ширина 71 мм для V2 и V3) и 6 DIN (ширина 106мм для Моноблока)
  • Рабочий температурный диапазон: от -40 до +85 С


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

  • Поддерживаемые протоколы для управления устройством и взаимодействия с сервером: HTTP, MQTT, SNMP (бета)
  • Поддерживаемые интерфейсы для работы с датчиками/считывателями/ведомыми устройствами: I2C, 1-wire/TouchMemory (DS18B20/DS2401/DS1990A - считыватели, DS2413), RS-485 (через адаптер RS485-TTL), Wiegand-26
  • Функция выполнения заданий по расписанию (cron)
  • Программирование выполнения заданий по заранее определенным условиям (program)
  • Поддержка часов реального времени: DS3231 (исполнение MegaD-2561-RTC и Моноблок со встроенным датчиком температуры), DS1307
  • Функция Screens для настройки пользовательского интерфейса для мобильных устройств по технологии WebApp.
  • Функция ПИД-регуляторы (возможность индивидуальной настройки до 5 независимых ПИД-регуляторов)
  • Поддержка GSM-модулей: SIM300, SIM800L, SIM900, M590E и совместимые (работа в качестве GSM-сигнализации), готового модуля GSM-UPS
  • Возможность перепрошивки по сети и сохранения конфигурации (используется специальное ПО и протокол UDP). Подробнее
  • Поддерживаемые типы портов: IN (вход), OUT (выход), DSen (цифровые датчики), ADC (АЦП), I2C
  • Поддерживаемые режимы работы со входами: P (нажатие), R (отжатие), P&R (нажатие/отжатие), длительное удержание, C (режим фиксации одинарного/двойного клика)
  • Поддерживаемые устройства на портах типа IN (сухой контакт): выключатели, кнопки, герконы, датчики (протечки, ИК-извещатели, пожарные извещатели), счетчики (типа "геркон"), датчик напряжения U-Sensor, датчики тока A-Sensor и т.д.
  • Поддерживаемые устройства на портах типа OUT: любые нагрузки 0-250В AC/DC (для релейных модулей MegaD-8I7O-R/MegaD-14-R, реле моноблока) и 170-220В AC (для симисторных модулей MegaD-8I7O-S/SD, для симисторов и диммиров моноблока и MegaD-16PWM), 12-24В DC (для модулей MOSFET моноблока и MegaD-16PWM), 0-12В/ШИМ (для перемычек моноблока)
  • Функция диммирования (для MegaD-8I7O-SD, MegaD-8I7O-X, Моноблока на портах с поддержкой PWM/ШИМ и MegaD-16PWM / MegaD-16U-XT / MegaD-16M-XT): лампы накаливания, светодиодные и люминесцентные лампы типа Dimmable, светодиодные ленты (со сменными модулями типа MOSFET), некоторые модели бытовых вентиляторов, нагревательные приборы и другие устройства, допускающие регулировку тиристорными регуляторами мощности
  • Функция управления диммируемыми выходами с помощью одной кнопки (режим "~")
  • Поддерживаемые устройства на портах типа DSen: DS18B20 (в том числе шиной), считыватели TM (1-wire), считыватели Wiegand-26, дальномер HC-SR04
  • Поддерживаемые аппаратно I2C-устройства на любых цифровых портах: HTU21D, SHT31, HTU31D, TMP117, BMP180, BMP280, BME280, BME680, DPS368, MAX44009, OPT3001, BH1750, TSL2591, SSD1306, LCD1602 (PCF8574T), MCP23008, MCP23017 (MegaD-16I-XT, MegaD-16R-XT), PCA9685 (MegaD-16PWM / MegaD-16U-XT / MegaD-16M-XT), ADS1115, INA226, T6703/T67xx, SCD40/SCD41, HM3301, SPS30, MLX90614, MCP4725, MCP4018, I2C-Encoder-V2 (Duppa), PTsensor, RadSens, CG-Anem, MCP9600 и любые другие устройства и датчики (с помощью библиотеки I2C-PHP/I2C-API)
  • Поддерживаемые устройства на портах типа ADC: любые аналоговые датчики с выходным напряжением не выше 3,3В (датчики газа, освещенности) напрямую и с любым другим выходным напряжением (датчики давления жидкости) через устройство согласования
  • Функция управления техникой по ИК-протоколу
  • Функция управления лентами WS2811/WS2813/WS2818
  • Функция периодической отправки состояния всех портов на сервер (srv-loop, только для HTTP)
  • Функция периодической отправки состояния всех подключенных датчиков (только для MQTT)
  • Функция контроллера доступа (для считывателей, работающих по протоколу TouchMemory/1-wire, Wiegand)
  • Функция шлюза RS485/Modbus RTU - Ethernet; UART - Ethernet
  • Функция сброса настроек с помощью кнопки Erase EEPROM
  • Встроенная функция сторожевого таймера (watchdog), исключающая даже теоретическую возможность зависания устройства
  • Полная невозможность заражения контроллера вирусами или другим вредоносным ПО
  • Отсутствие зависимости от каких-либо облачных сервисов и Интернета; пользователь имеет абсолютный контроль; контроллеры самостоятельно ничего не передают в Интернет

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

 

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

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

  • OpenHAB - открытое программное обеспечение для домашней автоматизации. Пользователями сайта ab-log.ru написаны специальные компоненты "биндинги" для работы с MegaD-328/MegaD-2561
  • Home Assistant HACS - интеграция под Home Assistant от пользователя andvikt. GitHub, обсуждение на форуме.
  • Home Assistant - открытое ПО для автоматизации дома. Тема "Мега в Home Assistant - Hass.io штатными средствами" на форуме. Еще один вариант интеграции с контроллером от пользователя сайта.
  • Majordomo - открытая и бесплатная платформа для комплексного управления домашней автоматикой. Поддерживает различное оборудование, в том числе MegaD-328/MegaD-2561. Неплохой материал по настройке данного ПО размещен на форуме.
  • TouchOn - программно-аппаратный комплекс, созданный специально для работы с контроллерами проекта MegaD-2561 (описание; обзор приложения; обзор панели администратора). Компания предлагает комплексные готовые решения, настроенные по ТЗ заказчика. Решение TouchOn внесено в реестр отечественного ПО.
  • Mr.Butler - российская система домашней автоматизации, основанная на OpenHAB. Подключение MegaD-2561
  • intraHouse - ПО, которое поддерживает контроллер MegaD-2561. Есть бесплатная версия Lite и платная Pro.
  • ioBroker - платформа для Интернета Вещей. При помощи, так называемых модульных "драйверов", ioBroker может взаимодействовать с другими различными системами и устройствами.
  • Apple HomeKit + HAP-NodeJS - управление устройствами через встроенное приложение "Дом" от Apple, в том числе с помощью голосового помощника Siri.
  • Бенукс - ПО для ОС Windows, что важно для начинающих пользователей. Создаваемое изначально для работы с 1-wire, программное обеспечение Бенукс в данный момент поддерживает широкий спектр оборудования, среди которого присутствует и контроллеры MegaD-328/2561.
  • Любое иное ПО, поддерживающее управление устройствами по протоколу HTTP или MQTT: iRridium, Domoticz, Node-RED, OpenRemote и т.д.

О поддержке Яндекс Алисы (в том числе Яндекс.Станции). Модулями можно управлять через голосового помощника Алису. Для этого необходимо использовать серверное ПО, которое имеет интеграцию с сервисом "Яндекс Диалоги / Умный Дом Яндекса". Такую интеграцию в текущий момент имеют: Majordomo, openHAB, TouchOn, ioBroker.

Контроллер имеет возможность автономной настройки пользовательского интерфейса для мобильных устройств (аналог мобильного приложения) и без необходимости установки серверного ПО или же дополнительно к нему: Функция Screens.

 

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

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


Контроллер MegaD-2561 исполнение V2


Контроллер MegaD-2561-RTC исполнение V3


Контроллер MegaD-2561-31I15O-RTC-PoE (Моноблок)

Занимаемое место на DIN-рейке для V2 и V3: 4 DIN
Занимаемое место на DIN-рейке для контроллера в исполнении Моноблок: 6 DIN


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

Разъем XT1 контроллеров V2 и V3 предназначен для подключения питания. Напряжение питания: 12В постоянного тока. Плюсовая клемма справа, минусовая клемма слева. Контроллер снабжен защитой от переполюсовки. Максимальное сечение провода питания - 1,5 мм2 (V2) и 2,5мм2 (V3)

В качестве блока питания можно использовать любой стабилизирванный БП. Хорошо зарекомендовали себя блоки питания MeanWell (серии DR или HDR): DR-15-12, DR-30-12, DR-60-12, DR-100-12. Также возможно использование блоков питания с функцией UPS и возможностью подключения внешней АКБ: DRC-40A, DRC-100A.

Рекомендуемое отклонение от номинального напряжения питания: +/- 10%. Максимальное напряжение 13,2В. Контроллер может выдержать и бОльшее напряжение, но необходимо учитывать требования к исполнительным модулям, которые получают питание через контроллер. В частности при подключении релейных исполнительных модулей (MegaD-8I7O-R, MegaD-14-R) не рекомендуется подавать напряжение на разъем XT1 выше 13,2-13,5В. Симисторные исполнительные модули (MegaD-8I7O-SD, MegaD-8I7O-S) более лояльны к повышенному напряжению.

MegaD-2561-31I15O-RTC Моноблок позволяет подключать питание через PoE: макс. 13W (POE 802.3af Class 3).

Блок питания выбирается исходя из потребляемого тока контроллера, исполнительных модулей и подключенных к модулям датчиков.
Максимальный ток, потребляемый контроллером: 57мА для контроллера V2 и V3 (потребление исполнительных модулей указано в кратких руководствах)

Пример выбора блока питания.
Максимальный потребляемый ток 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, 802.3af Class 3) в текущий момент реализована только в контроллере MegaD-2561-31I15O-RTC (исполнение Моноблок). На разъеме RJ-45 (для V2 и V3) или на лицевой панели (Моноблок) присутствуют два светодиода (Link/Act), по которым можно судить о доступности сети и сетевой активности.


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

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


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

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

Помимо двух стандартных исполнительных модулей к любым контроллерам, в том числе к Моноблоку, можно подключить любое количество модулей-расширителей по шине I2C: MegaD-16I-XT, MegaD-16R-XT, MegaD-16PWM, MegaD-16U-XT, MegaD-16M-XT; по шине 1-wire: MegaD-2RW, MegaD-2W.


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

Разъем XT2 (в контроллерах V2 и V3) предназначен для подключения цифровых датчиков и других цифровых устройств, а также аналоговых датчиков (порты P36, P37).
В исполнении "Моноблок" все порты разъем XT2 выведены на съемный клеммник. Порты P30-P44. Функциональность этих портов полностью соответствует описанию ниже.

Контроллер позволяет подключать цифровые датчики не только к XT2, но и к любым портам, которые выведены на разъемы XP1/XP2 с помощью исполнительного модуля MegaD-14-IOR. В модуле контроллера MegaD-2561 предусмотрен отдельный разъем XT2 на тот случай, если необходимо, к примеру, контролировать температуру, влажность или давление, выводить информацию на дисплей, а разъемы XP1/XP2 заняты исполнительными модулями MegaD-8I7O, предназначенными для работы с кнопками и коммутации силовых линий. Подробнее описано в разделе "Как выбрать исполнительный модуль".

Для корректной работы цифровых шин все порты, выведенные на разъем XT2 (кроме портов P36, P37 в исполнении V3) имеют подтяжку 4,7кОм.
Количество и тип цифровых датчиков зависит от прошивки. Перечень поддерживаемых устройств постоянно расширяется.

На текущий момент к этим портам можно подключать следующие цифровые датчики:

  • DS18B20, DS18B20 Waterproof и аналоги
  • считыватели и кодовые панели, работающие по протоколу TM/1-wire
  • считыватели, работающие по протоколу Wiegand-26 (может потребоваться согласование уровней 5В-3,3В)
  • HTU21D, SHT31, SHT85, HTU31D (температура / влажность)
  • BMP180/BMP280 (температура / атмосферное давление)
  • BME280 (температура / атмосферное давление / влажность)
  • BME680 (температура / атмосферное давление / влажность / качество воздуха)
  • DPS368 (атмосферное давление / температура)
  • TMP117 (температура)
  • MLX90614 (бесконтактный датчик температуры до +380С)
  • MCP9600 (высокоточный конвертер ЭДС термопары в градусы)
  • MAX44009 / OPT3001 / BH1750 / TSL2591 (освещенность)
  • SSD1306 (OLED-дисплей), LCD1602 (PCF8574T, ЖК-дисплей)
  • MCP23008/MCP23017 (расширители портов 8/16 каналов, готовые модули MegaD-16I-XT, MegaD-16R-XT)
  • I2C-Encodev-V2 от Duppa (энкодер для управления диммируемыми портами)
  • PCA9685 (16 ШИМ каналов, модули MegaD-16PWM, MegaD-16U-XT, MegaD-16M-XT)
  • DS2413 (модули MegaD-2W, MegaD-2RW, 1W-MM5)
  • ADS1115 (внешний 4-х канальный 16/15-битный АЦП)
  • INA226 (измеритель тока и напряжение 0-36В)
  • SCD40/SCD41 (датчик температуры, влажности, CO2 / углекислого газа)
  • T6703/T67xx (датчик CO2 / углекислого газа)
  • SPS30, HM3301 (лазерные датчики взвешенных частиц в воздухе / датчики пыли)
  • PTsensor (датчик давления жидкости, датчик температуры)
  • RadSens (дозиметр)
  • CG-Anem (анемометр)
  • MCP4725 (12-битный ЦАП)
  • MCP4018 (7-битный переменный резистор)
  • HC-SR04 (ультразвуковой дальномер)


Распиновка разъема XT2 контроллера MegaD-2561 V2


Распиновка 2-х уровневого разъема XT2 контроллера MegaD-2561 V3

Клеммы +3,3В и 5В можно использования для питания датчиков или I2C-устройств.
Контроллер в исполнении V3 снабжен мощными раздельными DC-DC преобразователями для линий +3.3В и 5В с током до 3А.

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

К цифровым портам нельзя подключать пожарные извещатели типа ИП-212-141 так, как это описано здесь. Извещатели подобного типа двумя проводами можно подключать только к "стандартным" входам MegaD-14-IOR, MegaD-8I7O и т.д. Несколько датчиков (не более 4-х) можно подключать к одному порту только параллельно (не последовательно).


Разъемы XP5, XP6 (порты P36, P37). Подключение аналоговых датчиков

Разъемы XP5, XP6 (V2) или клеммы портов P36, P37 (V3 и Моноблок) предназначены для подключения аналоговых датчиков и устройств с управлением логическими уровнями 3.3В. Аналоговые датчики - это приборы, которые меняют свое выходное напряжение в зависимости от измеряемой характеристики: освещенности, температуры, давления, концентрации газа и т.д. Напрямую без дополнительного согласования можно подключать любые аналоговые датчики с выходным напряжением не более опорного (3,3В):

  • TEMT6000 (датчик освещенности) и аналогичные
  • MH-Z14 (датчик углекислого газа)
  • Любые аналоговые датчики с выходным напряжением ниже 3.3В
  • Любые аналоговые датчики типа "ток" или с выходным напряжением выше 3.3В при условии организации согласания
  • Любые иные устройства, которые управляются логическим уровнями 3.3В

Поскольку в отличие от портов, выведенных на клемму XT2, вилки/порты P36, P37 с функцией АЦП не снабжены цифровой подтяжкой и могут работать также как входы и выходы, это позволяет подключать к ним любые устройства с управлением логическими уровнями 3.3В. К этим портам также можно подключать и цифровые датчики и шины при условии организации внешней подтяжки к питанию с помощью резистора необходимого номинала (обычно 4,7кОм).

Для упрощения подключения аналоговых датчиков на клеммы XP5/XP6 также выведено питание для датчиков +3,3В.


Распиновка вилок АЦП контроллера MegaD-2561 V2

В контроллерах исполнения V3 и Моноблок вместо вилок АЦП порты P36 и P37 выведены на клеммные колодки. См. изображения модулей выше.

Контроллер оцифровывает (измеряет) напряжение на входе АЦП порта и выводит в виде значения в Web-интерфейсе или передает на сервер.

Помимо двух АЦП-портов, выведенных на разъемы XP5/XP6, в контроллере еще 6 портов имеют функцию АЦП. Это порты P0-P5. Эти АЦП порты можно использовать вместе с исполнительным модулем MegaD-14-IOR или при прямом подключении датчиков к клемме XP1.

 

Кнопки Reset и Erase EEPROM

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

Кнопка Erase EEPROM (на схеме устройства справа) предназначена для очистки энергонезависимой памяти устройства, в которой хранятся все настройки. Для того, чтобы запустить процедуру очистки EEPROM необходимо нажать кнопку в момент включения устройства ИЛИ, удерживая кнопку Erase EEPROM, нажать и отпустить кнопку Reset. В процессе сброса настроек, который занимает приблизительно 5 секунд, светодиод Act на лицевой панели будет редко моргать.

В контроллерах Ver 2.0 процедура очистки EEPROM не сбрасывает IP-адрес устройства.
В контроллерах Ver 2.2 процедура очистки EEPROM сбрасывает IP-адрес на заводсткой: 192.168.0.14, но не сбрасывает пароль!
В контроллерах Ver 2.2, выпущенные после марта 2019 кнопка очистки EEPROM сбрасывает как IP-адрес, так и пароль
Полностью очистить EEPROM можно с помощью скрипта megad-cfg-2561 не зависимо от аппаратной версии контроллера.

 

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

Контроллер MegaD-2561 (на форуме его часто называет "головой" или "мозгами") оснащен 38/45 портами, которые распределены по разъемам следующим образом:

  • XP1: 15 портов (34-пиновый разъем для подключения исполнительного модуля)
  • XP2: 15 портов (34-пиновый разъем для подключения исполнительного модуля)
  • XT2: 6 портов (V2) или 15 портов (V3 и Моноблок)
  • XP5/XP6 (P36/P37): 2 порта (две 3-пиновые вилки, универсальные)
  • Каждый порт контроллера в зависимости от настроек и с учетом дополнительных аппаратных функций может работать как: IN (вход), OUT (выход), DSen/I2C (цифровые устройства).

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


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

Контроллер MegaD-2561 помимо XP1/XP2 для подключения исполнительных модулей оснащен разъемами XT2 и XP5/XP6 (для V2).

Разъем XT2 можно использовать для подключения цифровых датчиков: DS18B20, HTU21D, SHT31, SHT85, HTU31D, TMP117, BMP180, BMP280, BME280, BME680, DPS368, MAX44009, OPT3001, FH1750, TSL2591, дисплеев SSD1306 и LCD1602 (PCF8574T), расширителе портов MCP23008, MCP23017 (MegaD-16I-XT, MegaD-16R-XT), PCA9685 (MegaD-16PWM, MegaD-16U-XT, MegaD-16M-XT), ADS1115, INA226, SCD40/SCD41, T6703/T67xx, HM3301, SPS30, MLX90614, MCP4725, MCP4018, I2C-Encoder-V2, PTsensor, RadSens, CG-Anem, MCP9600, HC-SR04, считывателей ключей iButton (DS1990A), EM-Marine/Mifare (CP-Z2L/CP-Z2M,  Matrix II и подобных), модулей MegaD-2W и других цифровых устройств.

Разъемы XP5/XP6 (порты P36, P37) можно использовать для подключения аналоговых датчиков: TEMT6000, MH-Z14 и других.
В некоторых случаях разъемы XT2, XP5, XP6 можно использовать для подключения входов, датчиков типа "сухой контакт", датчиков напряжения U-Sensor, тока A-Sensor, датчиков протечки.

Таким образом, если необходимо подключить считыватель ключей, несколько цифровых датчиков температуры, датчик освещенности, и того количества портов, которые выведены на разъемы XT2, XP5, XP6 достаточно, то можно использовать контроллер без исполнительных модулей или с минимальным количеством исполнительных модулей или расширителей. Например, MegaD-2R, MegaD-2RW, MegaD-2W, 1W-MM5.


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

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

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

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


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

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

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

Все стандартные исполнительные модули подключаются только к контроллерам, имеющим 34-пиновые разъемы XP1/XP2. Это контроллеры в исполнении V2 и V3.
Следует еще раз акцентировать внимание, что стандартный исполнительный модуль - это внешняя аппаратная реализация (обвязка) портов контроллера, выведенных на разъемы XP1/XP2. Тип подключаемых модулей выбирается исходя из задачи - необходимого количества входов, выходов и их типов, цифровых портов и т.д.

В Моноблоке MegaD-2561-31I15O-RTC все собственные порты микропроцессора уже разведены в рамках одного корпуса. Стандартные исполнительные модули, подключаемые 34-пиновым шлейфом, к Моноблоку, разумеется, подключить нельзя.
Вместе с тем, как к Моноблоку, так и к контроллерам в исполнении V2 и V3 можно дополнительно подключить несколько (зависит от количества свободных цифровых портов) модулей-расширителей, таких как: MegaD-16I-XT, MegaD-16R-XT, MegaD-16PWM, MegaD-16U-XT, MegaD-16M-XT, MegaD-2W, MegaD-2RW, 1W-MM5.

MegaD-8I7O-R


MegaD-8I7O-R (7 входов / 7 релейных выходов 10А / 1 цифр. порт), 6 DIN

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

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

MegaD-8I7O-X


MegaD-8I7O-X (7 входов / 7 выходов / 1 цифр. порт), 6 DIN

В отличие от MegaD-8I7O-R в модуле MegaD-8I7O-X присутствует ряд особенностей. Выходы реализованы с помощью сокетов, позволяющих установить в них любой сменный модуль, который используется в Моноблоке: реле, симистор, диммер, MOSFET, перемычка. Таким образом конфигурация выходов определяется пользователем. Также в случае выхода из строя сменного модуля выхода (например, реле), его можно легко заменить без необходимости перепайки. Для простоты замены сменных модулей, в MegaD-8I7O-X используются разъемные клеммники.

  • Порты P0-P6: "стандартные входы" для подключения кнопок, выключателей, охранно-пожарных датчиков, U-Sensor и т.д. Цифровые и аналоговые датчики с этими портами работать не будут.
  • Порты P7-P13: выходы, функциональность которых определяется применяемым сменным модулем. Реле - до 16А (0-250В), Симистор - до 2А (230В), Диммер - до 2А (230В), MOSFET - до 8А (12В-24В), перемычка (внешнее реле 12В, драйвер ШИМ 12В и т.д.).
  • Порт P14 - "цифровой вход" для подключения цифровых датчиков и шин (например, DS18B20, считыватели 1-wire). Для этого порта отсутствует индикация на лицевой панели.

    Подробнее о модуле и Краткое руководство

 

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). Для этого порта отсутствует индикация на лицевой панели.

    Краткое руководство
    Точная настройка диммируемых каналов
     

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). Для этого порта отсутствует индикация на лицевой панели.

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


MegaD-14-R


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

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

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

     

MegaD-14-IOR


MegaD-14-IOR (14 настраиваемых входов, 1 релейный выход 10А), 6 DIN

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

Подробнее о модуле и Краткое руководство.

 

MegaD-2R

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

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

 

Модули "Расширители"

В отличие от стандартных исполнительных модулей, которые подключаются к контроллерам V2 и V3 шлейфом и фактически являются внешней аппаратной обвязкой родных портов контроллера, модули-расширители добавляют контроллеру новые порты. Такие модули можно подключать к цифровым портам контроллеров в любом исполнении: V2, V3, Моноблок. В зависимости от типа модуля для подключения используются шины I2C или 1-wire. Расширители позволяют значительно увеличить количество портов, которым управляет контроллер, но функциональность этих портов по сравнению с родными портами контроллера ограничена. Подробнее описано в соответствующих разделах, посвященных микросхемам-расширителям, на базе которых построены модули: MCP23017, PCA9685, DS2413 и т.д.

MegaD-16I-XT


Расширитель портов MegaD-16I-XT (16 стандартных входов), I2C, 4 DIN

Модуль MegaD-16I-XT относится к классу расширителей. В отличие от модулей MegaD-8I7O, MegaD-14-IOR, MegaD-14-R, использующие разъемы XP1/XP2 и обеспечивающие обвязку собственных портов контроллера, расширитель MegaD-16I-XT подключается к любым цифровым портам контроллера по шине I2C (SDA/SCL), добавляя 16 новых портов. Порты расширителя не имеют той обширной функциональности, которую имеют собственные порты контроллера. Эти порты предназначены в основном для подключения охранных датчиков, датчиков напряжения и тока, датчиков протечки, выключателей с передачей событий по входам на сервер. Подробнее в разделе "Работа с расширителями MCP23008/MCP23017".
В новых версиях прошивки в автономном режиме работы контроллера (сервер не прописан) для портов расширителя добавлено выполнение стандартных сценариев (Act).
К портам MegaD-16I-XT нельзя подключать 2-х проводные пожарные датчики ИП-212-141. Если возникает необходимость в подключении пожарных датчиков, следует использовать 3-х проводные, у которых питание подводится отдельным проводом.
Краткое руководство


MegaD-16R-XT

MegaD-16R-XT
Расширитель портов MegaD-16R-XT (16 релейных выходов, 10А), I2C, 9 DIN

MegaD-16R-XT также относится к классу расширителей, подключаемых к контроллеру по шине I2C. Как и MegaD-16I-XT данный расширитель построен на микросхеме MCP23017 и добавляет 16 релейных выходов. Порты расширителя MegaD-16R-XT доступны в сценариях как родных портов контроллера, так и портов MegaD-16I-XT.
Подробнее о модулей и Краткое руководство


MegaD-16PWM


Расширитель MegaD-16PWM (16 ШИМ каналов), I2C, 6 DIN

Многофункциональный блок MegaD-16PWM добавляет контроллеру 16 ШИМ (PWM) каналов. Конечная функциональность каналов зависит от сменных силовых модулей, которые установлены в расширитель.
Это могут быть мосфеты для управления LED-лентами 12-24В/8А, диммеры 230В/2А и перемычки. В данный момент разрабатываеются и другие сменные модули. Каждый сменный модуль занимает 4 канала расширителя.
MegaD-16PWM выполнен на базе микросхемы PCA9685. Подробнее в разделе "Работа с расширителями PCA9685".
Для каналов расширителя MegaD-16PWM поддерживается команда "~" - управление диммированием одной клавишей, но только если кнопка управления подключена к одному из родных входов контроллера.
Подробнее о модуле...
 

MegaD-2W

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

В отличие от MegaD-2R, модуль MegaD-2W подключается к цифровым портам и работает по шине 1-wire. Это позволяет подключать его к цифровым портам контроллера. Причем для подключения модуля используется только один порт. Таким образом, задействуя только один цифровой порт контроллера, можно получить два канала для управления нагрузками 230В переменного тока. Более того, контроллер позволяет к одному порту подключить несколько модулей MegaD-2W шиной. Также доступен модуль MegaD-2RW, который отличается от описанного выше тем, что вместо реле в этом модуле установлены реле (до 10А).
Подробнее о модуле и Краткое руководство

 


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

Исполнительные модули возможно использовать не только с контроллером MegaD-2561, но также с любым управляющим контроллером или мини-ПК.
В случае такой необходимости следует изучить распиновку 34-пинового разъема и правильно произвести монтаж сигнальных линий.
Так, например, любой исполнительный модуль семейства MegaD можно использовать вместе с Raspberry Pi или Arduino.

Нами был разработан и выпущен специальный адаптер, позволяющий достаточно просто подключать стандартные исполнительные модули с 34-пиновым разъемов к мини-ПК Raspberry Pi. Подробнеее...


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

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

IP-адрес устройства по умолчанию: 192.168.0.14
Пароль по умолчанию: sec

Для того, чтобы зайти на устройство через браузер необходимо, чтобы на компьютере была настроена сеть 192.168.0.0/24.
Если используется другая IP-сеть, то необходимо изменить IP-адрес устроойства. Сделать это можно двумя путями:

  1. Временно установить на компьютере IP-адрес, например, 192.168.0.15, зайти в Web-интерфейс устройства и изменить его адрес
  2. Воспользоваться кроссплатформенным PHP-скриптом megad-cfg-2561 или скомпилированным приложением для ОС Windows - MegaD-UP. Подробнее.


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

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


На центральной странице встроенного Web-интерфейса отображается:

  • версия прошивки
  • ссылка на системную конфигурацию "Config"
  • ссылки на конфигурацию портов разъема XP1 (порты P0-P14)
  • ссылка на конфигурацию портов разъема XP2 (порты P15-P28)
  • ссылки на конфигурацию портов разъема XT2 (порты P30-P35)
  • ссылка на конфигурацию портов XP5/XP6 (порты P36-P37)

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

По умолчанию все порты находятся в состоянии 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. Подробнее о сценариях описано ниже.
  • LongP: глобальная настройка времени длительного нажатия для входов. Шаг 0,1 с. Значение по умолчанию: 10 (1 секунда).
  • UART: выбор режима UART-портов (P32/P33) - работа с GSM-модулями типа GSM-UPS, SIM800L (полное описание ниже); работа в режиме RS485-Modbus RTU (подробнее) и в режиме UART Raw с выбором скорости.
  • Uptime: время работы устройства после старта
  • Temp: температура микросхемы часов реального времени DS3231, температура внутри корпуса (только для версии MegaD-2561-RTC и Моноблока)
    Значение температуры можно получить запросом вида: http://192.168.0.14/sec/?tget=1


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


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

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

Поле Type может принимать следующие значения:

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


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

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

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

После того, как порт сконфигурирован как IN (вход), на странице появляется несколько новых опций.

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

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

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

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

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


Action (сценарии). Базовые принципы

Формат поля Action следующий: X:Y;X:Y;X:Y
где, X - номер порта, а Y - действие/команда

Возможные команды:

  • 0 - выключить;
  • 1 - включить;
  • 2 - изменить состояние на противоположное (переключить), т.е. если было включено выключить и наоборот
  • 3 - прямая синхронизация выхода со входом (кнопка нажата - лампа включена; кнопка отпущена - лампа выключена; только для родных входов контроллера в режиме "P&R")
  • 4 - обратная синхронизация выхода со входов (кнопка нажата - лампа выключена; кнопка отпущена - лампа включена; только для родных входов контроллера в режиме "P&R")
  • [0..255] - в случае с диммируемым портами, установить значение диммера (яркости света)

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

Пример сценария
7:1;8:2
Включить порт P7, переключить порт P8

"8:2" означает, что необходимо состояние порта P8 изменить на противоположное.
В поле Action можно записать сценарий общей длиной до 29 символов.
Допускается вместо двоеточия использовать знак равенства, например: "8=2"

Команды сценариев могут управлять не только выходами, но и входами. Это может потребоваться, если необходимо, например, чтобы в автономном режиме контроллера вход срабатывал только в определенные часы. Тогда сценарий переключения (включения, отключения) входа можно указать в cron (задания по расписанию).
Вместо ON или OFF состояние входа будет DIS (от DISABLED). В режиме DIS вход отключен. Все события по выключенному входу контроллером обрабатываться не будут вне зависимости от любых других настроек. Счетчик также не будет увеличиваться при замыкании входа.

 

Паузы в сценариях

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

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

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

Паузы не поддерживаются в сценариях портов расширителей (MegaD-16I-XT).

 

Повтор сценария

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

С помощью данной команды возможна организация бесконечного цикла - "r0".
Пример: 7:1;p5;7:0;p5;r0
Выход P7 будет переключаться каждые полсекунды. Следует использовать данную функцию с осторожностью и только для особых случаев, так как в текущий момент времени в прошивке нет процедуры отмены запущенного бесконечного цикла.

Команда повтора сценария работает только с односложными сценариями. Она не поддерживается для части сценария после разделителя "|" (например, длительное удержание), а также для внешних сценариев. При необходимости использовать повтор сценария в этих случаях можно использовать виртуальные порты и функцию Program.


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

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


Синхронизация входа и выхода

Если вход сконфигурирован как P&R (читайте об этом ниже), то команда 3 - состояние выхода соответствует состоянию входа, команда 4 - состояние выхода противоположно состоянию входа. Команды синхронизации работают не только с родными входами контроллера, но и с портами расширителя MegaD-16I-XT.
Простейший пример синхронизации входа и выхода - работа кнопки звонка. При нажатии на кнопку, которая подключена на вход, включается выход, к которому подключен звонок. При отпускании кнопки, звонок выключается.
Для корректной работы команд синхронизации необходимо, чтобы режим входа (Mode) был выбран "P&R". В этом режиме контроллер фиксирует оба события: замыкание и размыкание.


Работа с ШИМ портами

Если управляемый сценарием выход сконфигурирован как ШИМ (подключен диммер или конвертор 0-10В), то вместо команды указывается конкретное значение от 0 до 255. Например: 10:200

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

 

Команды для управления диммируемыми каналами: +, -, ~

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

  • Для одной кнопки необходимо прописать Сценарий: 10:+
  • Для второй кнопки необходимо прописать Сценарий: 10:-

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

Но если требуется обойтись только одной кнопкой, то тогда в сценарии необходимо прописать так: 10:~

При использовании команды "~" режим работы входа должен быть установлен "P&R".
Работает управление аналогичным образом. Однократное нажатие включает или выключает нагрузку. Удержание изменяет яркость в то или другую сторону.

Иногда требуется, чтобы независимо от того, какая яркость была установлена на момент выключения, включался свет всегда на максимальную мощность.
Для этого существует модификатор '*'. Пример: 10:~*

Для каждого входа  можно указать только одну команду управления диммируемым каналом, так как вход и управляемый ШИМ-выход в данном режиме логически связываются на уровне прошивки. Это ограничение не касается любых других команд сценариев.

Команды "+", "-", "~" поддерживаются как для родных портов контроллера, так и для портов расширителей (MegaD-16PWM, MegaD-16U-XT, MegaD-16M/MP-XT).
Данные команды ("+", "-", "~") не могут комбинироваться в одном сценарии с другими командами и не могут управлять группами. Однако существует возможность указать несколько подобных команд для разных диммируемых выходов. Пример: 10:~;12:~;13:~
При этом если на момент управления у разных портов были разные значения, то все они выравниваются по порту, который в сценарии указан первым. В примере по P10. Этот же алгоритм работает и для расширителей MegaD-16PWM, MegaD16U-XT, MegaD-16M/MP-XT. Пример: 31e0:~;31e1:~;31e2:~;31e3:~
Из-за текущего ограничения длины поля для хранения сценария одновременное управление возможно для 6 родных ШИМ-портов или для 4-х портов расширителя.
Примечательно, что при использовании подобного сценария можно комбинировать родные порты и порты расширителя. Пример: 31e0:~;10:~

 

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

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

Плавно менять яркость с помощью сервера можно тремя способами.

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

Команда "^" запускает процесс увеличения яркости. Например: 12:^
Команда "v" запускает процесс уменьшения яркости. Например: 12:v
Команда "x" останавливает ранее запущенный процесс изменения яркости. Например: 12:x

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

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

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

Команды "^", "v", "x" поддерживаются только для родных портов контроллера и не поддерживаются для портов расширителей (MegaD-16PWM, MegaD-16U-XT, MegaD-16M/MP-XT).


Управление лентами WS28XX

Подробно механизм управления лентами на базе чипов WS2811 и аналогов через HTT/GET-запросы описан здесь.
Вместе с тем, подобными лентами можно управлять не только внешними запросами, но и с помощью автономных сценариев. Для этого порт, к которому подключена адресная лента, нужно настроить как OUT/WS281X.

В поле Chip можно указать количество чипов в ленте. Это значение учитывается при выполнении сценариев и внешних запросов с параметром "ws", если явно не использовать параметр "chip".
В отличие от внешних запросов, в которых цвет задается с помощью 6 символов (например: ws=10FF30) в сценариях используется 3. Формат аналогичен "CSS shorthand hex colors". Например: F27 => FF2277. Это сделано, чтобы сократить длину сценария. Таким образом управлять лентой можно не только с помощью запроса вида: ?pt=35&ws=FF2277, но и с помощью запроса ?cmd=35:F27. Важное замечание. Цвет в 16-ричном формате задается только в верхнем регистре. Пример: AE5. Это чтобы не было путаницы с модификаторами 'a' (управление всеми выходами), 'e' (управление портами расширителей) и т.д.

Также, как и с ШИМ портами доступен модификатор "*" - аналог команды "2" (переключение) обычных выходов в режим "SW" (switch).
В примере на скрине при первом нажатии лента включится цветом "22FFCC". При повторном нажатии выключится.
 


Использование цифрового энкодера

Еще одной альтернативой для управления диммируемыми каналами является использования энкодера. Контроллер MegaD-2561 поддерживает работу с цифровым энкодером I2C-Encoder V2 от Duppa. Помимо основных функций, в данном энкодера присутствует встроенная RGB-подсветка, которая может управляться с помощью сервера. Энкодеры достаточно легко интегрируются в стандартные заглушки любой серии электротехнических изделий. Подробное описание энкодера и принципов работы с ним изложено в статье "Цифровой энкодер для MegaD-2561".


Обработка событий и взаимодействие с сервером


После срабатывания входа 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, не смотря на то, что физически вход не замыкался.

В текущий момент команда "d" поддерживается только для родных портов контроллера и не поддерживается для расширителя MegaD-16I-XT.
 

Сетевые сценарии

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

Существует несколько ситуации, когда полезно использовать эту функцию.

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

 

Режимы работы входа. Mode

 

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

Заложена специальная поддержка режима Click Mode в сценариях
Теперь допустимо написать так: 7:2|8:2
Это означает, что при одинарном клике выполнится 7:2, а при двойном 8:2

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



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

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

Если используется сервер, то в том случае, когда вход (в режиме P или P&R) удерживается замкнутым в течение времени, заданном в поле LongP в настройках контроллера, на сервер отправляется второй запрос, в котором передается параметр m=2.

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

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


Сценарии и длительное нажатие выключателя.

Начиная с версии прошивки 4.29b4 контроллер позволяет задавать автономные сценарии (Act) для длительного нажатия.

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

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

В том случае, если необходимости в выполнении действий по двойному клику нет, сценарий можно записать так:
7:2||9:2
В этой ситуации по одинарному клику переключится P7 (контроллер не будет делать задержку, необходимую для фиксации двойного клика), а при удержании клавиши нажатой переключится P9.

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

 

Режим Raw

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

 

Режим Mute

Mute - параметр отключает отправку информации на сервер о переключениях входа.Часто входы используются для подсчета импульсов, которые генерируются внешними приборами: счетчиками, датчиками с импульсными выходами и т.д.Иногда количество импульсов в единицу времени бывает очень большим, что приводит к увеличению сетевого трафика и нагрузки на сервер.
Режим "Mute" позволяет индивидуально для конкретного порта отключить отправку информации о событиях на входе. В этом случае сервер самостоятельно опрашивает вход, получая значение счетчика, с нужной ему периодичностью.

У режима Mute есть одна важная особенность. Даже если он включен, контроллер отправит на сервер информацию при достижении счетчика порта максимального значения 65535.
Это позволит серверу не пропустить факт обнуления счетчика. Но кроме того, эта особенность позволяет серверу в некоторых случаях отказаться от циклического опроса и получать информацию более оперативно.
Например, программному обеспечению сервера необходимо знать о каждых 100 импульсах на входе.
Сервер может задать начальное значение счетчика с помощью параметра "cnt": http://192.168.0.14/sec/?pt=0&cnt=65435.
Когда счетчик порта достигнет 65535 (+100 относительно начального значения), контроллер отправит на сервер соответствующий GET-запрос, а сервер в ответ снова может установить нужное ему значение счетчика порта.

 

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

 

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

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

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

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

http://192.168.0.250/megad.php?pt=7&v=1

В данном случае запрос будет означать, что порт P7 был включен (v=1).

 

Режимы работы выхода

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. Этот режим можно установить для любых цифровых портов. Модули на базе DS2413 можно применять в нескольких случаях: когда функциональность исполнительного модуля MegaD-8I7O избыточна и требуется всего 1-2 порта для управления нагрузками; когда портов стандартных модулей не хватило для реализации задачи и есть свободные цифровые; когда требуется вынести модуль управления нагрузками на определенное расстояние (в этом случае достаточно проложить до модуля DS2413 кабель UTP).

 

Объединение выходов в группы

Group: поле для объединения портов в группы. Можно указать любой номер группы (от 0 до 99). Используется в нескольких случаях.

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

Группу можно указать и для выходов в режиме "PWM". Таким образом, в одной группе могут быть как выходы в режиме "SW", так и выходы в режиме "PWM". Но независимо от того, какие конкретно порты объединены в группу, управлять ею можно только командами '0' (выключить), '1' (включить) или '2' (переключить). Любое другое положительное значение (например, g:75) будет интерпретироваться как команда "1" (включить).

 

Особенности работы выхода в режиме 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.


Опция Min. Минимальное значение ШИМ при управлении одной кнопкой (команда ~)

Некоторые лампы диммируются не во всем диапазоне значений ШИМ. Разные модели ламп могут начинать светиться при значении ШИМ равным 40, 100 или даже 160. В этом случае при диммировании подобных ламп одной кнопкой с помощью команды сценариев "~" возникает пауза. Контроллер плавно увеличивает значение ШИМ, но лампа в диапазоне, к примеру, 0-100 не светится. Чтобы избежать этого эффекта предусмотрено поле Min, с помощью которого можно задать порог, с которого контроллер начнет увеличивать счетчик ШИМ. Тогда контроллер от 0 сразу переходит к установленному в поле Min значению, а дальнейшее изменение ШИМ происходит в обычном режиме.

Данное поле особенно актуально для микроконтроллерных диммеров, устанавиваемых в Моноблок и модуль MegaD-8I7O-X.
В модуле MegaD-8I7O-SD предусмотрены аппаратные подстроечные резисторы, с помощью которых можно выставить нужный уровень свечения при минимальном значении ШИМ.


Особенности работы выхода в режиме DS2413

Данный режим выбирается в том случае, когда к цифровому порту подключены модули на базе DS2413: MegaD-2W, 1W-MM5.
Готовые симисторные двух-канальные модули предназначены для управление двумя независимыми нагрузками 220В / 300Вт.

Так как модули на базе микросхемы DS2413 двухканальные, в Web-интерфейсе присутствует две пары ссылок для управления каналами A и B.

Выходами модулей DS2413 можно управлять как из встроенного Web-интерфейса, так и через сервер.
Для того, чтобы указать канал, который нужно переключить, передается дополнительно 'A' или 'B'

Например: cmd=33B:1

Для данного порта также доступны команды группового включения/выключения 'a:1/a:0/a:2'

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

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

c6c439000000:OFF/OFF;15b039000000:ON/OFF

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

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

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

Через ссылку Device List в Web-интерфейсе контроллера (команда "cmd=list") можно получить состояние не только модулей с выходами (MegaD-2W, 1W-MM5), но и модулей, которые используют каналы в качество входов, а также адреса и значения температурных датчиков DS18B20, если они подключены к тому же порту, к той же шине.

Таким образом, к одному цифровому порту (а это все порты клеммы XT2 контроллера; все порты MegaD-14-IOR; порт 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

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


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

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

Данный тип порта применяется для разъемов XP5, XP6, а также для входов исполнительного модуля MegaD-14-IOR (левое положение конфигурационного джампера) для портов с функцией АЦП (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, который вызывается устройством.

При проходе значения АЦП-порта через настроенный порог на сервер отправляется запрос следующего вида (пример).

/md.php?pt=36&v=299&dir=1
  • md.php - имя скрипта, указанное в сетевых настройках
  • pt=36 - номер АЦП-порта
  • v=299 - текущее значение АЦП-порта
  • dir=1 - направление перехода (снизу вверх - 1, сверху вниз - 0)


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

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

В данном режиме контроллер поддерживает работу с датчиками 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
Результат отображается по следующему принципу: [адрес датчика]:[температура];[адрес датчика]:[температура];

Такой же ответ будет контроллер будет формировать и по команде "cmd=get" для текущего порта. Но если необходимо получить значение только конкретного датчика, а не всех датчиков на шине, то следует дополнительно указать параметр "addr" (для версий прошивки >4.61b8). Например: http://192.168.0.14/sec/?pt=34&cmd=get&addr=bab8690d0000

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

  1. Необходимо выбрать тип W26 и указать режим: D0 или D1.
  2. Затем для линии 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-2561 заключается в том, что I2C-устройства и датчики можно подключать к любым портам, а не только к тем, у которых есть аппаратная поддержка I2C на уровне микроконтроллера.

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

В данный момент поддерживаются датчики/устройства: HTU21D, SHT31, SHT85, HTU31D, TMP117, MAX44009, OPT3001, BH1750, TSL2591, BMP180, BMP280, BME280, BME680, DPS368, SSD1306, LCD1602 (PCF8574T), MCP23008, MCP23017 (MegaD-16I-XT, MegaD-16R-XT), I2C-Encoder-V2, PCA9685 (MegaD-16PWM, MegaD-16U-XT, MegaD-16M-XT), ADS1115, INA226, SCD40/SCD41, T6703/T67xx, HM3301, SPS30, MLX90614, MCP4725, MCP4018, MCP9600, PTsensor, RadSens, CG-Anem. Данный перечень постоянно расширяется.
Вот так (стандартным образом) отображается информация с датчика HTU21D.

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

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

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

# Отображение влажности (HTU21D)
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

# Отображение влажности (SHT31/SHT85)
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=sht31
# Отображение температуры (SHT31) (Между отдельными запросами температуры и влажности должно быть не менее 0,1 сек.)
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=sht31&i2c_par=1
# Инициализация датчика (в том случае, если в Dev выбрано другое устройство)
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=sht31&i2c_par=9

# Запрос на конвертацию температуры и влажности (HTU31D)
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu31d&i2c_par=3
# Отображение влажности (HTU31D)
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu31d
# Отображение температуры (HTU31D)
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu31d&i2c_par=1
# Включение нагревателя
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=sht31&i2c_par=4
# Выключение нагревателя
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=sht31&i2c_par=5

# Отображение освещенности (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
# Отображение атмосферного давления и температуры  (BMP180)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmp180&i2c_par=2

# Отображение атмосферного давления (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
# Отображение всех 3-х параметров: давление, температура, влажность (BME280)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmx280&i2c_par=3

# Отображение атмосферного давления (DPS368)
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=dps368
# Отображение температуры (DPS368)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=dps368&i2c_par=1
# Отображение атмосферного давления и температуры  (DPS368)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=dps368&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

# Отправка запроса на измерение давления (PTsensor)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=ptsensor&i2c_par=1
# Отображение давления жидкости
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=ptsensor&i2c_par=2
# Отображение температуры
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=ptsensor&i2c_par=3

# Отображение значения скорости воздушного потока (CG-Anem)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=cganem
# Отображение значения максимальной скорости воздушного потока (порывы) (CG-Anem)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=cganem&i2c_par=3
# Сброс показаний абсолютного максимума в памяти датчика (CG-Anem)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=cganem&i2c_par=8
# Отображение значения температуры холодного щупа (CG-Anem)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=cganem&i2c_par=2

# Отображение значения интенсивности излучения (статический период T = 500 сек) (RadSens)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=radsens
# Отображение значения интенсивности излучения (динамический период T < 123 сек) (RadSens)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=radsens&i2c_par=2
# Отображение значения счетчика импульсов
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=radsens&i2c_par=3

# Отображение температуры термопары (MCP9600)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=mcp9600
# Отображение температуры окружающей среды, встроенный в микросхему сенсор (MCP9600)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=mcp9600&i2c_par=1
# К одному порту можно подключить несколько MCP9600 и запрашивать данные по 7-битному адресу в hex-формате
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=mcp9600&addr=67

# Отображение температуры (TMP117)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=tmp117
# К одному порту можно подключить несколько TMP117 и запрашивать данные по 7-битному адресу в hex-формате
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=tmp117&addr=49

# Установить напряжение примерно в районе 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

# Перевод датчика в режим измерений и включение вентилятора (SPS30)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=sps30&i2c_par=1
# Запрос значений PM (i2c_par=2 -> PM1; i2c_par=3 -> PM2.5; i2c_par=4 -> PM4; i2c_par=5 -> PM10; i2c_par=6 -> PS (средний размер частиц)(SPS30)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=sps30&i2c_par=2
# Остановка вентилятора. Переход в режим ожидания (SPS30)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=sps30&i2c_par=8
# Прочистка вентилятора для предотвращения засорения вентиляционных отверстий датчика (работает только если вентилятор уже включен) (SPS30)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=sps30&i2c_par=9

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

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 порт.

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

 

 

MegaD-I2C-API

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

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 и т.д. Даже если прошивка контроллера "не поддерживает" какой-либо датчик, можно написать свой плагин для ПО сервер и таким образом получить доступ к I2C-датчику. Изменений в прошивке при этом не потребуется.

Подробнее с примерами

 

Работа с модулями на базе расширителей MCP23008/MCP23017 (MegaD-16I-XT, MegaD-16R-XT)

Контроллер позволяет работать с микросхемами-расширителями портов MCP23008 (дополнительно 8 портов) и MCP23017 (дополнительно 16 портов; доступен) и модулями, постронных на этих микросхемах. В текущий момент производятся модули MegaD-16I-XT (16 стандартных входов, построенный на базе MCP23017) и MegaD-16R-XT (16 релейных выходов 10А на базе MCP23017).
Подключив подобный расширитель к двум цифровым портам контроллера можно получить дополнительно 16 портов. Тип этих дополнительных портов также конфигурируется в Web-интерфейсе контроллера. Порты могут быть "входами" IN и "выходами" OUT. Тип подключенной микросхемы (MCP23008, MCP23017) контроллер определяет автоматически.

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


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

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

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

Когда 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. Подключать несколько расширителей к одной линии INT нельзя.

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

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

?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) кроме MegaD-16I-XT, сетевых сценариев (Net), различных режимов (управление диммированием, Click mode) целесообразнее использовать подобные модули для реализации выходов. В этом случае не потребуется также настройка и подключение линии INT. Однако и входы работают вполне надежно в простых задачах: герконы на окнах и дверях, различного рода извещатели, выключатели освещения и т.д.

Стандартные сценарии (Act) поддерживаются контроллером для расширенных портов модуля MegaD-16I-XT.
В поле Act в настройках порта MegaD-16I-XT можно указывать любые дискретные команды: включить, выключить, переключить, установить заданную яркость, в том числе управляющие портами модуля-расширителя MegaD-16R. Но не поддерживаются команды типа "~", "^", "v" для автономного управления процессами диммирования. Данную функцию можно реализовать при участии сервера.
Также как и для родных портов контроллера, для MegaD-16I-XT доступен чекбокс рядом с полем Act - флаг обязательного выполнения сценария при наличия сервера.
Следует учитывать, что в отличие от родных портов контроллера, сценарии портов расширителя выполняются только при отсутствии сервера или если установлен флажок обязательного выполнения сценария. В том случае, если флажок обязательного выполнения отсутствует, а сервер прописан, но не отвечает, то в отличие от родных портов контроллера, сценарий порта расширителя в этом случае выполняться не будет.
Title - текстовое описание порта латинскими буквами. Только для пользователя. Содержимое поля никак не используется контроллером.

 

Работа с модулями на базе расширителя PCA9685 (MegaD-16PWM, MegaD-16U-XT, MegaD-16M-XT)

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

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

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

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

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

Опция Type определяет режим работы порта: PWM (ШИМ) или SW (Вкл / Выкл).
В режиме PWM доступны новые поля: Min, Max, Speed, которые имеют отношение к управлению диммируемыми каналами одной кнопкой и командой сценария "~". Некоторые диммируемые лампы управляются не во всем диапазоне. Это приводит к нежелательным задержкам при управлении такими каналами одной кнопкой средствами контроллера (команда "~"). Для компенсации этого эффекта в полях Min и Max можно указать рабочий диапазон, в котором лампа меняет свою яркость. Например, если в поле Min будет указано 700, а в поле Max - 3800, то при диммировании командой "~" контроллер со значения ШИМ 0 сразу установит 700 и далее будет плавно увеличивать его до максимального значения 3800.
Поле Speed используется для управления скоростью диммирования при выполнении сценария "~". По умолчанию, если в поле ничего не указано, скорость (шаг изменения) равна 16. Чем меньше значение, тем медленнее будет изменяться яркость при удержании кнопки. Это поле предназначено только диммирования с использованием команды сценария "~" и не является аналогом параметра Smooth родных портов контроллера.


В том случае, когда тип порта выбран SW, порт работает в релейном режиме: ON (вкл) или OFF (выкл). Такой режим полезен для портов модуля MegaD-16U-XT, в котором можно установить электромеханические реле или недиммируемые симисторы.
Group - группа. Порты в режиме SW можно объединять в одну группу в том числе с родными портами контроллера. Подробнее о группах.

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

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

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

Контроллер позволяет управлять всеми портами расширителя одной командой: включать, выключать или задавать конкретное значение.
Команда сценария в этом случае будет выглядеть так: 31:4000.
Здесь 31 - номер SDA порта, а 4000 - значение, которое необходимо установить. Таким образом, в данной команде отсутствует указание номера конкретного порта расширителя, например e3.

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

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

Прошивка контроллера поддерживает диммирование одной кнопкой (команда "~") портов расширителя MegaD-16PWM / MegaD-16U-XT / MegaD-16M-XT. Кнопка при этом должна быть подключена к родному входу контроллера. Данная функция доступна только для указанных модулей и не доступна для других расширителей на базе PCA9685.

 

Работа с внешним АЦП 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)

 

Работа с измерителем тока и напряжения INA226

Если в поле Dev настроек порта в режиме SCL/SDA выбран INA226, отображаются следующие данные

sI:1.16/bV:12.61/raw:930

sI (Shunt Current) - вычисленный ток в амперах, протекающий через шунт. В расчетах используется значение сопротивления резистора шунта 0.002 Ом (R002). Такой чаще всего устанавливается в готовые платы, доступные для заказа в Интернет-магазинах.
bV (Bus Voltage) - величина напряжения шины в Вольтах
raw - сырые данные регистра 01h (Shunt Voltage) в том случае, если используется другое сопротивление шунта или требуется более высокая точность измерений (мА).

Данные можно запросить прямыми HTTP GET-запросами

// Ток (А)
http://192.168.0.14/sec/?pt=33&scl=32&i2c_dev=ina226&i2c_par=1
// Напряжение (В)
http://192.168.0.14/sec/?pt=33&scl=32&i2c_dev=ina226&i2c_par=2
// Raw данные
http://192.168.0.14/sec/?pt=33&scl=32&i2c_dev=ina226&i2c_par=3

Если выбран Dev: INA226, контроллер автоматически переключает измеритель в режим усреднения значений (Averaging Mode) - 128 измерений. Это необходимо для стабилизации показаний.
Если Dev не выбран или выбрано другое устройство, то режим усреднения можно включить прямым запросом.

http://192.168.0.14/sec/?pt=33&scl=32&i2c_dev=ina226&i2c_par=9

 

Работа с 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: - значение, которое нужно вывести.

В текущий момент поддерживается отображение цифр, точки, плюса, минуса и значка градуса, процента и иконки "ppm", которая кодируется символом 'p'. Двоеточие после температуры ":" как раз и дает понять контроллеру, что необходимо отобразить значок градуса. Это упрощает ситуацию, ведь в отличие от символа градуса двоеточие присутствует на клавиатуре, а для передачи этого символа в 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" (пробел). Шрифт, который заложен в контроллер моноширинный, поэтому температура отображается всегда ровно, цифры не прыгают и не смещаются.
Символ "_" также означает пробел, то в отличие от "s" (пробел, равный ширине символа), символ "_" кодирует пробел, равный половине ширины цифры. Это можно использовать для выравнивания текста.

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

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 - ряд, который нужно очистить.

Также контроллер поддерживает ЖК-дисплей LCD1602 (PCF8574T). Подробнее.


Планировщик заданий и поддержка часов (RTC)
Функция cron

Контроллер 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-IOR, но и к внутреннему 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 - каждый день. День недели учитывается. Можно задать выполнение циклической операции в определенные дни недели. Отсчет времени "каждых n-минут" начинается от старта/перезагрузки контроллера.
/02:15:0 - выполняется каждые 2 часа в 15 минут. То есть в 2:15; 4:15; 6:15 и т.д.

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

Функция cron также поддерживает запуск сценариев при старте контроллера.


В поле "T" в таком случае необходимо прописать "@reboot".
Выполнение сценария при старте отличается от установки состояния выхода по умолчанию (поле Default) тем, что здесь можно прописать команды для портов для расширителей, лент WS281X, групп, использовать паузы и команды повтора сценария. Ключевое слово "@reboot" можно использовать в любом из доступных полей "T".

Стоит добавить, что часы внутри микроконтроллера, когда он работает, идут и без дополнительной платы RTC (DS3231), но в этом случае они, во-первых, всегда сбрасываются в момент выключения/включения и, во-вторых, не являются точными. Использование RTC (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 для хранения длинного сценария.

В текущий момент функция Program работает только с родными портами контроллера, а также с датчиками DS18B20 (тип порта: Dsen/1W). Порты расширителей, а дакже показания датчиков, подключаемых по шине I2C, пока в Program не обрабатываются. Единственное исключение - показания влажности для HTU21D.

Program и счетчики входов (IN)

Иногда требуется, чтобы сценарий выполнился, если счетчик входа достигает определенного значения. Это можно реализовать двумя способами: с помощью виртуальных портов и команды "+" или указав значение счетчика входа в Program напрямую.
Если в Program в качестве значения входа указано число отличное от "0" (разомкнут) или "1" (замкнут), а оператор сравнения "=", оно интерпретируется как целевое значение счетчика.
При достижении счетчиком входа указанного в Program значения сработает условие, выполнится сценарий, а показание самого счетчика обнулится. Важная особенность. Если в Program используются связанные условия, то при достижении счетчиком входа указанного в одном из условий значения, он обнулится в любом случае. Даже если связанное условие не сработало и сценарий не выполнился. В противном случае счетчик входа будет увеличиваться дальше, а условие уже никогда не сработает, пока счетчик не сбросится автоматически при достижении максимального значения.
Но в том случае, когда необходимо дождаться события, при котором будет удовлетворяться и связанное условие, возможно использование операций ">" (больше) или "<" (меньше). Например, выполнить сценарий, если значение счетчика P0 >10 и порт P7 включен. В этом случае контроллер автоматически не будет сбрасывать значение счетчика ни в каком из случаев, даже если оба условия сработают и будет выполнен сценарий. Но его можно сбросить с помощью специальной команды сценария 'x'. Например, выражение "0:x" сбросит счетчик для порта P0. Это выражение можно добавить в выполняемый сценарий условия. Такой подход обеспечивает максимальную гибкость при использовании Program в различных ситуациях.


Виртуальные порты

С виртуальных портов существенно повышается функциональность условных сценариев (Program). Ранее, чтобы реализовать некоторые алгоритмы, приходилось задействовать неиспользуемые реальные порты контроллеров в режиме OUT в качестве временных переменных для хранения состояний. Теперь для этого можно использовать виртуальные порты.

Ссылка на список виртуальных портов доступна на главной странице интерфейса.

Всего таких портов 10.
Номера портов P80-P89.
Рядом с номером порта указано его текущее значение. Диапазон от 0 до 65535 (16 бит).

В прошивке это называется портами, хоть и виртуальными, потому что работа с ними возможна с помощью стандартных сценариев.
Например: "80:1000" - установит значение порта P80 равное 1000.
Или так: 7:1;80:1;7:0

Запросить значение виртуального порта можно точно также, как и реального.
http://192.168.0.14/sec/?pt=80?cmd=get

Виртуальные порты поддерживают команды "+" и "-".
Например, виртуальный порт может выполнять роль счетчика.

А в Program можно прописать выполнение сценария при достижения счетчика определенного значения.

Если счетчик виртуального порта доходит до максимального значения 65535, то команды "+" сбрасывает его в 0. Если же значение порта 0, то команда "-" его не меняет.

Факт изменения виртуальных портов автономными сценариями не отправляется на сервер, если он используется. Виртуальные порты никак не реагируют на команды управления выходами "a:0/a:1". У виртуальных портов нет групп.

Виртуальные порты поддерживают команду переключения с помощью модификатора "*". Аналогично ШИМ-портам.
http://192.168.0.14/sec/?cmd=80:*300 // Если P80=0, будет установлено значение "300". Если P80>0, будет установлено значение "0".
http://192.168.0.14/sec/?cmd=80:*1 // Это аналог команды "2" для OUT/SW портов. Каждое выполнение данной команды будет инвертировать значение виртуального порта.

 

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

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


После подключения GSM-модуля в настройках контроллера необходимо включить опцию "GSM" и указать номер телефона, на который будут отправляться SMS-сообщения.
Если в настройках указан сервер, то рядом с полем UART появляется чекбокс, который указывает контроллеру на необходимость обрабатывать все входящие SMS независимо от наличия сервера.
Но если сервер прописан, то контроллер, выполнив сценарий, все равно передаст текст сообщения на сервер, дабы он был в курсе происходящего.

Если же в таком режиме, когда включен чекбокс, появится необходимость что-то передать на сервер без обработки SMS со стороны контроллера, то в начале сообщения нужно поставить символ "!" (этот символ не используется в автономных сценариях).
Например: !text-for-server
В этом случае сообщение не будет интерпретировано и обработано контроллером в качестве сценария.

Настройка 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" поступило от номера, прописанного в конфигурации, то контроллер выключит режим охраны

Режим охраны сохраняется в энергонезависимую память. При включении контроллер запускается в том режиме, который был до отключения питания.
Получить текущее состояние режима охраны можно с помощью GET-запроса с параметром "am=1".

http://192.168.0.14/sec/?am=1

В ответ контроллер вернет ARM (режим охраны включен) или DISARM (режим охраны выключен).


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

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

Для запроса состояния порта нужно отправить команду вида "get:n", где n - номер порта. Например, по команде "get:0" контроллер в ответном сообщении пришлет состояние порта P0. Ответ полностью идентичен тому, что устройство возвращает по запросу cmd=get через HTTP.


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

Когда в настройках контроллера указан сервер, то устройство с подключенным к нему GSM-модулем становится SMS-шлюзом, которое передает все входящие SMS сообщения на сервер и отправляет SMS по команде сервера. Входящее SMS-сообщение передается на сервер следующим образом.

/script.php?sms_phone=+79000001234&sms_text=hello

В таком режиме уже сервер решает, нужно ли реагировать на сообщение от этого номера и как интерпретировать текст.

Сервер также может через контроллер отправлять произвольные сообщения на произвольные номера. Для этого необходимо отправить запрос следующего вида.

http://192.168.0.14/sec/?sms=Alarm!&phone=+79000000000

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

 

Голосовые звонки

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


По умолчанию звонок будет "молчаливым". При ответе на звонок в трубке будет тишина.
Но контроллер позволяет загрузить в GSM-модуль, в котором для этого присутствует специальная память, произвольный звуковой файл. Этот файл будет проигрываться в случае соединения с абонентом.

Для того, чтобы загрузить в GSM-модуль звуковой файл необходимо сделать следующее.

  • Скачать и распаковать архив megad-gsm-amr.zip
  • Отредактировать скрипт, указав нужный IP-адрес контроллера и имя AMR-файла
  • Запустить из текущей папки скрипт: php megad-gsm-amr.php

В архиве уже включен файл warning.amr, который содержит фразу: "Внимание! Сработал порт контроллера"
Можно создать свой аудио-файл с помощью любого сервиса синтеза речи или сделать запись с микрофона. Полученный WAV-файл необходимо сконвертировать в формат AMR. Пользователям Linux проще всего воспользоваться утилитой SOX.

sox warning.wav output.amr-nb

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

// Позвонить на номер, который прописан в настройках
http://192.168.0.14/sec/?call=1
// Позвонить на произвольный номер
http://192.168.0.14/sec/?call=1&phone=84956069233

 

Улучшение стабильности работы GSM-модемов

Нами производится модуль GSM-UPS. Это GSM-модем с UPS - источником бесперебойного питания контроллера. GSM-UPS сделан с применением качественных оригинальных комплектующих и отличается высокой стабильностью и надежностью в работе. Вместе с тем, к контроллеру можно подключить и дешевые модемы, которые продаются на китайских площадках. Часто это или клоны или бывшие в употреблении модули. Такие модемы иногда работают не очень стабильно и могут самостоятельно перезагружаться в процессе работы. В этом случае настройки, которые контроллер делает в момент запуска, сбрасываются, и модем перестает работать корректно. Чтобы этого не происходило, необходимо записать текущие настройки в память модема. Сделать это можно с помощью следующего запроса, который необходимо отправить только один раз.

http://192.168.0.14/sec/?gsm_wr=1

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


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

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

После старта устройство соединяется с сервером и подписывается на топик: megad/14/cmd
Здесь 14 - последний байт IP адреса устройства.
Если прописан MegadID, то используется он.
Например, если в качестве MegadID указан "test", то контроллер подпишется на топик: test/cmd
Это же правило работает и при публикации в топиках информации о портах.

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

По умолчанию контроллер соединяется с брокером без авторизации.
Если в поле Passwd указан пароль, используется авторизация. Логином является Megad-ID, который прописывается в соответствующей вкладке.
Опция Retain устанавливает соответствующий флаг в публикуемых сообщениях. Данный флаг указывает MQTT-брокеру сохранять последнее сообщение в каждом топике. Если серверное ПО перезагружалось или какое-то время не работало, то при запуске брокер отправит программному обеспечению опубликованные контроллером сообщения. По одному последнему сообщению на каждый топик.

В данный момент при срабатывании входа устройство публикует информацию в топике: 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"}

Начиная с версии 4.36b4 контроллер может принимать команды, отправленные в топик "cmd", в формате JSON

{"port":6} // получить состояние порта P6
{"port":10,"value":"ON"} // включить порт P10

Для протокола MQTT контроллер поддерживает технологию "Last Will and Testament". При разрыве соединения контроллера с брокером (по любой причине) последний будет публиковать в топик megad/14/status (а если указан megadID, то [megadid]/status) сообщение с текстом "Offline". Таким образом, сервер может своевременно получить информацию о недоступности контроллера. В то же время при подключении к брокеру контроллер будет публиковать в этот же топик сообщение с текстом "Online".

 

Особенности настройки MQTT-брокера

Необходимо настроить брокер так, чтобы он автоматически не склеивал пакеты, поступающие со стороны серверного ПО.
Для брокера mosquitto необходимо настроить опцию set_tcp_nodelay.

# Disable Nagle's algorithm on client sockets. This has the effect of reducing
# latency of individual messages at the potential cost of increasing the number
# of packets being sent.
set_tcp_nodelay true

 

Функция Screens в качестве пользовательского интерфейса контроллера

Встроенный Web-интерфейс контроллера используется для настройки параметров его работы. Вместе с тем в прошивку MegaD-2561 (только для версий V3) заложена возможность создания и пользовательского интерфейса для мобильных устройств по технологии WebApp. Причем все блоки интерфейса, а также их расположение полностью конфигурируются самим пользователем. На экран телефона можно вывести информацию о подключенных датчиках, а также кнопки управления выходами. Доступно несколько экранов, автоматическое переключение между светлой и темной темами и многое другое.

Подробнее о настройки пользовательского интерфейса в отдельном материале Функция Screens в MegaD-2561 V3.

 

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

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

В текущий момент функция "ИК" доступна для портов [P10, P12, P13 - группа 1], [P25, P27, P28 - группа 2]. Для удобства подключения можно использовать исполнительный модуль MegaD-14-IOR. Для того, чтобы попробовать ИК-управление достаточно взять простейший ИК-диод стоимостью 3-5 рублей, подключив его через токоограничивающий резистор непосредственно к порту, например, P12 без какого-либо дополнительного питания. Но в этом режиме максимальное расстояние от приемника до ИК-диода составит не более метра. Поэтому лучше использовать ИК-передатчик, который был разработан специально для подключения к модулям MegaD.
Подробное описание принципов работы с ИК-передатчиком.

Не следует в рамках одной группы комбинировать ИК-передатчик и диммируемые порты (диммеры, мосфеты), так как у группы общие настройки аппаратного таймера. Если, например, установить в каналы P10, P12 диммеры, а в канал P13 ИК-передатчик, то в момент отправки ИК-команды свет может кратковременно моргнуть.

 

Управление 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

Лентами можно управлять не только с помощью сервера, но и с помощью кнопок, подключенных к контроллеру.
Предположим, лента подключена к порту P35 и к контроллеру также подключена двухклавишная кнопка.
Для одной кнопки прописывается команда сценария: 35:~ (управление яркостью/диммированием)
Для второй кнопки прописывается команда сценария: 35:# (выбор цвета)

Таким образом, одной кнопкой ленту можно включить/выключить, а также изменить яркость.
Другой кнопкой выбирается цвет. При удержании нажатой кнопки, цвет плавно меняется по кругу. Однократное нажатие выбирает произвольный цвет.

На китайских площадках типа Aliexpress продается множество разнообразных лент с различными чипами-клонами, которые совместимы с WS2811/WS2813, WS2818.
К сожалению не все ленты одинакого хорошо работают с контроллером, а потому нет возможности гарантировать работу с любой подобной лентой.
При питании ленты от отдельного блока питания, минус этого БП необходимо соединить с минусом БП, питающего контроллер.

Управление лентами из автономных сценариев (поле Act) описано здесь.
 

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

Иногда возникают такие задачи, которые требуют, чтобы после аварийного выключения питания контроллер восстанавливал состояние своих выходов без участия сервера.
Очевидное на первый взгляд решение, сохранять состояние портов в энергонезависимой памяти микроконтроллера при каждом переключении выходов, в действительности не слишком удачное. У ячеек 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, nginx, IIS. Установка 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 (АЦП). Если удобнее получить состояние порта не в текстовом: ON/OFF, а в цифровом виде 1/0, то следует добавить к GET-запросу параметр "f=d". Например: "&cmd=get&f=d". Отображение состояния портов в цифровом виде работает только для родных портов контроллера типа IN и OUT/SW.

Контроллер также позволяет вывести состояние всех своих портов по команде 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

 

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

Контроллер MegaD-2561 может отвечать на SNMP-запросы, возвращая состояния портов: IN, OUT, ADC, DSen/1W.
Поддерживается SNMP v1.
OID: 1.3.6.1.4.1.42

Примеры.
Получение состояния всех портов: snmpwalk -v1 -c public 192.168.0.14 1.3.6.1.4.1.42
Получение состояния порта P7: snmpwalk -v1 -c public 192.168.0.14 1.3.6.1.4.1.42.7

 

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

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

MegaD-2561 Ver 2.0-2.3
MegaD-2561-RTC Ver 3.0
MegaD-8I7O-R Ver 1.0
MegaD-8I7O-X Ver 1.0
MegaD-8I7O-S Ver 1.0
MegaD-8I7O-SD Ver 1.0
MegaD-14-IOR Ver 2.0
MegaD-14-R Ver 2.0
MegaD-16I-XT Ver 1.0
MegaD-16U-XT Ver 2.0
MegaD-16R-XT Ver 1.0
MegaD-2R Ver 1.0-2.0
MegaD-2W Ver 1.0
MegaD-2RW 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-14-IOR Ver 1.0
MegaD-14-IN Ver 6.2
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

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

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

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