Ebus integration?

My previous code was severly bugged and lack important functionalities. Here’s a better version:

sensor:
  - platform: mqtt
    name: Central Heating Pressure
    unique_id: ebusd_central_heating_pressure
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/WaterPressure"
    value_template: "{{ value.split(';')[0] }}"
    unit_of_measurement: Bar
  - platform: mqtt
    name: Central Heating Flow Temperature
    state_topic: "ebusd/bai/FlowTemp"
    unique_id: ebusd_central_heating_flow_temperature
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    value_template: "{{ value.split(';')[0] }}"
    unit_of_measurement: "°C"
  - platform: mqtt
    name: Central Heating Desired Flow Temperature
    unique_id: ebusd_central_heating_desired_flow_temperature
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/FlowTempDesired"
    value_template: "{{ value.split(';')[0] }}"
    unit_of_measurement: "°C"
  - platform: mqtt
    name: Central Heating Return Temperature
    unique_id: ebusd_central_return_temperature
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/ReturnTemp"
    value_template: "{{ value.split(';')[0] }}"
    unit_of_measurement: "°C"
  - platform: mqtt
    name: Central Heating Return Temperature difference
    unique_id: ebusd_central_heating_return_temperature_difference
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/ReturnTempExternal"
    value_template: "{{ value.split(';')[0] }}"
    unit_of_measurement: "°C"
  - platform: mqtt
    name: Central Heating Return Cutoff
    unique_id: ebusd_central_heating_return_cutoff
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/ReturnTempExternal"
    value_template: "{{ value.split(';')[1] }}"
  - platform: mqtt
    name: Hot Water Temperature
    unique_id: ebusd_hot_water_temperature
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/HwcTemp"
    value_template: "{{ value.split(';')[0] }}"
    unit_of_measurement: "°C"
  - platform: mqtt
    name: Hot Water Max Temperature
    unique_id: ebusd_hot_water_temperature
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/HwcTempMax"
    value_template: "{{ value.split(';')[0] }}"
    unit_of_measurement: "°C"
  - platform: mqtt
    name: Hot Water Actual Temp Desired
    unique_id: ebusd_hot_water_actual_temp_desired
    device:
      identifiers: "ebusd_f47"
      via_device: "ebusd"
    state_topic: "ebusd/f47/HwcActualTempDesired"
    unit_of_measurement: "°C"
  - platform: mqtt
    name: Hot Water Storage Temperature
    unique_id: ebusd_hot_water_storage_temperature
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/StorageTemp"
    value_template: "{{ value.split(';')[0] }}"
    unit_of_measurement: "°C"
  - platform: mqtt
    name: Hot Water maximum flow
    unique_id: ebusd_hot_water_maximum_flow
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/HwcWaterflowMax"
    value_template: "{{ value.split(';')[0] }}"
  - platform: mqtt
    name: Central Heating 3-Way Valve Position
    unique_id: ebusd_central_heating_3_way_valve_position
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/PositionValveSet"
    value_template: "{{ value.split(';')[0] }}"
  - platform: mqtt
    name: Central Heating Partial Load
    unique_id: ebusd_central_heating_partial_load
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/PartloadHcKW"
    value_template: "{{ value.split(';')[0] }}"
    unit_of_measurement: "kW"
  - platform: mqtt
    name: Central Heating Current Power
    unique_id: ebusd_central_current_power
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/ModulationTempDesired"
    unit_of_measurement: "%"
  - platform: mqtt
    name: Central Heating Pump Power
    unique_id: ebusd_central_heating_pump_power
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/PumpPower"
    unit_of_measurement: "W"
  - platform: mqtt
    name: Central Heating energy usage
    unique_id: ebusd_central_heating_energy_usage
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/PrEnergyCountHc1"
  - platform: mqtt
    name: Hot Water energy usage
    unique_id: ebusd_hot_water_energy_usage
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/PrEnergyCountHwc1"
  - platform: mqtt
    name: Central Heating Average Ignition time
    unique_id: ebusd_central_heating_average_ignition_time
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/averageIgnitiontime"
    unit_of_measurement: "s"
  - platform: mqtt
    name: Central Heating Fan Speed
    unique_id: ebusd_central_heating_fan_speed
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/FanSpeed"
    unit_of_measurement: RPM
  - platform: mqtt
    name: Central Heating Target Fan Speed
    unique_id: ebusd_central_heating_target_fan_speed
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/TargetFanSpeed"
    unit_of_measurement: RPM
  - platform: mqtt
    name: Central Heating Target Fan Speed Output
    unique_id: ebusd_central_heating_target_fan_speed_output
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/TargetFanSpeedOutput"
    unit_of_measurement: RPM
  - platform: mqtt
    name: Central Heating Current Error
    unique_id: ebusd_central_heating_current_error
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/currenterror"
  - platform: mqtt
    name: Central Heating Current Room Temperature
    unique_id: ebusd_central_heating_current_room_temperature
    device:
      identifiers: "ebusd_f47"
      via_device: "ebusd"
    state_topic: "ebusd/f47/RoomTemp"
    value_template: "{{ value.split(';')[0] }}"
    unit_of_measurement: "°C"
  - platform: mqtt
    name: Central Heating Outside Temperature
    unique_id: ebusd_central_heating_outside_temperature
    device:
      identifiers: "ebusd_f47"
      via_device: "ebusd"
    state_topic: "ebusd/f47/OutsideTemp"
    value_template: "{{ value.split(';')[0] }}"
    unit_of_measurement: "°C"
  - platform: mqtt
    name: Central Heating Actual Flow Temperature Desired
    unique_id: ebusd_central_heating_actual_flow_temperature_desired
    device:
      identifiers: "ebusd_f47"
      via_device: "ebusd"
    state_topic: "ebusd/f47/Hc1ActualFlowTempDesired"
    unit_of_measurement: "°C"
  - platform: mqtt
    name: Central Heating Actual Room Temperature Desired
    unique_id: ebusd_central_heating_actual_room_temperature_desired
    device:
      identifiers: "ebusd_f47"
      via_device: "ebusd"
    state_topic: "ebusd/f47/ActualRoomTempDesiredHc1"
    unit_of_measurement: "°C"

