Инструменты пользователя

Инструменты сайта


iot:software:homebridge:config:accessories

Это старая версия документа!


Конфигурация аксессуаров Homebridge

Для интеграции большинства устройств, прошитых Tasmota, используется плагин «Homebridge MQTT-Thing»1). Если не указано иное, как раз он и используется.

:!: Все манипуляции с настройками необходимо производить напрямую в файле конфигурации, т.к. в интерфейсе плагина реализованы далеко не все необходимые параметры2)!

Помимо этого, необходим настроенный MQTT-брокер.

Athom PG01-EU16A

Одна из самых простых конфигураций, т.к. для розетки используется родной тип «outlet». Однако, для работы параметра «getInUse», пришлось использовать дополнительное правило.

        {
            "type": "outlet",
            "name": "Fumigator",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": false,
            "topics": {
                "getOnline": "fumigator_3878DF/tele/LWT",
                "getOn": "fumigator_3878DF/stat/POWER",
                "setOn": "fumigator_3878DF/cmnd/POWER",
                "getInUse": "fumigator_3878DF/stat/OutletInUse"
            },
            "onValue": "ON",
            "offValue": "OFF",
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "accessory": "mqttthing",
            "manufacturer": "Athom",
            "model": "ZEU-003",
            "firmwareRevision": "9.2.0",
            "serialNumber": "67855234"
        }

Статья о прошивке и настройке.

Sonoff SNZB-02

Простой конфиг. Для удобства оба передаваемых значения упакованы в особый тип «custom».

Пришлось только немного схитрить при пробросе сигнала низкого заряда, т.к. датчик не предоставляет логического значения для этого параметра, только проценты.

        {
            "type": "custom",
            "name": "Weather Sensors In The Shade",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": true,
            "services": [
                {
                    "type": "temperatureSensor",
                    "name": "Temperature In The Shade",
                    "topics": {
                        "getOnline": "zigbee2mqtt/bridge/state",
                        "getCurrentTemperature": {
                            "topic": "zigbee2mqtt/0x00124b002268acb0",
                            "apply": "return JSON.parse(message).temperature"
                        },
                        "getStatusLowBattery": {
                            "topic": "zigbee2mqtt/0x00124b002268acb0",
                            "apply": "return (JSON.parse(message).battery < 40) ? true : false"
                        }
                    }
                },
                {
                    "type": "humiditySensor",
                    "name": "Humidity In The Shade",
                    "topics": {
                        "getCurrentRelativeHumidity": {
                            "topic": "zigbee2mqtt/0x00124b002268acb0",
                            "apply": "return JSON.parse(message).humidity"
                        }
                    }
                }
            ],
            "onlineValue": "online",
            "offlineValue": "offline",
            "accessory": "mqttthing",
            "manufacturer": "Sonoff",
            "model": "SNZB-02",
            "serialNumber": "cb0"
        }

Страница датчика.

Aqara SJCGQ11LM

Все штатно, никаких извращений. Использован родной тип «leakSensor».

        {
            "accessory": "mqttthing",
            "type": "leakSensor",
            "name": "Kitchen Leak Sensor",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": true,
            "topics": {
                "getLeakDetected": {
                    "topic": "zigbee2mqtt/0x00158d0006334159",
                    "apply": "return JSON.parse(message).water_leak"
                },
                "getStatusTampered": {
                    "topic": "zigbee2mqtt/0x00158d0006334159",
                    "apply": "return JSON.parse(message).tamper"
                },
                "getStatusLowBattery": {
                    "topic": "zigbee2mqtt/0x00158d0006334159",
                    "apply": "return JSON.parse(message).battery_low"
                },
                "getOnline": "zigbee2mqtt/bridge/state"
            },
            "onlineValue": "online",
            "offlineValue": "offline",
            "manufacturer": "Aqara",
            "model": "SJCGQ11LM",
            "serialNumber": "159"
        }

Страница датчика.

Sonoff TH10 + Si7021

Для удобства управления, данный аксессуар был разделен на два – кнопка и сенсоры3).

Sonoff TH10

В этом случае также используется родной тип «switch».

Базовый вариант

        {
            "type": "switch",
            "name": "Ventilation",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": false,
            "topics": {
                "getOnline": "ventilation_000457/tele/LWT",
                "getOn": "ventilation_000457/stat/POWER",
                "setOn": "ventilation_000457/cmnd/POWER"
            },
            "onValue": "ON",
            "offValue": "OFF",
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "accessory": "mqttthing",
            "manufacturer": "Sonoff",
            "model": "TH10",
            "firmwareRevision": "9.2.0",
            "serialNumber": "67784587"
        },

Две кнопки

Если в web-интерфейс добавлена дополнительная кнопка, использовать нужно такой код:

        {
            "type": "switch",
            "name": "Ventilation",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": false,
            "topics": {
                "getOnline": "ventilation_000457/tele/LWT",
                "getOn": "ventilation_000457/stat/POWER1",
                "setOn": "ventilation_000457/cmnd/POWER1"
            },
            "onValue": "ON",
            "offValue": "OFF",
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "accessory": "mqttthing",
            "manufacturer": "Sonoff",
            "model": "TH10",
            "firmwareRevision": "9.2.0",
            "serialNumber": "67784587"
        },

