openHAB for Garmin

Hi Marcel, thanks for the feedback—I really appreciate it! Just to confirm: are you connecting directly to your local openHAB instance, without using myopenhab.org?

Yeah, unfortunately the whole Connect IQ environment isn’t exactly known for its stability. For example, on my watch with my CIQ apps, updates do work, but the “Updating” message sometimes stays on screen forever - even though the update has already completed. This behavior started a few days ago and now affects all CIQ apps I have installed.

The SDK itself also has its share of bugs, though in most cases there are workarounds.

That said, in my experience, these issues don’t usually affect the user experience on the watch. Once the app reaches maturity, I’m confident it’ll work reliably for everyone. :slightly_smiling_face:

Good Morning!

I just uploaded version 0.0.6.3, which includes improved and more consistent error handling.

  • Non-fatal errors show a toast notification.
  • Fatal errors display a full-screen error message.

An error is considered fatal when continuing to display the sitemap no longer makes sense.
For example:

  • Errors that occur when sending a command are always non-fatal, since the sitemap remains valid.
  • Temporary communication issues while polling the sitemap are also non-fatal - unless they persist for more than 10 seconds. At that point, they are treated as fatal.

Even after a fatal error, the app continues polling the server and will return to displaying the sitemap if a valid response is successfully processed.

The documentation has been updated with a section on error handling and common issues:
:backhand_index_pointing_right: Troubleshooting

What still can be improved:

  • For common error codes, the app displays a descriptive label like “NO PHONE”. Over time, I’ll add more of these for frequently encountered codes.
    @Mark_VG - I’ve now mapped error code -2 to show “NO PHONE”, for example.

  • Regarding the myopenHAB issue, the app now displays EMRES (empty response).
    If this behavior continues, I may suppress this error unless it becomes fatal. From what I’ve seen, usually only one response is affected and the next one works fine - so the app could just skip such erroneous responses without disrupting the experience.

About the recent updates:

You may have noticed several quick releases, for example 0.0.6, 0.0.6.1, 0.0.6.2, and now 0.0.6.3.
This is because I also need the CIQ Store to install and test updates on my watch.

Once development stabilizes, I plan to split the app into two versions on the CIQ Store:

  • A stable version
  • A beta version for testing new features and getting early feedback
1 Like

Connecting through myopenhab.org

You’re not seeing any errors at all? That’s interesting.

New in Release 0.0.7.8: Settings Menu

Version 0.0.7.8 introduces a basic settings menu!

It currently displays the app version and server URL. Additional features may be added in the future when the app evolves.

Getting this working was trickier than expected - it took several iterations (from 0.0.7 to 0.0.7.8) to track down and work around a Garmin SDK bug that only appears on the real watch, not in the simulator. :speak_no_evil_monkey:

To access the settings menu, scroll down on the home screen and continue past the settings icon.


Just uploaded v0.0.7.9 with a small fix for the settings menu. Previously, exiting the settings via the back button and then re-entering it caused the app to crash - this issue has now been resolved.

You can navigate to and from the settings menu using the up/down keys or the corresponding touch gestures. The back button also returns you to the main menu.

1 Like

My Fenix 6 Pro arrived yesterday, so as soon as the app is available for it, I can start testing.

Great! I’ll see if I can include support in the next release: Support Fenix 6 Pro

In the meantime, I’ve just uploaded version v0.0.8.2, which includes two fixes:

  • Fixed a bug that prevented errors from being shown if they occurred during the very first sitemap request. Details
  • The app now correctly handles a trailing / in the server URL when constructing the REST API URL. Details

I’ve also submitted a new BETA app to the Garmin CIQ store. Once it’s approved (in about 2–3 days), I’ll be able to use it for my own testing - which means I won’t have to bother you all with frequent releases that haven’t even been tested on a physical watch.

2 Likes

How about Venu 2 Plus? It has lot of memory (30apps, 100MB+) and responsive touchscreen -could you consider to add to your project?

v0.0.9 Released - Now with Support for Fenix 6 Pro, Venu 2 & Venu 2 Plus

I’ve just uploaded version v0.0.9, which adds support for the Fenix 6 Pro series, Venu 2, and Venu 2 Plus.

To support the Fenix 6 Pro, the glance now handles memory constraints more gracefully. If there’s not enough memory to process the full JSON response, it will still show a previously stored sitemap label. Normally, the glance caches the full JSON so the widget can start with fresh data, but if that fails, it will fall back to the last cached data and update once new data becomes available.

One limitation: these devices only support API level 5.0.0, not the newer 5.1.0. On touchscreen devices, this affects how the settings menu behaves:

  • You must tap the settings icon (scrolling over it won’t work).
  • To exit the settings screen, swipe right or press the back key.

