Yes, for the certificate creation, I can see your point. Anyway, it is what it is. HTTPS is required, you need a certificate with chain of trust. There’s nothing we can do to support your setup. Sorry.
Where is the requirement for chain of trust coming from? I know of no other program or app that will not work with self-signed certificates if you confirm you want to trust them or install them on your phone.
Using self-signed for my NAS and everything can connect to it.
SSLForFree.com: Do these SSL certificates work for IP addresses?
No, certificates can only be generated for registered domain names.
Same for Let’s Encrypt.
This is not going to be easy ![]()
We are the same. We use self-signed certs locally and install our root trust certificate on machines locally. It did not work for Garmin. You need to search for the details of this answer elsewhere online, we’ve told you how to make it work. That’s the end of our technical support I’m afraid.
Self-cert does not work for me even when I have installed the root trust jobbie on my Android phone, Let’s Encrypt does.
If you find the answer to how to make this work with self-signed certificates and Garmin’s SDK please post back here.
Good luck.
One thing that does work is communicating through wifi directly.
The app API Call allows the user to force wifi usage. It temporarily enables wifi until the data is done exchanging.
This should work for Home Assistant also. When opening the app, wifi is enabled and then stay enabled until HA is closed again.
Hust an idea while I try to get Let’s Encrypt to work.
Not for me. I had to “synchronise” to start Wi-Fi. No direct Wi-Fi on offer, probably because its power hungry and hence not a great idea.
Please post details as I have not found that. The only lead I have followed has been a productive hack in the simulator and then messed up my watch when deployed for real. Difference between simulation and real life…
Check out this app from the Garmin Connect IQ Store Connect IQ Store | Watch Faces and Apps | Garmin
media [optionnal]
Type : String [“BT”|“WIFI-LTE”]
Default : not defined
Description :Force the media that is used to send the request. If you use this option, the specified option will define the only media that will be used. If not defined, the default behavior is to use Bluetooth if connected, else try WiFi/LTE. Trying WiFi can can be disabled in general options of the widget. This option take precedence on general options.
Note that, unlike Bluetooth, WiFi/LTE doesn’t require HTTPs, force Wifi is a solution if you can only use HTTP.
Example :
With {…,media:“BT”}, Bluetooth will be used if connected, but WiFi will never be tried even if the general option “Use Wifi/LTE if bluetooth unavailable” is enabled.
With {…,media:“WIFI-LTE”}, only WiFi/LTE will be used.
Sounds like the developer has solved the problem, but does not publish the source code so hard to see how. Have you tried making contact to see if (s)he’s willing to share?
I’ve a few other jobs on presently.
Hi, will soon get a Garmin Fenix 8 watch, just wondering if the Garmin Sleep Mode can be exposed to HA? Would like to sync this to the Apple Sleep Mode is possible?
This has nothing to do with this app that presents a HA UI in your watch. You can easily sync Garmin data with Apple health via the Garmin app
Unfortunately, the Garmin connect iq API does not provide a method to detect sleep, so this is not possible.
Thanks, however I am not talking about getting sleep data into HA. Only a binary sensor that tell me if Sleep mode is on or off. But probably not?
Hey, I’m fairly new to HA need help with my setup
I entered the api token, api url and the path to the json file. it says on my watch
API: Available
Menu: Unavailable
When I tap on it it says “No JSON returned from HTTPS request”
I used the web-based editor to find something out of the troubleshooting guides this is what it says in test API: API running.
test Menu: “Check CORS settings on HomeAssistant server.”
I use the HA Cloud, my file is in /homeassistant/garmin/garmin.json
I think there is something wrong with my json file.
I don’t know what to check in the CORS setting.
Firstly, thank you for reading the trouble shooting guide before posting.
When using the web editor did you check the initial banner?
GarminHomeAssistant Web Editor
This is the web editor for the GarminHomeAssistant watch app, it offers enhanced schema checking and validation over the original JSON schema by using the HomeAssistant API to create a schema based on your HomeAssistant configuration.
This editor makes use of the same credentials as the watch app (these can be pasted in the top bar of this page). However in order for this editor to work, you will need to amend the CORS settings of your HomeAssistant instance. Add this to your configuration.yaml file:
http: cors_allowed_origins: - https://house-of-abbey.github.ioOnce you have added this to your configuration.yaml file, you will need to restart HomeAssistant. After HomeAssistant is restarted, reload this page.
: [and more]
I suspect that’s the source of the “Check CORS settings on HomeAssistant server.” error.

