Mcz Maestro Philo 14 integration, mini tutorial

Hi, I want to share my experience. I hope this will be useful for someone

I have Home assistant 2021.11.4 (Core) installed in a RPi3 box, but the configuration should work on this version and greater.
In my setup I use the lan connection, no cloud.

Requirements:

  • rpi with wifi interface (in my case I’m using a dongle) → wlan1

Step1:
Wlan interface must be connected to maestro hotspot (ssid is usallually named MCZ-XXXXXXX). For this operation edit wpa_supplicant.conf file

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

and add ssid e password from the label attached to the stove, ex:

network={
   ssid="MCZ-XXXXXX"
   psk="SecretPassWord"
}

Step2: Install Chibald library (thank you Chibald for this library)

Follow the instruction from the github page.

Step3: Define sensors as follow

# sensori stufa per Mcz mqtt sensor
# sensore profile generico
- platform: mqtt
  name: "Profile Mcz mqtt sensor"
  state_topic: "Maestro/Profile"

# mcz sensori ventole
- platform: mqtt
  name: "Mcz Canalizzazione 1"
  state_topic: "Maestro/DuctedFan1"

- platform: mqtt
  name: "Mcz Canalizzazione 2"
  state_topic: "Maestro/DuctedFan2"

- platform: mqtt
  name: "Mcz Ventilazione ambiente"
  state_topic: "Maestro/Fan_State"

- platform: mqtt
  name: "Mcz Potenza"
  state_topic: "Maestro/Power_Level"



# stato stufa mcz
- platform: mqtt
  name: Mcz ingresso stato
  state_topic: Maestro/Stove_State
  value_template: >-
    {% set mapper = {
      '0' : 'Spento',
      '1' : 'Controllo della stufa freddo / caldo',
      '2' : 'Clean freddo',
      '3' : 'Load freddo',
      '4' : 'Start 1 freddo',
      '5' : 'Start 2 freddo',
      '6' : 'Clean caldo',
      '7' : 'Load caldo',
      '8' : 'Start 1 caldo',
      '9' : 'Start 2 caldo',
      '10' : 'Stabilizzazione',
      '11' : 'Potenza 1',
      '12' : 'Potenza 2',
      '13' : 'Potenza 3',
      '14' : 'Potenza 4',
      '15' : 'Potenza 5',
      '30' : 'Mode diagnostica',
      '31' : 'Walking',
      '40' : 'Spegnimento',
      '41' : 'Raffreddamento in corso',
      '42' : 'Pulizia a basso livello p.',
      '43' : 'Pulizia elevata p.',
      '44' : 'Sblocco della vite senza fine',
      '45' : 'AUTO ECO',
      '46' : 'Standby',
      '48' : 'Diagnostica',
      '49' : 'Caricamento vite senza fine',
      '50' : 'Errore A01 - La fiamma non si accende',
      '51' : 'Errore A02 - Spegnimento anomalo del fuoco',
      '52' : 'Errore A03 - Temperatura serbatoio pellets supera soglia',
      '53' : 'Errore A04 - Temperatura fumi troppo alta',
      '54' : 'Errore A05 - Ostruzione canna fumaria',
      '55' : 'Errore A06 - Scarsa circolazione',
      '56' : 'Errore A09 - Sonda fumi guasta',
      '57' : 'Errore A11 - Guasto alimentazione pellet',
      '58' : 'Errore A13 - Temperatura centralina elevata',
      '59' : 'Errore A14 - Guasto al sensore porta aria',
      '60' : 'Errore A18 - Temperatura acqua troppo alta',
      '61' : 'Errore A19 - Guasto al sensore della temperatura acqua',
      '62' : 'Errore A20 - Guasto sonda ausiliaria',
      '63' : 'Errore A21 - Allarme pressostato',
      '64' : 'Errore A22 - Guasto sonda ambiente',
      '65' : 'Errore A23 - Difetto di chiusura del braciere',
      '66' : 'Errore A12 - Guasto al controller del motoriduttore',
      '67' : 'Errore A17 - Vite inceppata',
      '69' : 'Attenzione, allarme sicurezza' } %}
    {% set state = (value | string) %}
    {{ mapper[state] if state in mapper else 'Unknown' }}

Step4: Define switches as follow

#switch vari stufa Mcz

