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

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


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"
        }

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

Sonoff SNZB-04

Базовый код для включения датчика в экосистему умного дома от Apple.

        {
            "type": "contactSensor",
            "name": "Entrance Door Sensor",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": true,
            "topics": {
                "getOnline": "zigbee2mqtt/bridge/state",
                "getContactSensorState": {
                    "topic": "zigbee2mqtt/0x0000000000000000",
                    "apply": "return (JSON.parse(message).contact == true) ? false : true"
                },
                "getStatusTampered": {
                    "topic": "zigbee2mqtt/0x0000000000000000",
                    "apply": "return JSON.parse(message).tamper"
                },
                "getStatusLowBattery": {
                    "topic": "zigbee2mqtt/0x0000000000000000",
                    "apply": "return JSON.parse(message).battery_low"
                }
            },
            "onlineValue": "online",
            "offlineValue": "offline",
            "accessory": "mqttthing",
            "manufacturer": "Sonoff",
            "model": "SNZB-04",
            "serialNumber": "96d"
        }

Сигнализация

Код, для работы потока «Управление сигнализацией». Используется тип «securitySystem».

        {
            "type": "securitySystem",
            "name": "Security Entrance System",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": true,
            "topics": {
                "getOnline": "zigbee2mqtt/bridge/state",
                "setTargetState": "entrance_doors/0x0000000000000000/cmnd/target",
                "getTargetState": "entrance_doors/0x0000000000000000/state/target",
                "getCurrentState": "entrance_doors/0x0000000000000000/state/current",
                "getStatusTampered": {
                    "topic": "zigbee2mqtt/0x0000000000000000",
                    "apply": "return JSON.parse(message).tamper"
                }
            },
            "targetStateValues": [
                "athome",
                "notathome",
                "night",
                "disarmed"
            ],
            "currentStateValues": [
                "athome",
                "notathome",
                "night",
                "disarmed",
                "triggered"
            ],
            "restrictTargetState": [
                0,
                1,
                3
            ],
            "onlineValue": "online",
            "offlineValue": "offline",
            "accessory": "mqttthing",
            "manufacturer": "Sonoff",
            "model": "SNZB-04",
            "serialNumber": "96d"
        }

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"
        }

Три кнопки

Для управления режимами «Ручная корректировка» и «Не выключать» из приложения «Дом», нужно использовать такой код:

        {
            "type": "custom",
            "name": "Ventilation",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": false,
            "services": [
                {
                    "type": "switch",
                    "name": "Main Power",
                    "topics": {
                        "getOnline": "ventilation_000457/tele/LWT",
                        "getOn": "ventilation_000457/stat/POWER1",
                        "setOn": "ventilation_000457/cmnd/POWER1"
                    }
                },
                {
                    "type": "switch",
                    "name": "Manual Correction",
                    "topics": {
                        "getOnline": "ventilation_000457/tele/LWT",
                        "getOn": "ventilation_000457/stat/POWER2",
                        "setOn": "ventilation_000457/cmnd/POWER2"
                    }
                },
                {
                    "type": "switch",
                    "name": "Manual Power",
                    "topics": {
                        "getOnline": "ventilation_000457/tele/LWT",
                        "getOn": "ventilation_000457/stat/POWER3",
                        "setOn": "ventilation_000457/cmnd/POWER3"
                    }
                }
            ],
            "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"
        }

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

Датчик движения

        {
            "type": "occupancySensor",
            "name": "Motion Sensor In the Bathroom",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": true,
            "topics": {
                "getOnline": "bathroomlighting_E8BC7B/tele/LWT",
                "getOccupancyDetected": "bathroomlighting_E8BC7B/stat/MOTION"
            },
            "integerValue": true,
            "onlineValue": "online",
            "offlineValue": "offline",
            "accessory": "mqttthing",
            "manufacturer": "HaiWang",
            "model": "HW-MS03 at RFR2",
            "firmwareRevision": "9.5.0",
            "serialNumber": "78124874"
        }

Статья о настройке.

Sonoff DualR2

Для объединения кнопок типа «switch» в один аксессуар используется специальный тип «custom».

