Control MCZ Maestro pellet stove via HACore trough MQTT

That’s the next step here as well…
I’m planning on using a Xiaomi BLE Hygrothermograph as the sensor instead of the stove’s sensor.
When this arrives I will change the desired temperature based on the BLE sensor trough an automation rule. This way I can still let the stove use it’s internal pellet/ventilation management.

I’m using as well Xiaomi sensors though zigbee2mqtt, they work like a charm

Here’s my final config:

Everything works like a charm, I can share my YAML files if needed

1 Like

Nice!

As I only need an on/off switch and a way to send/receive temperature, my thermostat card will do just fine for now :slight_smile:
But it’s always interesting to see the yaml’s :slight_smile:

Wow! Great Job! can you share please?

1 Like

I’ve updated the page:

)

Here’s the YAML for the page:

  - title: ''
    path: poele
    icon: 'mdi:fire'
    badges: []
    cards:
      - type: horizontal-stack
        cards:
          - type: 'custom:button-card'
            entity: switch.poele_on_off
            color: 'rgb(255, 165, 0)'
            state:
              - value: 'off'
                color: 'rgb(128, 128, 128)'
          - type: 'custom:button-card'
            entity: switch.silence_on_off
            color: 'rgb(152,251,152)'
            state:
              - value: 'off'
                color: 'rgb(128, 128, 128)'
          - type: 'custom:button-card'
            entity: switch.chrono_on_off
            color: 'rgb(0, 255, 0)'
            state:
              - value: 'off'
                color: 'rgb(255, 0, 0)'
      - type: horizontal-stack
        cards:
          - type: 'custom:button-card'
            entity: switch.poele_p_1
            name: P1
            color: 'rgb(255, 165, 0)'
            state:
              - value: 'off'
                color: 'rgb(128, 128, 128)'
          - type: 'custom:button-card'
            entity: switch.poele_p_2
            name: P2
            color: 'rgb(255, 165, 0)'
            state:
              - value: 'off'
                color: 'rgb(128, 128, 128)'
          - type: 'custom:button-card'
            entity: switch.poele_p_3
            name: P3
            color: 'rgb(255, 165, 0)'
            state:
              - value: 'off'
                color: 'rgb(128, 128, 128)'
          - type: 'custom:button-card'
            entity: switch.poele_p_4
            name: P4
            color: 'rgb(255, 165, 0)'
            state:
              - value: 'off'
                color: 'rgb(128, 128, 128)'
          - type: 'custom:button-card'
            entity: switch.poele_p_5
            name: P5
            color: 'rgb(255, 165, 0)'
            state:
              - value: 'off'
                color: 'rgb(128, 128, 128)'
      - type: 'custom:scheduler-card'
        include:
          - switch.marche_arret_poele
          - switch.poele_on_off
        title: Calendrier
      - cards:
          - name: Ventilateur Ambiance
            type: 'custom:button-card'
          - cards:
              - type: 'custom:button-card'
                entity: switch.fan_1_0
                color: 'rgb(0, 255, 0)'
                name: '0'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_1_1
                color: 'rgb(0, 255, 0)'
                name: '1'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_1_2
                color: 'rgb(0, 255, 0)'
                name: '2'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_1_3
                color: 'rgb(0, 255, 0)'
                name: '3'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_1_4
                color: 'rgb(0, 255, 0)'
                name: '4'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_1_5
                color: 'rgb(0, 255, 0)'
                name: '5'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_1_auto
                color: 'rgb(0, 255, 0)'
                name: auto
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
            type: horizontal-stack
        type: vertical-stack
      - cards:
          - name: Ventilateur Salle à Manger
            type: 'custom:button-card'
          - cards:
              - type: 'custom:button-card'
                entity: switch.fan_2_0
                color: 'rgb(0, 255, 0)'
                name: '0'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_2_1
                color: 'rgb(0, 255, 0)'
                name: '1'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_2_2
                color: 'rgb(0, 255, 0)'
                name: '2'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_2_3
                color: 'rgb(0, 255, 0)'
                name: '3'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_2_4
                color: 'rgb(0, 255, 0)'
                name: '4'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_2_5
                color: 'rgb(0, 255, 0)'
                name: '5'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_2_auto
                color: 'rgb(0, 255, 0)'
                name: auto
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
            type: horizontal-stack
        type: vertical-stack
      - cards:
          - name: Ventilateur 2
            type: 'custom:button-card'
          - cards:
              - type: 'custom:button-card'
                entity: switch.fan_3_0
                color: 'rgb(0, 255, 0)'
                name: '0'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_3_1
                color: 'rgb(0, 255, 0)'
                name: '1'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_3_2
                color: 'rgb(0, 255, 0)'
                name: '2'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_3_3
                color: 'rgb(0, 255, 0)'
                name: '3'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_3_4
                color: 'rgb(0, 255, 0)'
                name: '4'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_3_5
                color: 'rgb(0, 255, 0)'
                name: '5'
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
              - type: 'custom:button-card'
                entity: switch.fan_3_auto
                color: 'rgb(0, 255, 0)'
                name: auto
                state:
                  - value: 'off'
                    color: 'rgb(255, 0, 0)'
            type: horizontal-stack
        type: vertical-stack

