Я обычно поступаю так - создаю виртуальное устройство, и в дополнительный топик /set пишу данные, необходимые для изменения без ретэйна. (Аналог /on в релюшках)
В правилах через функцию trackMqtt его отслеживаю, и по результатам проверки изменяю параметры виртуального устройства: dev[…] = message.value;
Дальше можно уже писать defineRule, все будет отрабатывать.
Не могу утверждать, что это самый оптимальный способ, пусть другие участники поправят, если есть лучше.