- platform: mqtt
  name: "Silent Mcz mode" # Choose an easy-to-recognize name
  state_topic: "Maestro/Silent_Mode" # Topic to read the current state
  command_topic: "Maestro/Command/Silent_Mode" # Topic to publish commands
  qos: 1
  payload_on: 1 # or "on", depending on your MQTT device
  payload_off: 0 # or "off", depending on your MQTT device
  retain: false # or false if you want to wait for changes
  icon: mdi:fan-off

# Switch Ventilazione frontale
- platform: template
  switches:
    fan_front_auto:
      friendly_name: "Fan Front Auto"
      value_template: >- 
        {% if is_state('sensor.mcz_ventilazione_ambiente', '6') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Fan_State
          payload: 6
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Fan_State
          payload: 6
      icon_template: >-
        {% if is_state('sensor.mcz_ventilazione_ambiente', '6') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}

# Switch Ventilazione frontale 0
- platform: template
  switches:
    fan_front_0:
      friendly_name: "Fan Front 0"
      value_template: >- 
        {% if is_state('sensor.mcz_ventilazione_ambiente', '0') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Fan_State
          payload: 0
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Fan_State
          payload: 0
      icon_template: >-
        {% if is_state('sensor.mcz_ventilazione_ambiente', '0') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Ventilazione frontale 1
- platform: template
  switches:
    fan_front_1:
      friendly_name: "Fan Front 1"
      value_template: >- 
        {% if is_state('sensor.mcz_ventilazione_ambiente', '1') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Fan_State
          payload: 1
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Fan_State
          payload: 1
      icon_template: >-
        {% if is_state('sensor.mcz_ventilazione_ambiente', '1') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Ventilazione frontale 2
- platform: template
  switches:
    fan_front_2:
      friendly_name: "Fan Front 2"
      value_template: >- 
        {% if is_state('sensor.mcz_ventilazione_ambiente', '2') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Fan_State
          payload: 2
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Fan_State
          payload: 2
      icon_template: >-
        {% if is_state('sensor.mcz_ventilazione_ambiente', '2') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Ventilazione frontale 3
- platform: template
  switches:
    fan_front_3:
      friendly_name: "Fan Front 3"
      value_template: >- 
        {% if is_state('sensor.mcz_ventilazione_ambiente', '3') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Fan_State
          payload: 3
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Fan_State
          payload: 3
      icon_template: >-
        {% if is_state('sensor.mcz_ventilazione_ambiente', '3') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Ventilazione frontale 4
- platform: template
  switches:
    fan_front_4:
      friendly_name: "Fan Front 4"
      value_template: >- 
        {% if is_state('sensor.mcz_ventilazione_ambiente', '4') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Fan_State
          payload: 4
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Fan_State
          payload: 4
      icon_template: >-
        {% if is_state('sensor.mcz_ventilazione_ambiente', '4') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Ventilazione frontale
- platform: template
  switches:
    fan_front_5:
      friendly_name: "Fan Front 5"
      value_template: >- 
        {% if is_state('sensor.mcz_ventilazione_ambiente', '5') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Fan_State
          payload: 5
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Fan_State
          payload: 5
      icon_template: >-
        {% if is_state('sensor.mcz_ventilazione_ambiente', '5') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}

# Switch Canalizzazione 1
- platform: template
  switches:
    fan_1_auto:
      friendly_name: "Fan 1 Auto"
      value_template: >- 
        {% if is_state('sensor.mcz_canalizzazione_1', '6') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan1
          payload: 6
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan1
          payload: 6
      icon_template: >-
        {% if is_state('sensor.mcz_canalizzazione_1', '6') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}

# Switch Canalizzazione 1 0
- platform: template
  switches:
    fan_1_0:
      friendly_name: "Fan 1 0"
      value_template: >- 
        {% if is_state('sensor.mcz_canalizzazione_1', '0') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan1
          payload: 0
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan1
          payload: 0
      icon_template: >-
        {% if is_state('sensor.mcz_canalizzazione_1', '0') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Canalizzazione 1 1
- platform: template
  switches:
    fan_1_1:
      friendly_name: "Fan 1 1"
      value_template: >- 
        {% if is_state('sensor.mcz_canalizzazione_1', '1') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan1
          payload: 1
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan1
          payload: 1
      icon_template: >-
        {% if is_state('sensor.mcz_canalizzazione_1', '1') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Canalizzazione 1 2
- platform: template
  switches:
    fan_1_2:
      friendly_name: "Fan 1 2"
      value_template: >- 
        {% if is_state('sensor.mcz_canalizzazione_1', '2') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan1
          payload: 2
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan1
          payload: 2
      icon_template: >-
        {% if is_state('sensor.mcz_canalizzazione_1', '2') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Canalizzazione 1 3
- platform: template
  switches:
    fan_1_3:
      friendly_name: "Fan 1 3"
      value_template: >- 
        {% if is_state('sensor.mcz_canalizzazione_1', '3') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan1
          payload: 3
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan1
          payload: 3
      icon_template: >-
        {% if is_state('sensor.mcz_canalizzazione_1', '3') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Canalizzazione 1 4
- platform: template
  switches:
    fan_1_4:
      friendly_name: "Fan 1 4"
      value_template: >- 
        {% if is_state('sensor.mcz_canalizzazione_1', '4') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan1
          payload: 4
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan1
          payload: 4
      icon_template: >-
        {% if is_state('sensor.mcz_canalizzazione_1', '4') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Canalizzazione 1 5
- platform: template
  switches:
    fan_1_5:
      friendly_name: "Fan 1 5"
      value_template: >- 
        {% if is_state('sensor.mcz_canalizzazione_1', '5') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan1
          payload: 5
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan1
          payload: 5
      icon_template: >-
        {% if is_state('sensor.mcz_canalizzazione_1', '5') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Canalizzazione 2
- platform: template
  switches:
    fan_2_auto:
      friendly_name: "Fan 2 Auto"
      value_template: >- 
        {% if is_state('sensor.mcz_canalizzazione_2', '6') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan2
          payload: 6
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan2
          payload: 6
      icon_template: >-
        {% if is_state('sensor.mcz_canalizzazione_2', '6') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}

# Switch Canalizzazione 2 0
- platform: template
  switches:
    fan_2_0:
      friendly_name: "Fan 2 0"
      value_template: >- 
        {% if is_state('sensor.mcz_canalizzazione_2', '0') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan2
          payload: 0
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan2
          payload: 0
      icon_template: >-
        {% if is_state('sensor.mcz_canalizzazione_2', '0') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Canalizzazione 2 1
- platform: template
  switches:
    fan_2_1:
      friendly_name: "Fan 2 1"
      value_template: >- 
        {% if is_state('sensor.mcz_canalizzazione_2', '1') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan2
          payload: 1
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan2
          payload: 1
      icon_template: >-
        {% if is_state('sensor.mcz_canalizzazione_2', '1') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Canalizzazione 2 2
- platform: template
  switches:
    fan_2_2:
      friendly_name: "Fan 2 2"
      value_template: >- 
        {% if is_state('sensor.mcz_canalizzazione_2', '2') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan2
          payload: 2
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan2
          payload: 2
      icon_template: >-
        {% if is_state('sensor.mcz_canalizzazione_2', '2') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Canalizzazione 2 3
- platform: template
  switches:
    fan_2_3:
      friendly_name: "Fan 2 3"
      value_template: >- 
        {% if is_state('sensor.mcz_canalizzazione_2', '3') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan2
          payload: 3
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan2
          payload: 3
      icon_template: >-
        {% if is_state('sensor.mcz_canalizzazione_2', '3') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Canalizzazione 2 4
- platform: template
  switches:
    fan_2_4:
      friendly_name: "Fan 2 4"
      value_template: >- 
        {% if is_state('sensor.mcz_canalizzazione_2', '4') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan2
          payload: 4
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan2
          payload: 4
      icon_template: >-
        {% if is_state('sensor.mcz_canalizzazione_2', '4') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch Canalizzazione 2 5
- platform: template
  switches:
    fan_2_5:
      friendly_name: "Fan 2 5"
      value_template: >- 
        {% if is_state('sensor.mcz_canalizzazione_2', '5') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan2
          payload: 5
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/DuctedFan2
          payload: 5
      icon_template: >-
        {% if is_state('sensor.mcz_canalizzazione_2', '5') %}
          mdi:fan
        {% else %}
          mdi:fan-off
        {% endif %}


# Switch profili di lavoro
#
# Switch Profilo Stufa Manuale
- platform: template
  switches:
    profile_mode_manual:
      friendly_name: "Manuale"
      value_template: >- 
        {% if is_state('sensor.profile_mcz_mqtt_sensor', '0') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Profile
          payload: 0
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Profile
          payload: 0
      icon_template: >-
        {% if is_state('sensor.profile_mcz_mqtt_sensor', '0') %}
          mdi:hand-back-left
        {% else %}
          mdi:hand-back-left-outline
        {% endif %}

# Switch Profilo Stufa Dynamic
- platform: template
  switches:
    profile_mode_dynamic:
      friendly_name: "Dynamic"
      value_template: >- 
        {% if is_state('sensor.profile_mcz_mqtt_sensor', '1') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Profile
          payload: 1
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Profile
          payload: 1
      icon_template: >-
        {% if is_state('sensor.profile_mcz_mqtt_sensor', '1') %}
          mdi:fire-circle
        {% else %}
          mdi:fire
        {% endif %}


# Switch Profilo Stufa Night
- platform: template
  switches:
    profile_mode_night:
      friendly_name: "Night"
      value_template: >- 
        {% if is_state('sensor.profile_mcz_mqtt_sensor', '2') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Profile
          payload: 2
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Profile
          payload: 2
      icon_template: >-
        {% if is_state('sensor.profile_mcz_mqtt_sensor', '2') %}
          mdi:moon-waning-crescent
        {% else %}
          mdi:weather-night
        {% endif %}


# Switch Profilo Stufa Comfort
- platform: template
  switches:
    profile_mode_comfort:
      friendly_name: "Comfort"
      value_template: >- 
        {% if is_state('sensor.profile_mcz_mqtt_sensor', '3') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Profile
          payload: 3
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Profile
          payload: 3
      icon_template: >-
        {% if is_state('sensor.profile_mcz_mqtt_sensor', '3') %}
          mdi:home-circle
        {% else %}
          mdi:home-circle-outline
        {% endif %}


# Switch Profilo Stufa Power
- platform: template
  switches:
    profile_mode_power:
      friendly_name: "Power"
      value_template: >- 
        {% if is_state('sensor.profile_mcz_mqtt_sensor', '4') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Profile
          payload: 4
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Profile
          payload: 4
      icon_template: >-
        {% if is_state('sensor.profile_mcz_mqtt_sensor', '4') %}
          mdi:chart-box
        {% else %}
          mdi:chart-box-outline
        {% endif %}



# Switch Potenza 1 1
- platform: template
  switches:
    potenza_1_1:
      friendly_name: "potenza 1 1"
      value_template: >- 
        {% if is_state('sensor.mcz_potenza', '11') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Power_Level
          payload: 1
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Power_Level
          payload: 1
      icon_template: >-
        {% if is_state('sensor.mcz_potenza', '11') %}
          mdi:fire-alert
        {% else %}
          mdi:fire-alert
        {% endif %}


# Switch Potenza 1 2
- platform: template
  switches:
    potenza_1_2:
      friendly_name: "potenza 1 2"
      value_template: >- 
        {% if is_state('sensor.mcz_potenza', '12') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Power_Level
          payload: 2
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Power_Level
          payload: 2
      icon_template: >-
        {% if is_state('sensor.mcz_potenza', '12') %}
          mdi:fire-alert
        {% else %}
          mdi:fire-alert
        {% endif %}


# Switch Potenza 1 3
- platform: template
  switches:
    potenza_1_3:
      friendly_name: "potenza 1 3"
      value_template: >- 
        {% if is_state('sensor.mcz_potenza', '13') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Power_Level
          payload: 3
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Power_Level
          payload: 3
      icon_template: >-
        {% if is_state('sensor.mcz_potenza', '13') %}
          mdi:fire-alert
        {% else %}
          mdi:fire-alert
        {% endif %}


# Switch Potenza 1 4
- platform: template
  switches:
    potenza_1_4:
      friendly_name: "potenza 1 4"
      value_template: >- 
        {% if is_state('sensor.mcz_potenza', '14') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Power_Level
          payload: 4
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Power_Level
          payload: 4
      icon_template: >-
        {% if is_state('sensor.mcz_potenza', '14') %}
          mdi:fire-alert
        {% else %}
          mdi:fire-alert
        {% endif %}


# Switch Potenza 1 5
- platform: template
  switches:
    potenza_1_5:
      friendly_name: "potenza 1 5"
      value_template: >- 
        {% if is_state('sensor.mcz_potenza', '15') %}
        on
        {% else %}
        off
        {% endif %}
      turn_on:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Power_Level
          payload: 5
      turn_off:
        service: mqtt.publish
        data:
          topic: Maestro/Command/Power_Level
          payload: 5
      icon_template: >-
        {% if is_state('sensor.mcz_potenza', '15') %}
          mdi:fire-alert
        {% else %}
          mdi:fire-alert
        {% endif %} 

Step5: Define climate as HVAC

climate:
  - platform: mqtt
    name: Stufa Mcz Ingresso
    current_temperature_topic: "Maestro/Ambient_Temperature"
    #power_command_topic: "Maestro/Command/Power"
    payload_on: 1
    payload_off: 0
    modes: ["off","heat"]
    mode_command_topic: "Maestro/Command/Power"
    mode_state_topic: "Maestro/Power"
    mode_state_template: >-
        {% if value == "0" %}
          off
        {% else %}
          heat 
        {% endif %}

    mode_command_template: >-
        {% if value == "heat" %}
          1
        {% else %}
          0
        {% endif %}
    min_temp: 6.00
    max_temp: 30.00
    temperature_command_topic: "Maestro/Command/Temperature_Setpoint"

If you want the lovelace interface like this

this is the configuration

{
    "version": 1,
    "key": "lovelace.lovelace_riscaldamento",
    "data": {
        "config": {
            "title": "Casa",
            "views": [
                
                {
                    "title": "Stufe a Pellets",
                    "path": "stufe-a-pellets",
                    "icon": "",
                    "badges": [],
                    "cards": [
                        
                        {
                            "type": "vertical-stack",
                            "cards": [
                                {
                                    "type": "thermostat",
                                    "entity": "climate.stufa_mcz_ingresso"
                                },
                                {
                                    "type": "horizontal-stack",
                                    "cards": [
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.profile_mode_manual"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.profile_mode_dynamic"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.profile_mode_night"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.profile_mode_comfort"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.profile_mode_power"
                                        }
                                    ]
                                },
                                {
                                    "type": "markdown",
                                    "content": "Ventilazione Frontale",
                                    "title": ""
                                },
                                {
                                    "type": "horizontal-stack",
                                    "cards": [
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_front_0",
                                            "name": "No Air"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_front_1",
                                            "name": "1"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_front_2",
                                            "name": "2"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_front_3",
                                            "name": "3"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_front_4",
                                            "name": "4"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_front_5",
                                            "name": "5"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_front_auto",
                                            "name": "Auto"
                                        }
                                    ]
                                },
                                {
                                    "type": "markdown",
                                    "content": "Canalizzazione 1 ",
                                    "title": ""
                                },
                                {
                                    "type": "horizontal-stack",
                                    "cards": [
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_1_0",
                                            "show_state": false,
                                            "name": "No Air"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_1_1",
                                            "show_state": false,
                                            "name": "1"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_1_2",
                                            "show_state": false,
                                            "name": "2"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_1_3",
                                            "show_state": false,
                                            "name": "3"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_1_4",
                                            "show_state": false,
                                            "name": "4"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_1_5",
                                            "show_state": false,
                                            "name": "5"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_1_auto",
                                            "show_state": false,
                                            "name": "Auto"
                                        }
                                    ]
                                },
                                {
                                    "type": "markdown",
                                    "content": "Canalizzazione 2",
                                    "title": ""
                                },
                                {
                                    "type": "horizontal-stack",
                                    "cards": [
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_2_0",
                                            "show_name": true,
                                            "name": "No Air"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_2_1",
                                            "name": "1"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_2_2",
                                            "name": "2"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_2_3",
                                            "name": "3"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_2_4",
                                            "name": "4"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_2_5",
                                            "name": "5"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.fan_2_auto",
                                            "name": "Auto"
                                        }
                                    ]
                                },
                                {
                                    "type": "horizontal-stack",
                                    "cards": [
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.silent_mcz_mode",
                                            "icon_height": "30px"
                                        }
                                    ]
                                },
                                {
                                    "type": "markdown",
                                    "content": "Potenza"
                                },
                                {
                                    "type": "horizontal-stack",
                                    "cards": [
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.potenza_1_1",
                                            "name": "1"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.potenza_1_2",
                                            "name": "2"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.potenza_1_3",
                                            "name": "3"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.potenza_1_4",
                                            "name": "4"
                                        },
                                        {
                                            "type": "button",
                                            "tap_action": {
                                                "action": "toggle"
                                            },
                                            "entity": "switch.potenza_1_5",
                                            "name": "5"
                                        }
                                    ]
                                }
                            ]
                        },
                        {
                            "type": "entity",
                            "entity": "sensor.mcz_ingresso_stato",
                            "name": "Ultimo stato stufa corridoio",
                            "icon": "mdi:radiator"
                        }
                    ]
                }
            ]
        }
    }
}
1 Like

Nice, I just bought this and the MCZ Maestro app sucks, so I hope I can make this work (when I have some time). Thanks!!!

Great tuto. My MCZ do not show the MCZ SSID. Is there a way to get this up?

My stove (MCZ Cute M1) doesn’t broadcast an SSID either. Is there any way to enable it?

There should be a label to identify the SSID of the Mcz or try with the command
“iwlist scan”

If you cannot find the SSID, try to connect first with the official app

this looks awesome.
but sadly it doesn’t seem to work on a Supervised HA, or am I missing something?

Sorry, haven’t tested on Supervised HA but only in Core version (up to 2022.11.0)

For those using the “Maestro MCZ” app on Android or IOS icon_old
This is what you are looking for !
Simply login with your username and password and you should have something simular like this:
(My MCZ Club M2 model)

@Crisicus and myself have been busy optimizing this and making it more user friendly, it’s far from perfect but we made it dynamic enough to support multiple types of stoves.

It’s currently still in a beta stage of the project, but we aren’t planning on stopping now !
This has the potential to become a fully fletched MCZ Maestro integration supporting many stove models !

Feel free to take a look and maybe contribute yourself !

3 Likes

Thanks for the component! Works nicely with an MCZ Loop M2

1 Like

is there a way to integrate the MCZ when connected to internal network?

Hi, Robbe-B, thanks for this great integration. I would like to change the speed of the fans, as it possible to do with the mcz official app, to be able to use it in automation (e. g. to reduce the fans speed when the temperature reached a predefined target to reduce the noise) . Currently, it is only to possible to switch on/off the fans.
Do you have any idea how to do it ?

@patoche, this is indeed an issue in the current integration since mcz removed the fans from te config.
I’ll look into fixing this as soon as I have the time.

OK, thanks !

Hi, I finally found a way to do it with following action in automation :

service: fan.set_preset_mode
data:
  preset_mode: "1"
target:
  entity_id:
    - fan.poelpat_fan_1
    - fan.poelpat_fan_2
    - fan.poelpat_fan_3

It works as I wish.
Thanks again for this very helpful integration !

1 Like

Hello @patoche @Robbe-B , could you share you automation please ?
I have a MCZ stove (M1) compatible with the MCZ Maestro Update app (not the Maestro +).
I’m trying to use an external probe to get room temperature. So I need tu use manual preset.
I can use your integration to get information but have a problem to start and stop the stove with it :

  • On the climate card, the flame start the stove with the hvac_mode heat but the stove stay at Potenza 1 after stabilization and hvac_mode get back to off. I can then manually configure different parameters.
    Do you know if a can just start the stove with last parameters (fan, potenza, …) ? Or I must configure them individually in the automation ?
  • The big problem is to stop the stove. Nothing is working. hvac_mode is already on off and I don’t know and understand how to stop it. I have to use the app in my tests.

I read your code and can query macz api but I don’t understand configurations part.
I can share with you my model info with ConfigurationName and sensor ids if it’s public and not specific to each stove.

PS : It may be relative to this configuration.

    {
      "Timed": false,
      "ConfigurationName": "Spegnimento",
      "Configurations": [
        {
          "SensorName": "m1_stato_stufa",
          "Type": "int",
          "Visible": true,
          "Variants": [
            "on",
            "off"
          ],
          "SensorId": "<sensor id>",
          "Enabled": true,
          "Min": "",
          "Max": "",
          "Mappings": {
            "on": 1,
            "off": 40
          }
        }
      ],
      "ConfigurationId": "<configuration id>",
      "Limitations": ""
    },

If that can help you : it’s working great with this add-on and local scripts.
May help you too : https://github.com/SebLz/ha-addons/blob/main/maestro_gateway/rootfs/maestro/local/commands.py

May help you too :

Sorry but limited to 2 link / post as a new user in this community.

Hallo erstmal vielen Dank für die Integration
Mein Ofen wurde wie folgt erkannt

Hydro Stove - 1 Fan

von MCZ

Firmware: None.1.11.1, Panel:None, DB:39

Gibt es die Möglichkeit die die Soll Temperatur für den Heizkessel per mqtt zu senden ?
Sowie den Grenzwert wann die Zirkulationspumpe aktiviert wird ? ( nach dem Code 0434)
Danke