I’ll explore ways to improve this behavior further.
(See issue: #55 on GitHub)

In the simulator, all Venu devices currently open the settings screen at the last entry instead of the top. If you have a physical Venu device, please let me know if you see the same behavior. See issue: #56 on GitHub)

1 Like

I would be happy to test it, but in my Edge Explorer 2 for the bicycle. Is that possible?

Thanks so much in advance

Ruben

Thank you, its working :slight_smile:
About issue 56 you mentioned: on my watch while go into setting and then out it looks like focus is on middle frame(recreated map with 3 frames like yours). Focus means that is exactly in the middle of screen, not sure if it is what you looked for.
Anyway not a big issue at all, its great to have OH inside Garmin device :heart_eyes:

In the next version, the settings menu will be implemented differently for touch devices.

Note: By touch devices, I’m referring to models primarily designed for touch input (like the Venu and Vivoactive series), in contrast to button-based devices such as the Fenix or Forerunner series. While the latter may have touchscreens, their interaction model is still centered around button use.

On touch devices, the settings will appear as a standard menu entry, rather than as a parallel menu positioned below the footer. This approach aligns better with the user interface conventions of touch-centric devices.

@stonke, my expectation for the menus is that when navigating into a submenu and then returning, the parent menu should restore its previous scroll position. In the simulator, this doesn’t seem to work correctly - on return, the focus shifts lower than where it was left. Do you observe the same behavior on your actual device?

I’ll need to look into it further, but at first glance, it should be possible. The Edge Explore 2, along with the Edge x40 and x50 series, appears to have sufficient hardware resources and a recent enough API level. Support for the older x30 series might also be feasible.

Personally, I use an Edge 830 and currently use APICall to open our entrance gates - but of course, it would be much cooler to do via the openHAB app.

I’ve created a GitHub issue to track progress on this: https://github.com/TheNinth7/ohg/issues/61

Just out of curiosity - what would be your use case for the app on the Edge?

@stonke, one more question: the height of each menu item is relatively small. I think that works well on button-operated devices, but do you think it would make sense to increase the height for touch devices? Or does the current layout work well as-is?

Very strange with my sons watch.
Thecapp only works if the garmin app is actually running on his phone.
Any time the Garmin Connect is not running the No Phone error is displayed.
Confirmed by testing thevapp a few times with Garmin Connect open and closed and consistent that if Garmin Connect not running app shows No Phone.

In general, the Garmin Connect app needs to remain active in the background for watch apps to access the Internet. Usually, after a phone restart, you need to open the Connect app at least once - after that, it should stay running in the background automatically.

Are you using Android? There are several potential reasons why the app might not stay active in the background.

Here’s what the almighty AI has to say about it :wink: (I don’t have an Android device myself, so I can’t test it):


Several factors can prevent the Garmin Connect app from running reliably in the background on Android. Here are the most common culprits:


:battery: Battery Optimization / Power Saving Settings

Android aggressively limits background activity to save battery. Garmin Connect can get shut down or restricted unless excluded from battery optimization.

  • Fix:
    Go to
    Settings > Apps > Garmin Connect > Battery > Battery Optimization
    → Set to “Don’t optimize” (or similar wording depending on the manufacturer).

  • Some phones (like Samsung, Xiaomi, Huawei) have extra power management settings:

    • Look for “Background usage limits”, “App launch control”, or “Auto start” settings.

:antenna_bars: Restricted Background Data / Network Access

Garmin Connect needs background access to Bluetooth, Wi-Fi, and mobile data.

  • Fix:
    Go to
    Settings > Apps > Garmin Connect > Mobile data & Wi-Fi
    → Enable “Background data” and “Unrestricted data usage”.

:locked: Device-Specific App Killers

Some Android OEMs (like Xiaomi, Huawei, Oppo, Vivo) use aggressive app-killing policies.

  • Fix:
    Check the OEM-specific background management settings.
    For example:

    • Xiaomi: Add Garmin Connect to “Autostart” and exclude from “Battery saver”
    • Huawei: Set to “Manage manually” with all permissions enabled
    • Samsung: Remove from “Sleeping apps”

Refer to https://dontkillmyapp.com/ for phone-specific instructions.


:mobile_phone_with_arrow: Disabled Notifications or Permissions

If the app can’t send notifications or maintain Bluetooth access, it may stop syncing or get killed.

  • Fix:

    • Enable all necessary permissions (Bluetooth, Location, Background location)
    • Ensure notifications are allowed for Garmin Connect and Garmin Services

:prohibited: Third-party Battery Saver or Task Killer Apps

Apps like Greenify, Battery Saver Pro, or antivirus apps can interfere with background processes.

  • Fix:
    Whitelist Garmin Connect or disable such tools temporarily for testing.

Would you like help checking any of these settings for your specific phone model?

Exactly that you say, open entrance gates :smiley:
But if can I do a sitemap, sure I can find other useful items, like house ocupancy, or blinds control.

1 Like

Thanks Robert

I guess that is the issue. This is unfortunate but I assume an issue with the App and platform that cannot be solved externally.

My son uses and iPhone, but I would guess the same applies there.

We ran into a similar issue with Owntracks and as a result have moved away from presence detection.

Appreciate the effort you have put into the App.

Height of items is really acceptable (even could be smaller) especially if we compare to APIcall app



It could easily handle 6 or 7 items and still stay clickable.

About menus behaviour I made short video that should help(onedrive link below). Looks like its not what you expected: