BlogContact
Advanced & Guides

Splitting into devices in Home Assistant

How to group boneIO ESP outputs and inputs into separate Home Assistant devices in ESPHome Device Builder, for example one per circuit.

By default a boneIO ESP controller is one device in Home Assistant with all its outputs and inputs. ESPHome can split it into sub-devices (devices), for example one per output together with the input that drives it. Each sub-device gets its own area (room) and its own page in Home Assistant, and the device list shows it as connected through the controller.

Firmware from boneio.eu/esp does not do this — you set up the split yourself in a configuration taken over in ESPHome Device Builder.

Requirements

Step 1: define the devices

Add a devices list to the esphome: section. Leave the rest of the section as it is.

esphome:
  name: '${name}'
  # ... rest of the section unchanged
  devices:
    - id: out_01_device
      name: Out01
    - id: out_02_device
      name: Out02

id is the name used in YAML, name is the device name in Home Assistant. You can rename the device in Home Assistant later.

Step 2: assign the entities

Add device_id to the output and the input that belong to the device:

light:
  - platform: binary
    name: 'Light 01'
    output: out_01
    id: light_01
    device_id: out_01_device

binary_sensor:
  - platform: gpio
    name: 'IN_01'
    id: in_01
    device_id: out_01_device
    pin:
      # ... unchanged

Entities without device_id stay on the main device. Then upload the configuration with Install.

Do not change entity names (name) when you add device_id. Home Assistant recognises a moved entity by its name and keeps its entity_id, history and automations. An entity with a new name or with name: None shows up as a new one, and automations that used the old one stop working.

Home Assistant shows the entity with the device name in front, for example "Out01 Light 01". When you rename the device in Home Assistant to "Living room lamp", the entity becomes "Living room lamp Light 01".

What to put in one device

With local control on, input IN_01 toggles output 1, IN_02 output 2 and so on. Such pairs are usually in the same room, so put them in one device. On Cover and Cover Mix, assign both inputs of a cover — up and down — to that cover's device.

A button that drives something other than the output with the same number goes to the device it drives, or stays on the main device.

Areas (optional)

The simplest way to set the area is in Home Assistant: open the sub-device and pick an area. You can also set it in YAML:

esphome:
  areas:
    - id: living_room
      name: Living room
  devices:
    - id: out_01_device
      name: Out01
      area_id: living_room