Skip to the content
PCBKitNew board
2 layers59.5 × 56 mmDoor opener mini, the printed circuit board in 3D

Door opener mini

afcreamer/Open-ED5

CAME Entrotec ED5 Zigbee Door Opener

Size
59.5 × 56 mm
Copper layers
2
Thickness
1.6 mm
Parts
23
Nets
16
Pads
64
Tracks, vias
80, 0
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
3 Aug 2026
Updated
3 Aug 2026

Overview

Door opener mini is an open-source printed circuit board by afcreamer, from the afcreamer/Open-ED5 repository on GitHub, published under the CC0-1.0 licence. It is a 2-layer board of 59.5 × 56 mm with 23 parts on 16 nets, routed with 80 tracks and 0 vias.

Its parts include 7 resistors, 4 connectors, 3 ICs and 1 transistor. It belongs with the home automation and IoT and radio and wireless boards and the ESP32 and RISC-V boards of this library.

README

README.md

Door Opener Mini: Zigbee smart door entry for the CAME Entrotec ED5 handset

Home Assistant Zigbee2MQTT Zigbee ESP32-H2 KiCad License: CC0 1.0

Open your building's front door from your phone. Zigbee, local, no cloud, no subscription.

A hand-solderable PCB shaped to fit inside the CAME Entrotec ED5 handset itself, in the empty space above its PCB. It wires to the handset's existing terminals and exposes the entryphone to Home Assistant through Zigbee2MQTT. Someone buzzes your flat, your phone gets an actionable notification, you tap Open door, and the communal door opens.

Designed for and tested on an ED5 handset backed by an APEX controller, so the board outline, connector placement and height are all dimensioned around that handset's internal cavity. Other Entrotec systems, meaning Elite, legacy DC, and the ED3+ / ED4+ handsets the ED5 replaces, share the same terminals and would likely work electrically, but the board will not necessarily fit their cases; see Compatibility.

Schematic · Wiring diagram · Beginner's build guide · BOM · Firmware

There is no separate box on the wall and nothing on show. The handset looks and works exactly as before, nothing is cut or drilled, and the board runs from the entryphone's own supply, so no extra PSU, no mains wiring, and no second thing to explain to anyone else in the building.

Why the off-the-shelf kit struggles here: CAME Entrotec systems only release the door during an active call with the handset off-hook. As far as I can tell that interlock defeats every off-the-shelf smart intercom adapter I could find, such as Nuki Opener and Ring Intercom, because I don't believe any of them can emulate a lifted handset. This board does, using resistive loads on the speaker and microphone pairs.

The assembled Door Opener Mini board

An assembled board. Everything is through-hole; the ESP32-H2 SuperMini and the MPM3610 buck module solder onto 2.54 mm pin headers.

CAD render of the board


Why this exists

What it is for

Two things:

  1. Knowing someone is buzzing the flat. The entryphone becomes a sensor in Home Assistant, so a buzz can raise a notification, or anything else you want to trigger.
  2. Getting in when you're locked out. If you've left without your fob but still have your phone, you can buzz your own flat from the street panel and let yourself in.

What it is not for

It is not meant for opening the door to visitors remotely or automatically. The board carries no audio. It emulates the electrical load of a lifted handset, not a conversation, so there is no way to hear who is at the panel and no way to verify them. Opening the door to whoever happens to be standing there is not something this should be used for.

The sensible middle ground is a fallback for people you are expecting: a relative arrives, rings your mobile to say they are outside, and you let them in. You have verified them by another route. Because it runs through Home Assistant, that works from anywhere.

Why it needed building

CAME Entrotec systems have a deliberate interlock: the door release only works during an active call, with the handset off-hook. Pulling the DR line to 0 V on its own does nothing.

That design decision is why the off-the-shelf products struggle. They all connect the same way, with a doorbell-detect input and a door-release contact, and none of the ones I could find have anywhere to plug the audio pair in.

