Skip to content
Power station for my TV desk

Power station for my TV desk

With frequent power outages I switch the power source of my apartment often, and every switch is a short power loss. The TV rebooted in the middle of watching, and the Alexa rebooted all the time. On top of that, there was a pile of chargers under the TV desk: TV, Raspberry Pi, Wi-Fi router, Google TV stick, speakers.

So I built a second power station, the same idea as the one on my work desk, and powered all of these from it. It works as a UPS: the devices don’t notice when mains goes out or comes back.

Back panel: 2 USB-C PD and 2 USB-C 5 V ports, 3 DC jacks 19.5 V, XT60, charger input, BMS button

How it works

    flowchart TB
  PSU["TV power supply<br/>19.5 V 4.35 A"] --> UPS["UPS 1228-12<br/>charge 5 A / 14.2 V<br/>output 19.5 V"]
  subgraph BAT["Battery"]
    PACK["4S EVE LF32<br/>12.8 V 32 Ah ≈ 410 Wh"] <--> BMS["JK BMS"]
  end
  BAT <--> UPS
  UPS -- 19.5 V --> DC["3× DC jacks:<br/>TV, router, speakers"]
  UPS -- 19.5 V --> PD["2× TZT PD65W USB-C:<br/>Google TV stick, Alexa"]
  UPS -- 19.5 V --> XL["XL4016 buck"] -- 5 V --> USB5["2× USB-C 5 V:<br/>Raspberry Pi 5, spare"]
  BAT --> XT60["XT60"]
  BMS -- GPS port --> BUCK["MP1584 buck"] --> ESP["ESP8266"]
  BMS -- "GPS port (UART)" --> ESP
  ESP -. Wi-Fi .-> HA["Home Assistant"]
  
  • UPS module is the same as in the work desk build. It charges the battery (5 A, up to 14.2 V, i.e. 3.55 V per cell) and switches the load between the charger and the battery. Its output is set to 19.5 V, the voltage of the TV.
  • Charger is the original power supply of the TV, 19.5 V 4.35 A (about 85 W), so there is one power supply less under the desk. It is not powerful enough to run all devices and charge the battery at full current at the same time; the load comes first.
  • DC jacks (19.5 V) power the TV, the router and the speakers. The router is a MikroTik hAP ac², which accepts 12–30 V on its DC jack, so 19.5 V is fine. The speakers needed a small mod to run from 19.5 V.
  • TZT PD65W modules are two USB-C PD ports. One powers the Google TV stick. The other powers the Alexa, which needs 12 V, through a USB-C to DC cable that requests 12 V over PD.
  • XL4016 buck makes 5 V for two USB-C ports. Right now only the Raspberry Pi 5 is connected, with a short USB-C cable (see Raspberry Pi 5). It runs Home Assistant, Immich, backups and other home services.
  • XT60 is connected directly to the battery. It’s not used, it’s there just in case I need to power something else from the battery.
  • BMS protects the cells and balances them. The red button on the back is the standard JK BMS on/off button.
  • ESP8266 reads the BMS over its GPS port and sends data to Home Assistant. The same port powers it through an MP1584 buck converter.

The PD modules and the 5 V USB-C ports sit on a 3D-printed panel on the back of the case.

Parts

PartDetails
Battery4× EVE LF32 32 Ah, B-grade, in series (4S)
BMSJK BMS BD4A8S4P
UPS / charger boardUPS 1228-12
ChargerOriginal TV power supply, 19.5 V 4.35 A
USB-C PD2× TZT QC4.0/QC3.0 Type-C PD 65 W fast charging module
Alexa cableUSB-C to DC 12 V power cable
5 V buckXL4016 300 W 9 A DC-DC step-down converter
MonitoringESP8266 (ESP-12E) + Mini MP1584EN DC-DC buck converter
EnclosureSame metal case as the work desk build, plus my own 3D-printed back panel and ESP box

EVE LF32 specifications

ParameterValue
ModelLF32K
ChemistryLiFePO4
Nominal voltage3.2 V
Capacity32 Ah
Standard charge / discharge16 A (0.5C)
Max charge / discharge32 A (1C)
Voltage limits (min / max)2.5 V / 3.65 V
Terminal typeM6
Dimensions (H × W × T)91.5 × 148.3 × 26.7 mm
Weight750 g

The pack is 4 cells in series: 12.8 V nominal, 32 Ah, about 410 Wh.

Raspberry Pi 5

The XL4016 is a plain buck converter, it doesn’t speak USB PD. Without PD the Pi 5 can’t find out how much current the supply can give, assumes 3 A, and limits the total current of its USB ports to 600 mA. That matters with a USB SSD. The XL4016 can give 9 A, so it’s safe to lift the limit in /boot/firmware/config.txt:

usb_max_current_enable=1

The voltage also needs a check. The cable from the buck to the Pi drops some voltage, so the Pi sees less than the buck output. The Pi 5 can measure its own input voltage:

vcgencmd pmic_read_adc EXT5V_V
vcgencmd get_throttled

Set the buck so that EXT5V_V shows about 5.1–5.2 V under normal load, and get_throttled should show throttled=0x0 (no undervoltage). Don’t go much higher: the Pi passes its input voltage to the USB ports, and USB devices expect at most 5.25 V.

Monitoring

The ESP8266 runs ESPHome with syssi/esphome-jk-bms, connected to the GPS port of the BMS (UART-TTL). It sits in a small 3D-printed box next to the BMS:

substitutions:
  name: power-station-tv
  device_description: "Monitor a JK-BMS using the GPS port (UART-TTL)"
  external_components_source: github://syssi/esphome-jk-bms@main
  tx_pin: GPIO5
  rx_pin: GPIO4

esp8266:
  board: esp12e

The rest of the config is the example from the repository. In Home Assistant I get state of charge, power, cell voltages, temperatures and cycles. After 15 cycles (493 Ah) the cells are within 7 mV of each other:

Home Assistant dashboard of the TV power station

History

December 2025: first build

The first version had no monitoring, no USB-C ports and no 3D-printed panel. The Google TV stick was powered from a car USB socket with PD 3.0 mounted in the back panel.

First version: car USB socket in the back panel

February 2026: USB-C and monitoring

I replaced the car socket with a 3D-printed panel with two USB-C PD ports, and added the ESP8266 in a 3D-printed box next to the BMS. The back panel had the two USB-C PD ports, three 19.5 V DC jacks, the charger input, the XT60 and the BMS button.

June 2026: Raspberry Pi

I moved my Raspberry Pi 5 to this power station. For that I added the XL4016 buck with two 5 V USB-C ports and changed the back panel.

Caveats

  • There are no fuses. The outputs rely on the protection of the UPS board and the converters, and the XT60 is protected only by the BMS, which allows 40 A continuous.
  • The TV power supply is about 85 W. With the TV on, most of it goes to the load, so the battery charges slowly.
  • The buck converters and PD modules are powered all the time, so they draw some idle current.
  • The 5 V USB-C ports have no PD, so phones charge slowly from them.
Last updated on