HWAM SmartControl wood burning stove - Custom Component

Recently, a friend of mine bought a HWAM stove with SmartControl (http://www.hwam.com/). The stove connects to your wifi network and can be managed through an app on your phone, notifying you when it needs new wood etc.
We thought it would be nice to be able to control and monitor the stove from Home Assistant. This way, it would be possible to automate the control of the stove and extend the options for the refill notifications.
By now, we consider the custom component finished enough to be published here.

At the moment, there is no platform which reflects the exact options this kind of device needs. Its most basic control option is the “burn level”, which can be set from 0 to 5 to have some control over the intensity of the heat the stove gives off. Then there are the various sensors in the stove like stove temperature, room temperature and oxygen level.
We decided that the best way to represent the stove would be through a fan entity. When switched on, the stove will be set to “Ignition” mode and is ready to be lit. The fan “speeds” will control the burn level.
Apart from this, you can specify a list of monitored variables to be added as sensors for all other parameters the stove exposes. Finally, there are some services which control the way the stove behaves.

You can find the custom component at https://github.com/mvn23/hwam_stove
All feedback is of course appreciated.

2 Likes

Some usage examples for the hwam_stove component:

A template sensor as a combination of different sensors:

stove_sensor: 
 friendly_name: Hwam Stove
  icon_template: >
    {%- set phase = states.sensor.phase_livingroom.state %}
    {%- set refuel = states.binary_sensor.refill_alarm_livingroom.state %}
    {%- if phase == 'Burn' %}
      mdi:fire
    {%- elif phase == 'Standby' %}
      mdi:power
    {%- elif phase == 'Ignition' %}
      mdi:circle-outline
    {%- elif refuel == 'on' %}
      mdi:autorenew
    {%- else -%}
      mdi:blur
    {%- endif %}
  value_template: >
    {%- set phase = states.sensor.phase_livingroom.state %}
    {%- set temp = states.sensor.stove_temperature_livingroom.state %}
    {%- set timer = states.sensor.time_to_new_firewood_livingroom.state %}
    {%- set refuel = states.binary_sensor.refill_alarm_livingroom.state %}
    {%- if phase == 'Burn' %}
      {{ temp }} °C
    {%- elif phase == 'Standby' %}
      Standby
    {%- elif phase == 'Ignition' %}
      Start
    {%- elif refuel == 'on' %}
      Refuel!
    {%- else -%}
      {{ timer }}
    {%- endif %}

A lovelace card to combine the template sensor with an input_boolean to set the burn level.

  - cards:
      - entity: sensor.stove_sensor
        graph: none
        type: sensor
      - entities:
          - entity: input_select.burn_level
        show_header_toggle: false
        type: entities
    type: 'custom:vertical-stack-in-card'

Looks like:

card

The icon represents the burn phase of the stove. The sensor value is the most useful data for the current burn phase.

Vertical stack in card can be found here.

Have fun!