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"