BSB-LAN

The BSB-LAN integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] integrates BSB-LAN devices into Home Assistant.

BSBLan is a device that is made by Frederik Holst and with the help of many other contributors. The board v3 is designed for an Arduino Due with an Ethernet-Shield for web-based controlling of heating systems such as Elco Thision, Brötje and similar systems. Also available is an ESP32 version of the board.

It can interface with the heating system over Boiler-System-Bus, Local Process Bus, and PPS. For more information on which systems it supports, take a look at their documentation.

Configuration

To add the BSB-LAN device to your Home Assistant instance, use this My button:

BSB-LAN can be auto-discovered by Home Assistant. If an instance was found, it will be shown as Discovered. You can then set it up right away.

Manual configuration steps

If it wasn’t discovered automatically, don’t worry! You can set up a manual integration entry:

For authentication, HTTP authentication using a username and password or using a passkey is supported. Use either one.

If your heating system exposes more than one heating circuit, Home Assistant discovers the available circuits automatically during setup. The integration creates one main BSB-LAN device for shared entities, and adds each detected heating circuit as its own sub-device so you can control each zone independently.

If your heating system changes later, for example after you enable an extra circuit in the controller, run the integration’s reconfigure flow to let Home Assistant discover the updated circuit list.

Supported functionality

Depending on your system and the available heating circuits, the following entities are available:

  • Button
  • Climate
  • Diagnostics
  • Sensor
  • Water heater

Device structure

The integration groups entities by device in Home Assistant:

  • The main BSB-LAN device contains shared entities, like the Sync time button and temperature sensors.
  • Each detected heating circuit appears as a sub-device under the main BSB-LAN device.
  • If your system supports domestic hot water, it can also appear as its own sub-device.

Buttons

  • Sync time: Synchronizes the BSB-LAN device time with the current Home Assistant time. Use it when your device’s time drifts or doesn’t match Home Assistant’s time.

The Sync time button appears under the Configuration section of the device page, not on your dashboards by default. You can also trigger the same synchronization programmatically using the bsblan.sync_time action, such as in a daily automation.

Climate

  • Home Assistant creates one climate entity for each detected heating circuit.
  • These appear in Home Assistant as Heating circuit 1, Heating circuit 2, and Heating circuit 3, depending on what your system exposes.
  • Each heating circuit is grouped under its own sub-device on the BSB-LAN device page.

Water heater

  • If your heating system exposes domestic hot water controls, Home Assistant creates a water heater entity for it.
  • The water heater entity is grouped under its own sub-device on the BSB-LAN device page.

Sensors

The following sensors are available, depending on your heating system:

  • Inside temperature
  • Outside temperature
  • Total Energy (disabled by default)

To use the Total Energy sensor, enable the entity in Home Assistant.

Note

The Total Energy sensor is not real-time. It updates in 1 kWh steps, so the value changes only after another 1 kWh has been used.

Actions

The integration provides the following actions.

Action: Set hot water schedule

The bsblan.set_hot_water_schedule action allows you to set the hot water heating schedule for your BSB-LAN device. Each day of the week can have one or more time slots when hot water heating should be active.

  • Target: device_id
    • Description: The BSB-LAN device to configure.
    • Required: Yes
  • Data attributes:
    • monday_slots: List of time slots for Monday. Each slot contains start_time and end_time.
      • Optional: Yes
    • tuesday_slots: List of time slots for Tuesday. Each slot contains start_time and end_time.
      • Optional: Yes
    • wednesday_slots: List of time slots for Wednesday. Each slot contains start_time and end_time.
      • Optional: Yes
    • thursday_slots: List of time slots for Thursday. Each slot contains start_time and end_time.
      • Optional: Yes
    • friday_slots: List of time slots for Friday. Each slot contains start_time and end_time.
      • Optional: Yes
    • saturday_slots: List of time slots for Saturday. Each slot contains start_time and end_time.
      • Optional: Yes
    • sunday_slots: List of time slots for Sunday. Each slot contains start_time and end_time.
      • Optional: Yes
    • standard_values_slots: List of standard/default time slots. Each slot contains start_time and end_time.
      • Optional: Yes

Time slots are defined using time pickers for easy configuration without manual formatting. You only need to specify the days you want to configure.

Action bsblan.sync_time

Synchronize Home Assistant time to the BSB-LAN device. Only updates if device time differs from Home Assistant time.

  • Target: device_id
    • Description: The BSB-LAN device to sync time for.
    • Required: Yes

Examples

Sync time for all BSB-LAN devices:

action: bsblan.sync_time

