Summary

Doorbird D2114V is a video door station with IP-based control via HTTP/HTTPS REST API, UDP event broadcasts, RTSP video streaming, and SIP voice intercom. Authentication uses Basic/Digest HTTP auth or plaintext http-user/http-password parameters.

Transport

protocols:
  - http
  - https
  - udp
addressing:
  base_url: http://<device-ip>/
  # UNRESOLVED: port number not stated for SIP (5060 inferred from typical SIP, not from source)
auth:
  type: basic_digest  # Basic or Digest auth per RFC 2617; also supports plaintext http-user/http-password params

Traits

# Inferred from command presence:
# - powerable: light-on command present
# - queryable: info.cgi, sip.cgi?action=status, monitor.cgi present
# - routable: not applicable (door station, not a matrix switcher)
# - levelable: mic_volume, spk_volume in SIP settings

Actions

- id: get_session
  label: Get Session ID
  kind: action
  params:
    - name: invalidate
      type: string
      description: Optional session ID to invalidate
  method: GET
  path: /bha-api/getsession.cgi

- id: open_door
  label: Open Door
  kind: action
  params:
    - name: r
      type: string
      description: "Relay to trigger, e.g. '1' or 'gggaaa@1' (DoorController). Default: relay 1"
  method: GET
  path: /bha-api/open-door.cgi

- id: light_on
  label: Light On
  kind: action
  params: []
  method: GET
  path: /bha-api/light-on.cgi

- id: get_live_video
  label: Live Video Request
  kind: action
  params: []
  method: GET
  path: /bha-api/video.cgi
  response: multipart/x-mixed-replace JPEG stream

- id: get_live_image
  label: Live Image Request
  kind: action
  params: []
  method: GET
  path: /bha-api/image.cgi
  response: image/jpeg

- id: get_history_image
  label: History Image Request
  kind: action
  params:
    - name: index
      type: integer
      description: Index of history image (1 = latest, range 1..50)
    - name: event
      type: string
      description: "Event type: 'doorbell' or 'motionsensor'"
  method: GET
  path: /bha-api/history.cgi

- id: monitor_events
  label: Monitor Events
  kind: action
  params:
    - name: ring
      type: string
      description: "Event types to monitor: 'doorbell' or 'motionsensor', comma-separated"
  method: GET
  path: /bha-api/monitor.cgi
  response: multipart/x-mixed-replace text/plain stream

- id: get_device_info
  label: Device Info Request
  kind: action
  params: []
  method: GET
  path: /bha-api/info.cgi
  response: JSON (firmware, build number, relays, device type)

- id: list_favorites
  label: List Favorites
  kind: action
  params: []
  method: GET
  path: /bha-api/favorites.cgi

- id: save_favorite
  label: Add or Change Favorite
  kind: action
  params:
    - name: action
      type: string
      description: "Fixed value: 'save'"
    - name: type
      type: string
      description: "'sip' or 'http'"
    - name: title
      type: string
      description: Name/title of favorite
    - name: value
      type: string
      description: URL or SIP address
    - name: id
      type: integer
      description: Optional ID to change existing favorite
  method: POST
  path: /bha-api/favorites.cgi

- id: delete_favorite
  label: Delete Favorite
  kind: action
  params:
    - name: action
      type: string
      description: "Fixed value: 'remove'"
    - name: type
      type: string
      description: "'sip' or 'http'"
    - name: id
      type: integer
      description: ID of favorite to delete
  method: GET
  path: /bha-api/favorites.cgi

- id: list_schedules
  label: List Schedules
  kind: action
  params: []
  method: GET
  path: /bha-api/schedule.cgi

- id: save_schedule
  label: Add or Update Schedule
  kind: action
  params:
    - name: input
      type: string
      description: "'doorbell', 'motion', 'rfid', or 'fingerprint'"
    - name: param
      type: string
      description: Doorbell number, transponder ID, or fingerprint ID
    - name: output
      type: json
      description: JSON array of output configurations
  method: POST
  path: /bha-api/schedule.cgi

