I'm extremely lazy, and I'm not ashamed of it. For a while now I've been saying "Ok Google, turn on the computer" and watching the TV, the Hi-Fi system (a Logitech Z906 I reverse-engineered — different project, different story), and... basically everything come to life. The one obvious thing missing was the PC itself.
My setup has a second monitor, mouse, and keyboard in another room (the workshop), connected over a network cable. That means I can work from the workshop without moving the case around — but until recently I still had to get up and physically press the power button on the PC before heading to the second station. And if I ever wanted to turn the PC on remotely — say, to jump on AnyDesk while I'm out — I had no way to do it.
The obvious fix would have been a relay wired to the motherboard's PWR_SW pins. It works, but it's ugly, fragile, and needs an external power supply for the module. I wanted something that lived inside the case, powered by the case itself, with no loose wires anywhere.

The solution: a PCIe card
- MCU: ESP32-H2
- Power: taken directly from the bus, 3.3Vaux from PCIe pin B10 — no external power supply, no extra cables
- Mechanism: electronically simulated 300ms pulses on the motherboard's PWR_SW and RESET pins, exactly like a physical button press
- Sense: reads the PCIe slot's switched 3.3V rail to know the PC's real power state and reports it back over Zigbee
- Firmware: dedicated custom Zigbee firmware (ESP-IDF + esp-zigbee-lib, not ESPHome), integrated into Home Assistant via ZHA as a switch that always reflects the PC's real state — not just the last command sent

The result
Now "Ok Google, turn on the computer" actually turns on everything, PC included. I can also power it on remotely for a quick AnyDesk session when I'm not home, without having to leave the PC running all the time just in case. And since the card also senses the PC's real state, if I turn the switch off in Home Assistant but the PC doesn't actually shut down for some reason, the switch flips back to "on" by itself — no more guessing whether it actually worked.

Firmware
This started out sharing its codebase with another project of mine — a customizable Zigbee switch (relay + roller shutter support + configurable individual switches). This card has since moved to its own dedicated, simplified firmware, living directly in this project's repository: no configuration wizard, nothing to set up — just two fixed impulse outputs (PWR_SW/RESET) and the real-state sense, hardcoded for this exact board.
Flashing: either build from source with ESP-IDF, or flash the pre-built binaries with just esptool.py (no ESP-IDF install needed) — both documented in the repo's README, along with the one hardware assumption worth double-checking with a multimeter before first use (sense polarity on the PCIe rail).
Hardware (schematic, gerbers, BOM): Zigbee PC power+reset on OSHWLab Firmware (source + pre-built binaries): PCIe-PC-Power-Control-ESP32-H2
scavenrage
Michele Perla
Ricky Zhang
Jeroen Brinkman