Открыть меню
Toggle preferences menu
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Интеграция устройств из spruthub в WirenBoard: различия между версиями

Материал из Sprut.hub Wiki
Нет описания правки
Нет описания правки
Строка 20: Строка 20:


[[Файл:Vkl_harakteristik_mqtt.png|563x563пкс]]
[[Файл:Vkl_harakteristik_mqtt.png|563x563пкс]]
=== Создание виртуального устройства и привязка MQTT-топиков в Wiren Board ===
Вторым шагом необходимо '''написать правило (rule)''' в Wiren Board, которое создаст виртуальное устройство и свяжет его с MQTT-топиками, активированными в первом пункте.
==== 🔍 Определяем нужные топики ====
Проще всего получить список топиков с помощью MQTT-клиента — например, '''MQTT Explorer'''.
# Скачайте и установите MQTT Explorer (доступен для Windows, macOS и Linux).
# Подключитесь к MQTT-брокеру Wiren Board:
#* '''IP:''' адрес вашего контроллера WB
#* '''Порт:''' 1883 (по умолчанию)
# После подключения вы увидите структуру всех доступных топиков.  Найдите те, что начинаются с префикса, например, Sprut.hub-****/accessories.
[[Файл:Mqtt explorer.png|800x800пкс]]
Например, наш топик - "'''Sprut.hub-D7BCB0C79CD23D5B_1/accessories/105/13/15'''"
Теперь необходимо написать правило, которое создаст виртуальное устройство в Wiren Board и свяжет его с этим топиком.
Переходим в интерфейс WirenBoard, редактор правила, создать новое. <syntaxhighlight lang="json">(function () {
  // Создаём виртуальное устройство для датчика движения SprutHub
  defineVirtualDevice('spruthub_motion', {
    title: { en: "SprutHub Motion", ru: "Датчик движения SprutHub" },
    cells: {
      Motion: {
        title: { en: 'Motion', ru: 'Движение' },
        type: 'switch',
        readonly: true,
        order: 0,
        value: false
      }
    }
  });
  // Функция для обновления значения из MQTT
  function updateDeviceFromMQTT(topic, cell, valueType, compareValue) {
    trackMqtt(topic, function (message) {
      if (valueType === 'boolean') {
        dev.spruthub_motion[cell] = message.value === compareValue;
      } else {
        dev.spruthub_motion[cell] = parseFloat(message.value);
      }
    });
  }
  // Отслеживаем MQTT-топик от SprutHub
  updateDeviceFromMQTT(
    'Sprut.hub-D7BCB0C79CD23D5B_1/accessories/105/13/15',
    'Motion',
    'boolean',
    'true' // при значении "true" считаем, что движение есть
  );
})();</syntaxhighlight>

Версия от 13:23, 7 октября 2025

Первое, что необходимо сделать — подключить MQTT Wiren Board в мостах spruthub.

  1. Откройте Мосты в интерфейсе spruthub.
  2. Нажмите «+» → Добавить расширение → MQTT →Мосты → Добавить.
  3. Укажите параметры подключения к MQTT-брокеру Wiren Board (IP-адрес, порт, логин и пароль, если используется), после чего включаем Мост.

После этого spruthub сможет отправлять данные своих устройств в брокер Wiren Board.

Включение отправки данных в MQTT брокер

Чтобы передать конкретное устройство в Wiren Board:

  1. Откройте нужное устройство в spruthub.
  2. Нажмите значок шестерёнки (настройки).
  3. Перейдите во вкладку Мосты.
  4. Включите переключатели напротив тех характеристик, которые нужно отправлять в MQTT-брокер.

После включения параметров их значения начнут публиковаться в MQTT, и Wiren Board сможет их принимать и использовать, например, в виртуальных устройствах или правилах автоматизации.

Создание виртуального устройства и привязка MQTT-топиков в Wiren Board

Вторым шагом необходимо написать правило (rule) в Wiren Board, которое создаст виртуальное устройство и свяжет его с MQTT-топиками, активированными в первом пункте.

🔍 Определяем нужные топики

Проще всего получить список топиков с помощью MQTT-клиента — например, MQTT Explorer.

  1. Скачайте и установите MQTT Explorer (доступен для Windows, macOS и Linux).
  2. Подключитесь к MQTT-брокеру Wiren Board:
    • IP: адрес вашего контроллера WB
    • Порт: 1883 (по умолчанию)
  3. После подключения вы увидите структуру всех доступных топиков. Найдите те, что начинаются с префикса, например, Sprut.hub-****/accessories.


Например, наш топик - "Sprut.hub-D7BCB0C79CD23D5B_1/accessories/105/13/15"

Теперь необходимо написать правило, которое создаст виртуальное устройство в Wiren Board и свяжет его с этим топиком.

Переходим в интерфейс WirenBoard, редактор правила, создать новое.

(function () {
  // Создаём виртуальное устройство для датчика движения SprutHub
  defineVirtualDevice('spruthub_motion', {
    title: { en: "SprutHub Motion", ru: "Датчик движения SprutHub" },
    cells: {
      Motion: {
        title: { en: 'Motion', ru: 'Движение' },
        type: 'switch', 
        readonly: true,
        order: 0,
        value: false
      }
    }
  });

  // Функция для обновления значения из MQTT
  function updateDeviceFromMQTT(topic, cell, valueType, compareValue) {
    trackMqtt(topic, function (message) {
      if (valueType === 'boolean') {
        dev.spruthub_motion[cell] = message.value === compareValue;
      } else {
        dev.spruthub_motion[cell] = parseFloat(message.value);
      }
    });
  }

  // Отслеживаем MQTT-топик от SprutHub
  updateDeviceFromMQTT(
    'Sprut.hub-D7BCB0C79CD23D5B_1/accessories/105/13/15',
    'Motion',
    'boolean',
    'true' // при значении "true" считаем, что движение есть
  );
})();