Home Assistant App for Garmin

Hi Ben,

Thanks for your interest!

We’re using the stock (Connect IQ) library menu and menu items. These preserve the watch’s look and feel.

If you want to mess with the UI, you’ll need to code your own custom menu items. That sounded like a world of pain and a distraction from the real task. You need a design that will work across many different sized devices. Unless reassurances can be given you’ve got that right, your pull request would be at risk of never being merged! Creating a custom menu will also increase the size of the compiled app that has to be deployed. It just was not important enough to merrit the effort when the stock menu and items were good enough for the job. I have my doubts that a more compact design would look all that great and be usable.

Got it sorted, works great, thank you very much!

@neilc2 Was the solution to your problem worth sharing with the community for others to benefit from?

Regards.

Thanks for making a good looking app, I would love to try it but unfortunately I only have an edge 520, which for some reason isn’t on the supported list, even though the edge 520 plus is. Any ideas?

Edge 520 only supports API level 2.4.0. Out App needs 3.1.0.
Sorry,

Philip

Hi,

thank you for all the work on this app and widget, very nice indeed!
It perfectly works for me on Garmin Epix, but on Edge 830, I see IQ! symbol after few clicks and no action is executed when using app. The widget even doesn’t start correctly. Memory is 4-5%. Any idea what could be the cause?

Thank you,
Peter

Did your device produce a crash report? To find that, try these instructions:

If this happens, plug the watch into your computer and have a look in the folder GARMIN->APPS->LOGS. You should find a file named CIQ_LOG.TXT. This contains information on what failed, and whereabouts in the software the failure occurred.

If you find that file please send it to me.

I will try to simulate the app on your failing device tomorrow, bear with me.

Philip

Hi, thanks for the help, I swear I have restarted the device at least 10 times yesterday and it didn’t work, today it is smooth like a butter, so maybe just your posting here helped :wink:

Anyway, I have a different question - which of the style you find better for backgroud service - widget or app? Or is it the same?

Thanks,
Peter

Relieved to hear that as the Connect IQ simulation was playing up big time and I’ve struggled to get the application to behave. I was going for a reboot after work…

I would advise the Application unless you specifically want a Widget for an older watch. Widgets are more memory limited. If you device supports glances, then definitely the Application not the Widget. As you’ve probably noticed the Widget does work on a more modern device supporting glances, but it will suffer from memory limits that could curtail the size of your JSON configuration object.

See fuller explanation in the instructions at Widget or Application.

I wonder if there is a residual bug in processing the settings. Then you got the app working by changing the settings, not realising something trivial was different. In which case there’s a bug lurking to tighten up error checking. Don’t suppose you know how to make the app fail again!?

I don’t think it was fixed by changing the settings, as I haven’t played with that in the meantime. Maybe the devices caches something in the memory to make the boot faster, and it flushes it when it’s off for more hours.
Anyway, if I find something, I’d let you know.

What I have found is backup of yesterday’s log file, and there is this (time is at around my last attempt):


Error: Not Enough Arguments Error
Details: 'Failed invoking <symbol>'
Time: 2024-03-17T22:38:09Z
Part-Number: 006-B3122-00
Firmware-Version: '9.79'
Language-Code: eng
ConnectIQ-Version: 4.2.4
Store-Id: 61c91d28-ec5e-438d-9f83-39e9f45b199d
Store-Version: 20
Filename: E3HH3602
Appname: HomeAssistant
Stack: 
  - pc: 0x100043ac
  - pc: 0x30000c88
  - pc: 0x100042e0
  - pc: 0x100040a3
  - pc: 0x10004fa2

Peter

Thank you.

Error: Not Enough Arguments Error

The simulator was messing me about, not starting a debug session reliably, and this was one of the few error messages I got, but the tools were (temporarily) preventing me from investigating. Useful confirmation.

Needless to say I tried the Edge 830 when I initially enabled as many devices as possible and it worked. But I don’t have a regression suit to test all devices for all updates, so something might have broked in the meantime… or maybe not (now)?

Hi, is it possible to create some signalization for group that som of switch inside group is on? And absolutely perfect will be possible to switch off whole group with long press.

Nothing could ever be automatically determined as there are no constraints on what you can group together. So you as the user would need to define the action. Then in doing so, the tap that would open the group would no longer work. There is no “long press” option provided by the ConnectIQ menu item AFAIK.

I don’t think what you are asking for is possible. As we’ve always said about this app, it will never be a substitute for all the functionality of the HA phone app. So best keep it simple!

