Modbus switch - write specific bit in holding register

      herusensoropenalarmclass:
        friendly_name: "HeruSensorOpenAlarmClass"
        value_template: >-
          {% if states('sensor.tpherualarmclasses')|int(default=0)|bitwise_and(2) > 0 %} B {% else %} A {% endif %}

      herusensorshortedalarmclass:
        friendly_name: "HeruSensorShortedAlarmClass"
        value_template: >-
          {% if states('sensor.tpherualarmclasses')|int(default=0)|bitwise_and(4) > 0 %} B {% else %} A {% endif %}

      heruoverheatprotectionlarmclass:
        friendly_name: "HeruOverheatProtectionAlarmClass"
        value_template: >-
          {% if states('sensor.tpherualarmclasses')|int(default=0)|bitwise_and(8) > 0 %} B {% else %} A {% endif %}

      herufreezealarmclass:
        friendly_name: "HeruFreezeAlarmClass"
        value_template: >-
          {% if states('sensor.tpherualarmclasses')|int(default=0)|bitwise_and(16) > 0 %} B {% else %} A {% endif %}

      herusupplytemperaturelowalarmclass:
        friendly_name: "HeruSupplyTemperatureLowAlarmClass"
        value_template: >-
          {% if states('sensor.tpherualarmclasses')|int(default=0)|bitwise_and(32) > 0 %} B {% else %} A {% endif %}

      herurotortemperaturelowalarmclass:
        friendly_name: "HeruRotorTemperatureLowAlarmClass"
        value_template: >-
          {% if states('sensor.tpherualarmclasses')|int(default=0)|bitwise_and(64) > 0 %} B {% else %} A {% endif %}

      herufanfailurealarmclass:
        friendly_name: "HeruFanFailureAlarmClass"
        value_template: >-
          {% if states('sensor.tpherualarmclasses')|int(default=0)|bitwise_and(128) > 0 %} B {% else %} A {% endif %}

      heruheatexchangeralarmclass:
        friendly_name: "HeruHeatExchangerAlarmClass"
        value_template: >-
          {% if states('sensor.tpherualarmclasses')|int(default=0)|bitwise_and(256) > 0 %} B {% else %} A {% endif %}

      heruductpressuredeviationalarmclass:
        friendly_name: "HeruDuctPressureDeviationAlarmClass"
        value_template: >-
          {% if states('sensor.tpherualarmclasses')|int(default=0)|bitwise_and(512) > 0 %} B {% else %} A {% endif %}

      herupumpalarmclass:
        friendly_name: "HeruPumpAlarmClass"
        value_template: >-
          {% if states('sensor.tpherualarmclasses')|int(default=0)|bitwise_and(1024) > 0 %} B {% else %} A {% endif %}

      heruaalarmrelaycontactfunction:
        friendly_name: "HeruAalarmRelayContactFunction"
        value_template: >-
          {% if states('sensor.tpherualarmrelaycontactfunction')|int(default=0)|bitwise_and(1) > 0 %} NC {% else %} NO {% endif %}

      herubalarmrelaycontactfunction:
        friendly_name: "HeruBalarmRelayContactFunction"
        value_template: >-
          {% if states('sensor.tpherualarmrelaycontactfunction')|int(default=0)|bitwise_and(2) > 0 %} NC {% else %} NO {% endif %}

      herurunrelaycontactfunction:
        friendly_name: "HeruRunRelayContactFunction"
        value_template: >-
          {% if states('sensor.tpherualarmrelaycontactfunction')|int(default=0)|bitwise_and(4) > 0 %} NC {% else %} NO {% endif %}

      heruwinterstartdate:
        friendly_name: "HeruWinterStartDate"
        value_template: >-
          {% set startdate = '%0.4d' % states('sensor.tpheruwinterstartdate') | int %}
          {% set month = startdate | regex_findall_index(find='[0-9]{2}', index=0, ignorecase=false) | int %}
          {% set day = startdate | regex_findall_index(find='[0-9]{2}', index=1, ignorecase=false) | int %}
          {{ day }}/{{ month }}

      herusummerstartdate:
        friendly_name: "HeruSummerStartDate"
        value_template: >-
          {% set startdate = '%0.4d' % states('sensor.tpherusummerstartdate') | int %}
          {% set month = startdate | regex_findall_index(find='[0-9]{2}', index=0, ignorecase=false) | int %}
          {% set day = startdate | regex_findall_index(find='[0-9]{2}', index=1, ignorecase=false) | int %}
          {{ day }}/{{ month }}

      herudatetime:
        friendly_name: "HeruDateTime"
        value_template: >-
          {% set year = states('sensor.herudatetimeyear') | int %}
          {% set month = '%0.2d' % states('sensor.herudatetimemonth') | int %}
          {% set day = '%0.2d' % states('sensor.herudatetimeday') | int %}
          {% set hours = '%0.2d' % states('sensor.herudatetimehours') | int %}
          {% set minutes = '%0.2d' % states('sensor.herudatetimeminutes') | int %}
          {% set seconds = '%0.2d' % states('sensor.herudatetimeseconds') | int %}
          {{ year~'-'~month~'-'~day~' '~hours~':'~minutes~':00' }}


