max506. где ж вы раньше были, когда я просил автора реализовать два разных топика для виджетов (я ведь изначально это и просил)
На тот момент некому было меня поддержать и это не было полноценно реализовано...
Раз уж тут опять пошла дискуссия, приведу ещё пример. Постараюсь коротко, не вдаваясь в подробности.
Яркостью светодиодных лент у меня дома (в коридоре и ванной они - основной свет) можно управлять вручную (для этого создан виджет Slider, топик, к примеру, /set/kom/le), но обычно они загораются автоматически на основе датчиков движения. В режиме ручного управления, при получении сообщения с яркостью, контроллер плавно приводит яркость ленты к полученному значению.
В авто-режиме, когда свет загорается и тухнет сам, значения, пришедшие в этот топик игнорируются, при этом контроллер отправляет в этот же топик фактическое текущее значение, чтобы в приложении не отображалось неправильное. Включение света происходит хоть и плавно, но быстро (секунда-две), поэтому видеть на слайдере промежуточные значения яркости не обязательно, хватит и одного - конечного.
А вот когда движение кончилось, время ожидания вышло и свет начинает медленно (в течении минуты) плавно тухнуть, то тут уже хотелось бы видеть на виджете промежуточные значения фактической яркости. Свет гаснет, контроллер шлет десятки (а то и сотни) сообщений о текущей яркости. Вот только зачем ему их принимать?
Когда включено управление лентой по датчику движения, можно, конечно, отписаться от топика, на который приходит яркость ленты, но тогда если случайно ткнуть на виджет пальцем, то там будет красоваться значение, не соответствующее реальности и контроллер это не сможет исправить, т.к. отписан от топика. Можно отписываться только в момент когда контроллер меняет яркость ленты и подписываться обратно по окончанию процесса. Но уж очень много всяких костылей только от того, что в приложении нет возможности задать два топика для виджета... Я бы мог привести ещё разных примеров, но на описание даже одного уходит много времени, к сожалению.
P.S. Признаюсь, функционал с дополнительным топиком с $ в конце я до сих пор не использовал в своем умном доме, помятуя слова автора о том, что можно обойтись без этого. Да, можно. Особенно в простых ситуациях. А когда система становится сложной, с множеством вариантов управления одним и тем же объектом - вот тут то возникают различные неудобства.
P.P.S. Насчет того, что может решить топик с $ на конце. На тот момент, когда я на это согласился, стояла задача разграничивать сообщения пришедшие от пользователя и те, что были отправлены самим контроллером. Если бы контроллер слал сообщения с состоянием датчика (к примеру) в топик с $, он бы их получал, но знал бы, что они пришли от него самого и их не нужно обрабатывать. В итоге проблему я решил по-другому, но от этого ситуации, когда два разных топика были бы кстати, не исчезли.