Разработчикам / Обеспечение взаимодействия BOOCO с другими ИТ-системами
Введение
Сервер BOOCO позволяет управлять мультимедийным, AV и инженерным оборудованием. В версии 1.x сервера BOOCO для интеграции с другими системами использовался REST API. В версии 2.x используется протокол MQTT. Теперь для интеграции с панельными и серверными проектами iRidi не требуется загружать дополнительные скриптовые драйверы, а достаточно просто настроить связь про протоколу MQTT.
Количество клиентов, которые могут подключаться к серверу BOOCO по протоколу MQTT, ограничено только характеристиками виртуального или физического сервера, на котором установлен BOOCO.
Протокол MQTT обеспечивает обмен сообщениями по шаблону издатель — подписчик. Сервер BOOCO публикует топики, содержащие обратные связи подключенного к BOOCO оборудования, и подписывается на каналы — команды, которые можно отправлять на оборудование. Клиент подключается к серверу BOOCO под MQTT и подписывается на интересующие его топики. При подписке сервер-брокер сразу отправляет клиенту текущее значение обратной связи. Также клиент будет оповещен при изменении топиков. Для отправки команды клиент должен опубликовать топик с нужным значением.
iRidi берет на себя все внутренние механизмы, и интеграция iRidi с сервером BOOCO становится очень простой, не требует дополнительных внешних скриптов-драйверов и может быть выполнена с минимальным объемом программирования.
Требования
- Сервер BOOCO 2.5 или выше
- Настроенный брокер MQTT (по умолчанию используется RabbitMQ с MQTT-плагином, но можно использовать и внешний брокер)
Описание структуры топиков
Структура топиков обратных связей: devices/<device 1>/feedbacks/<feedback 1>
<device 1>
— имя устройства на сервере BOOCO в разделе Оборудование<feedback 1>
— имя обратной связи
Структура топиков команд: devices/<device 1>/channels/<channel 1>/<value>
или devices/<device 1>/channels/<channel 1>
<device 1>
— имя устройства на сервере BOOCO в разделе Оборудование<channel 1>
— имя командыvalue
— значение, которое отправляется на устройство командой
Пример с BOOCO-SENSOR
Для устройства BOOCO-SENSOR с именем sensor1 можно использовать следующие топики для обратных связей:
devices/sensor1/feedbacks/input0
devices/sensor1/feedbacks/input1
devices/sensor1/feedbacks/input2
devices/sensor1/feedbacks/input3
devices/sensor1/feedbacks/input4
devices/sensor1/feedbacks/status
Значения, которые принимают топики input0 — input4
— on
и off
. Значения топика status
— connected
и disconnected
.
input0
— специальная обратная связь, у которой будет значение on
, если хотя бы одна из четырех обратных связей inputX
будет в состоянии on
.Добавление BOOCO в iRidium Studio
- Добавьте устройство с драйвером MQTT (https://dev.iridi.com/MQTT):
- Host — укажите адрес сервера
- Port — 1883 (по умолчанию)
- Login — обязательно укажите клиентский логин
- Password — обязательно укажите клиентский пароль
- MQTT version — 4 (соответствует версии MQTT 3.1.1)
- Client ID — произвольно
- Keep Alive — оставить значение по умолчанию
- Clean — оставить значение по умолчанию
- SSL — выключить
- Создайте обратные связи для драйвера MQTT. В настройках обратной связи укажите:
- Name — название канала обратной связи (задается произвольно)
- Topic — топик
- Value Type — значение String.
Рекомендуется добавлять только те топики, которые нужны, чтобы снизить общую нагрузку. Количество топиков (обратных связей) может быть любым.
- Если нужно, обработайте данные в скрипте.
Данные в каналы обратной связи приходят в формате string
. Чтобы преобразовать данные в нужный формат, можно воспользоваться дополнительными скриптами.
Пример:
// Пример скрипта для работы c BOOCO SENSOR
var device = IR.GetDevice("MQTT");
IR.AddListener(IR.EVENT_TAG_CHANGE, device, function(name, value) {
if (name === "Sensor_1_input1") { // имя фидбека, как указано в драйвере
if (value === 'on'){
IR.Log('1')
} else {
IR.Log('0')
}
}
});