binary_sensor:
  - platform: mqtt
    name: "Central Heating Flame"
    unique_id: ebusd_central_heating_flame
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/Flame"
    payload_on: "on"
    payload_off: "off"
  - platform: mqtt
    name: "Central Heating Ignitor"
    unique_id: ebusd_central_heating_ignitor
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/Ignitor"
    payload_on: "on"
    payload_off: "off"
  - platform: mqtt
    name: "Central Heating Water pump state"
    unique_id: ebusd_central_heating_water_pump_state
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/WP"
    payload_on: "on"
    payload_off: "off"
  - platform: mqtt
    name: "Hot Water Demand"
    unique_id: ebusd_central_heating_hot_water_demand
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/HwcDemand"
    payload_on: "yes"
    payload_off: "no"
  - platform: mqtt
    name: Central Heating Pre Cutoff active
    unique_id: ebusd_central_heating_pre_cutoff_active
    device:
      identifiers: "ebusd_f47"
      via_device: "ebusd"
    state_topic: "ebusd/f47/Hc1PreCutOffActive"
    payload_on: "yes"
    payload_off: "no"
  - platform: mqtt
    name: Central Heating Continuos Mode
    unique_id: ebusd_central_heating_continuos_mode
    device:
      identifiers: "ebusd_f47"
      via_device: "ebusd"
    state_topic: "ebusd/f47/Hc1PreOrContinuosHeatingActive"
    payload_on: "yes"
    payload_off: "no"

switch:
  - platform: mqtt
    name: "Hot Water Switch"
    unique_id: ebusd_hot_water_switch
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/HwcSwitch"
    command_topic: "ebusd/bai/HwcSwitch/set"
    state_on: "on"
    state_off: "off"
    payload_on: "on"
    payload_off: "off"

  - platform: mqtt
    name: "Central Heating Switch"
    unique_id: ebusd_central_heating_switch
    device:
      identifiers: "ebusd_bai"
      via_device: "ebusd"
    state_topic: "ebusd/bai/HeatingSwitch"
    command_topic: "ebusd/bai/HeatingSwitch/set"
    state_on: "on"
    state_off: "off"
    payload_on: "on"
    payload_off: "off"

input_select:
  central_heating_operation_mode:
    name: Central Heating Operation Mode
    options:
      - "Automatic"
      - "Night"
      - "Comfort"
      - "Summer"
  central_heating_temporary_mode:
    name: Central Heating Temporary Mode
    options:
      - "None"
      - "Party"
      - "Day in"
      - "Day away"

input_number:
  central_heating_heat_curve:
    name: Central Heating Heat Curve
    min: 0.20
    max: 4.00
    step: 0.05
    mode: box
  central_heating_actual_room_temp_desired:
    min: 5
    max: 30
    step: 0.5
    unit_of_measurement: "°C"
  central_heating_set_day_temp:
    name: Central Heating Set Day Temperature
    min: 5
    max: 30
    step: 0.5
    unit_of_measurement: "°C"
  central_heating_set_night_temp:
    name: Central Heating Set Night Temperature
    min: 5
    max: 30
    step: 0.5
    unit_of_measurement: "°C"
  hot_water_temp_desired:
    name: Hot Water Temperature Desired
    min: 30
    max: 65
    step: 0.5
    mode: slider
    unit_of_measurement: "°C"