Sonoff Si7021

А для сенсоров используется особый тип «custom», позволяющий объединить в один аксессуар несколько типов, что несколько снижает количество кода. В данном случае, это «temperatureSensor» и «humiditySensor».

        {
            "type": "custom",
            "name": "Ventilation sensors",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": false,
            "services": [
                {
                    "type": "temperatureSensor",
                    "name": "Temperature",
                    "topics": {
                        "getCurrentTemperature": {
                            "topic": "ventilation_000457/tele/SENSOR",
                            "apply": "return JSON.parse(message).SI7021.Temperature"
                        }
                    }
                },
                {
                    "type": "humiditySensor",
                    "name": "Humidity",
                    "topics": {
                        "getCurrentRelativeHumidity": {
                            "topic": "ventilation_000457/tele/SENSOR",
                            "apply": "return JSON.parse(message).SI7021.Humidity"
                        }
                    }
                }
            ],
            "onValue": "ON",
            "offValue": "OFF",
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "accessory": "mqttthing",
            "manufacturer": "Sonoff",
            "model": "Si7021",
            "firmwareRevision": "9.2.0",
            "serialNumber": "67784588"
        }

Тут уже пришлось отбирать из полезной нагрузки топика «SENSOR» необходимые данные с помощью ключа «apply» и метода «return». Сам, если честно, не до конца понимаю, как именно это работает, но работает. 8-O

Статья о прошивке и настройке.

Sonoff RFR2

Конфигурация с двумя кнопками – одна для включения/выключения освещения, вторая для временного отключения таймера.

        {
            "type": "custom",
            "name": "Corridor Lighting",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": true,
            "services": [
                {
                    "type": "switch",
                    "name": "Lighting",
                    "topics": {
                        "getOnline": "corridorlighting_0F7B7C/tele/LWT",
                        "getOn": "corridorlighting_0F7B7C/stat/POWER1",
                        "setOn": "corridorlighting_0F7B7C/cmnd/POWER1"
                    }
                },
                {
                    "type": "switch",
                    "name": "Do Not Turn Off Automatically",
                    "topics": {
                        "getOnline": "corridorlighting_0F7B7C/tele/LWT",
                        "getOn": "corridorlighting_0F7B7C/stat/POWER2",
                        "setOn": "corridorlighting_0F7B7C/cmnd/POWER2"
                    }
                }
            ],
            "onValue": "ON",
            "offValue": "OFF",
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "accessory": "mqttthing",
            "manufacturer": "Sonoff",
            "model": "RFR2",
            "firmwareRevision": "9.5.0",
            "serialNumber": "48768497"
        }

Статья о прошивке и настройке.

Proscenic 808c

Это максимальный демонстрационный конфиг, где присутствуют все возможные кнопки и ползунки. В реальной жизни, все они одновременно не нужны – какими-то функциями вы пользуетесь, а какими-то нет. Соответственно, и засорять эфир ими не нужно.

Функции

Для всех кнопок используется родной тип «switch», а для всех ползунков единственный более-менее подходящий – «fan». Объединены они все в один аксессуар особым типом «custom».

Типы с именами «Mist level», «Humidity» и «Baby mode» связаны между собой единой логикой – когда один включается, два других отключаются. Для «Humidity» необходимо специальное правило. Для правильной индикации состояния «Timer», также необходимо правило.