binary_sensor:
  - platform: template
    sensors:
      herusensort1open:
        friendly_name: "HeruSensorT1open"
        value_template: "{{ states('sensor.tpherusensorsopen')|int(default=0)|bitwise_and(1) > 0 }}"

      herusensort2open:
        friendly_name: "HeruSensorT2open"
        value_template: "{{ states('sensor.tpherusensorsopen')|int(default=0)|bitwise_and(2) > 0 }}"

      herusensort3open:
        friendly_name: "HeruSensorT3open"
        value_template: "{{ states('sensor.tpherusensorsopen')|int(default=0)|bitwise_and(4) > 0 }}"

      herusensort4open:
        friendly_name: "HeruSensorT4open"
        value_template: "{{ states('sensor.tpherusensorsopen')|int(default=0)|bitwise_and(8) > 0 }}"

      herusensort5open:
        friendly_name: "HeruSensorT5open"
        value_template: "{{ states('sensor.tpherusensorsopen')|int(default=0)|bitwise_and(16) > 0 }}"

      herusensort6open:
        friendly_name: "HeruSensorT6open"
        value_template: "{{ states('sensor.tpherusensorsopen')|int(default=0)|bitwise_and(32) > 0 }}"

      herusensort1shorted:
        friendly_name: "HeruSensorT1shorted"
        value_template: "{{ states('sensor.tpherusensorsshorted')|int(default=0)|bitwise_and(1) > 0 }}"

      herusensort2shorted:
        friendly_name: "HeruSensorT2shorted"
        value_template: "{{ states('sensor.tpherusensorsshorted')|int(default=0)|bitwise_and(2) > 0 }}"

      herusensort3shorted:
        friendly_name: "HeruSensorT3shorted"
        value_template: "{{ states('sensor.tpherusensorsshorted')|int(default=0)|bitwise_and(4) > 0 }}"

      herusensort4shorted:
        friendly_name: "HeruSensorT4shorted"
        value_template: "{{ states('sensor.tpherusensorsshorted')|int(default=0)|bitwise_and(8) > 0 }}"

      herusensort5shorted:
        friendly_name: "HeruSensorT5shorted"
        value_template: "{{ states('sensor.tpherusensorsshorted')|int(default=0)|bitwise_and(16) > 0 }}"

      herusensort6shorted:
        friendly_name: "HeruSensorT6shorted"
        value_template: "{{ states('sensor.tpherusensorsshorted')|int(default=0)|bitwise_and(32) > 0 }}"



      herufirealarmrelayoutput:
        friendly_name: "HeruFireAlarmRelayOutput"
        value_template: "{{ states('sensor.tpherualarmrelayoutput')|int(default=0)|bitwise_and(1) > 0 }}"

      herusensoropenrelayoutput:
        friendly_name: "HeruOensorOpenRelayOutput"
        value_template: "{{ states('sensor.tpherualarmrelayoutput')|int(default=0)|bitwise_and(2) > 0 }}"

      herusensorshortedrelayoutput:
        friendly_name: "HerusensorShortedRelayOutput"
        value_template: "{{ states('sensor.tpherualarmrelayoutput')|int(default=0)|bitwise_and(4) > 0 }}"

      heruoverheatprotectionrelayoutput:
        friendly_name: "HeruOverheatProtectionRelayOutput"
        value_template: "{{ states('sensor.tpherualarmrelayoutput')|int(default=0)|bitwise_and(8) > 0 }}"

      herufreezealarmrelayoutput:
        friendly_name: "HeruFreezeAlarmRelayOutput"
        value_template: "{{ states('sensor.tpherualarmrelayoutput')|int(default=0)|bitwise_and(16) > 0 }}"

      herusupplytemperaturelowrelayoutput:
        friendly_name: "HeruSupplyTemperatureLowRelayOutput"
        value_template: "{{ states('sensor.tpherualarmrelayoutput')|int(default=0)|bitwise_and(32) > 0 }}"

      herurotortemperaturelowrelayoutput:
        friendly_name: "HeruRotorTemperatureLowRelayOutput"
        value_template: "{{ states('sensor.tpherualarmrelayoutput')|int(default=0)|bitwise_and(64) > 0 }}"

      herufanfailurerelayoutput:
        friendly_name: "HeruFanFailureRelayOutput"
        value_template: "{{ states('sensor.tpherualarmrelayoutput')|int(default=0)|bitwise_and(128) > 0 }}"

      heruheatexchangerrelayoutput:
        friendly_name: "HeruHeatExchangerRelayOutput"
        value_template: "{{ states('sensor.tpherualarmrelayoutput')|int(default=0)|bitwise_and(256) > 0 }}"

      heruductpressuredeviationrelayoutput:
        friendly_name: "HeruDuctPressureDeviationRelayOutput"
        value_template: "{{ states('sensor.tpherualarmrelayoutput')|int(default=0)|bitwise_and(512) > 0 }}"

      herupumpalarmrelayoutput:
        friendly_name: "HeruPumpAlarmRelayOutput"
        value_template: "{{ states('sensor.tpherualarmrelayoutput')|int(default=0)|bitwise_and(1024) > 0 }}"

      herufilterrelayoutput:
        friendly_name: "HeruFilterRelayOutput"
        value_template: "{{ states('sensor.tpherualarmrelayoutput')|int(default=0)|bitwise_and(2048) > 0 }}"

      herufiltertimerrelayoutput:
        friendly_name: "HeruFilterTimerRelayOutput"
        value_template: "{{ states('sensor.tpherualarmrelayoutput')|int(default=0)|bitwise_and(4096) > 0 }}"