- id: delete_schedule
  label: Delete Schedule
  kind: action
  params:
    - name: action
      type: string
      description: "Fixed value: 'remove'"
    - name: input
      type: string
      description: "'doorbell', 'motion', or 'rfid'"
    - name: param
      type: string
      description: Doorbell number or transponder ID
  method: GET
  path: /bha-api/schedule.cgi

- id: restart
  label: Restart Device
  kind: action
  params: []
  method: GET
  path: /bha-api/restart.cgi

- id: sip_register
  label: SIP Registration
  kind: action
  params:
    - name: user
      type: string
      description: SIP proxy authentication user
    - name: password
      type: string
      description: SIP proxy authentication password
    - name: url
      type: string
      description: IP/hostname of SIP proxy
  method: GET
  path: /bha-api/sip.cgi

- id: sip_make_call
  label: SIP Make Call
  kind: action
  params:
    - name: url
      type: string
      description: SIP URL to call (e.g. sip:108@192.168.123.22)
  method: GET
  path: /bha-api/sip.cgi

- id: sip_hangup
  label: SIP Hangup
  kind: action
  params: []
  method: GET
  path: /bha-api/sip.cgi

- id: sip_settings
  label: SIP Settings
  kind: action
  params:
    - name: enable
      type: integer
      description: "0..1, enable SIP registration after reboot"
    - name: mic_volume
      type: integer
      description: "1..100, microphone volume (default: 33)"
    - name: spk_volume
      type: integer
      description: "1..100, speaker volume (default: 70)"
    - name: dtmf
      type: integer
      description: "0..1, enable DTMF support"
    - name: relay1_passcode
      type: integer
      description: "0..99999999, pincode for door relay"
    - name: incoming_call_enable
      type: integer
      description: "0..1, enable incoming calls"
    - name: incoming_call_user
      type: string
      description: Allowed SIP user (e.g. sip:10.0.0.1:5060)
    - name: anc
      type: integer
      description: "0..1, acoustic noise cancellation (default: 1)"
    - name: ring_time_limit
      type: integer
      description: "10..300, max ringing time in seconds (default: 300)"
    - name: call_time_limit
      type: integer
      description: "30..300, max call duration in seconds (default: 300)"
  method: GET
  path: /bha-api/sip.cgi

- id: sip_status
  label: SIP Status
  kind: action
  params: []
  method: GET
  path: /bha-api/sip.cgi

- id: sip_reset
  label: SIP Settings Reset
  kind: action
  params: []
  method: GET
  path: /bha-api/sip.cgi

- id: receive_audio
  label: Live Audio Receive
  kind: action
  params: []
  method: GET
  path: /bha-api/audio-receive.cgi
  response: G.711 μ-law audio stream

- id: transmit_audio
  label: Live Audio Transmit
  kind: action
  params: []
  method: POST
  path: /bha-api/audio-transmit.cgi
  note: "Codec: G.711 μ-law, 8000 Hz sampling. AEC/ANR must be done client-side."

- id: rtsp_live_video
  label: RTSP Live Video
  kind: action
  params:
    - name: resolution
      type: string
      description: "Optional resolution: '720p' or '1080p' (D11x only)"
  path: rtsp://<device-ip>:<port>/mpeg/media.amp
  note: "Port 554 default, RTSP-over-HTTP on 8557. H.264/MPEG4. Auth: standard RTSP auth (no parameter auth)"

Feedbacks

- id: doorbell_event
  type: string
  description: Doorbell trigger notification via UDP broadcast

- id: motion_event
  type: string
  description: Motion sensor trigger notification via UDP broadcast

- id: rfid_event
  type: string
  description: RFID event notification via UDP broadcast (documented as "coming soon" in source)

- id: sip_registration_status
  type: enum
  values: [registered, not_registered]
  description: SIP registration state from sip.cgi?action=status

