Besen

The Besen integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] connects Home Assistant to Besen EV chargers over Bluetooth Low Energy.

This integration talks directly to the charger through Home Assistant’s Bluetooth stack.

Supported devices

The following device has been verified to work with this integration:

Other Besen chargers using the same ACP# Bluetooth protocol may also work.

Prerequisites

  • A Besen charger advertising as ACP#....
  • The charger’s 6-digit PIN.
  • A Bluetooth adapter or ESPHome Bluetooth proxy that supports active GATT connections.

ESPHome Bluetooth proxies need active connections enabled. Each connected charger uses one active GATT connection slot on the selected proxy.

Configuration

To add the Besen device to your Home Assistant instance, use this My button:

Manual configuration steps

If the above My button doesn’t work, you can also perform the following steps manually:

Home Assistant can discover chargers that advertise as ACP#.... If your charger is not discovered automatically, add the integration manually and select it from the list of Besen chargers currently visible over Bluetooth. If no charger is found, follow the discovery troubleshooting steps.

Device

The discovered Besen charger to set up.

PIN

The charger’s 6-digit Bluetooth PIN. Many units default to 123456.

Supported functionality

Switch

The integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] provides a Charge switch to start or stop charging.

The switch state follows the charging state reported by the charger.

Number

The Charging current number sets the maximum current the charger can use. The available range starts at 6 A and ends at the maximum reported by the charger. Home Assistant uses 32 A if the charger does not report a maximum.

Select

The Temperature unit select sets the temperature display on the charger’s screen to Celsius or Fahrenheit. This setting does not change the unit system or temperature sensor display units in Home Assistant.

Sensors

The following sensors are enabled by default:

  • Charging power: Current charging power reported by the charger in watts (W).
  • Total energy: Lifetime energy reported by the charger in kilowatt-hours (kWh). Use this sensor when adding the charger to the Energy dashboard.
  • Session energy: Energy delivered during the current or most recently completed charging session in kilowatt-hours (kWh). This value can reset when a new session starts, so it is not recommended for the Energy dashboard.
  • Internal temperature: Temperature measured inside the charger in degrees Celsius (°C).
  • Charging status: High-level charging state reported by the charger.
  • Charging message: Additional guidance reported for the current charging state.

The following diagnostic sensors are disabled by default:

  • External temperature: External temperature reported by the charger in degrees Celsius (°C).
  • Error state: Detailed charger fault state.
  • Plug state: Connection and lock state reported for the charging plug.
  • Output state: Low-level state of the charger output.
  • Current state: Low-level operating state reported by the charger.
  • L1 voltage and L1 current: Voltage and current reported for phase L1.
  • L2 voltage, L2 current, L3 voltage, and L3 current: Voltage and current reported for phases L2 and L3. These sensors are created only for three-phase chargers.

To use an entity that is disabled by default, enable the entity from the charger device page.

Actions

The integration does not provide custom actions. Use the standard entity actions instead:

  • switch.turn_on starts charging.
  • switch.turn_off stops charging.
  • number.set_value sets the charging current.
  • select.select_option changes the temperature unit shown on the charger’s screen.

Examples

Start charging when an off-peak tariff starts:

alias: Start EV charging off peak
triggers:
  - trigger: time
    at: "23:00:00"
actions:
  - action: switch.turn_on
    target:
      entity_id: switch.besen_charge

Stop charging before a peak tariff starts:

alias: Stop EV charging before peak tariff
triggers:
  - trigger: time
    at: "17:00:00"
actions:
  - action: switch.turn_off
    target:
      entity_id: switch.besen_charge

Data updates

The charger sends status updates over Bluetooth notifications after login. Home Assistant keeps one active Bluetooth connection open, listens for notifications, and responds to charger heartbeats. If notifications stop, the integration reconnects automatically.

Sensor values update when the charger sends status and charging-session notifications. The temperature unit select updates after a command is sent successfully and when the charger reports the setting. An entity shows an unknown value until the charger reports its corresponding value. All charger entities become unavailable while the Bluetooth connection is unavailable or authentication is incomplete.

This is a local push integration. There is no cloud dependency.

Known limitations

The integration does not support:

  • Changing charger settings such as language, LCD brightness, or device name.
  • Reporting Bluetooth signal strength as an entity.
  • Wi-Fi provisioning.
  • Password reset.
  • Device reset.
  • Charging history download.
  • Firmware updates through Home Assistant.
  • Safety-certified load balancing.

Troubleshooting

The charger is not discovered

Symptom: The charger is missing from setup

Home Assistant does not discover the charger automatically.

Resolution

To resolve this issue, try the following steps:

  1. Confirm the charger appears in Settings > Connectivity > Bluetooth > Advertisement monitor as ACP#....
  2. Move an ESPHome Bluetooth proxy closer to the charger.
  3. Make sure the proxy is added to Home Assistant through the ESPHome integration.
  4. Run an active scan or temporarily place a local Bluetooth adapter near the charger.

No connectable Bluetooth path is available

Symptom: “No connectable Bluetooth path is available”

When setting up or loading the integration, Home Assistant reports that no connectable Bluetooth path is available.

Description

The charger may be visible only through a passive or non-connectable adapter. The charger can keep only one active Bluetooth client connection.

Resolution

To resolve this issue, try the following steps:

  1. Use an ESPHome Bluetooth proxy with active connections enabled, or a local Bluetooth adapter supported by Home Assistant.
  2. Stop any app, bridge, container, add-on, or service that may already be connected to the charger.

The charger becomes unavailable

Symptom: The charge switch is unavailable

The charge switch becomes unavailable after the integration was set up.

Resolution

To resolve this issue, try the following steps:

  1. Check Settings > Connectivity > Bluetooth > Connection monitor.
  2. Verify the proxy has free active connection slots.
  3. Stop any old MQTT bridge or companion process that may still hold the charger’s Bluetooth connection.
  4. Prefer Ethernet ESPHome Bluetooth proxies when possible.
  5. Avoid placing the proxy next to strong Wi-Fi or USB 3.0 interference sources.

The PIN is rejected

Symptom: The charger rejected the PIN

During setup, Home Assistant reports that the charger rejected the PIN. If the PIN is changed on the charger after setup, Home Assistant detects the rejected PIN and starts a reauthentication flow. The charger’s entities stay unavailable, and the integration stops reconnecting until you enter the current PIN.

Resolution

  • During setup, enter the current 6-digit PIN.
  • If Home Assistant asks you to reauthenticate, follow the reauthentication notification and enter the current 6-digit PIN. Home Assistant checks the PIN with the charger and reloads the integration without removing your entities or automations.

Removing the integration

This integration follows standard integration removal.

To remove an integration instance from Home Assistant

  1. Go to Settings > Devices & services and select the integration card.
  2. From the list of devices, select the integration instance you want to remove.
  3. Next to the entry, select the three dots menu. Then, select Delete.