Real reports from people who hit this wall:

  • Nuki Opener + Entrotec EV+ (Apex/Elite): two years of attempts, 2021–2023. The Opener lacks terminals for the speaker and microphone lines. Door release never worked. The thread concluded "this system should be marked as incompatible."
  • Nuki Opener + Entrotec ED3+: "someone inside the flat would have to take the ED3+ receiver off-hook in order for the opener to send the signal to open the gate." Abandoned; the user switched to a commercial installed system.
  • Ring Intercom + CAME Entrotec ED3/ED4/Entroview: Ring doesn't officially support Entrotec. The best workaround anyone found was leaving the handset permanently off-hook and using a robot finger to press the cradle.

That Nuki thread contains an open question, unanswered since 2021:

"Whether connecting S1/S2 (microphone/speaker) cables would simulate an active call state and enable functionality."

It does. That's what this board is.


How it works

Three independent channels, all on the handset's existing terminal block. Nothing is intercepted, because the board sits in parallel and the handset carries on working normally.

1. Off-hook emulation, the bit that makes this possible

When the handset is on its cradle, the hook switch disconnects the speaker and microphone, so S1 and S2 present no load. The system reads that as "on-hook".

The board puts its own loads across those lines through solid-state relays:

text
S1 ──[ RS1 30R ]── AQY212 (U4) ── 0V     emulates the speaker
S2 ──[ RS2 150R ]── AQY212 (U6) ── 0V    emulates the microphone

Close both and the system believes someone lifted the receiver. No audio hardware is involved, because the entryphone only checks that something with roughly the right impedance is hanging on those lines. Both PhotoMOS are driven from one GPIO so they always switch together.

This is transient: the board is on-hook at idle, goes off-hook for about five seconds to open the door, then releases.

2. Door release

DR is pulled to 0V through a third AQY212, for a firmware-timed 1.5 s pulse. The pulse self-terminates in firmware, so the strike releases even if the network drops mid-command.

3. Call detection

The call tone on BZ is a 0.88 V pulsed signal, far below an optocoupler LED's ~1.2 V turn-on, so the usual opto-isolated approach cannot see it. Instead a single 2N3904 senses it directly:

text
BZ ──[ R11 22k ]── base
                   collector ── IO10 (10k pull-up to 3V3)
                   emitter   ── 0V

Measured system behaviour

Everything below was measured on a live installation. If you're adapting this, these are the numbers to check against your own system first.

PropertyMeasured
Call tone on BZ0.88 V DC, pulsed
Pulse cadenceON 1.05 s / OFF 0.55 s, ~1.6 s period
Time to answer before the system resets~30 s from the start of the tone †
Talk time once answered~2 minutes †
Door release duration~10 s †
Off-hook loads that workRS1 30 Ω (speaker), RS2 150 Ω (mic)

† These three are installer-adjustable at the Apex controller, not fixed properties of the product. They match CAME's published ED5 figures so are probably the defaults, but see Compatibility before relying on them.

The pulsed call tone is documented by CAME as a "distinctive pulsing tone for up to 25 seconds", which is worth knowing because a naive edge-triggered detector will report one ring as a dozen separate events.


Terminal map

The board's 6-way field header maps directly onto the handset terminal block. Terminal numbering and cable colours follow CAME's own wiring convention (CW1308):

PinTerminalFunctionCW1308 pair
1DRDoor release (pull to 0 V)white/blue
2VT12–15 V DC supply (13.8 V nominal)blue/white
30VCommonwhite/orange
4BZCall tone inputorange/white
5S2Microphonewhite/green
6S1Speakergreen/white

Handsets also have DS (door status) and EX (extension sounder output). This board uses neither, so a flat wired with only the six core connections, which is the common case, needs no new cable.