{
            "type": "custom",
            "name": "Kitchen Lighting",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": true,
            "services": [
                {
                    "type": "switch",
                    "name": "Main Lighting",
                    "topics": {
                        "getOnline": "kitchenlighting_0D3B02/tele/LWT",
                        "getOn": "kitchenlighting_0D3B02/stat/POWER1",
                        "setOn": "kitchenlighting_0D3B02/cmnd/POWER1"
                    }
                },
                {
                    "type": "switch",
                    "name": "Additional Lighting",
                    "topics": {
                        "getOnline": "kitchenlighting_0D3B02/tele/LWT",
                        "getOn": "kitchenlighting_0D3B02/stat/POWER2",
                        "setOn": "kitchenlighting_0D3B02/cmnd/POWER2"
                    }
                }
            ],
            "onValue": "ON",
            "offValue": "OFF",
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "accessory": "mqttthing",
            "manufacturer": "Sonoff",
            "model": "DualR2",
            "firmwareRevision": "9.5.0",
            "serialNumber": "48779497"
        }

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

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"
        }

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

BOSCH KGN39AI32R

Полноценное управление холодильником из приложения «Дом» на iPhone. Конфигурация состоит из трех аксессуаров, которые, в принципе, можно было бы объединить в один, но так получается стройнее и логичнее – каждый аксессуар содержит в себе определенные свойства.

FIXME Указанный в коде произвольный серийный номер «YSFB4XSPFA43» необходимо заменить на реальный, полученный в процессе настройки потока Node-RED4).

Настройки холодильника

Для работы используется тип «switch», обернутый в «custom».

        {
            "type": "custom",
            "name": "Fridge Freezer Settings",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": true,
            "services": [
                {
                    "type": "switch",
                    "name": "Power State",
                    "topics": {
                        "getOnline": "BOSCH-KGN39AI32R-YSFB4XSPFA43/tele/LWT",
                        "getOn": {
                            "topic": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/settings/PowerState",
                            "apply": "return (message == 'BSH.Common.EnumType.PowerState.On') ? true : false"
                        },
                        "setOn": "BOSCH-KGN39AI32R-YSFB4XSPFA43/cmnd/homeconnect/FakePowerState"
                    }
                },
                {
                    "type": "switch",
                    "name": "Freezer Super Mode",
                    "topics": {
                        "getOnline": "BOSCH-KGN39AI32R-YSFB4XSPFA43/tele/LWT",
                        "getOn": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/settings/SuperModeFreezer",
                        "setOn": "BOSCH-KGN39AI32R-YSFB4XSPFA43/cmnd/homeconnect/SuperModeFreezer"
                    }
                },
                {
                    "type": "switch",
                    "name": "Refrigerator Super Mode",
                    "topics": {
                        "getOnline": "BOSCH-KGN39AI32R-YSFB4XSPFA43/tele/LWT",
                        "getOn": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/settings/SuperModeRefrigerator",
                        "setOn": "BOSCH-KGN39AI32R-YSFB4XSPFA43/cmnd/homeconnect/SuperModeRefrigerator"
                    }
                },
                {
                    "type": "switch",
                    "name": "Eco Mode",
                    "topics": {
                        "getOnline": "BOSCH-KGN39AI32R-YSFB4XSPFA43/tele/LWT",
                        "getOn": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/settings/EcoMode",
                        "setOn": "BOSCH-KGN39AI32R-YSFB4XSPFA43/cmnd/homeconnect/EcoMode"
                    }
                },
                {
                    "type": "switch",
                    "name": "Vacation Mode",
                    "topics": {
                        "getOnline": "BOSCH-KGN39AI32R-YSFB4XSPFA43/tele/LWT",
                        "getOn": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/settings/VacationMode",
                        "setOn": "BOSCH-KGN39AI32R-YSFB4XSPFA43/cmnd/homeconnect/VacationMode"
                    }
                },
                {
                    "type": "switch",
                    "name": "Sabbath Mode",
                    "topics": {
                        "getOnline": "BOSCH-KGN39AI32R-YSFB4XSPFA43/tele/LWT",
                        "getOn": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/settings/SabbathMode",
                        "setOn": "BOSCH-KGN39AI32R-YSFB4XSPFA43/cmnd/homeconnect/SabbathMode"
                    }
                },
                {
                    "type": "switch",
                    "name": "Fresh Mode",
                    "topics": {
                        "getOnline": "BOSCH-KGN39AI32R-YSFB4XSPFA43/tele/LWT",
                        "getOn": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/settings/FreshMode",
                        "setOn": "BOSCH-KGN39AI32R-YSFB4XSPFA43/cmnd/homeconnect/FreshMode"
                    }
                }
            ],
            "accessory": "mqttthing",
            "onlineValue": "online",
            "offlineValue": "offline",
            "manufacturer": "BOSCH",
            "model": "KGN39AI32R",
            "serialNumber": "YSFB4XSPFA43"
        }

Статусы дверок

