DIY Wallbox

System Engineering · Embedded Systems · Home Automation · EV Charging · Energy Management

Motivation

With the acquisition of our first electric vehicle, the need for a reliable home charging solution became unavoidable. While the market offers a wide range of wallboxes, many solutions are either overpriced, lack transparency, or rely on proprietary ecosystems that limit integration into existing home automation systems.

Especially advanced features such as dynamic load management and optimized charging based on self-produced photovoltaic energy are often locked behind closed platforms or require additional paid services. The goal of this project was therefore to design a fully customizable, cost-effective wallbox that integrates seamlessly into an existing Home Assistant setup and allows complete control over charging behavior.

Wallbox control cabinet
Wallbox control cabinet.

System Design

The wallbox is tightly integrated into the existing home automation infrastructure, including a smart energy meter for grid import/export and photovoltaic inverters. All components communicate via Ethernet and are supervised by a Home Assistant server.

The core hardware components of the wallbox are:

System architecture showing wallbox, Home Assistant, energy meter and PV inverter
System architecture: wallbox integrated with Home Assistant, smart meter and PV inverter

Control & Load Management

The wallbox itself does not implement any charging logic. It acts purely as an execution layer that applies a predefined charging level received from Home Assistant. All decisions regarding charging behavior are made at system level, where complete information about household load, photovoltaic production and grid constraints is available.

Home Assistant communicates a single numeric charging stage to the wallbox via MQTT over Ethernet. A charging stage of 0 disables charging entirely. All other stages map to fixed current levels and phase configurations. Single-phase charging was deliberately omitted, as very low charging power was not required in practice and would introduce unnecessary efficiency losses.

The implemented charging stages cover:

The selected charging stage is translated by the Arduino into a PWM control signal and forwarded to the SimpleCharge controller. Phase selection and contactor switching are handled deterministically based on the received stage, without any local optimization or decision-making.

In addition to command reception, the wallbox reports system states back to Home Assistant. These include charging active/inactive status, plug holder state and measured charging power. This feedback allows Home Assistant to verify correct execution and to log all charging sessions.

In case of a communication loss with Home Assistant, the wallbox signals the fault locally via a dedicated status LED inside the control cabinet. A physical selector switch allows switching to a manual fallback mode. In this mode, the wallbox operates autonomously with a fixed charging power and starts charging automatically when a vehicle is plugged in. This ensures basic operability even without network connectivity.

All safety-critical functions, including connector locking and maximum allowable current, are enforced by the charging controller hardware itself. This guarantees that safety limits remain active independently of the higher-level control system.

Wallbox control cabinet interior
Wallbox control cabinet interior.
Wallbox plug holder with Arduino Uno mounted inside housing
Wallbox plug holder with Arduino Uno mounted inside housing.

Lessons Learned

Back to overview