A brief update on my ongoing experiments with system control.
I was unable to get the dCS stack working reliably with the UC IR integration, despite trying different codes, settings and blasters. As a last resort, I decided to try serial control using a Moxa S9650. I am pleased to report that this has been a success. I can now control the Vivaldi stack reliably using the “HTTP Requests” integration.
There is, however, a downside: I had to disconnect the original serial connection to the Vivaldi stack, which means I have lost Mosaic control. I can still use Roon for playback, but I can no longer access the advanced settings through the Mosaic app. So there is a trade-off.
The Grandview screen was the next component to receive the serial treatment. Apart from the minor adventure of having to order three different custom cables before getting the RJ12-to-DB9 pinout correct, this also works extremely well.
These two successes have encouraged me to consider expanding serial control to the Lyngdorf, JVC, Oppo and Zidoo.
The reason is not that I have lost faith in the people developing the UC integrations. Quite the opposite — I think it is impressive how much has been achieved by a relatively small community. The problem is that my system now contains 15+ individual components, each with its own integration, network behaviour, firmware, API or control protocol. In practice, almost every evening something eventually times out or misbehaves, whether when initiating a sequence or when an activity is ending.
At this scale, there are simply too many variables. An integration can work perfectly well in the developer’s environment and still behave differently with a particular combination of hardware, firmware, network configuration and system state. Some developers understandably don’t even have access to the hardware they are developing against, which makes reproducing and troubleshooting these intermittent problems extremely difficult.
This has led me to consider a slightly different architecture.
Rather than having UC act as the primary system controller, I am increasingly tempted to move the actual system control and activity logic into Home Assistant, with the Moxa providing the hardwired serial control wherever possible. UC would then essentially become a very sophisticated and beautifully over-engineered HA controller/interface.
There are obvious advantages to this approach:
-
hardwired control wherever the equipment supports serial;
-
very fast and deterministic communication;
-
fewer dependencies on individual UC integrations;
-
activity logic and system state managed centrally in HA;
-
the AV system can continue operating even if the UC loses its Wi-Fi connection;
-
considerably fewer network/API variables in the critical control path.
The obvious downside is losing some of the functionality that makes UC attractive in the first place, particularly the integrated players and some of its more advanced native features.
I am still weighing the options, and I certainly don’t regard this as a criticism of the UC ecosystem. In fact, the ecosystem has expanded dramatically since the early days and, overall, I find the platform much more reliable than it used to be.
However, in my particular installation, the Remote 3 still misfires often enough that I am no longer convinced the remaining problems can simply be attributed to Wi-Fi. Troubleshooting 15+ separate components and their respective integrations every time something randomly times out is becoming increasingly tedious.
So my current thinking is that serial control + Home Assistant may be the next step, with UC retained as the user-facing controller rather than being responsible for the underlying system reliability.
To be continued…