Android Companion App - "Internal Connection URL" Setting Disabled

I am currently using Spectrum as my home internet provider. Spectrum will tell me the (dynamic) public IP address to my router. I have Home Assistant installed on a Raspberry Pi 3. I can tell my Spectrum router to reserve an internal IP address for the Raspberry Pi 3 (192.168.1.26 in this case) and to forward port 8123 to that internal IP.

I have installed the Android Companion App and set its Home Assistant URL to http://<public_ip_address>:8123. When my phone is not on my home wifi network, I can access Home Assistant from my phone with that setting. This setting also works when I am connected to random outside wifi networks. I do not need Duck DNS, and I’m willing to change the Companion App’s URL if and when Spectrum changes my home public IP address.

However, when my phone is connected to my home wifi network, the Home Assistant URL setting of http://<public_ip_address>:8123 does not work. The settings in the Android Companion App for the “Internal Connection URL” setting and the “Prioritize Internal URL” switch are disabled. But these are the settings I believe I want to change, to prioritize and use my configured internal IP address when I’m on my home wifi network. Is this correct?

I tried updating my configuration.yaml file and adding the following lines:

homeassistant:
  external_url: "http://XX.YY.ZZ.215:8123"
  internal_url: http://192.168.1.26:8123

However, the Internal Connection URL setting in the Companion App does not seem to be affected by these configuration settings, and I assume that the configuration.yaml file only affects the HA server, and not the Companion App, is this correct?

What is really confusing to me is that the Companion App does not contain the SSID of my home wifi network. How does the Companion App know that I’m on my home wifi network without me setting the SSID? Why does it care, and why does it stop working? Why doesn’t it just go to the configured public IP address and work, just like when it’s on outside wifi network?

Either way, how can I enable the Internal Connection URL and the Prioritize Internal URL settings on the Android Companion App?

Thanks!

Home Assistant Android version: 2022.6.0
Android version: 11
Phone model: Moto G Power
Home Assistant version: 2022.6.7

While I don’t have an answer for your issue.

You do know this is an EPICALLY bad idea?

Please at least put a reverse proxy or use Nabu Casa Or SOMETHING

Not only is your HA instance exposed to the Internet its exposed without security so your credentials pass in the clear.

Id shut that door IMMEDIATELY

2 Likes

you need to provide a Home Wifi SSID in order for these options to be enabled.

also do not enable prioritize internal unless you leave location off on your device as per the note on the toggle.

you need to provide it per above

This all depends on your own network, personally I jsut use my own domain name as my router supports NAT loopback. Every user will have a different experience here.

6 Likes

TL:DR When setting WiFi SSID on the companion app, newer Android versions may require you to set location permissions from the Android Settings first rather than using the link in the companion app.

For anyone else, in my situation the Android Companion App (currently 2024.4.1-full) was initially set up for my WiFi URL. I usually default location permissions to only when using app. When I got a Nabu Casa Home Assistant Cloud account and put that into “Home Assistant URL”, it worked fine, but “Home network WiFi SSID” would not allow me to add the SSID. Clicking this option produced a link to enable location all the time, however it did not change the permission (I’m on Android version 14) and I was just in an endless loop with “Internal connection URL disabled”.

The fix was to go into Android->Settings->Apps->Home Assistant->Permissions->Location and set “Allowed all the time” there. Apparently the Android OS has [rightly] been hardened and does not allow an app to change this. Once changed in Android Settings I was able to add my WiFi SSID and local “Internal connection URL” and this is now used when I am in range of this SSID.