Intro
Wouldn't it be nice to be able to just tap a button on your cycle computer to open the garage door when arriving back home? That is exactly what I wanted to solve.
Prerequisites
I have a Hörmann Supramatic E4 door opener, for which I already made a wifi bridge, such that the door can easily be controlled via UDP/IP. Now that I have full control over the door, I just needed to expose some webhook URLs which the Garmin app can use.
Backend
I exposed 3 URLs from my smart home backend:
GET /webhooks/garage/status(returns a percentage like 0% for closed, 100% for open and anything in between for partially open)POST /webhooks/garage/openPOST /webhooks/garage/close
(for security, I am using HTTPS and a pre-shared secret between backend and the Garmin app)
The Garmin app
I know nothing about the Garmin SDK, and I have no real ambitions to do a lot of Garmin development, so I basically offloaded the coding to a locally running LLM, combined with opencode. I quickly noticed that it wasn't any good with Garmins programming language "Monkey C", but it was impressingly clever enough to figure it out.
Since the Garmin Edge device has no Internet access directly, all HTTP calls go through Bluetooth to the paired phone. But that is handled by the SDK.
The App itself has two UI parts.
Main screen
The Main screen is a fullscreen UI on which I have three large Buttons.
- Refetch door status
- Send "Open" command
- Send "Close" command

Glance view
A glance view is a small widget-like UI element which is shown, among other widgets, when you swipe UP. It has two tasks:
- showing the door status
- reading the fullscreen UI by clicking on it
So when I want to reach and open the garage door, I just:
- swipe UP
- click on the widget
- hit on the "Open"-button

I published the app's source code here under MIT lisense: https://codeberg.org/sebdehne/garmin-garage-door-app