Выключатель Acara

Здравствуйте. К WB6 подключен WBIO-DO-R1G-16 и вставлена плата Zigbee.
Имеется выключатель Acara WXKG02LM.
Получаю от него
0x00158d000457031c = {“linkquality”:111,“last_seen”:1589914479783,“click”:“right”}
или
0x00158d000457031c = {“linkquality”:137,“last_seen”:1589916833200,“click”:“left”}

Подскажите, пожалуйста, как написать правило для включения реле по нажатию одной из кнопок.(например у меня реле - EXT1_K1)

1 лайк

Добрый вечер. Уточните пожалуйста: Вы получаете эти данные по конвенции WB или в стандартный топик zigbee2mqtt ? Эти данные видно в веб интерфейсе во вкладке “Devices”?

Нет, этих данных во вкладке “Devices” не видно. Это из топика zigbee2mqtt в MQTT Explorer.

На данный момент движок правил привязан к конвенции WB, возможно в будущем появится функция подписки на сторонние топики, но пока это не реализовано.
На данный момент есть 2 решения:

  1. Как я уже говорил Вам ранее - Вы можете воспользоваться конвертером от пользователя avp
  2. Сделать поправку в самом zigbee2mqtt.

Как я понял вариант с конверетом Вам не подходит. В таком случае второй вариант:

  1. Отредактируйте файл /mnt/data/root/zigbee2mqtt/data/configuration.yaml : параметр base_topic измените на /devices/zigbee2mqtt/controls
  2. Отредактируйте файл /mnt/data/root/zigbee2mqtt/lib/controller.js : 311 строка, к параметру “resolvedEntity.name” добавьте + “/on”, как это показано на скриншоте. Сохраните файл.
  3. перезапустите zigbee2mqtt командой service zigbee2mqtt restart

После этих изменений с данными можно работать в движке правил. Вот пример правила wb-rules:

defineVirtualDevice("zigbee2mqtt", {
    title: "Zigbee Devices",
    cells: {
        '0x00158d000457031c': {
            type: "text",
            value: "",
      	    readonly: false
        },
    }
});

defineRule("zigbee_control", {
    whenChanged: "zigbee2mqtt/0x00158d000457031c",
    then: function(newValue, devName, cellName) {
        JSON.parse(newValue, function(k, v) {
            if (k == 'click') {
                if (v == 'right') {
                    dev["wb-gpio"]["EXT1_K1"] = !dev["wb-gpio"]["EXT1_K1"];
                }
            }
        })
    }
});
1 лайк

После того как я меняю в файле /mnt/data/root/zigbee2mqtt/data/configuration.yaml : параметр base_topic на /devices/zigbee2mqtt/controls
В MQTT Explorer state переходит в offline и в топик ни чего не приходит.
Ну и соответственно правило не работает
Что-то не так делаю?

Вы не видите данных в топике “zigbee2mqtt” потому что теперь Ваши данные идут в другой топик. А именно в “/devices/zigbee2mqtt/controls”. Почему не работает правило - это другой вопрос. Вы файл /mnt/data/root/zigbee2mqtt/lib/controller.js отредактировали, как я Вам советовал в предыдущем сообщении?

Для истории. Добавил в документацию примеры правил.

Здравствуйте. Выключатели работают, спасибо.
Еще вопрос. По zigbee у меня будут выключатели, датчики температуры и влажности, датчики движения, датчики на окна.
Сколько приборов, таким образом, я смогу подключить? 15 или 30?

1 лайк

Добрый день. Зависит от прошивки. Автор прошивки, которой мы шьем модули на производстве - Sprut (Челбаев Олег) тестировал её на 53 девайсах и всё работало без перебоев. Так же стабильность работы большого количества девайсов в Вашей zigbee сети зависит от того, сколько из этих девайсов являются “роутером”. Заводская прошивка протестирована на стабильность и оптимизирована для работы с SprutHub. Если Вы не планируете использовать SprutHub в будущем - есть возможность прошить модуль другой прошивкой (на свой страх и риск) . По Ссылке вы найдете описание прошивок и таблицу с максимальным количеством возможных подключений. WBE2R-R-ZIGBEE - это CC2530+CC2592. Гарантия на модуль при этом слетает.