UNPKG

node-red-contrib-xmihome

Version:

Node-RED nodes for controlling Xiaomi Mi Home devices using the xmihome library.

95 lines (79 loc) 7.86 kB
<script type="text/markdown" data-help-name="xmihome-device" data-lang="ru"> <!-- markdownlint-disable-file MD041 --> Позволяет взаимодействовать с одним конкретным устройством Xiaomi: получать его состояние, отправлять команды и подписываться на уведомления. ### Идентификация устройства Устройство можно задать несколькими способами: 1. **Конфигурация узла**: Параметры устройства задаются вручную в панели настроек. - **Обнаруженное устройство**: Вы можете выбрать устройство из списка, автоматически найденного узлом `Devices`. Это самый простой способ. - **Вручную**: Вы можете указать параметры устройства (ID, IP, MAC, токен, модель) вручную. Это полезно для устройств, которые не обнаруживаются автоматически. 2. **`msg.device`**: Узел будет использовать объект устройства, переданный во входящем `msg.device`. Это позволяет динамически управлять разными устройствами с помощью одного узла. **Важно:** Для корректной работы, особенно с Bluetooth-устройствами, **критически важно** указать правильную **Модель** (`model`). Правильно указанная **Модель** (`model`) позволяет узлу использовать специальный класс для вашего устройства. Эти классы содержат удобные, человекочитаемые имена для свойств (например, `fan_level` вместо `siid: 2, piid: 6`), а также могут предоставлять дополнительные методы (например, `getRooms()` для пылесосов). Полный список реализованных классов устройств, их свойств, действий и методов доступен в документации пакета `xmihome-devices`: - **[Список поддерживаемых классов устройств](https://github.com/alex2844/node-xmihome/blob/main/packages/devices/docs/ru/README.md)** **Что делать, если моей модели нет в списке?** Ничего страшного! Если для вашей модели не найден специальный класс, библиотека автоматически попытается загрузить ее официальную спецификацию MiOT из облака. Это работает для большинства современных устройств. В этом случае вы сможете управлять устройством, используя стандартные `siid` и `piid` для свойств и `siid` и `aiid` для действий. ### Действия (Action) Узел может выполнять различные действия над устройством: - **Получить свойства (Get Properties)**: Запрашивает *все* доступные для чтения свойства устройства и возвращает их в виде объекта. - **Получить свойство (Get Property)**: Запрашивает значение одного конкретного свойства. Имя свойства задается в поле "Свойство" или в `msg.property`. - **Установить свойство (Set Property)**: Устанавливает значение для одного свойства. - **Свойство**: Имя свойства для изменения. - **Значение**: Новое значение. Может быть строкой, числом, булевым значением или объектом JSON. - **Вызвать действие (Call Action)**: Вызывает определенное действие на устройстве (например, `start_sweep` для пылесоса). - **Свойство**: Имя действия для вызова. - **Значение**: Параметры для действия, обычно в виде массива (например, `[]`). - **Вызвать метод (Call Method)**: Вызывает метод напрямую на экземпляре класса устройства. Это для продвинутых сценариев, не покрываемых стандартными свойствами или действиями (например, `getRooms` или `getMapImage` на пылесосе). - **Свойство**: Имя метода для вызова. - **Значение**: Параметры для метода в виде массива. - **Подписаться на свойство (Subscribe to Property)**: Подписывается на уведомления об изменении свойства. Узел будет отправлять сообщение на **первый выход** каждый раз, когда устройство сообщит о новом значении. Соединение с устройством будет поддерживаться активным. - **Отписаться от свойства (Unsubscribe from Property)**: Отменяет ранее созданную подписку. ### Входы - `msg.device` (object, опционально): Если задан, переопределяет конфигурацию устройства в узле. - `msg.property` (string, опционально): Если задан, переопределяет свойство или действие, указанное в узле. - `msg.payload` (any): Используется как "Значение" при действии "Установить свойство" или "Вызвать действие", если поле "Значение" в узле настроено на `msg.payload`. - `msg.topic` (string, опционально): Если задан, переопределяет тему для исходящего сообщения. ### Выходы 1. **Результат / Уведомления** - Для действий `Get/Set/Call`: Отправляет одно сообщение с результатом операции. `msg.payload` содержит полученное значение, результат действия или объект `{property, value}` в случае успеха установки. - для `Subscribe`: Отправляет сообщение каждый раз при получении уведомления. `msg.payload` содержит новое значение свойства. 2. **События подключения** - Отправляет сообщения о состоянии соединения с устройством. Полезно для отладки и мониторинга. - `msg.payload.event` может быть: `connected`, `disconnected`, `reconnecting`, `reconnect_failed`, `error`. - `msg.topic` будет содержать `connection/...` или `error/...`. </script>