MIDI-MT - Модуль управления устройствами «Умного Дома»

MIDI-MT Документация на Русском языке

Управление устройствами умного дома

    MQTT - Message Queuing Telemetry Transport

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

Рекомендуем следующие совместимые решения для управления Умным Домом:

Настройки модуля управления устройствами «Умного Дома»

Настройка MQTT соединения
SSL/TLS - настройка сертификата

Файл сертификата, путь к кторому вы должны указать в конфигурации, должен состоять как минимум из сертификата CA (Certificate Authority), который подписал сертификат вашего сервера MQTT. Если у вас есть цепочка из необходимых сертификатов, то необходимо разместить корневой сертификат в отдельной папке, в неё же добавить остальные необходимые сертификаты. Например корневой сертификат компании Let's Encrypt имеет название R3. Если вы используете сертификат от этой компании, то вам достаточно указать путь к файлу R3.cert или R3.pem в формате PEM.

В случае само-подписанного сертификата, вполне достаточно указать его, при этом установив галочку над одноименным пунктом. В этом случае сертификат MQTT сервера будет таким же, как и сертификат CA.

Для активации SSL/TLS установите галочку над соответствующим пунктом. Используйте эти параметры, только если хотите зашифровать связь между клиентом и сервером. В локальной сети, это как правило делать не стоит. Так как это повышает нагрузку как на клиента, так и на сервер.

PSK - настройка ключей

Работа с PSK ключами не совсестима с SSL/TLS настройками. Соединение может работать только в одном из указанных режимов, при заполнении всех значений, приоритет отдается соединению на основе PSK ключей. Используют PSK ключи, как правило, при работе с внешними серверами, настрока авторизации которых происходит через их же Вэб интерфейс. Например AdaFruit MQTT или HiveMQ Public MQTT Broker.

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

Настройки MQTT сервера

MQTT темы (топики)

MIDI-MT использует следующую структуру MQTT топиков:

    /sensor/<логин для MQTT сервера>/<идентификатор контрола>/<имя значения>

Пример используемых топиков. Предположим что ваш логин для сервера MQTT - ectrl9, идентификатор контрола плавно регулирующего освещение имеет название av1 и контрол включающий или выключающий свет имеет идентификатор b11. В таком случае, упавляющие команды будут отправлены в следующие топики:

    /sensor/ectrl9/av1/level = от 0 до 127
    /sensor/ectrl9/b11/onoff = 1 или 0

Имя контрола задаётся автоматически, в соответствии с выбранным в редакторе идентификатором контрола. Его можно получить, обратившись к топику:

    /sensor/ectrl9/av1/title = "уровень 1"
    /sensor/ectrl9/b11/title = "вкл/выкл 1"

Для некоторых сценариев, будет полезна информация о статусе подключении MIDI клавиатуры. Проверить её текущее состояние можно обратившись к топику:

    /sensor/ectrl9/state = 1 или 0

Если вы плохо ориентируетесь в протоколе MQTT, или в устройстве Умного Дома, в этом случае, рекомендуем прочесть книгу:

Настройки привязок органов управления

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

Расширенные настройки привязок органов управления

Всем типам элементов управления можно определить дополнительные свойства. Например назначение темы (топика) в которую будет производиться запись значений. Также, можно самостоятельно определить полезную нагрузку значений и описание элемента. Описание элементов управления будет отображаться в MQTT брокере, пульте дистанционного управления и конструкторе панелей.
Эти настройки возможно выполнить в редакторе.

Чтобы иметь возможность записывать данные в произвольные темы, необходимо разрешить уровень доступа на запись в MQTT брокере. Пример конфигурации в файле acl.conf для брокера mosquitto:

user ectrl9
topic readwrite #

Значение user должно соответствовать учётной записи на MQTT сервере.

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

Настройки слайдеров

Конфигурационный файл

Настройки в конфигурационном файле, выглядят следующим образом:

{
    ...
    "mqtt": {
        "enable": true,            // блок настроек 'Умного Дома',
        "host": "192.168.22.1",    // учётная запись клиента 
        "login": "ctrl9",          // на MQTT сервере
        "pass": "12345",
        "prefix": "",
        "sslpsk": "",
        "certcapath": "",
        "port": 1883,
        "loglevel": 16,
        "isssl": false,
        "selfsigned": false
    },
    ...
}

Лог файл

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

Пример лог файла
[07-25 -> 16:58:38] Common::MQTT::on_log: Client ctrl9-4687392 sending CONNECT
[07-25 -> 16:58:38] Common::MQTT::on_log: Client ctrl9-4687392 sending PUBLISH (d0, q0, r1, m1, 'sensor/ctrl9/state', ... (1 bytes))
[07-25 -> 16:58:38] Common::MQTT::SmartHome::Start: The Smart-Home control service is running.
[07-25 -> 16:58:38] Common::MQTT::on_log: Client ctrl9-4687392 sending PUBLISH (d0, q0, r1, m2, 'sensor/ctrl9/b37/title', ... (9 bytes))
...