In my house, I have a smart washing machine and tumble dryer, for no other reason than the notifications to tell me they are done or for me to quickly check how long is left.
In addition to this, my network is protected using a DrayTek Vigor 2832 firewall with the DrayTek URL protection WCF service enabled.
I've found using Cloudflare Zero-Trust along with the URL protection the best way to ensure my children can browse safely online, the VPN blocking features of URL protection are especially handy here!
However, ever since I enabled URL Protection I have found that my hOn app has been intermittent with how it works, sometimes locking up entirely or not communicating with my devices.
I was able to sometimes resolve this by using my mobile data, however, this was not always the case.
No matter how hard I searched, the URLs and IP addresses used by the devices to communicate were not documented anywhere.
Through digging in the logs I was able to see that variations of 3 URLs were being blocked by URL protection, the main ones logged were:
api-iot.he.services
he.services
hon-smarthome.com
Once I had found these I was able to create a Keyword Object which could be used to whitelist them through the URL protection.
To do this first login to your firewall, and then expand Objects Settings in the left menu and click on Keyword Object
On the right-hand side click on a number, and on the page which opens enter the information as per my screenshot below:

Click OK to save.
Next expand CSM and click on Web Content Filter Profile click on the number next to your active profile and then click on Edit next to the URL keywords field.
In the window which pops up, select an unused dropdown that says None and choose HON from the dropdown, click OK to close the window and finally OK to save the profile.
The app and devices should start working correctly now.
I had to clear the cache and storage on the app for it to work correctly, but this may not be required.
About the author
Aaron Sadler
Aaron Sadler, Umbraco MVP (2x), Umbraco Certified Master Developer and DevOps Engineer