Использует стандартный тип «contactSensor».

        {
            "type": "contactSensor",
            "name": "Fridge Freezer Door State",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": true,
            "topics": {
                "getOnline": "BOSCH-KGN39AI32R-YSFB4XSPFA43/tele/LWT",
                "getContactSensorState": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/DoorState"
            },
            "accessory": "mqttthing",
            "onlineValue": "online",
            "offlineValue": "offline",
            "manufacturer": "BOSCH",
            "model": "KGN39AI32R",
            "serialNumber": "YSFB4XSPFA43"
        }

Настройки температуры

Для работы используется тип «thermostat», обернутый в «custom».

        {
            "type": "custom",
            "name": "Temperature In The Fridge Freezer",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": true,
            "services": [
                {
                    "type": "thermostat",
                    "name": "In The Refrigerator",
                    "topics": {
                        "getOnline": "BOSCH-KGN39AI32R-YSFB4XSPFA43/tele/LWT",
                        "getCurrentHeatingCoolingState": {
                            "topic": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/settings/PowerState",
                            "apply": "return (message == 'BSH.Common.EnumType.PowerState.On') ? true : false"
                        },
                        "setTargetHeatingCoolingState": "BOSCH-KGN39AI32R-YSFB4XSPFA43/cmnd/homeconnect/FakePowerState",
                        "getTargetHeatingCoolingState": {
                            "topic": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/settings/PowerState",
                            "apply": "return (message == 'BSH.Common.EnumType.PowerState.On') ? true : false"
                        },
                        "getCurrentTemperature": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/SetpointTemperatureRefrigerator",
                        "setTargetTemperature": {
                            "topic": "BOSCH-KGN39AI32R-YSFB4XSPFA43/cmnd/homeconnect/SetpointTemperatureRefrigerator",
                            "apply": "return Math.round(message)"
                        },
                        "getTargetTemperature": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/SetpointTemperatureRefrigerator"
                    },
                    "minTemperature": 2,
                    "maxTemperature": 8,
                    "heatingCoolingStateValues": [
                        false,
                        "heat",
                        true,
                        "auto"
                    ],
                    "restrictHeatingCoolingState": [
                        0,
                        2
                    ]
                },
                {
                    "type": "thermostat",
                    "name": "In The Freezer",
                    "topics": {
                        "getOnline": "BOSCH-KGN39AI32R-YSFB4XSPFA43/tele/LWT",
                        "getCurrentHeatingCoolingState": {
                            "topic": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/settings/PowerState",
                            "apply": "return (message == 'BSH.Common.EnumType.PowerState.On') ? true : false"
                        },
                        "setTargetHeatingCoolingState": "BOSCH-KGN39AI32R-YSFB4XSPFA43/cmnd/homeconnect/FakePowerState",
                        "getTargetHeatingCoolingState": {
                            "topic": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/settings/PowerState",
                            "apply": "return (message == 'BSH.Common.EnumType.PowerState.On') ? true : false"
                        },
                        "getCurrentTemperature": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/SetpointTemperatureFreezer",
                        "setTargetTemperature": {
                            "topic": "BOSCH-KGN39AI32R-YSFB4XSPFA43/cmnd/homeconnect/SetpointTemperatureFreezer",
                            "apply": "return Math.round(message)"
                        },
                        "getTargetTemperature": "BOSCH-KGN39AI32R-YSFB4XSPFA43/stat/SetpointTemperatureFreezer"
                    },
                    "minTemperature": -24,
                    "maxTemperature": -16,
                    "heatingCoolingStateValues": [
                        false,
                        "heat",
                        true,
                        "auto"
                    ],
                    "restrictHeatingCoolingState": [
                        0,
                        2
                    ]
                }
            ],
            "accessory": "mqttthing",
            "onlineValue": "online",
            "offlineValue": "offline",
            "manufacturer": "BOSCH",
            "model": "KGN39AI32R",
            "serialNumber": "YSFB4XSPFA43"
        }

TOMZN TOB15-63 WIFI

Для объединения всех аксессуаров в один, используется тип «custom», который содержит в себе 2 стандартных типа – «contactSensor» и «switch».

        {
            "type": "custom",
            "name": "Circuit Breaker",
            "username": "uName",
            "password": "PwD",
            "logMqtt": true,
            "services": [
                {
                    "type": "switch",
                    "name": "Relay Power",
                    "topics": {
                        "getOnline": "circuitbreaker_0B6A01/tele/LWT",
                        "getOn": "circuitbreaker_0B6A01/stat/VIRTUALPOWER",
                        "setOn": "circuitbreaker_0B6A01/cmnd/VirtualPower"
                    },
                    "integerValue": true
                },
                {
                    "type": "contactSensor",
                    "name": "Relay Status",
                    "topics": {
                        "getOnline": "circuitbreaker_0B6A01/tele/LWT",
                        "getContactSensorState": {
                            "topic": "circuitbreaker_0B6A01/stat/POWER",
                            "apply": "return (message == 'ON') ? false : true"
                        }
                    }
                }
            ],
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "accessory": "mqttthing",
            "manufacturer": "TOMZN",
            "model": "TOB15-63 WIFI",
            "firmwareRevision": "13.2.0",
            "serialNumber": "45779497"
        }

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