switch:
  - platform: template
    switches:
      heruoverpressuremode_template:
        value_template: "{{ states('switch.heruoverpressuremode') == 'on' }}"
        turn_on:
          - service: switch.turn_on
            data:
              entity_id: switch.heruoverpressuremode
          - service: homeassistant.update_entity
            data:
              entity_id: switch.heruoverpressuremode
        turn_off:
          - service: switch.turn_off
            data:
              entity_id: switch.heruoverpressuremode
          - service: homeassistant.update_entity
            data:
              entity_id: switch.heruoverpressuremode
        availability_template: "{% if not states('switch.heruoverpressuremode') == 'unavailable' %}true{% else %}false{% endif %}"
        icon_template: "{% if states('switch.heruoverpressuremode') == 'on' %}mdi:fireplace{% else %}mdi:fireplace-off{% endif %}" 

      heruboostmode_template:
        value_template: "{{ states('switch.heruboostmode') == 'on' }}"
        turn_on:
          - service: switch.turn_on
            data:
              entity_id: switch.heruboostmode
          - service: homeassistant.update_entity
            data:
              entity_id: switch.heruboostmode
        turn_off:
          - service: switch.turn_off
            data:
              entity_id: switch.heruboostmode
          - service: homeassistant.update_entity
            data:
              entity_id: switch.heruboostmode
        availability_template: "{% if not states('switch.heruboostmode') == 'unavailable' %}true{% else %}false{% endif %}"
        icon_template: "{% if states('switch.heruboostmode') == 'on' %}mdi:speedometer{% else %}mdi:speedometer-slow{% endif %}" 

      heruawaymode_template:
        value_template: "{{ states('switch.heruawaymode') == 'on' }}"
        turn_on:
          - service: switch.turn_on
            data:
              entity_id: switch.heruawaymode
          - service: homeassistant.update_entity
            data:
              entity_id: switch.heruawaymode
        turn_off:
          - service: switch.turn_off
            data:
              entity_id: switch.heruawaymode
          - service: homeassistant.update_entity
            data:
              entity_id: switch.heruawaymode
        availability_template: "{% if not states('switch.heruawaymode') == 'unavailable' %}true{% else %}false{% endif %}"
        icon_template: "{% if states('switch.heruawaymode') == 'on' %}mdi:briefcase-clock-outline{% else %}mdi:briefcase-outline{% endif %}" 

      herufirealarmrelayoutput:
        value_template: >
          {% set bit = 1 %}
          {{ states('sensor.tpherualarmrelayoutput') | int(default=0) | bitwise_and(2 ** (bit | int - 1)) > 0 }}
        turn_on:
          - service: script.write_register_turn_on_bit
            data:
              bit: 1
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput
        turn_off:
          - service: script.write_register_turn_off_bit
            data:
              bit: 1
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput

      herusensoropenrelayoutput:
        value_template: >
          {% set bit = 2 %}
          {{ states('sensor.tpherualarmrelayoutput') | int(default=0) | bitwise_and(2 ** (bit | int - 1)) > 0 }}
        turn_on:
          - service: script.write_register_turn_on_bit
            data:
              bit: 2
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput
        turn_off:
          - service: script.write_register_turn_off_bit
            data:
              bit: 2
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput

      herusensorshortedrelayoutput:
        value_template: >
          {% set bit = 3 %}
          {{ states('sensor.tpherualarmrelayoutput') | int(default=0) | bitwise_and(2 ** (bit | int - 1)) > 0 }}
        turn_on:
          - service: script.write_register_turn_on_bit
            data:
              bit: 3
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput
        turn_off:
          - service: script.write_register_turn_off_bit
            data:
              bit: 3
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput

      heruoverheatprotectionrelayoutput:
        value_template: >
          {% set bit = 4 %}
          {{ states('sensor.tpherualarmrelayoutput') | int(default=0) | bitwise_and(2 ** (bit | int - 1)) > 0 }}
        turn_on:
          - service: script.write_register_turn_on_bit
            data:
              bit: 4
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput
        turn_off:
          - service: script.write_register_turn_off_bit
            data:
              bit: 4
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput

      herufreezealarmrelayoutput:
        value_template: >
          {% set bit = 5 %}
          {{ states('sensor.tpherualarmrelayoutput') | int(default=0) | bitwise_and(2 ** (bit | int - 1)) > 0 }}
        turn_on:
          - service: script.write_register_turn_on_bit
            data:
              bit: 5
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput
        turn_off:
          - service: script.write_register_turn_off_bit
            data:
              bit: 5
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput

      herusupplytemperaturelowrelayoutput:
        value_template: >
          {% set bit = 6 %}
          {{ states('sensor.tpherualarmrelayoutput') | int(default=0) | bitwise_and(2 ** (bit | int - 1)) > 0 }}
        turn_on:
          - service: script.write_register_turn_on_bit
            data:
              bit: 6
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput
        turn_off:
          - service: script.write_register_turn_off_bit
            data:
              bit: 6
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput

      herurotortemperaturelowrelayoutput:
        value_template: >
          {% set bit = 7 %}
          {{ states('sensor.tpherualarmrelayoutput') | int(default=0) | bitwise_and(2 ** (bit | int - 1)) > 0 }}
        turn_on:
          - service: script.write_register_turn_on_bit
            data:
              bit: 7
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput
        turn_off:
          - service: script.write_register_turn_off_bit
            data:
              bit: 7
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput

      herufanfailurerelayoutput:
        value_template: >
          {% set bit = 8 %}
          {{ states('sensor.tpherualarmrelayoutput') | int(default=0) | bitwise_and(2 ** (bit | int - 1)) > 0 }}
        turn_on:
          - service: script.write_register_turn_on_bit
            data:
              bit: 8
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput
        turn_off:
          - service: script.write_register_turn_off_bit
            data:
              bit: 8
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput

      heruheatexchangerrelayoutput:
        value_template: >
          {% set bit = 9 %}
          {{ states('sensor.tpherualarmrelayoutput') | int(default=0) | bitwise_and(2 ** (bit | int - 1)) > 0 }}
        turn_on:
          - service: script.write_register_turn_on_bit
            data:
              bit: 9
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput
        turn_off:
          - service: script.write_register_turn_off_bit
            data:
              bit: 9
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput

      heruductpressuredeviationrelayoutput:
        value_template: >
          {% set bit = 10 %}
          {{ states('sensor.tpherualarmrelayoutput') | int(default=0) | bitwise_and(2 ** (bit | int - 1)) > 0 }}
        turn_on:
          - service: script.write_register_turn_on_bit
            data:
              bit: 10
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput
        turn_off:
          - service: script.write_register_turn_off_bit
            data:
              bit: 10
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput

      herupumpalarmrelayoutput:
        value_template: >
          {% set bit = 11 %}
          {{ states('sensor.tpherualarmrelayoutput') | int(default=0) | bitwise_and(2 ** (bit | int - 1)) > 0 }}
        turn_on:
          - service: script.write_register_turn_on_bit
            data:
              bit: 11
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput
        turn_off:
          - service: script.write_register_turn_off_bit
            data:
              bit: 11
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput

      herufilterrelayoutput:
        value_template: >
          {% set bit = 12 %}
          {{ states('sensor.tpherualarmrelayoutput') | int(default=0) | bitwise_and(2 ** (bit | int - 1)) > 0 }}
        turn_on:
          - service: script.write_register_turn_on_bit
            data:
              bit: 12
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput
        turn_off:
          - service: script.write_register_turn_off_bit
            data:
              bit: 12
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput

      herufiltertimerrelayoutput:
        value_template: >
          {% set bit = 13 %}
          {{ states('sensor.tpherualarmrelayoutput') | int(default=0) | bitwise_and(2 ** (bit | int - 1)) > 0 }}
        turn_on:
          - service: script.write_register_turn_on_bit
            data:
              bit: 13
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput
        turn_off:
          - service: script.write_register_turn_off_bit
            data:
              bit: 13
              hub: heru
              unit: 1
              address: 45
              sensor_value: sensor.tpherualarmrelayoutput


