Skip to content

v0.1.0 — initial public release

Pre-release
Pre-release

Choose a tag to compare

@yufeikang yufeikang released this 05 May 12:26

v0.1.0 — Initial public release

Native Home Assistant integration for Aiphone WP-2MED video intercoms (single-family / 戸建, VIXUS / VKZ-R series). Talks directly to the unit's AWS IoT cloud over mTLS — same channel as the official mobile app — and exposes doorbell events, camera, monitor, recording, answer, and electric-strike unlock as native HA entities.

⚠️ This is an independent, unofficial project, not affiliated with Aiphone Co., Ltd. Use of this integration may violate the manufacturer's Terms of Service. Read the full DISCLAIMER before installing.

Status: Alpha. Phase 2 features run in production for one user (the author). Phase 3 (answer / unlock) is implemented but partially unverified against real-world events. Use at your own risk.

What works

  • Pairing in HA UI — multi-step config flow handles LAN UDP discovery + TLS-52712 OTP + HTTPS /registClient + 01005 registration. No external tooling.
  • Doorbell eventsbinary_sensor.<unit>_doorbell flips on MID 23001, off on 24002. sensor.<unit>_doorbell_state and sensor.<unit>_last_caller.
  • Auto-recording — every ring writes /config/aiphone/recordings/<ts>-<caller>.mp4 (video-only).
  • Cameracamera.<unit>_entrance returns the live frame from any in-progress capture, falls back to the most recent finalized mp4.
  • Monitor buttonbutton.<unit>_monitor triggers a 30 s active capture (no ring, no other-client notification).
  • Last-snapshot image / last-recording sensor — image entity for the most recent JPEG, sensor for the path of the most recent mp4.

Implemented but not fully validated

  • button.<unit>_answer — sends MID 24000 RSLT=200. Logic verified, real-ring acceptance pending.
  • lock.<unit>_door — sends MID 26021 SET_UNLOCK_REQ; physical electric-strike effect not verifiable by author (no strike wired). Auto-relocks after 5 s.
  • Audio in recordings — cloud only opens RTP audio after a real-ring 24000; pending answer-button validation.

Not implemented

  • Hangup
  • Two-way audio (TTS / AI assistant talking back) — PC1 keeps an audio sendrecv transceiver as the placeholder.

Requirements

  • Home Assistant 2024.3+ (Python 3.11+)
  • WP-2MED unit on the same LAN as HA during initial pairing only
  • Outbound HTTPS to api.aiphone-app.net (pairing only) and MQTT to *.iot.ap-northeast-1.amazonaws.com:8883 (steady state)
  • Free pairing slot on the unit (戸建 limit: 4 paired devices)

aiortc>=1.14.0 and av>=10.0.0 install on first load. On a Raspberry Pi expect a few minutes the first time.

Installation

HACS (custom repository)

  1. HACS → Integrations → ⋮ → Custom repositories
  2. Repository: https://github.com/yufeikang/hass-aiphone
  3. Type: Integration
  4. Install, then restart Home Assistant.

Manual

cd <ha-config>/custom_components
git clone https://github.com/yufeikang/hass-aiphone.git aiphone-tmp
mv aiphone-tmp/custom_components/aiphone .
rm -rf aiphone-tmp

Restart Home Assistant.

Known issues

  • ~3 s delay between ring and first JPEG (SDP + DTLS handshake).
  • No hangup button — recording stops 8 s after MID 24002.
  • Cloud admits only one subscriber per ring; if the official mobile app subscribes first, HA's recording for that ring may be empty.

Documentation