Logitech recently added Amazon Echo Alexa integration for Hub based Harmony remotes. This promises a fantastic smart-home voice enabled integration allowing complete control over your home entertainment system. For example, simply saying "Alexa, turn on TV" can turn on your TV, AV Receiver, Cable Box, set everything to the right inputs, dim your smart-light, etc. This sounds like the future! Unfortunately, making everything work correctly was much more painful than it should have been...
After enabling Alexa's Logitech Harmony skill and adding some keyword for my Harmony Activities I immediately noticed how inconsistently the integration worked. Occasionally commands were executed immediately, but more often than not, Alexa would "think" for a while with spinning blue circle and then responds with "I was unable to reach your Logitech Harmony Hub..." message and suggest to visit some non exiting Logitech "Alexa Errors" help page... Interestingly, sometimes few minutes after this response, Harmony would actually run the Activity requested!
This wasn't a complete surprise as Alexa's Harmony skill had only 2.5 star average rating (in the UK). After looking around a bit I decided to try Yonomi integration. Apart from better ratings in Amazon Skill's store, Yonomi also had few advantages over native Logitech Alexa skill. For example, Yonomi integrates via Alexa's Smart Home system which allows to run commands without having to specify the skill - instead of saying "Alexa, tell Harmony to turn on TV", you can simply say "Alexa, tun on TV", which is much quicker and more natural.
Unfortunately, Yonomi didn't work any better than the native Logitech skill. The only difference was that with Yonomi integration Alexa would allows respond "OK" and then do one of the three: either execute the activity immediately, never execute it, or execute few minutes later...
Since the same/similar issue affected 2 independent Alexa skill providers, I now focused my attention on the hub itself. After some experimenting with native Logitech Harmony App, I was able to reproduce the issue using this app as well. The app can basically be used instead of your Harmony remote controller - it talks to the hub via Wi-Fi, and then the hub sends required IR commands to your devices. What I noticed was that when the smartphone was connected to my home Wi-Fi, the app would always work as expected. However, when the phone was connected to 3G/4G network it would randomly fail connect to the hub (via Logitech Cloud). Following error message was displayed:
Unable to read hub.
If the problem persists, try restarting your hub by disconnecting and reconnecting its power cable. The hub will take about 30 seconds to restart.
After some more experimenting it became clear that all these issues were directly related and were caused by a connection issue between Logitech Harmony Hub and Logitech Cloud. If Harmony smartphone app could connect to the hub via Cloud, Logitech Harmony skill and Yonomi Alexa integration would work as well. If connection via either method failed, all others wouldn't work either.
I was pretty confident that my home network and Internet connection were performing fine. So the next obvious guess was that there could be some issue with Logitech Cloud. I then went to Logitech support forums where I quickly found couple of threads with people reporting exactly the same behaviour with little to zero help from Logitech. After reading through all the posts I noticed that most of the affected users were from the UK, but more importantly almost all of them were running Draytek Vigor routers. And guess which router I was using - Draytek Vigor 2860ac! Draytek makes great routers, but I wouldn't call them mainstream so it looked very unlikely to be a simple confidence...
The first non Draytek VDSL2 router I could find was ZyXEL VMG1312. I quickly configured it with identical WAN / Wi-Fi details and swapped with my trusted Draytek. Result was pretty conclusive - with ZyXEL doing all the routing, connection between Logitech Cloud and Harmony Hub worked 100% of the time. Both Harmony and Yonomi Amazon Alexa skills were also working without any failures either.
This was a great progress, but I wasn't ready to give up my Draytek that easily! I tried some obvious things, such as upgrading firmware, resetting the router to factory defaults, playing with Firewall and DDoS defence settings - nothing made any difference. By that time I was also participating on a related thread in Draytek Forums, where one of the admins suggested that it could be NAT Session Timeout issue, which obviously made perfect sense!
On Draytek routers NAT Session Timeout can be controlled via Telnet interface with portmaptime command. portmaptime ? shows command syntax, portmaptime -l shows existing values:
After a bit of experimenting, I narrowed down the issue to TCP WWW Timeout. Default value on my router was 60 seconds. Increasing it to 3600 seconds (portmaptime -w 3600) did the trick and resolved the issue completely! Since then there wasn't a single connection failure between Logitech Cloud and Harmony Hub. Amazon Echo / Alexa integration via Harmony and Yonomi skills also work great. You could probably get away with a lower timeout value, I simply went for 3600 because this was what ZyXEL VMG1312 had for all TCP its traffic and I knew that it worked correctly with Logitech Harmony system.
Few users in Logitech forums confirmed that this fixed the issue for them as well. This is not limited to Draytek Routers either. Some people reported having similar issues with SonicWall, Vodafone, and possibly some other routers. Obviously, other routers would have different methods of displaying and changing NAT Session Timeout values.
I took quite some effort, but I finally have fully functioning voice controlled entertainment system!
Logitech Harmony Hub
Amazon Echo Dot