Here’s the sensors:

 - platform: mqtt
    name: "Mode"
    state_topic: "PUBmcz"
    value_template: "{{ value_json.Mode }}"

  - platform: mqtt
    name: "Etat du poele"
    state_topic: "PUBmcz"
    value_template: "{{ value_json['Etat du poêle'] }}"
    
  - platform: mqtt
    name: "Ventilateur Ambiance"
    state_topic: "PUBmcz"
    value_template: "{{ value_json['Etat du ventilateur d\\'ambiance'] }}"

  - platform: mqtt
    name: "Temperature Fumees"
    state_topic: "PUBmcz"
    unit_of_measurement: '°C'
    value_template: "{{ value_json['Température des fumées'] }}"
    
  - platform: mqtt
    name: "Ventilateur Fumees"
    state_topic: "PUBmcz"
    value_template: "{{ value_json['RPM - Ventilateur fummées'] }}"

  - platform: mqtt
    name: "Vis Sans Fin"
    state_topic: "PUBmcz"
    value_template: "{{ value_json['RPM - Vis sans fin - LIVE'] }}" 

  - platform: mqtt
    name: "Mode Chronotermostato"
    state_topic: "PUBmcz"
    value_template: "{{ value_json['Mode Chronotermostato'] }}" 

  - platform: mqtt
    name: "Température - Carte mère"
    state_topic: "PUBmcz"
    unit_of_measurement: '°C'
    value_template: "{{ value_json['TEMP - Carte mère'] }}"
    
  - platform: mqtt
    name: "Puissance Active"
    state_topic: "PUBmcz"
    value_template: "{{ value_json['Puissance Active'] }}"

  - platform: mqtt
    name: "Minutes avant extinction"
    state_topic: "PUBmcz"
    value_template: "{{ value_json['Minutes avant extinction'] }}"
    
  - platform: mqtt
    name: "Ventilateur 1"
    state_topic: "PUBmcz"
    value_template: "{{ value_json['Etat du ventilateur canalise 1'] }}"

  - platform: mqtt
    name: "Ventilateur 2"
    state_topic: "PUBmcz"
    value_template: "{{ value_json['Etat du ventilateur canalise 2'] }}"    
    
  - platform: mqtt
    name: "Mode Silence"
    state_topic: "PUBmcz"
    value_template: "{{ value_json['Mode Silence'] }}"    
    
  - platform: mqtt
    name: "Bougie"
    state_topic: "PUBmcz"
    value_template: "{{ value_json['Etat de la bougie'] }}"

And the switches:

# Switch Poele On Off

  - platform: template
    switches:
      poele_on_off:
        friendly_name: "Poêle"
        value_template: >- 
          {% if is_state('sensor.etat_du_poele', 'Eteint') %}
          off
          {% else %}
          on
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 34,1
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 34,40
        icon_template: >-
          {% if is_state('sensor.etat_du_poele', 'Eteint') %}
            mdi:fire-alert
          {% else %}
            mdi:fire
          {% endif %}

# Switch Chrono On Off
    
  - platform: template
    switches:
      chrono_on_off:
        friendly_name: "Mode Chrono"
        value_template: >- 
          {% if is_state('sensor.mode_chronotermostato', 'Marche') %}
          on
          {% elif is_state('sensor.mode_chronotermostato', 'Arrêt') %}
          off
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 1111,1
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 1111,40
        icon_template: >-
          {% if is_state('sensor.mode_chronotermostato', 'Marche') %}
            mdi:clock
          {% else %}
            mdi:clock-alert
          {% endif %}


