mambur

 
<<< Назад

MegaD по-киевски

Часть 1. Двусторонняя интеграция MegaD и Majordomo. Без программирования.

В результате выполнения конфигурации получим:
1. Управление освещением реальными кнопками на стене.
2. Управление освещением нарисованными кнопками на сцене и во всех интерфейсах Majordomo.
3. Управление освещением напрямую в MegaD, а Majordomo подхватывает все изменения как родные

Рассмотрим варианты обработки событий:

  1. Быстрое однократное нажатие кнопки выключателя
  2. Гибкое многократное нажатие кнопки выключателя (cl....
  3. Диммирование LED лент

Опытные пользователи Majordomo могут начинать прочтение статьи с раздела Не очевидное, экономя время на прочтение о базовых принципах настройки интерфейса.

Легенда

Кнопка на порту №30 управляет реле на порту №10
Одинарное нажание - включается/выключается бра №10
Двойное нажатие - не доступно
Долгое нажание - не доступно

Настройки MegaD

Проверено и справедливо для прошивки MegaD-2561 версии 4.50b4
Присылайте автору другие устройства и будет описание о них.

На изображениях ниже красным цветом скрыты IP-адреса устройств автора в локальной сети и произвольное именование каждого устройства Megad.

Config

Раздел Config не отличается новизной. Проиводится для примера.
megad.Config

Megad-ID

Раздел Config / Megad-ID содержит важную для дела галку srv loop, которая должна быть отмечена.
Это позволит приводить Majordomo в соответсвие фактическому состоянию устройств MegaD. Таких как реле, мосфеты, симисторы. Другими словами приборы освещения, датчиков, кнопок и прочего.

Megad-ID

P30 (кнопка)

Рассмотрим понфигурацию на примере тридцатого порта, к которому подключена кнопка. Выключатель без фиксации.

button
Act не используется в Majordomo совсем, но на случай недоступности сервера Majordomo имеет логику:

  1. Сменить состояние лампы №10 на противоположное (вкл/выкл)
  2. Выключить другую лампу №9 в томже помещении
  3. Выждать час
  4. Выключить лампу №10 в помещении

Mode делаем в состоянии P - это и определят, что обрабатыается только однократное нажатие.

P10 (реле/лампа)

Рассмотрим понфигурацию на примере десятого порта, к которому подключена лампа (бра).

Light

Конфигурация стандартного выхода, согласно документации MegaD.

По существу в MegaD править более нечего для одной пары кнопка-освещение.

Настройки Majordomo

Mаrket

Установите из маркета дополнение MegaD devices.
В панели управления появится меню Megad

MegadMarket

Панель управления / Устройства / MegaD

Вы можете сканировать устройства или добавить вручную.
Главное, чтоб между сервером Majordomo и контроллером Megad была сетевая доступность.
Проверить можно с помощью ping.

Общее

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

MegadGeneral

Advanced

В этом разделе убедитесь, что Server Script: megad.php
Будем считать, что Вы прочли инструкцию к модулю один или более раз.
Предостережение: Не нажимайте Сохранить в разделе Firmware update

MegadAdv

Данные

Нажмите кнопку Обновить и модуль опросит соотвествующее устройство MegaD.
Заполнится список соответствующий конфигурации портов.
Для дела не принципиально, но очень настоятельно порекомендую: Настройте MegaD будто у вас нет Majordomo. Протестируйте результат на себе одну, две, три недели. И только тогда продолжайте. При замене сервера Majordomo Вас не проклянут в будущем Ваши сожители и/или заказчики.

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

Простые устройства

Создавайте в соответсвии с картинками ниже.
Связанные объекты создавайте автоматически.
Название предпочитаю давать на латинице, начиная с префикса simple. Потом их легко будет искать.

Лампа

В моем случае Бра, но не суть.
Раздел Действия пропускаем, к нему вернемся позже.

Общее
simple1

Настройки
simple2

Связанные устройства
simple3

Расписание
simple4

Кнопка

Добавляем кнопку по аналогии с добавлением Лампы.
Раздел Действия пропускаем, к нему вернемся позже.

Общее
simple11

Настройки
simple12

Связанные устройства
simple13

Связанные устройства
simple14

Не очевидное

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

Связанный объект лампа

Переходим в раздел Панель управления / Устройства / MegaD.
Выбираем порт, который соответствует лампе. В примере P10

Связываем с простым устройством лампа (simpleSonWall), указываем свойство status.

link1

Связанный объект кнопка

Переходим в раздел Панель управления / Устройства / MegaD.
Выбираем порт, который соответствует лампе. В примере P30 (input)

Связываем с простым устройством кнопка (simpleSonWallButton), указываем свойство status.

Важно!!!
Переключатель устанавливаем Skip default action: Да
Иначе у вас будет дублировать управление MegaD и Majordomo. Включение лампы будет сопровождаться мгновенным выключением.
Если не верите, то проверьте стевой трафик: tcpdump -i any -nn -vv -s0 host 172.16.0.xx

link2

Метод statusUpdated объекта simpleSonWallButton

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

Переходим в раздел Панель управления / Объекты / SDevices / SButtons / ButtonXX (simpleSonWallButton),
затем Методы,
затем statusUpdated.

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

Редактировать

После освоения меняйте логику на более совершенную.
Обрабатываем только логику смены статуса на 1. Иначе при отпускании выключателя пропадет видимость.
Blockly2

Сохранить

Необязательно:
Кто предпочитает код, то получит

if ($this->getProperty('status')) {
  if (getGlobal("Relay16.status")) {
    callMethod("Relay16.turnOff");
  } else {
    callMethod("Relay16.turnOn");
    $timerCode=<<<EOT
      callMethod("Relay16.turnOff");
EOT;
    setTimeOut('ligthSonTurn', $timerCode, (int)('3600'));
  }
}

Метод statusUpdated объекта simpleSonWallButton. Не обязательно

Тут для новичков может быть совсем сложно, но Вам оно не надо. Смело пропускайте.
Я создал объект комната, в нем свойство Ligth и назначаю ему номер порта включенной лампы, остальные лампы в помещении выключаю. Полезно, чтоб не бегать между выключателем бра и выключателем основного освещения.
Также для работы логики добавил в простых устройствах свойство megadPort, куда пишу номер соответствующего порта.
Даже не расчитываю, что этот раздел будут читать. Повторю логику сам, если исходники быдут утеряны.

Переходим в раздел Панель управления / Объекты / SDevices / SRelays / RelayXX (simpleSonWall),
затем Методы,
затем statusUpdated.

Blockly11

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

Blockly12

Редактировать

После освоения меняйте логику на более совершенную.
Обрабатываем только логику смены статуса на 1. Иначе при отпускании выключателя пропадет видимость.
Blockly13

Сохранить

Необязательно:
Кто предпочитает код, то получит

if ($this->getProperty('status')) {
  setGlobal($this->getProperty('linkedRoom').'.'.$this->getProperty('loadType'), $this->getProperty('megadPort'));
} else if (getGlobal($this->getProperty('linkedRoom').'.'.$this->getProperty('loadType')) == $this->getProperty('megadPort')) {
  setGlobal($this->getProperty('linkedRoom').'.'.$this->getProperty('loadType'), '0');
}

Прочее

Есть еще много логики с привязкой к MegaD.
Донаты можно отправлять на карту 5375414100851343 или Webmoney Z175390013494
Спасибо за внимание.

Обсуждение (0) (3)

Смотрите так же:
28.02.2024 playSoundToTerminal()
02.08.2022 MegaD по-киевски с сыром
02.08.2022 MegaD по-киевски с подливкой

Odessa, Украина