Skip to main content

Konnected Garage Door Opener

The konnected_gdo driver controls a Konnected GDO — an ESPHome-based bridge that wires into a residential garage door opener and exposes it over the LAN. Unlike a single pulse-relay door, the Konnected GDO has discrete open, close, and stop operations plus an on-board garage light and lock. State is read over a live Server-Sent Events (SSE) stream, with a polling fallback for older firmware.

Each Konnected GDO drives a single door. The driver auto-creates one zone per device under the garage subsystem — there is no per-zone address to set.

Prerequisites

  • Konnected GDO provisioned onto Wi-Fi via its captive portal.
  • A DHCP reservation for the GDO (recommended — the driver addresses it by IP).
  • Outbound HTTP from the GEM controller to the GDO, including the /events SSE stream.
  • A garage subsystem on the site. A default GEM install ships one named Garages; the driver matches any subsystem whose name contains garage, so the stock install works as-is. If every garage-type subsystem was deleted, create one under Subsystems before adding the device or no zone will be created.

Firmware and device entities

The driver speaks to the stock Konnected GDO firmware, which is ESPHome and exposes three fixed entities at known names:

EntityESPHome object IDWhat it is
Covergarage_doorThe door itself (open / close / stop / position).
Lightgarage_lightThe opener's on-board light output.
LocklockThe opener's lock / lock-out output.

It drives these over the unit's local HTTP API (/cover/garage_door/…, /light/garage_light/…, /lock/lock/…) and reads live changes from the /events SSE stream. If you reflash the unit with custom ESPHome firmware, keep those entity object IDs or GEM will not be able to see or drive the door, light, or lock. The light and lock commands only do something if those outputs are actually wired on the unit.

Setup

  1. Add the device. Go to System → Devices → Add Device on the Devices page and choose the driver konnected_gdo. Enter the GDO IP Address (use a DHCP reservation), set HTTP Port and Protocol only if they differ from 80 / http, then enable and save.
  2. Zone is auto-created. On first connect the driver creates a garage zone bound to this device under the garage subsystem and stamps the discrete-verb action attributes (see Discrete openers below). No per-zone address is needed.
  3. Verify. The driver opens the /events SSE stream and writes state, position, and operation onto both the device and the zone as the door moves. If the door state never changes in GEM, the firmware may be too old for SSE — turn Use Server-Sent Events off to fall back to polling.

Attributes

Device

AttributeUI labelRequiredTypeDefaultNotes
ipGDO IP AddressyesstringGDO LAN IP (DHCP reservation recommended).
portHTTP Portnoint80HTTP port.
protocolProtocolnostringhttphttp or https.
use_sseUse Server-Sent EventsnobooltrueUse the live SSE stream. Turn off to fall back to polling.
poll_ratePoll Rate (ms)noint (ms)2000Poll cadence — only used when Use Server-Sent Events is off.
stateDoor StatereadonlystringDoor rest state — open or closed.
positionDoor PositionreadonlyintDoor position, 0 (closed) → 100 (open); updates continuously during travel.
operationCurrent OperationreadonlystringCurrent motion — idle / opening / closing.
last_errorLast ErrorreadonlystringMost recent driver error (set on a command failure, a poll failure, or an SSE error).

Zone

The driver binds one auto-created zone per device — no address is required. The state stream writes state, position, and operation onto the zone, and the discrete-verb action attributes (open_action, close_action, stop_action) are stamped on first connect. The zone takes the device's name and label.

Commands

NameArgsDescription
openOpen the door.
closeClose the door.
stopStop the door mid-travel.
toggleOpen if the last known state was closed, otherwise close.
levellevelDrive the door toward a target position 0100 (sent to the opener's set endpoint). Whether the opener honors intermediate positions depends on the hardware — many garage openers only support fully open or fully closed.
light_on / light_off / light_toggleControl the GDO's garage light output.
lock / unlockControl the GDO's lock output.

Discrete openers

A Konnected GDO is not a pulse relay — it has real open, close, and stop verbs. So the driver stamps the per-zone open_action, close_action, and stop_action attributes (string form: open / close / stop) when the zone is created or first seen. The garage control page reads these and dispatches the verbs directly and idempotently — no toggle guard, no pulse — and shows a Stop button because the door supports a real mid-travel stop.

This is a fill-when-empty stamp: if a user or macro has already set one of these action attributes on the zone, the driver leaves it untouched. See Command Overrides for the general per-verb override mechanism.

Inline camera

The garage control page can show a live camera feed beside the door buttons. That feed is sourced from a camera_zone attribute set on the garage subsystem, not on this device — see Zone Controls.

Known quirks

  • One door per GDO — one auto-created zone per device, no per-zone address.
  • The zone lands in whichever subsystem matches garage (the default install's Garages subsystem).
  • SSE keep-alive frames arrive about every 30 s. On an SSE error the driver marks the device disconnected, then reconnects about 5 s later; the stream also self-recovers if it goes idle for more than ~60 s.
  • position is reported 0 (closed) → 100 (open) and updates continuously during travel.

Troubleshooting

SymptomCheck
No garage zone is createdConfirm a subsystem whose name contains garage exists (the default Garages). If you deleted the defaults, recreate one under Subsystems, then reload the device.
Door state never updatesVerify the SSE stream is reachable: curl -N http://GDO_IP:PORT/events (use the same port as the device). If it 404s the firmware is older — turn Use Server-Sent Events off to fall back to polling.
Light or lock command does nothingThat output may not be wired on the unit, or custom firmware renamed the entity. The driver expects the stock garage_light and lock entities.
"Door is obstructed" / last_error populatedThe GDO surfaces the opener's safety-beam state. Clear the obstruction at the door, then close again.
Driver flaps connected/disconnectedWi-Fi RSSI is marginal (the GDO web UI shows RSSI). Below about −75 dBm the link is typically unstable.