Hello!
I am trying already for weeks to set up Mill heater with HA. It seams that I am passing everything that is needed to Cloud, but still heater switched to Heating and then quite fast to Idle. I check in app latter and see that Mill has not consumed any power and as well room temperature is not increasing. I have made Mill heater independent and its still not working. I am really stuck on this matter. As cold weather is closing in I am worried that i will not solve this with official Mill integration.
I have made quite detailed automation with multiple steps and automation dose not have any error. Only issue is with heater.
Do i miss some important actions in automation to turn heater on?
Dose anybody has working integration with Mill Gen3 oil heater?
My automation:
- id: heater_start
alias: "Heater Start (cheap slots + safeguards)"
mode: single
trigger:
- platform: numeric_state
entity_id: climate.heater
attribute: current_temperature
below: input_number.heater_start_temperature
- platform: state
entity_id:
- binary_sensor.smart_heating_allowed
- input_boolean.manual_heating_override
condition:
- condition: state
entity_id: binary_sensor.smart_heating_allowed
state: "on"
- condition: or
conditions:
- condition: state
entity_id: binary_sensor.heating_slot_active_aio
state: "on"
- condition: state
entity_id: input_boolean.manual_heating_override
state: "on"
- condition: template
value_template: >
{{ states('sensor.current_electricity_price') | float(0) <=
states('input_number.price_limit_heating') | float(0) }}
- condition: template
value_template: >
{{ state_attr('climate.heater','current_temperature') | float(0) <=
states('input_number.heater_start_temperature') | float(0) }}
- condition: template
value_template: >
{% set s = states.climate.heater %}
{% set last = s.last_changed %}
{% set seconds = (now() - last).total_seconds() %}
{% set is_recent_off = s.state == 'off' and seconds < 300 %}
{{ not is_recent_off }}
- condition: template
value_template: >
{{ state_attr('climate.heater','hvac_action') != 'heating' }}
- condition: template
value_template: >
{{ states('climate.heater') not in ['unavailable', 'unknown'] }}
action:
- service: climate.set_hvac_mode
target:
entity_id: climate.heater
data:
hvac_mode: "heat"
- delay: "00:00:02"
- service: climate.set_temperature
target:
entity_id: climate.heater
data:
temperature: "{{ states('input_number.heater_stop_temperature') | float(0) + 0.1 }}"
- choose:
- conditions:
- condition: template
value_template: >
{{ state_attr('climate.heater','hvac_action') != 'heating' }}
sequence:
- service: climate.set_temperature
target:
entity_id: climate.heater
data:
temperature: "{{ states('input_number.heater_stop_temperature') | float(0) + 0.5 }}"
- service: system_log.write
data:
message: "Mill heater fallback triggered — increased temp slightly."
level: warning
- service: system_log.write
data:
message: >
Heater mode: {{ states('climate.heater') }} /
Target temp: {{ state_attr('climate.heater','temperature') }} /
HVAC action: {{ state_attr('climate.heater','hvac_action') }}
level: info
- service: logbook.log
data:
name: Heater Triggered
message: >
Heater started at {{ now().strftime('%H:%M') }}.
Heater temp: {{ state_attr('climate.heater','current_temperature') }}°C /
Start threshold: {{ states('input_number.heater_start_temperature') }}°C /
Stop threshold: {{ states('input_number.heater_stop_temperature') }}°C /
Override: {{ states('input_boolean.manual_heating_override') }} /
AIO slot: {{ states('binary_sensor.heating_slot_active_aio') }}