Не срабатывает код в блоке else

Я не могу понять почему у меня никогда не срабатывает код в блоке else.
Насколько я понимаю if (newValue) тоже самое, что и BoilerHeated == true, то есть else - это BoilerHeated == false, но у меня код в этом блоке упорно не срабатывает.

defineRule("BoilerHeatedRule", { 
  whenChanged: BoilerHeated, 
  then: function (newValue, devName, cellName) {

    if (newValue) {  // если бойлер нагрет, то надо отключить ТЭН и косвенный нагрев
      dev[BoilerWBRelay] = false;                 // выключаем ТЭН
      dev[BoilerHeatingPump] = false;          // выключаем насос косвенного нагрева
    }   
 
    else {   // если бойлер остыл, то проверяем температуру, чтобы не дёргать ТЭНЫ часто
      if ( dev[BoilerTemperature] < 40 ) {  // запускаем повторный нагрев, только если температура ниже 40
        if ( dev[KotelTemperature] > 40 ) { // ВКЛючаем насос косвенного нагрева если температура котла выше 40, если ниже то включаем ТЭН}
          dev[BoilerHeatingPump] = true;           // ВКЛючаем насос косвенного нагрева
        }
        dev[BoilerWBRelay] = true;   // ВКЛючаем ТЭН
      }

    }

  }
});

А BoilerHeated это что? Что в этой переменной?

ON / OFF
Это состояние термостата бойлера.

посмотрите (typeof) тип значения, который приходит в newValue,там, скорее всего, не bool

    SendTelegramMsg( 'BoilerCold =' + dev[BoilerCold] + '. Type of '  + typeof(dev[BoilerCold])   );
    SendTelegramMsg( 'BoilerHeated =' + dev[BoilerHeated] + '. Type of '  + typeof(dev[BoilerHeated])   );

присылает вот такие ответы

BoilerCold =true. Type of boolean
BoilerHeated =false. Type of boolean

Тогда должно работать. Ищите ошибку во вложенности.

if ( dev[KotelTemperature] > 40 ) { // ВКЛючаем насос косвенного нагрева если температура котла выше 40, если ниже то включаем ТЭН}

скобка в конце строки может логику ломать

Добрый день! Удалось ли вам решить проблему?