Датчики температуры

В этом примере используются два датчика DS18B20, подключенные к одному устройству.

        {
            "type": "custom",
            "name": "Circuit Breaker Sensors",
            "username": "uName",
            "password": "PwD",
            "logMqtt": true,
            "services": [
                {
                    "type": "temperatureSensor",
                    "name": "Circuit Breaker Temperature",
                    "topics": {
                        "getOnline": "circuitbreaker_0B6A01/tele/LWT",
                        "getCurrentTemperature": {
                            "topic": "circuitbreaker_0B6A01/tele/SENSOR",
                            "apply": "return JSON.parse(message)[\"DS18B20-1\"].Temperature"
                        }
                    }
                },
                {
                    "type": "temperatureSensor",
                    "name": "Relay Switch Temperature",
                    "topics": {
                        "getOnline": "circuitbreaker_0B6A01/tele/LWT",
                        "getCurrentTemperature": {
                            "topic": "circuitbreaker_0B6A01/tele/SENSOR",
                            "apply": "return JSON.parse(message)[\"DS18B20-2\"].Temperature"
                        }
                    }
                }
            ],
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "accessory": "mqttthing",
            "manufacturer": "TOMZN",
            "model": "TOB15-63 WIFI",
            "firmwareRevision": "13.2.0",
            "serialNumber": "45779497"
        }

Статья о подключении и настройке.

DEXP WE-80

Код для интеграции экрана для проектора DEXP WE-80 в Apple Home.

Автоматически

Кнопка, полностью разворачивающая и сворачивающая экран, работает с Siri.

        {
            "type": "switch",
            "accessory": "mqttthing",
            "name": "Projector Screen",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": true,
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "manufacturer": "DEXP",
            "model": "WE-80",
            "firmwareRevision": "13.0.0",
            "serialNumber": "45779390",
            "topics": {
                "getOnline": "projector/screen_CF4CBF/tele/LWT",
                "getOn": "projector/screen_CF4CBF/stat/POWER4",
                "setOn": "projector/screen_CF4CBF/cmnd/POWER4"
            },
            "onValue": "ON",
            "offValue": "OFF"
        }

Дополнительно

Дополнительные кнопки, позволяющие точно настроить положение экрана.

        {
            "type": "custom",
            "accessory": "mqttthing",
            "name": "Projector Screen",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": true,
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "manufacturer": "DEXP",
            "model": "WE-80",
            "firmwareRevision": "13.0.0",
            "serialNumber": "45779399",
            "services": [
                {
                    "type": "switch",
                    "name": "Down",
                    "caption": "Screen Down",
                    "topics": {
                        "getOnline": "projector/screen_CF4CBF/tele/LWT",
                        "getOn": "projector/screen_CF4CBF/stat/POWER3",
                        "setOn": "projector/screen_CF4CBF/cmnd/POWER3"
                    },
                    "onValue": "ON",
                    "offValue": "OFF",
                    "resetStateAfterms": "200"
                },
                {
                    "type": "switch",
                    "name": "Stop Screen",
                    "caption": "Stop",
                    "topics": {
                        "getOnline": "projector/screen_CF4CBF/tele/LWT",
                        "getOn": "projector/screen_CF4CBF/stat/POWER2",
                        "setOn": "projector/screen_CF4CBF/cmnd/POWER2"
                    },
                    "onValue": "ON",
                    "offValue": "OFF",
                    "resetStateAfterms": "200"
                },
                {
                    "type": "switch",
                    "name": "Screen Up",
                    "caption": "Up",
                    "topics": {
                        "getOnline": "projector/screen_CF4CBF/tele/LWT",
                        "getOn": "projector/screen_CF4CBF/stat/POWER1",
                        "setOn": "projector/screen_CF4CBF/cmnd/POWER1"
                    },
                    "onValue": "ON",
                    "offValue": "OFF",
                    "resetStateAfterms": "200"
                }
            ]
        }

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

Polaris PSF 40RC Sensor