automation:
  - id: heru_room_temp
    alias: 'Heru rumstemperatur'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: sensor.inomhus_temperature
    condition: []
    action:
      - service: modbus.write_register
        data:
          hub: heru
          unit: 1
          address: 86
          value: "{{ (trigger.to_state.state | float(default=16.7) * 10 - 217) | int }}"
      - service: homeassistant.update_entity
        data:
          entity_id: sensor.heruroomtemp

  - id: heru_auto_adjust_supply_air_temp_offset
    alias: 'Heru autojustering offset tilluftstemp'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: sensor.herucurrentcoolingpower
    condition: []
    action:
      - service: modbus.write_register
        data:
          hub: heru
          unit: 1
          address: 85
          value: "{{ (trigger.to_state.state | float(default=0.0) * 0.196) | round(0) }}"

  - id: activate_electric_heater_if_supply_air_temp_below_6
    alias: 'Aktivera eleftervärmare om tilluft under 6 grader'
    initial_state: 'on'
    trigger:
      - platform: numeric_state
        entity_id: sensor.herusupplyairtemp
        below: 8
    condition:
      - condition: state
        entity_id: input_boolean.ftx_automatic_afterheater
        state: 'on'
    action:
      - service: switch.turn_on
        data:
          entity_id: switch.heruheaterenabled

  - id: deactivate_electric_heater_if_supply_air_temp_above_10
    alias: 'Avaktivera eleftervärmare om tilluft över 10 grader'
    initial_state: 'on'
    trigger:
      - platform: numeric_state
        entity_id: sensor.herusupplyairtemp
        above: 12
    condition:
      - condition: state
        entity_id: input_boolean.ftx_automatic_afterheater
        state: 'on'
    action:
      - service: switch.turn_off
        data:
          entity_id: switch.heruheaterenabled

  - id: heru_startup_1st_phase_notify
    alias: 'Notifiering vid Heru uppstartsfas 1'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: binary_sensor.herustartup1stphase
        to: 'on'
    condition: []
    action:
      - service: notify.erik
        data:
          message: 'FTX aggregat - uppstart 1:a fas' 

  - id: heru_startup_2st_phase_notify
    alias: 'Notifiering vid Heru uppstartsfas 2'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: binary_sensor.herustartup2stphase
        to: 'on'
    condition: []
    action:
      - service: notify.erik
        data:
          message: 'FTX aggregat - uppstart 2:a fas' 

  - id: notify_erik_if_heru_alarm_present
    alias: 'Notifiera Erik om Heru larmar'
    initial_state: 'on'
    trigger:
      - platform: event
        event_type: state_changed
    condition:
      - condition: template
        value_template: >
          {{ trigger.event.data.entity_id.startswith('binary_sensor.heru')
             and trigger.event.data.entity_id.endswith('alarm')
             and trigger.event.data.old_state.state != 'unavailable'
             and trigger.event.data.new_state.state != 'unavailable'
             and trigger.event.data.old_state is not none
             and trigger.event.data.new_state is not none }}
    action:
      - service: notify.erik
        data:
          message: "FTX alarm. {{ trigger.event.data.old_state.name }} has changed from {{ trigger.event.data.old_state.state }} to {{ trigger.event.data.new_state.state }}"

  - id: set_heru_supply_fan
    alias: 'Ställ in Östberg Heru tilluftfläkt'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: sensor.needs_driven_supply_fan_speed
      - platform: state
        entity_id: input_boolean.ftx_needs_driven
        from: 'off'
        to: 'on'
    condition:
      - condition: state
        entity_id: input_boolean.ftx_needs_driven
        state: 'on'
    action:
      - service: modbus.write_register
        data:
          hub: heru
          unit: 1
          address: 2
          value: "{{ states('sensor.needs_driven_supply_fan_speed') | int(default=59) }}"
      - service: homeassistant.update_entity
        data:
          entity_id: sensor.herucurrentsupplyfanpower
      - service: homeassistant.update_entity
        data:
          entity_id: sensor.herucurrentsupplyfanspeed

  - id: set_heru_exhaust_fan
    alias: 'Ställ in Östberg Heru frånluftfläkt'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: sensor.needs_driven_exhaust_fan_speed
      - platform: state
        entity_id: input_boolean.ftx_needs_driven
        from: 'off'
        to: 'on'
    condition:
      - condition: state
        entity_id: input_boolean.ftx_needs_driven
        state: 'on'
    action:
      - service: modbus.write_register
        data:
          hub: heru
          unit: 1
          address: 3
          value: "{{ states('sensor.needs_driven_exhaust_fan_speed') | int(default=65) }}"
      - service: homeassistant.update_entity
        data:
          entity_id: sensor.herucurrentexhaustfanpower
      - service: homeassistant.update_entity
        data:
          entity_id: sensor.herucurrentexhaustfanspeed

  - id: ftx_needs_driven_off
    alias: 'FTX behovsstyrd av'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: input_boolean.ftx_needs_driven
        from: 'on'
        to: 'off'
    condition: []
    action:
      - service: modbus.write_register
        data:
          hub: heru
          unit: 1
          address: 2
          value: 59 #Standardvärde i % för tilluftsfläkten enligt inställning av Anders Hellström på Optimal ventilation 
      - service: modbus.write_register
        data:
          hub: heru
          unit: 1
          address: 3
          value: 65 #Standardvärde i % för frånluftsfläkten enligt inställning av Anders Hellström på Optimal ventilation
      - service: homeassistant.update_entity
        data:
          entity_id: sensor.herucurrentsupplyfanpower
      - service: homeassistant.update_entity
        data:
          entity_id: sensor.herucurrentsupplyfanspeed
      - service: homeassistant.update_entity
        data:
          entity_id: sensor.herucurrentexhaustfanpower
      - service: homeassistant.update_entity
        data:
          entity_id: sensor.herucurrentexhaustfanspeed

  - id: set_heru_temp_eco
    alias: 'Ställ in FTX temp (ekonomi)'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: input_number.heru_temp_setpoint_economy
    condition: []
    action:
      - service: modbus.write_register
        data:
          hub: heru
          unit: 1
          address: 0
          value: "{{ trigger.to_state.state | int(default=15) }}"
      - service: homeassistant.update_entity
        data:
          entity_id: sensor.herutempsetpointeconomy
  - id: update_heru_temp_slider_eco
    alias: 'Uppdatera slider - FTX temp (ekonomi)'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: sensor.herutempsetpointeconomy
    condition: []
    action:
      - service: input_number.set_value
        data:
          entity_id: input_number.heru_temp_setpoint_economy
          value: "{{ trigger.to_state.state }}"

  - id: set_heru_temp
    alias: 'Ställ in FTX temp'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: input_number.heru_temp_setpoint
    condition: []
    action:
      - service: modbus.write_register
        data:
          hub: heru
          unit: 1
          address: 1
          value: "{{ trigger.to_state.state | int(default=23) }}"
      - service: homeassistant.update_entity
        data:
          entity_id: sensor.herutempsetpoint
  - id: update_heru_temp_slider
    alias: 'Uppdatera slider - FTX temp'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: sensor.herutempsetpoint
    condition: []
    action:
      - service: input_number.set_value
        data:
          entity_id: input_number.heru_temp_setpoint
          value: "{{ trigger.to_state.state }}"

  - id: set_heru_supply_fan_speed
    alias: 'Ställ in FTX fläkthastighet tilluft'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: input_number.heru_supply_fan_speed
    condition: []
    action:
      - service: modbus.write_register
        data:
          hub: heru
          unit: 1
          address: 2
          value: "{{ trigger.to_state.state | int(default=59) }}"
      - service: homeassistant.update_entity
        data:
          entity_id: sensor.herusupplyfanspeed
  - id: update_heru_supply_fan_speed_slider
    alias: 'Uppdatera slider - FTX fläkthastighet tilluft'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: sensor.herusupplyfanspeed
    condition: []
    action:
      - service: input_number.set_value
        data:
          entity_id: input_number.heru_supply_fan_speed
          value: "{{ trigger.to_state.state }}"

  - id: set_heru_exhaust_fan_speed
    alias: 'Ställ in FTX fläkthastighet frånluft'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: input_number.heru_exhaust_fan_speed
    condition: []
    action:
      - service: modbus.write_register
        data:
          hub: heru
          unit: 1
          address: 3
          value: "{{ trigger.to_state.state | int(default=65) }}"
      - service: homeassistant.update_entity
        data:
          entity_id: sensor.heruexhaustfanspeed
  - id: update_heru_exhaust_fan_speed_slider
    alias: 'Uppdatera slider - FTX fläkthastighet frånluft'
    initial_state: 'on'
    trigger:
      - platform: state
        entity_id: sensor.heruexhaustfanspeed
    condition: []
    action:
      - service: input_number.set_value
        data:
          entity_id: input_number.heru_exhaust_fan_speed
          value: "{{ trigger.to_state.state }}"