Hardware

  • 59.5 × 56 mm through-hole PCB, hand-solderable, ~£30 in parts. The outline is drawn around the free space inside an ED5 handset, clearing its screw posts, ribs, hook-switch area and cable exit. It is not a general-purpose board in a general-purpose box
  • ESP32-H2 SuperMini (Zigbee) and an Adafruit MPM3610 3.3 V buck (#4683), both on 2.54 mm pin headers
  • 3 × AQY212 PhotoMOS in DIP-4 sockets for door release and the two off-hook loads
  • 1 × 2N3904 for call detect
  • Powered from the entryphone's own VT supply, so no separate PSU

Full BOM in BOM.csv. The schematic and the wiring diagram are both in BUILD.md, along with the circuit detail, assembly order and fabrication notes. KiCad source and a netlist-consistency check are in the repo.

Never built anything like this? GETTING-STARTED.md walks through ordering the PCB, the module and the parts, then flashing and pairing it.

GPIOFunction
IO11Door release
IO12Handset off-hook (both PhotoMOS)
IO10Call detect (active low)

Firmware and integration

Zigbee end device, exposed to Zigbee2MQTT through the included external converter as open_door, handset_hook, ringing and five diagnostic sensors.

Each endpoint declares its real Zigbee device type, so the board behaves sensibly on hubs that don't have the converter: the release is a Door Lock, off-hook emulation is an On/Off Output, buzzer detect is a Binary Input, diagnostics are Analog Inputs. Presenting it as a lock matters, because hubs treat locks carefully, and a front door should never end up grouped with the lighting.

For the same reason the door endpoint carries no Groups or Scenes cluster, though the standard ZHA door lock includes both. Groups would let a hub add the front door to "Downstairs" and unlock it as a side effect of a group command, and Scenes would let it be recorded into "Movie night" and replayed. Neither is implemented, so advertising them would claim a capability that does not exist.

It's ESP-IDF Zigbee, not ESPHome. If you were hoping to paste a YAML file, this isn't that. The upside is no WiFi credentials and no cloud.

It is not a native Zigbee2MQTT device. z2m has never heard of this model, so it can't put friendly names on the endpoints by itself. You copy door-entry.js into Zigbee2MQTT's data/external_converters/ and restart it. One file, one restart, and that is the whole integration step. Details in the firmware README.

Firmware updates over the air. Zigbee OTA, so the handset only has to come apart once. The device asks the coordinator for a newer image on join and every 6 hours, so a scheduled update lands on its own. A failed transfer only touches the inactive flash slot, and an image that boots but cannot rejoin is rolled back automatically.

The firmware also keeps a persistent diagnostics record in NVS covering boot count, reset reasons, brownouts, join history and buzz cadence, because "it stopped working" is not a useful bug report. Read it over USB, or by the button, or watch the five that matter (uptime, brownouts, boots, join failures, TX power) as sensors in Home Assistant.

Example Home Assistant automations are included: buzz → actionable notification → one button press, plus an off-hook failsafe.


The open sequence

Order matters:

  1. Idle on-hook. If the board is off-hook when a call arrives, the system reports busy and the visitor can't reach you. This is why permanently-off-hook workarounds are a bad idea.
  2. Buzz detected → ringing → notification.
  3. Tap Open door → the firmware runs off-hook → 2 s → release pulse → 3 s → on-hook.

Step 3 has to start inside the ~30 second answer window, or the system has already reset.

The whole sequence runs on the device, from a single Zigbee command. That is deliberate: driving it as separate steps from Home Assistant means a restart or a dropped connection part-way through can leave the handset off-hook, with the entryphone reporting busy to the whole flat, and a failsafe living in Home Assistant cannot help if Home Assistant is what failed. The board also arms its own 30 second off-hook guard on a hardware timer, covering every route that can close the contact.


Security

This does not bypass the entryphone's security model.

The door release still requires a real call from the door panel. A remote attacker who compromised your Home Assistant still could not open the door, because someone has to be physically at the panel pressing your buzzer. That interlock is enforced by the building's system, in hardware, independently of anything here.

Worth thinking about before you build: this puts a credential for a shared building door on your phone. Check whether your phone fires notification actions from the lock screen, and consider who else can reach your Home Assistant.

Secured by Design

UK communal door entry is commonly specified against Secured by Design (SBD), the official police crime-prevention initiative. Its Homes guide defines a visitor door entry system as one that lets a visitor call a specific dwelling and hold a two-way conversation, and then

"...enable the occupant of the dwelling to remotely operate the electric locking device from their room terminal, thereby unlocking the communal entrance door(s) associated with the action and allowing the visitor access."

SBD Homes guide, clause 29.3

That phrase, associated with the action, is the point: the release is meant to be bound to a specific call that someone deliberately answered, not available on its own. The off-hook interlock described above is the mechanism that enforces it.

As far as I can see, this board preserves that property rather than weakening it. A real call to your flat is still required, the release is still tied to that individual call, and it still takes a deliberate per-event action to open the door. The board emulates the occupant answering; it does not create a way to release the door outside a call, and it adds no standing or time-based release of any kind. Contrast this with the permanently-off-hook workarounds, which hold the line open continuously, which both blocks incoming calls and decouples the release from any particular caller.

The honest caveat: clause 29.3 says from their room terminal, and acting from a phone that may not be in the dwelling looks like a departure from the letter of that. If your building is SBD-accredited or managed by a freeholder or managing agent, modifications to communal entry equipment may be something they want a say in. This section is my reading of a public standard, not a compliance claim or an accreditation.


Compatibility

There are two separate questions here, and they have different answers: does the electronics work with your system, and does the board physically fit your handset.

Tested

CAME Entrotec ED5 handset on an APEX controller. That is the only combination this has run on, every measurement on this page came from it, and the board outline is drawn around that handset's internal cavity.

Electrically likely, untested

The ED5 is documented by CAME as compatible with APEX, Elite and legacy DC systems, and it is their direct replacement for the ED3+, ED4+ and ED4+/CONC. The Apex and Elite manuals list identical handset terminals, DR, VT, 0V, BZ, S2, S1, DS, in the same order, so the wiring this board depends on looks like a family convention rather than an Apex quirk.

System / handsetElectronicsPhysical fit
ED5 on Elite or legacy DCShould work, same handset and same terminalsFits, same case
ED3+ / ED4+ / ED4+ CONC handsetsLikely, since the ED5 replaces them, so the interface is meant to matchUnknown, different cases, so expect to redraw the outline
Entroview / EV-series video handsetsUnknown, different product line, 12-way terminals rather than 10, and video changes the call signallingUnlikely
Anything not CAME EntrotecTreat as a fresh portTreat as a fresh board

None of the above has been tried. They are inferences from CAME's own documentation, not results.

If it doesn't fit your handset

The circuit is the interesting part; the outline is not. Everything electrical, meaning the off-hook loads, the sub-volt call detect and the firmware, is independent of the board shape, so adapting it to a different handset is mostly a KiCad job: measure the free space, screw posts, ribs and cable exit inside your case, move the outline and connectors, re-route. The KiCad source is here for exactly that. A version that lives in a small box beside the handset would work equally well electrically, if you don't mind it being visible.

The wider case

More generally this targets 4+N analogue intercoms, which use separate wires for speaker, microphone, call and lock plus a common, rather than 2-wire bus systems.

The timings here are settings, not constants

The figures in Measured system behaviour above are what this installation is configured to do. On Apex, four of them are adjustable by the installer at the controller:

SettingWhat it controlsRange
Call Periodhow long the handset stays live once called, the answer window1–60 s, DIP switches
Call Tone Periodhow long it actually rings1–60 s, DIP switches
Speech Periodtalk time once off-hookadjustable
Lock Release Periodhow long the door stays releasedadjustable preset

The measured ~30 s answer window, ~2 minute talk time and ~10 s release all match the figures CAME quotes in the ED5 user instructions, which describe them as normal product behaviour rather than as one site's configuration. On that basis these are probably the factory defaults, but that is an inference from the documentation reading that way, not something confirmed against a controller, so check yours rather than assume.

It matters mainly at the short end: the answer window has to accommodate the notification reaching your phone, you noticing it, and the unlock sequence's own 2 second off-hook delay. Wound down to a few seconds, that stops fitting.

Before building, measure your own system:

  • Voltage and waveform on BZ during a ring. AC, or a few volts DC, means the call-detect front end needs rethinking.
  • Whether door release works with the handset simply lifted and no active call. If it does, your system is much simpler than this one and you don't need the off-hook channel at all.
  • Speaker and microphone impedances, so you can size RS1 / RS2.

Related projects

Genuinely useful prior work, all of which handles an easier case:

ProjectSystemApproach
HarvsG's gistGeneric audio entryphonePico W + ESPHome, optocouplers. Call line is a full 12 V and door release is unconditional.
roscoe81/Doorbell-MonitorFermax 4+NRaspberry Pi + USB sound card. Answers with real audio and SIP calls, and the most complete 4+N project out there.
PricelessToolkit/ESPBell-MAX4+NESP8266, battery, MQTT. Opto call input rated 2–30 V; SSRs for lock lines.
AzonInc/DoormanTCS / Koch / Niko / ScantronESP32-S3 bus gateway for 2-wire bus protocol decoding.
Mat931/esp32-doorbell-bus-interfaceABB / Busch-Welcome2-wire bus.
Zak KembleElvox art 870Opto-isolated SSR across the door-open switch.

What's different here is narrow and specific: deliberate, audio-free, resistive off-hook emulation from the terminal block, sized to the handset's speaker and microphone impedances, combined with call detection that works on a sub-volt pulsed signal.


Status

Running in a real installation.

Everything is in this repo: the KiCad schematic and PCB, the BOM, the beginner's guide, the build notes, the handset bench-test plan, the ESP32-H2 firmware, the Zigbee2MQTT converter and the Home Assistant automations.

Build one, or make it better

It would be great to see other people build this, either as-is or improved. GETTING-STARTED.md is a step-by-step guide written for someone who has not done this before: where to order the PCB, the module and the parts, how to flash it on Windows, macOS or Linux, and how to get it into Zigbee2MQTT and Home Assistant.

If you build one as-is, a note saying which handset and controller you have, and whether it worked, is genuinely useful. The two things most likely to differ between installations are the BZ call-tone voltage and waveform and the speaker/microphone impedances, so measurements of those on any system other than an ED5/APEX are the single most valuable contribution.

If you want to improve it, obvious directions:

  • Outlines for other handsets. The electronics are handset-agnostic; what is ED5-specific is the board shape. A variant that fits an ED3+ or ED4+ case would widen this a lot
  • Other intercom families. The off-hook emulation idea should generalise to any 4+N system that gates door release on an active call
  • Bluetooth LE commissioning. The ESP32-H2 has BLE 5 alongside Zigbee, so diagnostics could be read from a phone without opening the handset
  • Board revisions. It is a simple two-layer through-hole design and there is plenty of room to improve it

Pull requests welcome. If you are going to change the board or the firmware, enable the artefact check first:

bash
git config core.hooksPath .githooks

Three build artefacts are committed rather than generated on demand: the gerber zip, the factory image and the OTA image. That hook fails a commit that leaves any of them out of date with its sources, and prints the commands to regenerate the one that drifted. Git does not enable hooks from a clone, so this is a one-time step per checkout.

This is a personal project, published because the same entryphone is fitted in a lot of buildings and nothing else worked on it. It is shared as-is rather than as a supported product, so please do not count on help with your particular installation. Everything needed to build, flash and debug it is in this repo, including the diagnostics the firmware reports about itself.

Support the projects this is built on

This board is a small piece of hardware sitting on top of two very large pieces of software. Without them it would be an ESP32 with some relays on it. There would be no open_door, no notification on your phone, no way to talk to a Zigbee device at all without a vendor's hub and a vendor's cloud. If you build one of these, please consider putting something toward them first.

  • Zigbee2MQTT. Everything this device is, to a hub, is defined by z2m and its converter API. It is what makes a home-made Zigbee device possible at all rather than just a radio talking to itself. Sponsor Koen Kanters
  • Home Assistant. The automations, the actionable notification, the off-hook failsafe. Now stewarded by the non-profit Open Home Foundation, funded largely by Nabu Casa: a Home Assistant Cloud subscription or a piece of their hardware sends most of its profit back to the foundation, and it is the most direct way to support the work.

Also worth a mention, though not asked for anything here: ESP-IDF and esp-zigbee-sdk from Espressif, and KiCad, which drew the board.

Written with Claude

Claude was a great tool for authoring the code and for assistance in getting this project built. The firmware, the Zigbee2MQTT converter, the Home Assistant automations and most of this documentation were written with it.

Supporting this project

If this saved you some time and you want to send something, Bitcoin over Lightning:

text
afcreamer@btcpay.wayhoptransport.co.uk

Entirely optional, and genuinely second in the queue behind the two above. The licence asks nothing of you either way.

Licence

CC0 1.0 Universal. A public domain dedication.

Do whatever you like with it. No attribution, no credit, no permission needed. Build one, sell them, fork it, close-source your changes, put your own name on it. There are no strings.

If you do build one I'd genuinely like to hear how it went, but that is a request, not a condition.

Parts

23
QtyValueFootprintReferences
4M3 NPTHMH1, MH2, MH3, MH4
3330R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR7, R8, R8B
2100kR_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR9, R10
110kR_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR12
1150R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalRS2
122kR_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR11
12N3904TO-92_InlineQ1
130R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalRS1
1AQY212 DOORDIP-4_W7.62mm_Socket_LongPadsU3
1AQY212 HAND-S1DIP-4_W7.62mm_Socket_LongPadsU4
1AQY212 HAND-S2DIP-4_W7.62mm_Socket_LongPadsU6
1Adafruit MPM3610 buck 3D modelM_BUCK
1ESP-H2-SuperMini botPinHeader_1x09_P2.54mm_VerticalJ2
1ESP-H2-SuperMini topPinHeader_1x09_P2.54mm_VerticalJ1
1ESP32-H2 SuperMini 3D modelM_H2
1FIELDPinHeader_1x06_P2.54mm_HorizontalJ4
1MPM3610 buckPinHeader_1x03_P2.54mm_VerticalJ3

Questions

How big is the Door opener mini PCB?

It measures 59.5 × 56 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Door opener mini use?

23 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Door opener mini KiCad files?

From the afcreamer/Open-ED5 repository on GitHub, at the commit this page was made from: the board is hardware/door-opener-mini.kicad_pcb and its schematic hardware/door-opener-mini.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Door opener mini design in my own project?

Its repository publishes it under the CC0-1.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers65 × 56 mmPi servo hat, the printed circuit board in 3D

    Pi servo hat

    earthtojake/text-to-cad

    Design physical products with AI

    23 parts26kMIT
  • 2 layers14 × 100 mmYunomi, the printed circuit board in 3D

    Yunomi

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    23 parts3kApache-2.0
  • 2 layers50.8 × 52.2 mmFuhhni, the printed circuit board in 3D

    Fuhhni

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    23 parts915
  • 2 layers138.8 × 89.8 mmKeyboard pcb, the printed circuit board in 3D

    Keyboard pcb

    diepala/cantor

    Cantor keyboard, a 42 key diodeless split keyboard.

    23 parts756GPL-3.0
  • 2 layers32.9 × 53.3 mmGoatgdo, the printed circuit board in 3D

    Goatgdo

    Kaldek/rat-ratgdo

    Open source schematics for ratgdo PCB

    23 parts511MIT
  • 2 layers35.5 × 50 mmTobo, the printed circuit board in 3D

    Tobo

    kelu124/echomods

    Open source ultrasound processing modules and building blocks

    23 parts463
  • 2 layers19 × 19 mmKeybit, the printed circuit board in 3D

    Keybit

    notaroomba/keybytes

    A truly modular keyboard

    23 parts444
  • 2 layers88.5 × 28 mmExpBreakout, the printed circuit board in 3D

    ExpBreakout

    Duet3D/Duet-2-Hardware

    The KiCAD source for the Duet 3d printer controller see www.duet3d.com

    23 parts258