Всем привет!
Возможно кому-то пригодится то, что я почти сутки ковырял и доковырял.
Итак, удаленный сброс ошибок котла через Opentherm подключенный к Wirenboard через WBE2-I-OPENTHERM. Может быть полезно тем, у кого котел стоит на даче и не очень хочется при ошибках сразу туда лететь зимой!
!!!На всякий случай предупреждаю, что если ошибка связана с котлом, то перед её сбросом лучше оценить риски возгорания или полного отключения котла!!!
Вот этим кодом можно послать котлу, так называемый BLOR или Boiler Lock Out Reset:
dev["WBE2-I-OPENTHERM"]["TR Command"] = 3;
dev["WBE2-I-OPENTHERM"]["TR ID"] = 4;
dev["WBE2-I-OPENTHERM"]["TR Data"] = 256;
А вот этим кодом я сбрасываю ошибки и возвращаю котлу нормальную работоспособность по нажатию кнопки в интерфейсе:
defineRule("boiler_status_manualRefresh_changed", {
whenChanged: "BoilerStatus/manualRefresh",
then: function(newValue, devName, cellName) {
if (newValue == true) {
if (global.__proto__.debugLog) log("[Temperature] Boiler manual refresh initiated!");
// Выключаем нагрев помещения
dev["WBE2-I-OPENTHERM"]["TR Command"] = 2;
dev["WBE2-I-OPENTHERM"]["TR ID"] = 0;
dev["WBE2-I-OPENTHERM"]["TR Data"] = 13056;
dev["BoilerStatus"]["cooldownState"] = true;
setTimeout(function() {
// Делаем программный сброс BLOR Boiler Lockout Reset
dev["WBE2-I-OPENTHERM"]["TR Command"] = 3;
dev["WBE2-I-OPENTHERM"]["TR ID"] = 4;
dev["WBE2-I-OPENTHERM"]["TR Data"] = 256;
if (global.__proto__.debugLog) log("[Temperature] Boiler BLOR sent!");
setTimeout(function() {
// Читаем статус после BLOR Boiler Lockout Reset
//dev["WBE2-I-OPENTHERM"]["TR Command"] = 2;
//dev["WBE2-I-OPENTHERM"]["TR ID"] = 4;
status = dev["WBE2-I-OPENTHERM"]["TR Data"];
if (global.__proto__.debugLog) log("[Temperature] Boiler BLOR status: " + status);
}, 2000);
}, 5000);
setTimeout(function() {
// Включаем нагрев помещения
dev["WBE2-I-OPENTHERM"]["TR Command"] = 2; //2 - Чтение, 3 - Запись
dev["WBE2-I-OPENTHERM"]["TR ID"] = 0;
dev["WBE2-I-OPENTHERM"]["TR Data"] = 4864;
dev["BoilerStatus"]["manualRefresh"] = false;
if (global.__proto__.debugLog) log("[Temperature] Boiler manual refresh finished!");
dev["BoilerStatus"]["cooldownState"] = false;
}, 15000);
}
}
});