Все остальное, пожалуй, без комментариев, ибо описывать этот ад… Если есть вопросы, го в обсуждение.

        {
            "type": "custom",
            "name": "Humidifier",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": false,
            "services": [
                {
                    "type": "fan",
                    "name": "Mist level",
                    "topics": {
                        "getOn": {
                            "topic": "humidifier_00896D/stat/RESULT",
                            "apply": "return JSON.parse(message).TuyaEnum3"
                        },
                        "setOn": "humidifier_00896D/cmnd/tuyaenum3",
                        "getRotationSpeed": {
                            "topic": "humidifier_00896D/stat/RESULT",
                            "apply": "return Math.round(JSON.parse(message).TuyaEnum4 * 16.6)"
                        },
                        "setRotationSpeed": {
                            "topic": "humidifier_00896D/cmnd/tuyaenum4",
                            "apply": "return Math.round(message / 16.6)"
                        }
                    },
                    "onValue": "3",
                    "offValue": "0",
                    "otherValueOff": true
                },
                {
                    "type": "fan",
                    "name": "Humidity",
                    "topics": {
                        "getOn": {
                            "topic": "humidifier_00896D/stat/RESULT",
                            "apply": "return JSON.parse(message).TuyaEnum3"
                        },
                        "setOn": "humidifier_00896D/cmnd/tuyaenum3",
                        "getRotationSpeed": {
                            "topic": "humidifier_00896D/stat/HumidityLVL",
                            "apply": "return Math.round(message * 10)"
                        },
                        "setRotationSpeed": {
                            "topic": "humidifier_00896D/cmnd/HumidityLVL",
                            "apply": "return Math.round(message / 10)"
                        }
                    },
                    "onValue": "2",
                    "offValue": "0",
                    "otherValueOff": true
                },
                {
                    "type": "fan",
                    "name": "Timer",
                    "topics": {
                        "setOn": {
                            "topic": "humidifier_00896D/cmnd/tuyaenum1"
                        },
                        "getOn": {
                            "topic": "humidifier_00896D/stat/humTimer"
                        },
                        "getRotationSpeed": {
                            "topic": "humidifier_00896D/stat/RESULT",
                            "apply": "return Math.round(JSON.parse(message).TuyaEnum1 * 10)"
                        },
                        "setRotationSpeed": {
                            "topic": "humidifier_00896D/cmnd/tuyaenum1",
                            "apply": "return Math.round(message / 10)"
                        }
                    },
                    "onValue": "15",
                    "offValue": "0"
                },
                {
                    "type": "switch",
                    "name": "Power",
                    "topics": {
                        "getOnline": "humidifier_00896D/tele/LWT",
                        "getOn": "humidifier_00896D/stat/POWER1",
                        "setOn": "humidifier_00896D/cmnd/POWER1"
                    }
                },
                {
                    "type": "switch",
                    "name": "Night mode",
                    "topics": {
                        "getOn": "humidifier_00896D/stat/POWER4",
                        "setOn": "humidifier_00896D/cmnd/POWER4"
                    }
                },
                {
                    "type": "switch",
                    "name": "Heating",
                    "topics": {
                        "getOn": "humidifier_00896D/stat/POWER2",
                        "setOn": "humidifier_00896D/cmnd/POWER2"
                    }
                },
                {
                    "type": "switch",
                    "name": "Anion",
                    "topics": {
                        "getOn": "humidifier_00896D/stat/POWER3",
                        "setOn": "humidifier_00896D/cmnd/POWER3"
                    }
                },
                {
                    "type": "switch",
                    "name": "Night light",
                    "topics": {
                        "getOn": "humidifier_00896D/stat/POWER5",
                        "setOn": "humidifier_00896D/cmnd/POWER5"
                    }
                },
                {
                    "type": "switch",
                    "name": "Baby mode",
                    "topics": {
                        "getOn": {
                            "topic": "humidifier_00896D/stat/RESULT",
                            "apply": "return JSON.parse(message).TuyaEnum3;"
                        },
                        "setOn": "humidifier_00896D/cmnd/tuyaenum3"
                    },
                    "onValue": "1",
                    "offValue": "0",
                    "otherValueOff": true
                }
            ],
            "onValue": "ON",
            "offValue": "OFF",
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "accessory": "mqttthing",
            "manufacturer": "Proscenic",
            "model": "808c",
            "firmwareRevision": "9.2.0",
            "serialNumber": "67785599"
        }

Сенсоры

Т.к. в этом устройстве очень много функций, дабы немного разгрузить интерфейс, сенсоры были выделены в отдельный аксессуар также типа «custom». Первые два типа родные – «temperatureSensor» и «humiditySensor», а для индикации наличия воды был выбран единственный более-менее подходящий тип «contactSensor», для работы которого пришлось писать дополнительное правило.

        {
            "type": "custom",
            "name": "Humidifier Sensors",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": false,
            "services": [
                {
                    "type": "temperatureSensor",
                    "name": "Temperature",
                    "topics": {
                        "getOnline": "humidifier_00896D/tele/LWT",
                        "getCurrentTemperature": {
                            "topic": "humidifier_00896D/tele/SENSOR",
                            "apply": "return JSON.parse(message).TuyaSNS.Temperature"
                        }
                    }
                },
                {
                    "type": "humiditySensor",
                    "name": "Humidity",
                    "topics": {
                        "getCurrentRelativeHumidity": {
                            "topic": "humidifier_00896D/tele/SENSOR",
                            "apply": "return JSON.parse(message).TuyaSNS.Humidity"
                        }
                    }
                },
                {
                    "type": "contactSensor",
                    "name": "Water level",
                    "topics": {
                        "getContactSensorState": "humidifier_00896D/stat/waterLevel"
                    },
                    "onValue": "low",
                    "offValue": "normal"
                }
            ],
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "accessory": "mqttthing",
            "manufacturer": "Proscenic",
            "model": "808c-Sensors",
            "firmwareRevision": "9.2.0",
            "serialNumber": "67785491"
        }

Статья о прошивке и настройке.

1)
На момент написания статьи это версия 1.1.25.
2)
Помимо этого, используя UI, есть реальный риск затереть те параметры, которые были добавлены напрямую в файл конфигурации.
3)
Если их объединить, то в приложении «Дом» для включения или выключения нужно будет открывать дополнительное окно.

Обсуждение

Ваш комментарий:
K I T K D᠎ N G S K N Y V W Z H M
 
Последнее изменение: 2022/02/12 11:40 (внешнее изменение)