В общем разобрался. На всякий случай отпишу тут, вдруг кому пригодится.
Вносим следующие изменения в файл /usr/share/wb-rules-system/rules/wb-zigbee2mqtt.js:
- добавляем функцию в самом низу:
function initTrackerAvailability(ctrlName) {
trackMqtt(base_topic + '/' + ctrlName + '/availability', function (obj) {
JSON.parse(obj.value, function (k, v) {
if (k != '') {
var obj = JSON.parse(topicType);
var ks = Object.keys(obj);
var resultIndex = ks.indexOf(k, 0);
if (resultIndex >= 0) {
if (!getDevice(ctrlName).isControlExists(k)) {
getDevice(ctrlName).addControl(k, {
type: obj[ks[resultIndex]],
value: v,
readonly: true,
});
}
dev[ctrlName][k] = v;
} else {
if (!getDevice(ctrlName).isControlExists(k)) {
getDevice(ctrlName).addControl(k, {
type: 'text',
value: v,
readonly: true,
});
}
dev[ctrlName][k] = v != null ? v.toString() : '';
}
}
});
});
}
и добавляем после строчки “initTracker(v);” (в моем случае это внутри функции “trackMqtt(base_topic + ‘/bridge/devices’, function (obj) {”) вызов “initTrackerAvailability(v);”, чтобы получилось так:
initTracker(v);
initTrackerAvailability(v);
После этого в “Настройки => Каналы MQTT” появится топик “/devices/название_устройства/controls/state” со статусом устройства online или offline.