# Switch Silence On Off
  - platform: template
    switches:
      silence_on_off:
        friendly_name: "Mode Silence"
        value_template: >- 
          {% if is_state('sensor.mode_silence', 'Marche') %}
          on
          {% elif is_state('sensor.mode_silence', 'Arrêt') %}
          off
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 45,1
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 45,0
        icon_template: >-
          {% if is_state('sensor.mode_silence', 'Marche') %}
            mdi:fan-off
          {% else %}
            mdi:fan
          {% endif %}
    
  - platform: mqtt
    unique_id: ecoonoff
    name: "Mode Eco"
    command_topic: "SUBmcz"
    payload_on: "41,1"
    payload_off: "41,0"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true    
    
    
  - platform: mqtt
    unique_id: ventilo1automatique
    name: "Ventilo 1 Auto"
    command_topic: "SUBmcz"
    payload_on: "37,6"
    payload_off: "37,6"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true    
    


    
  - platform: mqtt
    unique_id: Ventilo_1_0
    name: "Ventilo 1 0"
    command_topic: "SUBmcz"
    payload_on: "37,0"
    payload_off: "37,0"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_1_1
    name: "Ventilo 1 1"
    command_topic: "SUBmcz"
    payload_on: "37,1"
    payload_off: "37,1"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_1_2
    name: "Ventilo 1 2"
    command_topic: "SUBmcz"
    payload_on: "37,2"
    payload_off: "37,2"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_1_3
    name: "Ventilo 1 3"
    command_topic: "SUBmcz"
    payload_on: "37,3"
    payload_off: "37,3"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_1_4
    name: "Ventilo 1 4"
    command_topic: "SUBmcz"
    payload_on: "37,4"
    payload_off: "37,4"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_1_5
    name: "Ventilo 1 5"
    command_topic: "SUBmcz"
    payload_on: "37,5"
    payload_off: "37,5"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_1_Auto
    name: "Ventilo 1 Auto"
    command_topic: "SUBmcz"
    payload_on: "37,6"
    payload_off: "37,6"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true    
    
    
# Ventilo 2    
    
    
  - platform: mqtt
    unique_id: Ventilo_2_0
    name: "Ventilo 2 0"
    command_topic: "SUBmcz"
    payload_on: "38,0"
    payload_off: "38,0"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_2_1
    name: "Ventilo 2 1"
    command_topic: "SUBmcz"
    payload_on: "38,1"
    payload_off: "38,1"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_2_2
    name: "Ventilo 2 2"
    command_topic: "SUBmcz"
    payload_on: "38,2"
    payload_off: "38,2"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_2_3
    name: "Ventilo 2 3"
    command_topic: "SUBmcz"
    payload_on: "38,3"
    payload_off: "38,3"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_2_4
    name: "Ventilo 2 4"
    command_topic: "SUBmcz"
    payload_on: "38,4"
    payload_off: "38,4"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_2_5
    name: "Ventilo 2 5"
    command_topic: "SUBmcz"
    payload_on: "38,5"
    payload_off: "38,5"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_2_Auto
    name: "Ventilo 2 Auto"
    command_topic: "SUBmcz"
    payload_on: "38,6"
    payload_off: "38,6"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true   


    # Ventilo 3
    
  - platform: mqtt
    unique_id: Ventilo_3_0
    name: "Ventilo 3 0"
    command_topic: "SUBmcz"
    payload_on: "39,0"
    payload_off: "39,0"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_3_1
    name: "Ventilo 3 1"
    command_topic: "SUBmcz"
    payload_on: "39,1"
    payload_off: "39,1"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_3_2
    name: "Ventilo 3 2"
    command_topic: "SUBmcz"
    payload_on: "39,2"
    payload_off: "39,2"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_3_3
    name: "Ventilo 3 3"
    command_topic: "SUBmcz"
    payload_on: "39,3"
    payload_off: "39,3"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_3_4
    name: "Ventilo 3 4"
    command_topic: "SUBmcz"
    payload_on: "39,4"
    payload_off: "39,4"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_3_5
    name: "Ventilo 3 5"
    command_topic: "SUBmcz"
    payload_on: "39,5"
    payload_off: "39,5"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

  - platform: mqtt
    unique_id: Ventilo_3_Auto
    name: "Ventilo 3 Auto"
    command_topic: "SUBmcz"
    payload_on: "39,6"
    payload_off: "39,6"
    state_on: "ON"
    state_off: "OFF"
    optimistic: false
    qos: 0
    retain: true