- id: door_open_state
  type: boolean
  description: Door relay state (triggered via open-door.cgi)

- id: light_state
  type: boolean
  description: Light relay state (triggered via light-on.cgi)

Variables

- id: mic_volume
  type: integer
  range: [1, 100]
  default: 33
  description: Microphone volume for SIP calls

- id: spk_volume
  type: integer
  range: [1, 100]
  default: 70
  description: Speaker volume for SIP calls

- id: sip_enable
  type: boolean
  description: Enable/disable SIP registration after reboot

- id: dtmf_enabled
  type: boolean
  description: Enable/disable DTMF support for SIP calls

- id: ring_time_limit
  type: integer
  range: [10, 300]
  default: 300
  description: Maximum ringing time in seconds

- id: call_time_limit
  type: integer
  range: [30, 300]
  default: 300
  description: Maximum call duration in seconds

Events

# UDP broadcast events (ports 6524 and 35344)
# ChaCha20-Poly1305 encrypted (v2, as of November 2023)
# Decrypted payload contains:
#   - INTERCOM_ID: first 6 chars of username
#   - EVENT: doorbell or motion, padded to 8 chars
#   - TIMESTAMP: Unix timestamp

- id: doorbell_trigger
  type: string
  description: Doorbell pressed, triggers UDP broadcast

- id: motion_trigger
  type: string
  description: Motion sensor detected, triggers UDP broadcast

- id: keep_alive
  type: notice
  description: UDP keep-alive broadcast every 7 seconds on ports 6524 and 35344 (can be ignored)

Macros

# UNRESOLVED: no explicit multi-step macros described in source
# Note: schedules can combine input events (doorbell, motion) with multiple outputs (HTTP notification, SIP call, relay trigger)

Safety

confirmation_required_for: []
interlocks:
  - "Audio AEC/ANR must be implemented client-side - device does not provide echo cancellation for third-party integration"
  - "Video stream interrupted when official DoorBird App requests stream"
  - "Audio connection interrupted when official DoorBird App requests talk"
  - "SIP call terminates after 180 seconds (security auto-hangup)"
  - "Device allows only 1 concurrent API connection per second"
  - "IP blocked for 1 minute after extensive wrong credentials (HTTP 423)"
# UNRESOLVED: power sequencing, fault recovery - not stated in source

Notes

  • Device supports both HTTP (port 80) and HTTPS (port 443) for API access. Self-signed certificate pre-installed.
  • Video/audio streaming via HTTPS requires session ID to avoid plaintext credential transmission.
  • Session ID valid for 10 minutes; obtained via getsession.cgi.
  • RTSP video: port 554 (default), RTSP-over-HTTP on 8557. Requires standard RTSP authentication.
  • SIP port 5060 (default, configurable via proxy address with colon port notation).
  • Favorites and schedules require firmware 000110 or higher.
  • UDP event broadcasts on ports 6524 and 35344 use ChaCha20-Poly1305 encryption (v2).
  • Rate limit: 1 concurrent API connection per second; 1-minute IP block after excessive auth failures (HTTP 423).
  • Only one simultaneous audio/video call; SIP call limit 180 seconds.

Provenance

source_domains:
  - doorbird.com
source_urls:
  - "https://www.doorbird.com/downloads/api_lan.pdf?rev=0.36"
retrieved_at: 2026-04-30T04:32:26.315Z
last_checked_at: 2026-06-03T06:41:32.789Z

Verification Summary

verdict: verified
checked_at: 2026-06-03T06:41:32.789Z
matched_actions: 24
action_count: 24
confidence: medium
summary: "Complete cross-check: all actions verified (7 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "physical serial/RS-232 not mentioned in source"
- "port number not stated for SIP (5060 inferred from typical SIP, not from source)"
- "no explicit multi-step macros described in source"
- "power sequencing, fault recovery - not stated in source"
- "physical RS-232 serial configuration not present in source"
- "firmware version compatibility ranges not stated"
- "voltage/power specifications not in source"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0