Когда изменится состояние устройства?

Не понятна суть вопроса.
dev["wb-led_194/CCT1"] - это не виртуальное устройство, а запрос к физическому (“железяке”) устройству. Быстрее чем само (физическое) устройство примет от вас команду, исполните ее и даст ответ о своем новом (изменившемся) состоянии вы все равно ничего не сделаете. Не забывайте также о том, что ваши запросы к устройствам и ответы от них передаются по физической линии связи (RS-485) в протоколе modBus - на это нужно время.

Поэтому между
dev["wb-led_194/CCT1"] =! dev["wb-led_194/CCT1"];
(в этот момент запрос на изменение встанет в очередь (если она не пустая) и уйдет к устройству)

и получением ответного отчета от устройства,
т.е. когда устройство отработает запрос (это произойдет быстро) и поместит свое новое состояние в соответствующий mqtt топик, откуда вы его и прочитаете вот этой строкой:

log("wb-led_194/CCT1 = " + dev["wb-led_194/CCT1"]);

нужно небольшое время.

Если вы не делаете паузу между

dev["wb-led_194/CCT1"] =! dev["wb-led_194/CCT1"];
log("wb-led_194/CCT1 = " + dev["wb-led_194/CCT1"]);

то фактически вы отправляете зарос на изменение и тут же читаете “все еще предыдущий статус”. Это не значит, что ваш запрос не исполнился.

посмотрите вот эту тему - WB-Rules не присваиваются значения - #6 от пользователя Book-Keeper