mqtt: sensor: # --- Mode (mapped int -> string) --- - name: "Pellet Stove Mode" state_topic: "pelletstove/state" value_template: > {% set m = value_json.mode | int %} {% set modes = { 0: 'OFF', 2: 'STANDBY', 4: 'PRIME', 5: 'PRIMING', 6: 'IGNITION', 8: 'WARMUP', 10: 'HIGH HEAT', 12: 'LOW HEAT', 14: 'COOLING', 20: 'ON', 21: 'ALARM', 22: 'ALARM COOLDOWN', 23: 'OFF COOLDOWN', 24: 'STANDBY COOLDOWN', 25: 'STBY COOLDOWN', 40: 'TEST' } %} {{ modes.get(m, 'UNKNOWN') }} # --- Temperatures --- - name: "Pellet Stove Flame Temp" state_topic: "pelletstove/state" value_template: "{{ value_json.tFlame }}" unit_of_measurement: "°C" - name: "Pellet Stove Flue Temp" state_topic: "pelletstove/state" value_template: "{{ value_json.tFlue }}" unit_of_measurement: "°C" - name: "Pellet Stove Feed Rate" state_topic: "pelletstove/state" value_template: "{{ value_json.feed }}" unit_of_measurement: "%" state_class: measurement template: - binary_sensor: - name: "Pellet Stove Steady-State Supervision Fault" unique_id: pellet_stove_steady_state_fault state: > {% set mode = states('sensor.pellet_stove_mode') %} {% set feed = states('sensor.pellet_stove_feed_rate') | float(0) %} {% set flame = states('sensor.pellet_stove_flame_temp') | float(0) %} {% set flue = states('sensor.pellet_stove_flue_temp') | float(0) %} {% set steady_modes = ['HIGH HEAT', 'LOW HEAT', 'ON'] %} {{ mode in steady_modes and ( (feed > 35 and flame < 200) or (flame < 200 and flue > 120) ) }} delay_on: "00:01:30" device_class: problem