DoorBird IP Intercom
Integration for DoorBird IP video intercoms and doorbells (the D10x, D11x, D21x families and similar units) over the DoorBird LAN HTTP API. One intercom becomes one GEM device. The driver opens the unit's door relays, holds a relay open or closed, starts and ends SIP calls, and reports the live doorbell-button press and motion events as device attributes you can build automation on. It also reads the unit's system info, call favorites, and schedules, and can reboot the device.
Communication with the intercom is plain HTTP on port 80 to its /bha-api/ endpoints, authenticated with the DoorBird app user you create. The hold-open / hold-closed relay commands are the exception — they go out through DoorBird's cloud relay service over HTTPS and need the unit's installer/admin credentials (see Momentary release vs. hold).
What this integration covers
- Door release — trigger the intercom's door-opener relay for a momentary buzz-in (
pulse). See the caution about this command in the current build. - Hold a relay open or closed — latch a relay with
open/closethrough DoorBird's cloud relay service (needs the admin/installer account and an internet-connected unit). - SIP calls — start a call from the intercom to a configured SIP destination (
call), end it (hangup), and read SIP status (get_sip_status). GEM triggers the call; the audio/video itself runs over SIP, not through GEM. - Live door events — the call (doorbell) button press and, optionally, motion detection arrive in real time and surface as device attributes you can trigger macros, notifications, and logging on.
- Device queries — pull the unit's info, its call favorites, and its schedules, and reboot the unit.
What this integration does NOT cover
- The camera image or live video. This driver controls the door hardware and reports events; it does not pull a snapshot or video stream. DoorBird's camera is a standard RTSP / ONVIF source — to show its live view in GEM, add it separately through GEM's camera support (see ONVIF). There is no snapshot command on this driver despite what older driver notes imply.
- Call audio and video (SIP). The intercom's voice/video path runs over SIP through DoorBird's own app and SIP server. GEM starts, ends, and monitors the call but is not the call endpoint.
- Configuring the intercom itself. Relay assignments (which relay is the "Door Opener"), the door-open hold time, SIP accounts and peers, users, and favorites/schedules are all set up in the DoorBird app. GEM drives the unit; it is not a configuration editor for it.
Prerequisites
- A user created in the DoorBird app with the LAN HTTP API enabled — this is the API Username / API Password GEM uses. Give it the permissions for what you need: relay/door control for buzz-in, and (because the favorites and schedules endpoints read the device directory) an account with admin rights if you intend to use
get_favorites/get_schedules. - For the hold-open / hold-closed commands, the unit's admin (installer) credentials from the DoorBird app's installer/admin pack, and a DoorBird that is registered and internet-connected — these commands go through DoorBird's cloud relay service.
- For SIP calls, a SIP account and peer(s) configured on the DoorBird in the app.
- HTTP reachability from the GEM controller to the intercom on port 80. The live event feed is a persistent HTTP connection to the device, so the GEM host only needs to reach the DoorBird's IP — it does not have to share the same network segment.
Setup
- In GEM, go to System → Devices → Add Device (Open Devices) and pick Doorbird as the driver.
- Enter the intercom's Doorbird IP Address, API Username, and API Password (the password is stored encrypted).
- (Optional) For the hold-open / hold-closed commands, fill in Admin Username and Admin Password — the installer/admin account from the DoorBird app. The driver rejects
open/closewith "holding relay requires admin credentials" if these are blank. - (Optional) Turn on Motion Alerts if you want motion events in addition to doorbell-button presses. Left off, only the call button is monitored.
- Save. The driver connects and opens a persistent connection to the intercom's event monitor, so doorbell and (if enabled) motion events start flowing immediately.
- Create one zone per relay/door you want to control, bound to this device, and set its Address to the DoorBird relay id (see Mapping relays to zones). The driver does not create these zones for you.
This driver hints intercom / access, but a stock GEM install seeds neither name — it seeds Doors, Gates, Cameras, Security, and the like. Because the New Zone editor only pre-selects a subsystem on an exact name match, it will not pre-select one for a DoorBird relay. Pick the subsystem yourself: Doors for a door-strike relay, Gates for a gate relay, Cameras if you are grouping the intercom with your camera points, or Security. The choice affects how the zone is grouped and presented, not whether the relay fires.
Mapping relays to zones
Create one zone per controllable relay and bind it to the DoorBird device. The zone's Address selects which relay the commands act on:
| Address | Targets |
|---|---|
1 | Relay 1 — typically the primary door opener |
2, 3, … | Additional relays, as configured on the unit |
The Address field shows the hint "Doorbird relay id (e.g., "1" for primary door opener)." Set it to the relay number you assigned in the DoorBird app. If the relay you want to hold open/closed differs from the one you pulse, set the optional hold_address zone attribute to the hold relay's id — the open / close commands use it when present, while pulse always uses the zone's Address.
Commands
| Command | Args | What it does |
|---|---|---|
pulse | address, delay | Momentary door release — triggers the DoorBird door-opener relay over the LAN. The relay's hold time is set on the device in the DoorBird app; the delay arg is accepted but not used by this driver. See the caution below — this command is defective in the current build. |
open | address | Holds the relay open via DoorBird's cloud relay service. Requires Admin Username / Password and an internet-connected unit. |
close | address | Holds the relay closed via DoorBird's cloud relay service. Requires Admin Username / Password and an internet-connected unit. |
call | destination | Starts a SIP call from the intercom to destination (a SIP peer/URI configured on the device). |
hangup / hang_up | — | Ends the current SIP call. |
get_sip_status | — | Returns the intercom's SIP status. |
get_info | — | Returns the unit's system info (model, firmware, etc.). |
get_favorites | — | Lists the unit's call favorites. Sent with the API account — needs an account with admin/directory rights or the unit returns 401. |
get_schedules | — | Lists the unit's schedules. Same admin-rights requirement as get_favorites. |
reboot | — | Reboots the intercom. |
Momentary release vs. hold
DoorBird has two distinct relay actions, and GEM maps them to different commands:
pulseis the momentary buzz-in — it fires the door-opener relay over the LAN for the hold time you configured on the relay in the DoorBird app. This is the everyday "open the door for a visitor" action.openandcloselatch a relay open or closed through DoorBird's cloud relay service. They need the Admin Username / Password (the installer/admin pack account) and a unit that is registered and reachable on the internet; without the admin credentials the command returns an error and nothing happens.
pulse is defective in the current buildIn the current driver build the momentary pulse (door-release) request is sent to the wrong address on the device — the door-opener URL is malformed, so the DoorBird returns an error and the relay does not fire. This has been flagged for a fix. Until it is corrected, GEM cannot perform a clean LAN buzz-in: the open / close hold commands still work if you have the admin credentials and an internet-connected unit, but they latch the relay rather than pulsing it. Verify door-release behavior on site before relying on it.
Live door events
The driver keeps a persistent connection open to the intercom's event monitor and reflects what happens at the door onto device attributes. These are what you build automation triggers, notifications, and access logging on (see Triggers):
| Attribute | Type | Set when |
|---|---|---|
call_press | int | The call (doorbell) button is pressed — set to the epoch-millisecond timestamp of the press. Because the value changes on every press, this is the best signal for an attribute trigger. |
call_key | bool | true the moment the call button is pressed, back to false when released — a short pulse. |
motion | bool | Motion is detected, when Motion Alerts is enabled on the device. Stays idle if Motion Alerts is off. |
Build a doorbell automation by triggering on call_press changing — for example to push a notification, flash a light, or pop the intercom's camera. motion is cataloged for this driver, so it autocompletes in the Attribute editor; call_press / call_key are written live when a press occurs — type the name in the trigger condition.
If the event connection drops, the driver reconnects automatically.
SIP calls
The DoorBird is a SIP endpoint. call tells it to dial the destination you pass — a SIP peer or URI you have configured on the unit in the DoorBird app. hangup (or hang_up) ends the call, and get_sip_status reports the current SIP state. GEM only initiates and tears down the call; the actual two-way audio/video runs over SIP through DoorBird's app and SIP server, not through GEM. For the call path to work at all, SIP must already be set up on the intercom.
Device info, favorites, and schedules
get_info returns the unit's identity (model, firmware, and similar fields the device reports). get_favorites and get_schedules read the intercom's call favorites and schedule entries.
DoorBird requires an admin-level account to read favorites and schedules — and the driver sends them with the API Username / Password, not the separate Admin fields. So if you need favorites/schedules, put an account with admin/directory rights in the API Username / Password fields; a plain user account returns 401 for those two calls. The separate Admin Username / Password fields are used only by the open / close hold-relay commands.
Attribute reference
Device attributes
| Name | Type | Required | Description |
|---|---|---|---|
ip | string | yes | DoorBird IP address. |
username | string | yes | DoorBird app API account username. |
password | string | yes | API account password. Stored encrypted. |
motion_alerts | bool | no | Subscribe to motion events in addition to the doorbell button (default off). |
admin_user | string | no | Installer/admin account, used only by the open / close hold-relay commands. |
admin_password | string | no | Admin account password. Stored encrypted. |
The unit communicates on plain HTTP port 80 for everything except the cloud hold-relay calls, so the generic Port / Protocol fields do not change how this driver reaches the LAN API.
The driver also writes live state attributes as it runs: call_press, call_key, and (with Motion Alerts on) motion — see Live door events.
Zone attributes
| Name | Type | Description |
|---|---|---|
address | string | DoorBird relay id — e.g. "1" for the primary door opener (required). |
hold_address | string | Optional. Relay id used by the open / close hold commands when it differs from address. |
Troubleshooting
- The door opener returns success but nothing happens — in the DoorBird app, confirm the relay is configured as a Door Opener (not, for example, a "Light"). Also confirm you are commanding the relay number that is actually wired to the strike (the zone Address).
pulse/ door-release does not open the door — the momentary release path is defective in the current build (see the caution); it has been flagged for a fix. Use theopen/closehold commands as an interim measure if you have the admin credentials, and re-test once the build is updated.open/closereturns "holding relay requires admin credentials" — fill in Admin Username / Password with the DoorBird installer/admin account. These commands also need the unit to be internet-connected, since they go through DoorBird's cloud relay service.get_favorites/get_schedulesreturns 401 — those endpoints need an admin-level account, and the driver sends the API username/password for them. Put an admin-capable account in the API Username / Password fields (the separate Admin fields are not used for these calls).- No doorbell or motion events arrive — confirm the API account has the LAN HTTP API enabled in the DoorBird app and that GEM can reach the unit on port 80. For motion specifically, also turn on Motion Alerts; with it off, only the call button is monitored.
- SIP
calldoes nothing — SIP must be configured on the intercom (a SIP account and the peer you pass asdestination) in the DoorBird app. GEM only triggers the call.
Related documentation
- Devices — adding and configuring the intercom device row.
- Zones — creating one zone per relay and binding it to the device.
- Subsystems — the Doors / Gates / Cameras / Security subsystem the zones belong to.
- Commands — running these commands from the admin UI, macros, or scenes.
- Triggers — firing automations on the doorbell-button (
call_press) and motion events. - ONVIF — adding the DoorBird's camera as a video source separately from this driver.