Базовые функции

        {
            "accessory": "mqttthing",
            "type": "fan",
            "name": "Floor Fan",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": true,
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "manufacturer": "Polaris",
            "model": "PSF 40RC",
            "firmwareRevision": "13.0.0",
            "serialNumber": "95779310",
            "topics": {
                "getOn": "floorfan_69BF68/stat/FANPOWER",
                "setOn": "floorfan_69BF68/cmnd/FanPower",
                "getRotationSpeed": "floorfan_69BF68/stat/FANSPEED",
                "setRotationSpeed": "floorfan_69BF68/cmnd/FanSpeed"
            },
            "integerValue": true
        }

Кнопки вентилятора

        {
            "type": "custom",
            "accessory": "mqttthing",
            "name": "Fan Settings",
            "username": "RGEHrther",
            "password": "jkyuk56e4t",
            "logMqtt": true,
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "manufacturer": "Polaris",
            "model": "PSF 40RC",
            "firmwareRevision": "13.0.0",
            "serialNumber": "45479399",
            "services": [
                {
                    "type": "switch",
                    "name": "Forest Mode",
                    "topics": {
                        "getOnline": "floorfan_69BF68/tele/LWT",
                        "getOn": "floorfan_69BF68/stat/FORESTMODE",
                        "setOn": "floorfan_69BF68/cmnd/ForestMode"
                    },
                    "integerValue": true
                },
                {
                    "type": "switch",
                    "name": "Mode",
                    "topics": {
                        "getOnline": "floorfan_69BF68/tele/LWT",
                        "getOn": "floorfan_69BF68/stat/POWER2",
                        "setOn": "floorfan_69BF68/cmnd/POWER2"
                    },
                    "onValue": "ON",
                    "offValue": "OFF",
                    "resetStateAfterms": "200"
                },
                {
                    "type": "switch",
                    "name": "Speed",
                    "topics": {
                        "getOnline": "floorfan_69BF68/tele/LWT",
                        "getOn": "floorfan_69BF68/stat/POWER3",
                        "setOn": "floorfan_69BF68/cmnd/POWER3"
                    },
                    "onValue": "ON",
                    "offValue": "OFF",
                    "resetStateAfterms": "200"
                },
                {
                    "type": "switch",
                    "name": "Timer",
                    "topics": {
                        "getOnline": "floorfan_69BF68/tele/LWT",
                        "getOn": "floorfan_69BF68/stat/POWER4",
                        "setOn": "floorfan_69BF68/cmnd/POWER4"
                    },
                    "onValue": "ON",
                    "offValue": "OFF",
                    "resetStateAfterms": "200"
                }
            ]
        }

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

Xnano X1

        {
            "accessory": "mqttthing",
            "type": "television",
            "name": "Projector",
            "username": "RGEHrther",
            "password": "$%^43534#@$",
            "logMqtt": true,
            "onlineValue": "Online",
            "offlineValue": "Offline",
            "manufacturer": "Xnano",
            "model": "X1",
            "firmwareRevision": "13.0.0",
            "serialNumber": "95779390",
            "topics": {
                "getOnline": "projector/projector_80FA30/tele/LWT",
                "setActive": "projector/projector_80FA30/cmnd/POWER2",
                "getActive": "projector/projector_80FA30/stat/POWER2",
                "setRemoteKey": "projector/remote_DEEBB4/cmnd/REMOTE"
            },
            "onValue": "ON",
            "offValue": "OFF"
        }

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


Дисклеймер

  • Использование материалов данной базы знаний разрешено на условиях лицензии, указанной внизу каждой страницы! При использовании материалов активная гиперссылка на соответствующую страницу данной базы знаний обязательна!
  • Автор не несет и не может нести какую либо ответственность за последствия использования материалов, размещенных в данной базе знаний. Все материалы предоставляются по принципу «как есть». Используйте их исключительно на свой страх и риск.
  • Все высказывания, мысли или идеи автора, размещенные в материалах данной базе знаний, являются исключительно его личным субъективным мнением и могут не совпадать с мнением читателей!
  • При размещении ссылок в данной базе знаний на интернет-страницы третьих лиц автор не несет ответственности за их техническую функциональность (особенно отсутствие вирусов) и содержание! При обнаружении таких ссылок, можно и желательно сообщить о них в комментариях к соответствующей статье.
1)
На момент написания статьи это версия 1.1.25.
2)
Помимо этого, используя UI, есть реальный риск затереть те параметры, которые были добавлены напрямую в файл конфигурации.
3)
Если их объединить, то в приложении «Дом» для включения или выключения нужно будет открывать дополнительное окно.
4)
Смотрите потоковый контекст «settings.homeappliances[0].haid».

Обсуждение

Ваш комментарий:
U P I O C S C Q V I B᠎ I G I T A
 
Последнее изменение: 2023/11/03 11:50 — Николай Солошин