Bond Bridge
The Bond Bridge (Olibra / Bond Home) is an RF-and-IR-to-Wi-Fi hub. You pair your ceiling fans, gas fireplaces, motorized shades, and RF lights with the Bridge in the Bond mobile app, and the Bridge relays their original remote-control signals over the network. GEM talks to the Bridge over its local network API, so one Bridge becomes one GEM device, and every paired accessory on that Bridge becomes its own GEM zone that GEM creates for you automatically.
Because Bond reproduces the accessory's own RF/IR remote, control is one-way for most devices: GEM can send commands, but it can only report state back as well as the Bridge can, which for one-way RF gear means the reported state can drift if someone uses a physical wall remote.
What's controlled
GEM sorts each paired Bond device by its type and gives it the matching controls:
- Ceiling fans — on / off, fan speed, fan direction (forward / reverse), and — on fans with an integrated light — the light on / off and its brightness.
- Fireplaces — on / off, plus flame height (0–100 %) on fireplaces whose Bond pairing exposes flame control.
- Motorized shades — open, close, stop (hold), and set to a position (0–100 %).
- RF lights — on / off and brightness (0–100 %).
Any Bond device whose type isn't one of these four is skipped — no zone is created for it.
Prerequisites
- A Bond Bridge on the same LAN as GEM, reachable by IP. Give it a DHCP reservation so its address never moves — a moved address means GEM can no longer reach the Bridge.
- Pair your fans, fireplaces, shades, and lights in the Bond mobile app first. GEM only discovers accessories the Bridge already knows about; it does not pair new RF/IR remotes.
- The Bridge's local API token. You get it one of two ways:
- Copy it from the Bond app under Settings → Local API, or
- Leave it blank and let GEM fetch it automatically during the short pairing window right after the Bridge is power-cycled (see the next section).
Setup — adding the Bridge
- Open Devices, add a device, and choose the Bond Bridge driver.
- Set the Bridge IP Address field to the Bridge's LAN IP. Leave HTTP Port at
80unless you have remapped it. - Provide the token one of two ways:
- Manual token — paste the value from the Bond app's Settings → Local API into the Local API Token field. This is the reliable path and is recommended for a permanent install.
- Auto-fetch — leave Local API Token blank, power-cycle the Bridge, and enable the GEM device within about 10 minutes of power-up. During that window the Bridge hands out its token without authentication; GEM fetches it, saves it (encrypted), and uses it from then on. If you miss the window the token request fails and the device stays disconnected — power-cycle and try again, or just paste the token manually.
- Save and enable the device. On connect GEM reads the Bridge's device list, looks up each paired accessory, and auto-creates a zone for every supported device (see below). It then begins polling state.
The manual token never expires under normal use, so for a commissioned site paste it in rather than relying on the post-power-cycle auto-fetch window. The auto-fetch path is handy on the bench but easy to miss on a job site.
How zones are created
When the device connects (and whenever you run the sync_devices command), GEM creates one
zone per supported Bond accessory:
| Bond device type | Zone goes in subsystem | On-screen control |
|---|---|---|
| Ceiling fan | Fans | Fan control (speed + direction) |
| Fireplace | Fireplace | Fireplace control |
| Motorized shade | Shades | Shade control (position slider) |
| RF light | Lighting | Dimmer control |
Each created zone is named <bridge-name>_<bond-device-name> (lowercased, with underscores),
its on-screen label is the device's Bond name, and its address is the Bond device ID — the
same ID the Bridge uses internally. You don't type any of this; GEM fills it in.
GEM places ceiling fans in the standard Fans subsystem and shades in the standard Shades subsystem. Fireplaces and lights, however, land in subsystems named Fireplace and Lighting, which GEM creates if they don't already exist — these are separate from the default Fire and Lights subsystems. So if a Bond light doesn't appear under your usual Lights subsystem, check Lighting; a Bond fireplace lives under Fireplace, not Fire. You can move a zone to a different subsystem afterward in Zones if you prefer to consolidate them.
If new accessories are paired in the Bond app later, run the sync_devices command (from
the device's Commands tab, or on a schedule) to discover them and create their zones.
Existing zones are left in place; only missing ones are added.
Keeping state current
GEM re-reads every Bond zone's state on a loop, set by the Status Poll Interval (ms) device attribute (default 5000 ms). Polling runs through the zones one at a time with a short throttle between each, so a Bridge with many accessories takes proportionally longer to cycle through them all — the effective refresh interval grows with the device count. Raising the interval reduces network chatter; lowering it makes the on-screen state track faster.
After GEM sends a command it also re-reads that one device's state immediately, so a control you operate from GEM updates without waiting for the next poll.
Attributes
Device — required
| Attribute | Type | Description |
|---|---|---|
ip | string | The Bond Bridge's LAN IP address. |
Device — optional
| Attribute | Type | Default | Description |
|---|---|---|---|
token | string | (auto) | The Bridge's local API token. Paste it from the Bond app, or leave blank to let GEM fetch it during the post-power-cycle window. Stored encrypted. |
port | int | 80 | HTTP port of the Bridge's local API. |
status_interval | int | 5000 | How often (ms) GEM re-reads each accessory's state. |
last_sync | int | — | Read-only. Timestamp of the last successful sync_devices. |
Zone
GEM populates these on each zone when it discovers the device — you don't set them by hand:
| Attribute | Type | Description |
|---|---|---|
device_id | string | The Bond device ID (mirrors the zone address). Read-only. |
device_type | string | CF (ceiling fan), FP (fireplace), MS (motorized shade), or LT (light). Read-only. |
GEM also reports live state onto each zone as it polls — state (on/off, or open/partial/closed
for shades), level (fan speed, light brightness, or shade position), direction
(forward/reverse for fans), light_state and brightness (a fan's integrated light), and
flame (a fireplace). These names are cataloged, so they autocomplete in the Attribute editor
and can drive attribute triggers — for example, fire a macro when a fan's state becomes on.
Commands
Driver-declared commands appear on the device's Commands tab and can be used in macros, triggers, and on UI buttons. The commands that apply depend on the zone's Bond device type; sending a command to the wrong type returns an "unknown command" error. Every command takes the target zone's address (the Bond device ID), which GEM fills in from the zone you pick.
Ceiling fans
| Command | Action |
|---|---|
on / off | Turn the fan on or off. |
level (arg level) | Set fan speed. 0 turns the fan off; a value of 1–100 sets the speed. The built-in Fan control's Low / Medium / High buttons send 33 / 66 / 100. |
toggle_direction | Reverse the fan direction (summer ⇄ winter). |
light_on / light_off | Turn the fan's integrated light on or off. |
set_brightness (arg brightness) | Set the integrated light's brightness, 0–100. |
Fireplaces
| Command | Action |
|---|---|
on / off | Turn the fireplace on or off. |
level (arg level) | Set flame height, 0–100. Only works on fireplaces whose Bond pairing exposes flame control — the Bridge returns an error otherwise. |
Motorized shades
| Command | Action |
|---|---|
open / close | Fully open or close the shade. |
stop | Stop (hold) a shade in motion. |
level (arg level) | Move the shade to a position, 0 (closed) to 100 (open). |
RF lights
| Command | Action |
|---|---|
on / off | Turn the light on or off. |
level (arg level) | Set brightness, 0–100. 0 turns the light off. |
Hub maintenance
| Command | Action |
|---|---|
sync_devices | Re-read the Bridge's device list and create zones for any newly paired accessories. Takes no arguments and works even before any zones exist. |
Known limitations
- Fireplace damper and fan-speed buttons have no effect. Flame height is adjustable via the
levelcommand (where the Bond pairing exposes it), but the built-in fireplace control's damper and fan-speed buttons do nothing on a Bond fireplace, since the Bridge doesn't expose those for this gear. - State can drift on one-way RF devices. Many Bond-controlled fans, fireplaces, and shades are one-way: the Bridge transmits the remote signal but can't tell whether the accessory acted on it, and it never learns that someone pressed a physical wall remote. GEM reports the last state the Bridge knows, which may not match reality after manual remote use. Polling more often narrows the gap but can't close it for genuinely one-way gear.
- Speed and position are best-effort feedback. A fan's speed and a shade's position are read back from the Bridge as a 0–100 level; on one-way devices that figure reflects GEM's last command rather than a measured position.
- The auto-fetch token window is brief. The Bridge only hands out its token without authentication for a short period after a power cycle. Outside that window, GEM can't fetch a token — paste it from the Bond app instead.
Troubleshooting
| Symptom | Check |
|---|---|
| Device won't connect; log notes it couldn't fetch a token | The auto-fetch window has closed. Power-cycle the Bridge and enable the device within ~10 minutes, or paste the token from the Bond app (Settings → Local API) into Local API Token. |
sync_devices finds zero devices | No accessories are paired in the Bond app yet. Pair your fans / fireplaces / shades / lights in the app first; sync_devices only discovers what the Bridge already knows. |
| A command returns "device not found in cache" | The accessory was added after GEM last synced. Run sync_devices, or reload the device, to refresh GEM's view of the Bridge. |
| A Bond light or fireplace isn't under the subsystem I expected | Bond lights are placed in Lighting and fireplaces in Fireplace — separate from the default Lights and Fire subsystems. Look there, or move the zone in Zones. |
| Zone state lags behind the physical remote | The accessory is likely one-way RF — the Bridge can't see wall-remote presses. Shorten the Status Poll Interval, or accept that physical-remote state drifts. |
| Commands do nothing after a while | Confirm the Bridge's IP hasn't changed (use a DHCP reservation) and that the device is still enabled. |
See also
- Devices — adding and configuring devices.
- Zones — how zones map accessories to controls and subsystems.
- Subsystems — what the Fans, Shades, Lighting, and Fireplace subsystems are.
- Commands — running and scripting device commands.
- Macros and Triggers — automating Bond devices and reacting to their state.