This looks like a great project! I’m trying to build/run the project locally, but whenever I try to run the project for any device (Using the monkeyc Run App configuration), I get the following errors:

ERROR: venu2: /home/max/projects/GarminHomeAssistant/source/WebLog.mc:109,8: Undefined symbol ':ClientId' detected.
ERROR: venu2: /home/max/projects/GarminHomeAssistant/source/WebLog.mc:109,8: Undefined symbol ':webLogUrl' detected.
ERROR: venu2: /home/max/projects/GarminHomeAssistant/source/WebLog.mc:130,8: Undefined symbol ':ClientId' detected.
ERROR: venu2: /home/max/projects/GarminHomeAssistant/source/WebLog.mc:130,8: Undefined symbol ':webLogClearUrl' detected.

What’s the proper way to run/build the project?
Edit: I tried again with the GarminHomeAssistantWidget repository, and I get the same errors.

EDIT: Sorry, just realised that the forerunner235 only supports API level 1.4 and I assume this app requires 3.1 for BTLE, so seems like there is no hope for fr235 support.

I perhaps should have explained better what that debug WebLog.mc file does. Explanation here: Monkey C In Application Logging. It is easiest to just delete WebLog.m, or just create from ClientId.mc.unpopulated.

First of all: Really cool app. It takes time to get everything setup but it’s highly customizable.

I currently use it to display a few sensor values from my solar panels on my EPIX and it works great with templating etc.
One thing I was trying to achieve is to display sensor values right in the “glance overview” while scrolling. Right now there is the information regarding API/Menu but honestly I’d like to see my values there instead of opening the glance, would be way easier for a quick overview.
I have another app which does this, just for reference: Connect IQ Store | Free Watch Faces and Apps | Garmin

Is this something which is on the roadmap already? If not take it as a potential new feature request :slight_smile:

Thank you for your interest!

This idea is not on the road map. I’ve been shying away from such ideas, preferring to give an early sight that the connectivity is absent for the app to work at all, e.g. API/Menu availability, since if either of those are negative there’s no point opening up the app at all.

In order to implement such an idea we would need to amend the menu JSON format in what is possibly a breaking way. Originaly I was not even fussed about the glance view at all.

“If you place the application on your list of favourites, and rearrange it to appear near the top, then the item is just one button press away from the watch face.”

In fact, this arrangement makes the app open in 2 presses of the same button, and with a cached menu its almost instantaneous access to everything in the menu. So the glance was not part of the original plan, and hence no accommodation has been made in the JSON format to fit in a template for the glance. And a glance would not accommodate an tap action (a tap opens the full app), so we would need another variation of object.

I’m currently thinking the idea is a little on the niche side to make it into a feature request.

  • Needs a new tapless template
  • Room for a single item only
  • Awkward to shoehorn into the JSON schema in a backwards compatible way

Thanks for the quick reply.

I agree it’s kind of niche and you won’t be able to display more than one or two sensor values. Also it’s just a “nice to have” thing as you can always open the app with one more click.
So if this implies breaking changes and big development effort don’t do it :slight_smile:

Follow up question: Is it possible to customize the icons for sensors? Right now it’s always the blue circle. I’d like to either customize it or remove it completely to gain some screen real estate.

PXL_20240419_062635248

Icons are limited to what we’ve already packed into the app. So the icons would you use would need to be provided at compilation time. That prevents a general solution. Remember this is a watch app, not a Windoze app.

There is one degree of freedom, you can choose Unicode characters, and they you some way to providing icons. (As you appear to have done already.)

Now the icons exist because another user requested them, and provided the source code to make it happen, and ultimately we preferred his solution aesthetically. Which meant we removed the non-icon option in the end. So I’m reluctant to back track and revert the code and bring back configuration complications. The existing icons line up the text left aligned with the toggle icon making the presentation less jagged.

As the documentation says at GitHub - house-of-abbey/GarminHomeAssistant: Garmin application to provide a dashboard to control your Home Assistant

“The application will never be as fully fledged as a Home Assistant dashboard, so it is designed to be good enough for the simple and essential things. Those things that can be activated via an on/off toggle or a tap. That should cover lights, switches, and anything requiring a single press such as an automation. For anything more complicated, e.g. thermostat, it would always be quicker and simpler to reach for your phone or tablet… or the device’s own remote control!”

Perhaps the solution here is a watch with a bigger face?