# Switch Poele Puissance 1

  - platform: template
    switches:
      poele_p_1:
        friendly_name: "Poêle Puissance 1"
        value_template: >- 
          {% if is_state('sensor.etat_du_poele', 'Puissance 1') %}
          on
          {% else %}
          off
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 36,1
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 36,1
        icon_template: >-
          {% if is_state('sensor.etat_du_poele', 'Puissance 1') %}
            mdi:fire
          {% else %}
            mdi:fire-alert
          {% endif %}

# Switch Poele Puissance 2

  - platform: template
    switches:
      poele_p_2:
        friendly_name: "Poêle Puissance 2"
        value_template: >- 
          {% if is_state('sensor.etat_du_poele', 'Puissance 2') %}
          on
          {% else %}
          off
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 36,2
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 36,2
        icon_template: >-
          {% if is_state('sensor.etat_du_poele', 'Puissance 2') %}
            mdi:fire
          {% else %}
            mdi:fire-alert
          {% endif %}

# Switch Poele Puissance 3

  - platform: template
    switches:
      poele_p_3:
        friendly_name: "Poêle Puissance 3"
        value_template: >- 
          {% if is_state('sensor.etat_du_poele', 'Puissance 3') %}
          on
          {% else %}
          off
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 36,3
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 36,3
        icon_template: >-
          {% if is_state('sensor.etat_du_poele', 'Puissance 3') %}
            mdi:fire
          {% else %}
            mdi:fire-alert
          {% endif %}

# Switch Poele Puissance 4

  - platform: template
    switches:
      poele_p_4:
        friendly_name: "Poêle Puissance 4"
        value_template: >- 
          {% if is_state('sensor.etat_du_poele', 'Puissance 4') %}
          on
          {% else %}
          off
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 36,4
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 36,4
        icon_template: >-
          {% if is_state('sensor.etat_du_poele', 'Puissance 4') %}
            mdi:fire
          {% else %}
            mdi:fire-alert
          {% endif %}

# Switch Poele Puissance 5

  - platform: template
    switches:
      poele_p_5:
        friendly_name: "Poêle Puissance5"
        value_template: >- 
          {% if is_state('sensor.etat_du_poele', 'Puissance 5') %}
          on
          {% else %}
          off
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 36,5
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 36,5
        icon_template: >-
          {% if is_state('sensor.etat_du_poele', 'Puissance 5') %}
            mdi:fire
          {% else %}
            mdi:fire-alert
          {% endif %}

Switches for Fan I paste only the 1st one, copy and paste for the other 2

# Switch Ventilo Principal Auto
  - platform: template
    switches:
      fan_1_auto:
        friendly_name: "Fan 1 Auto"
        value_template: >- 
          {% if is_state('sensor.ventilateur_ambiance', 'Automatique') %}
          on
          {% else %}
          off
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 37,6
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 37,6
        icon_template: >-
          {% if is_state('sensor.ventilateur_ambiance', 'Automatique') %}
            mdi:fan
          {% else %}
            mdi:fan-off
          {% endif %}

# Switch Ventilo Principal 0
  - platform: template
    switches:
      fan_1_0:
        friendly_name: "Fan 1 0"
        value_template: >- 
          {% if is_state('sensor.ventilateur_ambiance', 'Désactivé') %}
          on
          {% else %}
          off
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 37,0
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 37,0
        icon_template: >-
          {% if is_state('sensor.ventilateur_ambiance', 'Désactivé') %}
            mdi:fan
          {% else %}
            mdi:fan-off
          {% endif %}


# Switch Ventilo Principal 1
  - platform: template
    switches:
      fan_1_1:
        friendly_name: "Fan 1 1"
        value_template: >- 
          {% if is_state('sensor.ventilateur_ambiance', 'Niveau 1') %}
          on
          {% else %}
          off
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 37,1
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 37,1
        icon_template: >-
          {% if is_state('sensor.ventilateur_ambiance', 'Niveau 1') %}
            mdi:fan
          {% else %}
            mdi:fan-off
          {% endif %}


# Switch Ventilo Principal 2
  - platform: template
    switches:
      fan_1_2:
        friendly_name: "Fan 1 2"
        value_template: >- 
          {% if is_state('sensor.ventilateur_ambiance', 'Niveau 2') %}
          on
          {% else %}
          off
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 37,2
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 37,2
        icon_template: >-
          {% if is_state('sensor.ventilateur_ambiance', 'Niveau 2') %}
            mdi:fan
          {% else %}
            mdi:fan-off
          {% endif %}