automation:
  - alias: ebusd_time_update
    initial_state: on
    trigger:
      - platform: time
        at: "00:00:00"
    action:
      - service: mqtt.publish
        data:
          topic: "ebusd/f47/Date/set"
          payload_template: "{{ now().strftime('%d.%m.%Y') }}"
      - service: mqtt.publish
        data:
          topic: "ebusd/f47/Time/set"
          payload_template: "{{ now().strftime('%H:%M:%S') }}"

  - id: ebus-error-notification-on
    alias: Ebus error notification on
    initial_state: on
    trigger:
      - platform: state
        entity_id: sensor.ebus_central_heating_current_error
        from: "-;-;-;-;-"
    action:
      - service: notify.notifier_kodi_living_room
        data:
          title: "Boiler ebus"
          message: 'Boiler error detected! Error code: {{ states("sensor.ebus_central_heating_current_error") }}'
      - service: notify.notifier_kodi_guest_bedroom
        data:
          title: "Boiler ebus"
          message: 'Boiler error detected! Error code: {{ states("sensor.ebus_central_heating_current_error") }}'
      - service: notify.notifier_telegram
        data:
          title: "Boiler ebus"
          message: 'Boiler error detected! Error code: {{ states("sensor.ebus_central_heating_current_error") }}'

  - id: ebus-error-notification-off
    alias: Ebus error notification off
    initial_state: on
    trigger:
      - platform: state
        entity_id: sensor.ebus_central_heating_current_error
        to: "-;-;-;-;-"
    action:
      - service: notify.notifier_telegram
        data:
          title: "Boiler ebus"
          message: "Boiler error cleared!"

  - alias: Set Central Heating Operation Mode
    initial_state: on
    trigger:
      - platform: state
        entity_id: input_select.central_heating_operation_mode
    action:
      - service: automation.turn_off
        entity_id: automation.get_central_heating_operation_mode
      - service: mqtt.publish
        data_template:
          topic: "ebusd/f47/Hc1OPMode/set"
          payload: >
            {% set opmode = {
              'Automatic': 'auto',
              'Night': 'night',
              'Comfort': 'on',
              'Summer': 'summer' } %}
            {{ opmode.get(trigger.to_state.state,'Automatic') }}
      - delay: 00:00:05
      - service: automation.turn_on
        entity_id: automation.get_central_heating_operation_mode

  - alias: Get Central Heating Operation Mode
    initial_state: on
    trigger:
      - platform: mqtt
        topic: "ebusd/f47/Hc1OPMode"
    action:
      service: input_select.select_option
      data_template:
        entity_id: input_select.central_heating_operation_mode
        option: >
          {% set opmode = {
            'auto': 'Automatic',
            'night': 'Night',
            'on': 'Comfort',
            'summer': 'Summer' } %}
          {{ opmode.get('trigger.payload','auto') }}

  - alias: Set Central Heating Temporary Mode
    initial_state: on
    trigger:
      - platform: state
        entity_id: input_select.central_heating_temporary_mode
    action:
      - service: automation.turn_off
        entity_id: automation.get_central_heating_temporary_mode
      - service: mqtt.publish
        data_template:
          topic: "ebusd/f47/Hc1SFMode/set"
          payload: >
            {% set tpmode = {
              'None': 'none',
              'Day away': 'onedayholiday',
              'Day in': 'onedaybankholiday',
              'Party': 'party' } %}
            {{ tpmode.get(trigger.to_state.state,'None') }}
      - delay: 00:00:05
      - service: automation.turn_on
        entity_id: automation.get_central_heating_temporary_mode

  - alias: Get Central Heating Temporary Mode
    initial_state: on
    trigger:
      - platform: mqtt
        topic: "ebusd/f47/Hc1SFMode"
    action:
      service: input_select.select_option
      data_template:
        entity_id: input_select.central_heating_temporary_mode
        option: >
          {% set tpmode = {
            'none': 'None',
            'onedayholiday': 'Day away',
            'onedaybankholiday': 'Day in',
            'party': 'Party' } %}
          {{ tpmode.get('trigger.payload','none') }}

  - alias: Set Central Heating Heat Curve
    initial_state: on
    trigger:
      - platform: state
        entity_id: input_number.central_heating_heat_curve
    action:
      service: mqtt.publish
      data_template:
        topic: "ebusd/f47/Hc1HeatCurve/set"
        payload: "{{ states.input_number.central_heating_heat_curve.state | float }}"

  - alias: Get Central Heating Heat Curve
    initial_state: on
    trigger:
      - platform: mqtt
        topic: "ebusd/f47/Hc1HeatCurve"
    action:
      service: input_number.set_value
      data_template:
        entity_id: input_number.central_heating_heat_curve
        value: "{{ trigger.payload | float }}"

  - alias: Set Central Heating Set Day Temperature
    initial_state: on
    trigger:
      - platform: state
        entity_id: input_number.central_heating_set_day_temp
    action:
      service: mqtt.publish
      data_template:
        topic: "ebusd/f47/Hc1DayTemp/set"
        payload: "{{ states.input_number.central_heating_set_day_temp.state | int }}"

  - alias: Get Central Heating Set Day Temperature
    initial_state: on
    trigger:
      - platform: mqtt
        topic: "ebusd/f47/Hc1DayTemp"
    action:
      service: input_number.set_value
      data_template:
        entity_id: input_number.central_heating_set_day_temp
        value: "{{ trigger.payload | int }}"

  - alias: Set Central Heating Actual Room Temp Desired
    initial_state: on
    trigger:
      - platform: state
        entity_id: input_number.central_heating_actual_room_temp_desired
    action:
      service: mqtt.publish
      data_template:
        topic: "ebusd/f47/ActualRoomTempDesiredHc1/set"
        payload: "{{ states.input_number.central_heating_actual_room_temp_desired | int }}"

  - alias: Get Central Heating Actual Room Temp Desired
    initial_state: on
    trigger:
      - platform: mqtt
        topic: "ebusd/f47/ActualRoomTempDesiredHc1"
    action:
      service: input_number.set_value
      data_template:
        entity_id: input_number.central_heating_actual_room_temp_desired
        value: "{{ trigger.payload | int }}"

  - alias: Set Central Heating Set Night Temperature
    initial_state: on
    trigger:
      - platform: state
        entity_id: input_number.central_heating_set_night_temp
    action:
      service: mqtt.publish
      data_template:
        topic: "ebusd/f47/Hc1NightTemp/set"
        payload: "{{ states.input_number.central_heating_set_night_temp.state | int }}"

  - alias: Get Central Heating Set Night Temperature
    initial_state: on
    trigger:
      - platform: mqtt
        topic: "ebusd/f47/Hc1NightTemp"
    action:
      service: input_number.set_value
      data_template:
        entity_id: input_number.central_heating_set_night_temp
        value: "{{ trigger.payload | int }}"

  - alias: Set Hot Water Temperature Desired
    initial_state: on
    trigger:
      - platform: state
        entity_id: input_number.hot_water_temp_desired
    action:
      service: mqtt.publish
      data_template:
        topic: "ebusd/f47/HwcTempDesired/set"
        payload: "{{ states.input_number.hot_water_temp_desired.state | int }}"

  - alias: Get Hot Water Temperature Desired
    initial_state: on
    trigger:
      - platform: mqtt
        topic: "ebusd/f47/HwcTempDesired"
    action:
      service: input_number.set_value
      data_template:
        entity_id: input_number.hot_water_temp_desired
        value: "{{ trigger.payload | int }}"

  - alias: ebusd_mqtt_update
    initial_state: on
    trigger:
      - platform: time_pattern
        minutes: "/2"
    action:
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/ReturnTemp/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/ReturnTempExternal/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/WaterPressure/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/FlowTemp/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/FlowTempDesired/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/HwcTemp/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/HwcTempMax/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/HwcWaterflowMax/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/f47/HwcTempDesired/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/f47/HwcActualTempDesired/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/f47/HwcOPMode/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/StorageTemp/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/PositionValveSet/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/PartloadHcKW/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/ModulationTempDesired/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/PumpPower/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/PrEnergyCountHc1/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/PrEnergyCountHwc1/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/averageIgnitionTime/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/FanSpeed/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/TargetFanSpeed/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/TargetFanSpeedOutput/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/currenterror/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/HeatingSwitch/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/Flame/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/Ignitor/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/WP/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/HwcSwitch/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/HwcDemand/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/bai/HeatingSwitch/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/f47/Hc1PreCutOffActive/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/f47/Hc1OPMode/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/f47/Hc1SFMode/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/f47/Hc1DayTemp/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/f47/Hc1NightTemp/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/f47/Hc1HeatCurve/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/f47/Hc1ActualFlowTempDesired/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/f47/ActualRoomTempDesiredHc1/get"
          payload: "1"
      - service: mqtt.publish
        data:
          topic: "ebusd/f47/Hc1PreOrContinuosHeatingActive/get"
          payload: "1"
1 Like