MIDI-MT Документация на Русском языке
MQTT - Message Queuing Telemetry Transport
Вы можете интегрировать MIDI клавиатуру в систему
своего умного дома, для управления различными устройствами.
Поддерживаются любые среды управления Умным Домом,
которые базируются на протоколе обмена MQTT и имеют в своем составе MQTT
сервер. В системе Умного Дома протокол MQTT должен быть не ниже уровня
5.0
, возможна работа и с более ранними версиями, но
стабильность и полная работоспособность для всех команд не
гарантируется.
Рекомендуем следующие совместимые решения для управления Умным Домом:
mosquitto
,Home Assistant
,openHAB
,MajorDoMo
,ioBroker
,Domoticz
,MyController
,IntraHouse
,В поле «MQTT сервер» необходимо указать IP адрес MQTT сервера.
Поле «Порт» указывает по какому порту отправлять
запросы MQTT серверу, , по умолчанию номер порта
1883
.
Поле «Логин» должно соответствовать учётной записи на MQTT сервере.
Поле «Пароль» также должно соответствовать учётной записи на MQTT сервере.
«Ключ PSK» - другая форма авторизации, вместо пары логин/пароль. Используется что то одно.
Опця «SSL/TLS включено» позволяет устанавливать защищённое соединение, если MQTT сервер это поддерживает.
Опция «Само-подписанный сертификат» позволяет устанавливать соединение с сервером на ккотором установлен само-подписанный сертификат.
Поле «CA сертификат» указывает на путь к файлу корневого сертификата MQTT сервера, если вам такой выдали.
Поле «MQTT топик префикс» указывает на необязательный префикс к «MQTT топикам».
Выбор «Уровень логирования MQTT сессий» включает или выключает запись отладочной информации о сетевом обмене и командах в общий лог файл.
Файл сертификата, путь к кторому вы должны указать в конфигурации,
должен состоять как минимум из сертификата CA
(Certificate
Authority), который подписал сертификат вашего сервера MQTT. Если у вас
есть цепочка из необходимых сертификатов, то необходимо разместить
корневой сертификат в отдельной папке, в неё же добавить остальные
необходимые сертификаты. Например корневой сертификат компании
Let's Encrypt
имеет название R3
. Если вы
используете сертификат от этой компании, то вам достаточно указать путь
к файлу R3.cert
или R3.pem
в формате
PEM
.
В случае само-подписанного сертификата, вполне достаточно указать его, при этом установив галочку над одноименным пунктом. В этом случае сертификат MQTT сервера будет таким же, как и сертификат CA.
Для активации SSL/TLS установите галочку над соответствующим пунктом. Используйте эти параметры, только если хотите зашифровать связь между клиентом и сервером. В локальной сети, это как правило делать не стоит. Так как это повышает нагрузку как на клиента, так и на сервер.
Работа с PSK ключами не совсестима с SSL/TLS настройками. Соединение
может работать только в одном из указанных режимов, при заполнении всех
значений, приоритет отдается соединению на основе PSK ключей. Используют
PSK ключи, как правило, при работе с внешними серверами, настрока
авторизации которых происходит через их же Вэб интерфейс. Например AdaFruit MQTT
или HiveMQ Public MQTT Broker
.
Вся настройка сводиться к получению ключа, и копированием его в соответствующее поле. Вторым параметром связки PSK ключа, является ваш логин на 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 сервере.
кнопка
.{0}
, вместо
него будет занесено значение, полученное от элемента управления.Настройки в конфигурационном файле, выглядят следующим образом:
{
...
"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))
...