You can return to that banner and the fuller text by clicking the (i) button in the top right corner.
That should get the web editor working. But as for the menu URL itself, you should be able to view that in a standard web browser. If you can’t then the URL is inaccessible, meaning, in the wrong location, or an area the web server cannot serve files from. So you need to fix the menu file location. Once you’ve made the file accessible via the URL (correct location on the webserver and correct URL), you can then use the web editor to check it against the JSON schema we supply. But you might like to verify the JSON file format a standard format checker too (with or without the schema).
Thanks for your answer.
I have the http line in my configuration.yaml and then I restarted the system
# Loads default set of integrations. Do not remove.
default_config:
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
http:
cors_allowed_origins:
- https://house-of-abbey.github.io
This is my garmin.json
{
"$schema": "https://raw.githubusercontent.com/house-of-abbey/GarminHomeAssistant/main/config.schema.json",
"title": "Home",
"items": [
{
<my-items>
}
]
}
I have tried different URLs.
https://.ui.nabu.casa/garmin.json,
https://.ui.nabu.casa/homeassistant/garmin/garmin.json
It says:
Test API: API running.
Test Menu: “Check CORS settings on HomeAssistant server.”
Yes, the file was probably in the wrong place, but when I click on the arrow in the top left corner, nothing happens. So can I just put the .json file there?
I use the File Editor Add-on.
It looks as if your JSON menu file is not accessible at the URL you are using. You need to amend the URL or the file location (or both). For example:
/config/www/garmin/<file>.json maps to https://<domain>/local/garmin/<file>.json
This is covered in the basic setup in the README.md → Dashboard Definition.
Note I am not using Nabu Casa. There is a note on that page subsequently about changes to Nabu Casa that have been reported but which the authors are unable to verify:
Important
However recent reports suggest this path may no longer work on Nabu Casa and you should use
/homeassistant/www/instead of/config/www/. We are unable to verify this since our free trial of Nabu Casa has expired.
If this report is correct then try:
/homeassistant/www/garmin/<file>.json mapping to https://<domain>/local/garmin/<file>.json
Just a small refinement in the setup that’s occured. Once you get the file location correct, the online editor will be able to fetch your menu file via the arrow button. I expect this is why your watch gets no menu too.
Thank you!!, that helped me a lot.
/homeassistant/www/garmin/<file>.jsonmapping tohttps://<domain>/local/garmin/<file>.json
Apparently I didn’t read carefully… ![]()
Now I just have to fix my .json because there are a lot of errors in it but I just reduced it to a minimum and then it finally worked
Happy New Year!
Definitely best to start small and simple and work up as the confidence builds.
Glad you are now on your way, Happy New Year to you too!
Hello.
New to Garmim and this app. I followed the setup instructions anda managed to install the app and get my (test) menu in the app (2 lights). However when I try toggle the light nothing happens. The clock vibrates ackowldge my tap but the light does not turn on/off and the icon remains the same in the watch face. I tried with different entities but without success. Any tip for what may be worng? Thank You
Please confirm you have completed the troubleshooting guide.
If you want more detailed help, you will have to share your menu configuration. I have no idea what your menu definition looks like, and how it might differ from the examples we have provided via our general documentation.
Hey, just trying to set this up. Got it working now. One thing I’m wondering though:
The setup guide recommends to put the config json into HAs own web server to make it accessible via https://<url>/local/germin/<something>.json. My issue with that is that this makes the file publicly available without authentication and it contains somewhat sensitive information about entity ids and such. Am I missing something?