Sync time for a specific device:

action: bsblan.sync_time
target:
  device_id: "your_device_id"

Use in an automation to sync time daily:

automation:
  - alias: "Sync BSB-LAN time daily"
    triggers:
      - trigger: time
        at: "03:00:00"
    actions:
      - action: bsblan.sync_time

Examples

The following examples show how to use the BSB-LAN integration actions in Home Assistant automations.

Setting a weekday and weekend schedule

This example sets different schedules for weekdays and weekends. Each day can have multiple time slots.

action: bsblan.set_hot_water_schedule
target:
  device_id: abc123device456
data:
  monday_slots:
    - start_time: "06:00:00"
      end_time: "08:00:00"
    - start_time: "17:00:00"
      end_time: "21:00:00"
  tuesday_slots:
    - start_time: "06:00:00"
      end_time: "08:00:00"
    - start_time: "17:00:00"
      end_time: "21:00:00"
  wednesday_slots:
    - start_time: "06:00:00"
      end_time: "08:00:00"
    - start_time: "17:00:00"
      end_time: "21:00:00"
  thursday_slots:
    - start_time: "06:00:00"
      end_time: "08:00:00"
    - start_time: "17:00:00"
      end_time: "21:00:00"
  friday_slots:
    - start_time: "06:00:00"
      end_time: "08:00:00"
    - start_time: "17:00:00"
      end_time: "21:00:00"
  saturday_slots:
    - start_time: "08:00:00"
      end_time: "22:00:00"
  sunday_slots:
    - start_time: "08:00:00"
      end_time: "22:00:00"

Seasonal schedule automation

This example automatically adjusts the hot water schedule based on the season.

automation:
  - alias: "Set hot water schedule - winter"
    triggers:
      - trigger: state
        entity_id: sensor.season
        to: winter
    actions:
      - action: bsblan.set_hot_water_schedule
        target:
          device_id: "{{ device_id('water_heater.bsblan_hot_water') }}"
        data:
          monday_slots:
            - start_time: "05:00:00"
              end_time: "08:30:00"
            - start_time: "16:00:00"
              end_time: "23:00:00"
          tuesday_slots:
            - start_time: "05:00:00"
              end_time: "08:30:00"
            - start_time: "16:00:00"
              end_time: "23:00:00"
          wednesday_slots:
            - start_time: "05:00:00"
              end_time: "08:30:00"
            - start_time: "16:00:00"
              end_time: "23:00:00"
          thursday_slots:
            - start_time: "05:00:00"
              end_time: "08:30:00"
            - start_time: "16:00:00"
              end_time: "23:00:00"
          friday_slots:
            - start_time: "05:00:00"
              end_time: "08:30:00"
            - start_time: "16:00:00"
              end_time: "23:00:00"
          saturday_slots:
            - start_time: "07:00:00"
              end_time: "23:00:00"
          sunday_slots:
            - start_time: "07:00:00"
              end_time: "23:00:00"

  - alias: "Set hot water schedule - summer"
    triggers:
      - trigger: state
        entity_id: sensor.season
        to: summer
    actions:
      - action: bsblan.set_hot_water_schedule
        target:
          device_id: "{{ device_id('water_heater.bsblan_hot_water') }}"
        data:
          monday_slots:
            - start_time: "06:00:00"
              end_time: "07:00:00"
            - start_time: "18:00:00"
              end_time: "20:00:00"
          tuesday_slots:
            - start_time: "06:00:00"
              end_time: "07:00:00"
            - start_time: "18:00:00"
              end_time: "20:00:00"
          wednesday_slots:
            - start_time: "06:00:00"
              end_time: "07:00:00"
            - start_time: "18:00:00"
              end_time: "20:00:00"
          thursday_slots:
            - start_time: "06:00:00"
              end_time: "07:00:00"
            - start_time: "18:00:00"
              end_time: "20:00:00"
          friday_slots:
            - start_time: "06:00:00"
              end_time: "07:00:00"
            - start_time: "18:00:00"
              end_time: "20:00:00"
          saturday_slots:
            - start_time: "08:00:00"
              end_time: "21:00:00"
          sunday_slots:
            - start_time: "08:00:00"
              end_time: "21:00:00"

For more documentation of the BSBLan device, check the manual.

To see a more detailed listing of the reported systems which are successfully used with BSB-LAN, please follow the corresponding link:

Supported heating systems

The integration is tested with the stable firmware version 5.0.16-20250525002819. A newer firmware version may not work because the API could have changed. For autodiscovery, use the latest release: release 5.0.