Написал свою реализацию добавления устройств esphome в wb, но столкнулся с проблемой - через какое-то время wb-rules отваливается, в логи сыпалось что-то вроде:
Добрый день!
Хотел попросить вас заархивировать файл модуля – .js портал не дает открывать из вложений.
При выполнении какого конкретно фрагмента кода возникает ошибка?
Логи были забиты однотипными ошибками, не смог найти в какой момент времени и с чего начинается такое поведение. Внёс некоторые изменения в модуль, буду наблюдать дальше. ha2wb.zip (6,2 КБ)
Сейчас пока всё нормально. Возможно проблема возникала из-за рестарта esphome устройств каждые 15 минут и переподключений к брокеру (из-за reboot_timeout в api секции).
То есть каждые 15 минут у каждого устройства удалялись все контролы и добавлялись заново, создавались новые коллбеки с помощью trackMqtt() и defineRule().
Кстати, можно ли удалять/переопределять правила, созданные с помощью defineRule()? Пока что реализовал так:
// Local rule map
var ruleMap = {};
// ...
var ruleId = "{}/{}".format(device.getId(), control.getId());
if (ruleMap.hasOwnProperty(ruleId)) {
disableRule(ruleMap[ruleId]);
}
ruleMap[ruleId] = defineRule({
// ...
});
Но эта конструкция только отключает предыдущее правило.
Если скрыть exports.abbreviations и exports.converters, то объем резко сократится)
Отлично!
Удалять правила в рантайме возможности нет, но есть возможность включать/отключать через disableRule(id), enableRule(id) где id = defineRule(). Переопределение правил по имени не работает: надо создать новое, отключив старое. Движок не связывает имя с уже созданным правилом и не заменяет старое правило новым по совпадающему имени.
Смотрите подробнее " Управление правилами" в описании на GitHub.
Это читал. Так и реализовал, но опасаюсь повторения ситуации при увеличении количества устройств.
Если отключенные правила не удаляются, то они висят в памяти и расходуют ресурсы, верно? Возможно ли добавить функционал удаления/переопределения правил?
А сложно примерно оценить, при каком количестве созданных правил начинаются проблемы? Так-то да – правила создаются и остаются, память не освобождается, насколько я понимаю.