# Switch Ventilo Principal 3
  - platform: template
    switches:
      fan_1_3:
        friendly_name: "Fan 1 3"
        value_template: >- 
          {% if is_state('sensor.ventilateur_ambiance', 'Niveau 3') %}
          on
          {% else %}
          off
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 37,3
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 37,3
        icon_template: >-
          {% if is_state('sensor.ventilateur_ambiance', 'Niveau 3') %}
            mdi:fan
          {% else %}
            mdi:fan-off
          {% endif %}


# Switch Ventilo Principal 4
  - platform: template
    switches:
      fan_1_4:
        friendly_name: "Fan 1 4"
        value_template: >- 
          {% if is_state('sensor.ventilateur_ambiance', 'Niveau 4') %}
          on
          {% else %}
          off
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 37,4
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 37,4
        icon_template: >-
          {% if is_state('sensor.ventilateur_ambiance', 'Niveau 4') %}
            mdi:fan
          {% else %}
            mdi:fan-off
          {% endif %}


# Switch Ventilo Principal 5
  - platform: template
    switches:
      fan_1_5:
        friendly_name: "Fan 1 5"
        value_template: >- 
          {% if is_state('sensor.ventilateur_ambiance', 'Niveau 5') %}
          on
          {% else %}
          off
          {% endif %}
        turn_on:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 37,5
        turn_off:
          service: mqtt.publish
          data:
            topic: SUBmcz
            payload: 37,5
        icon_template: >-
          {% if is_state('sensor.ventilateur_ambiance', 'Niveau 5') %}
            mdi:fan
          {% else %}
            mdi:fan-off
          {% endif %}
1 Like

Hello,

and thanks a lot for your shares. I just bought a MCZ stove, and i really want to control it with Home Assistant. I’m running with Hassio on RPI4 and i’am intersted to know how you received MQTT events from your stove ?

Thanks a lot.

1 Like

For me it’s done using this setup on a seperate pi:

Hello,

I’ve used a seperate Pi to connect to the MCZ servers. I’ve tried connecting to the stove directly but, the connection was too unstable.

I’ve used this package: https://github.com/pipolaq/maestro

Very nice project @Zeta38090! As I tend to buy a stove, that works the way you automated it, may i ask you what particular stove you´ve bought? And as I see it, the MCZ devices tend to have had addon wifi modules in different versions, maybe also the particular WiFi Module?

Other Hand: Do you or does anyone have an idea, if the MCZ devices always work via mqtt?

Thanks and regards,

Jakob

Hello,

I’ve got a MCZ Philo 14kW, with integrated wifi. Most of the new ones have integrated wifi I guess nowdays.

Nicolas

Hi Zeta38090,
can you post a complete howto? That would help me a lot, unfortunately I just can’t get it to work :frowning:

Sure, I’ll do that as soon as I can promise :slight_smile: Gimme a couple of days

3 Likes

Thanks very much :slight_smile:

Hi - Just checking if you’d found the time to write a HowTo… ?

Hello :slight_smile:

Sorry for the long delay.

  • connect your stove through wifi to the MCZ servers, to be able to control it through their app.
  • On a another RPI (not the Hassio one), install this: https://github.com/pipolaq/maestro. Read all the requirements
  • modify config.py with your own MQTT info, and maestro.py, with your own serial and MAC
  • start the program. If you have a windows PC, you can check the MQTT messages using a free mqtt sniffer.
  • When everything is up and running, configure MQTT in Hassio.
  • Add the sensors I’ve listed on Jan 18 (Control MCZ Maestro pellet stove via HACore trough MQTT - #28 by Zeta38090), and restart Hassio.

Everything should be OK, if not, or if i’m not clear do not hesitate

2 Likes

For those who would be interested, I’ve created a small HA addon that embeds the python scripts from Chibald and Anthony-55 : ha-addons/maestro_gateway at main · SebLz/ha-addons · GitHub

2 Likes

Hello

Why install on a another RPI and not on a HASS ?

Hello,

You need to run a python script 24/7, unsure you can do that on Hassio. If you have Hassio on top of a Raspbian OS, yes you can.

Nicolas

You need to run a python script 24/7, unsure you can do that on Hassio

This is what my addon is doing, no problem with that