Zum Inhalt
hallo@schwarzwaldit.de Schwarzwald
DIY & Maker

MCZ Ofensteuerung

Wie ich meinen MCZ-Pelletofen mit Maestro+ ohne Hersteller-Cloud lokal über zwei ESPHome-Geräte und Home Assistant bediene. Schritt für Schritt mit Verdrahtung und Konfiguration.

© Mario Dinger

Mein Pelletofen ist ein MCZ Ray Comfort Air 8 M1 mit Maestro+. Normalerweise läuft die Bedienung über die Hersteller-App, und die braucht eine Verbindung zur Cloud des Herstellers. Diese Verbindung bricht bei mir häufig ab, deshalb habe ich nach einem anderen Weg gesucht. Mein Ziel war, den Ofen vollständig aus Home Assistant zu bedienen und auszulesen, ohne Cloud, ohne Internet und ohne Netzwerkkabel am Ofen.

Ein Nebeneffekt der lokalen Anbindung sind Werte, die die Cloud nicht liefert. Dazu gehören ACTIVE Ist und Soll, also die Luftstrom-Überwachung des Ofens. Bei der Fehlersuche sind diese Werte eine große Hilfe. Die Anleitung richtet sich an alle, die einen MCZ-Ofen mit Maestro-Modul haben und Home Assistant und ESPHome schon nutzen.

Wie die Brücke funktioniert

Das Maestro-Modul im Ofen spannt ein eigenes WLAN auf. Darin antwortet der Ofen auf einen Websocket und schickt auf Anfrage einen Datensatz mit allen aktuellen Werten. Adressen vergibt der Ofen in seinem WLAN nicht, wer sich verbindet, braucht deshalb eine feste. Ein einzelner ESP32 kann nicht zuverlässig in zwei WLANs gleichzeitig hängen, darum arbeiten zwei kleine Geräte zusammen.

Schema: Pelletofen, Atom A im Ofen-WLAN, Kabel zu Atom B im Heim-WLAN, Home Assistant
Atom A hängt im Ofen-WLAN, Atom B im Heim-WLAN. Dazwischen liegt nur ein kurzes Kabel.

Atom A sitzt auf der Ofen-Seite im Ofen-WLAN und leitet die Nachrichten unverändert über eine kurze serielle Leitung an Atom B weiter. Er kennt keine Befehle und ist aus dem Heimnetz nicht erreichbar. Atom B sitzt auf der Haus-Seite im Heim-WLAN, fragt alle zwei Sekunden den Datensatz ab und gibt die Werte über die verschlüsselte ESPHome-Verbindung an Home Assistant. In Atom B steckt eine feste Liste erlaubter Befehle mit Sperren je nach Zustand des Ofens. Diese Liste liegt im Gerät, nicht in Home Assistant.

Die Verbindung zum Ofen reißt etwa alle zwanzig Sekunden ab, Atom A baut sie von selbst wieder auf. Kommt sechzig Sekunden lang keine Nachricht an, meldet Home Assistant „nicht verbunden“ und sperrt die Bedienelemente. Welches Feld im Datensatz was bedeutet, habe ich aus dem quelloffenen Projekt maestrogateway übernommen und an meinem Ofen nachgeprüft.

Was du brauchst

  • 2 × M5Stack AtomS3 Lite (ESP32-S3)
  • 4 Steckbrücken Stecker auf Stecker, etwa 10 cm
  • 1 USB-Netzteil 5 V mit USB-C-Kabel für den Dauerbetrieb
  • 1 USB-C-Datenkabel zum Aufspielen der Firmware
  • Home Assistant mit dem ESPHome Device Builder
  • einen Platz in Ofennähe, an dem Ofen-WLAN und Heim-WLAN beide gut ankommen

Verdrahtung

Verbunden werden die beiden Geräte über die Buchsenleiste auf ihrer Rückseite, dafür reichen vier Steckbrücken. 5V kommt an 5V und G an G. Die Datenleitungen werden gekreuzt, weil beide Geräte auf G5 senden und auf G6 empfangen. G5 des einen Geräts geht also auf G6 des anderen und umgekehrt.

Verdrahtungsplan: 5V, G, G5 und G6 zwischen Atom A und Atom B, Datenleitungen gekreuzt
Vier Steckbrücken, die beiden Datenleitungen gekreuzt. Strom nur an Atom A.

Strom bekommt nur Atom A über USB, Atom B wird über die 5-V-Brücke mitversorgt. Hänge nie beide Geräte gleichzeitig an USB, solange die 5-V-Brücke steckt. Zum Aufspielen der Firmware ziehst du die 5-V-Brücke ab. Wer statt der Steckbrücken ein Grove-Kabel nimmt, ändert die Pins in der Konfiguration, der Kommentar dort nennt die Werte.

Firmware aufspielen

Lege beide Konfigurationen im ESPHome Device Builder an. Geheimnisse wie WLAN-Namen, Kennwörter und Schlüssel gehören in die secrets.yaml, nie direkt in die Konfiguration. Name und Kennwort des Ofen-WLANs stehen auf dem Aufkleber am Ofen und in der Anleitung.

Deine eigenen Daten

Hier trägst du deine eigenen Daten ein. Alle Werte in Großbuchstaben mit Bindestrichen sind Platzhalter, ebenso die Gerätenamen unter substitutions. Ersetze sie durch deine eigenen Werte.

  • NAME-DES-OFEN-WLANS und KENNWORT-DES-OFEN-WLANS, vom Aufkleber am Ofen
  • NAME-DEINES-WLANS und KENNWORT-DEINES-WLANS, dein Heim-WLAN
  • HIER-DEN-ERZEUGTEN-SCHLUESSEL-EINTRAGEN, mit openssl rand -base64 32 selbst erzeugt
  • DEIN-OTA-KENNWORT, nur wenn du bei Atom B Updates über das Netz zulässt
  • geraetename und anzeigename in beiden Konfigurationen, frei wählbar
  • DEIN_PORT in den Befehlen weiter unten, die serielle Schnittstelle deines Rechners
# © Mario Dinger
# secrets.yaml im ESPHome Device Builder (oben rechts „Secrets“).
# Hier trägst du deine eigenen Daten ein. Alle Werte unten sind Platzhalter.
# Atom A: WLAN des Ofens, Name und Kennwort stehen auf dem Aufkleber am Ofen.
mcz_ofen_wlan_ssid: "NAME-DES-OFEN-WLANS"
mcz_ofen_wlan_kennwort: "KENNWORT-DES-OFEN-WLANS"

# Atom B: dein Heim-WLAN
mcz_heim_wlan_ssid: "NAME-DEINES-WLANS"
mcz_heim_wlan_kennwort: "KENNWORT-DEINES-WLANS"

# Atom B: Schlüssel für die Verbindung zu Home Assistant, 32 Byte Base64.
# Erzeugen mit: openssl rand -base64 32
mcz_ofen_bruecke_api_schluessel: "HIER-DEN-ERZEUGTEN-SCHLUESSEL-EINTRAGEN"

# Nur falls du bei Atom B Updates über das Netz zulässt (siehe Abschnitt Updates):
mcz_ofen_bruecke_ota_kennwort: "DEIN-OTA-KENNWORT"

Beide Konfigurationen binden drei eigene Komponenten ein (mcz_ws_bruecke, mcz_maestro und mcz_led). Sie liegen im Ordner components neben den beiden YAML-Dateien.

Atom A, Ofen-Seite

Hier trägst du deine eigenen Daten ein. In dieser Datei nur geraetename und anzeigename, alles andere kommt aus der secrets.yaml. Atom A hat weder api: noch ota:. Die beiden festen Adressen gehören zum Ofen-WLAN, der Ofen selbst ist dort unter 192.168.120.1 erreichbar.

# © Mario Dinger
# Atom A (Ofen-Seite) der Zwei-Atom-Brücke zum MCZ-Ofen.  Gerät: M5Stack AtomS3 Lite.
#
# Hängt im WLAN des Ofens und reicht dessen Nachrichten unverändert über die
# serielle Leitung an Atom B weiter. Kennt keine Ofenlogik und keine Befehle.
#
# Dieses Gerät ist aus dem Heimnetz nie erreichbar: Es hat bewusst weder "api:"
# noch "ota:". Im ESPHome Builder steht es dauerhaft als offline, neue Firmware
# kommt nur über USB darauf.
#
# Geheimnisse (secrets.yaml): mcz_ofen_wlan_ssid, mcz_ofen_wlan_kennwort
# Hier trägst du deine eigenen Daten ein, und zwar nur in der secrets.yaml.

substitutions:
  # Hier trägst du deine eigenen Daten ein. Gerätename (nur Kleinbuchstaben,
  # Ziffern und Bindestrich) und der Name, den Home Assistant anzeigt.
  geraetename: mcz-ofen-bruecke-a
  anzeigename: "MCZ Ofen Brücke A (hängt am Ofen, hier immer offline)"
  # Serielle Leitung zu Atom B über die Buchsenleiste auf der Rückseite.
  # Variante Grove-Kabel (gerade durchverbunden): seriell_tx: GPIO2, seriell_rx: GPIO1
  seriell_tx: GPIO5
  seriell_rx: GPIO6
  seriell_baud: "115200"
  led_pin: "35"
  # Der Ofen vergibt keine Adresse, deshalb fest.
  eigene_adresse: 192.168.120.50
  ofen_adresse: 192.168.120.1
  ofen_port: "81"

esphome:
  name: ${geraetename}
  friendly_name: ${anzeigename}

esp32:
  board: m5stack-atoms3
  variant: esp32s3
  framework:
    type: esp-idf

external_components:
  - source:
      type: local
      path: components

logger:
  hardware_uart: USB_SERIAL_JTAG
  level: INFO

wifi:
  ssid: !secret mcz_ofen_wlan_ssid
  password: !secret mcz_ofen_wlan_kennwort
  manual_ip:
    static_ip: ${eigene_adresse}
    gateway: ${ofen_adresse}
    subnet: 255.255.255.0
  power_save_mode: none
  # Bleibt das Ofen-WLAN so lange weg, startet der Atom neu und versucht es frisch.
  reboot_timeout: 15min

# Im Ofen-WLAN gibt es niemanden, der dieses Gerät suchen soll.
mdns:
  disabled: true

uart:
  id: leitung_zu_b
  tx_pin: ${seriell_tx}
  rx_pin: ${seriell_rx}
  baud_rate: ${seriell_baud}
  rx_buffer_size: 1024

mcz_led:
  id: zustands_led
  pin: ${led_pin}

# LED: rot = kein Ofen-WLAN, gelb = WLAN steht, Ofen nicht verbunden, grün = verbunden
mcz_ws_bruecke:
  uart_id: leitung_zu_b
  ofen_adresse: ${ofen_adresse}
  port: ${ofen_port}
  led: zustands_led

Atom B, Haus-Seite

Hier trägst du deine eigenen Daten ein. Auch hier nur geraetename und anzeigename. Atom B startet im Nur-Lese-Betrieb (schreiben_erlaubt: "false").

# © Mario Dinger
# Atom B (Haus-Seite) der Zwei-Atom-Brücke zum MCZ-Ofen.  Gerät: M5Stack AtomS3 Lite.
#
# Hängt im Heimnetz, fragt den Ofen über Atom A ab und stellt Werte und
# Bedienelemente in Home Assistant bereit. Die Befehlsliste und die Sperren je
# Zustand des Ofens (kein Einschalten bei Alarm, Alarm-Reset nur im Alarm,
# ACTIVE nur bei stehendem Ofen) sitzen fest in der Komponente mcz_maestro.
#
# Geheimnisse (secrets.yaml): mcz_heim_wlan_ssid, mcz_heim_wlan_kennwort, mcz_ofen_bruecke_api_schluessel
# Hier trägst du deine eigenen Daten ein, und zwar nur in der secrets.yaml.

substitutions:
  # Hier trägst du deine eigenen Daten ein. Gerätename (nur Kleinbuchstaben,
  # Ziffern und Bindestrich) und der Name, den Home Assistant anzeigt.
  geraetename: mcz-ofen-bruecke-b
  anzeigename: MCZ Ofen lokal
  # Serielle Leitung zu Atom A über die Buchsenleiste auf der Rückseite.
  # Variante Grove-Kabel (gerade durchverbunden): seriell_tx: GPIO1, seriell_rx: GPIO2
  seriell_tx: GPIO5
  seriell_rx: GPIO6
  seriell_baud: "115200"
  led_pin: "35"
  abfragetakt: 2s
  # Bei "false" lehnt Atom B jeden Schreibbefehl ab (Nur-Lese-Betrieb), die
  # Bedienelemente bleiben sichtbar. Erst auf "true" stellen, wenn die Werte in
  # Home Assistant mit dem Display am Ofen übereinstimmen.
  schreiben_erlaubt: "false"

esphome:
  name: ${geraetename}
  friendly_name: ${anzeigename}

esp32:
  board: m5stack-atoms3
  variant: esp32s3
  framework:
    type: esp-idf

external_components:
  - source:
      type: local
      path: components

logger:
  hardware_uart: USB_SERIAL_JTAG
  level: INFO

api:
  encryption:
    key: !secret mcz_ofen_bruecke_api_schluessel

# Bewusst kein "ota:". Neue Firmware kommt wie bei Atom A nur über USB. So kann
# niemand aus dem Heimnetz die Firmware und damit die Befehlsliste austauschen.

wifi:
  ssid: !secret mcz_heim_wlan_ssid
  password: !secret mcz_heim_wlan_kennwort

uart:
  id: leitung_zu_a
  tx_pin: ${seriell_tx}
  rx_pin: ${seriell_rx}
  baud_rate: ${seriell_baud}
  rx_buffer_size: 1024

mcz_led:
  id: zustands_led
  pin: ${led_pin}

# LED: blaues Blinken = mit Home Assistant verbunden, violett dauerhaft = nicht verbunden.
# So lässt sich Atom B von Atom A (rot, gelb, grün) unterscheiden.
interval:
  - interval: 2s
    then:
      - if:
          condition:
            api.connected:
          then:
            - lambda: id(zustands_led).zeige(0, 0, 100);
            - delay: 250ms
            - lambda: id(zustands_led).zeige(0, 0, 0);
          else:
            - lambda: id(zustands_led).zeige(50, 0, 90);

mcz_maestro:
  id: ofen
  uart_id: leitung_zu_a
  update_interval: ${abfragetakt}
  schreiben_erlaubt: ${schreiben_erlaubt}

sensor:
  - platform: mcz_maestro
    zustand:
      name: Zustand Nummer
    abgas:
      name: Abgastemperatur
    raum:
      name: Raumtemperatur
    rauchgasgeblaese:
      name: Rauchgasgebläse
    schnecke_soll:
      name: Förderschnecke Soll
    schnecke_ist:
      name: Förderschnecke Ist
    active_soll:
      name: ACTIVE Soll
    active_ist:
      name: ACTIVE Ist
    platine:
      name: Temperatur Platine
    leistungsstufe:
      name: Leistungsstufe
    luefter1:
      name: Lüfter 1
    luefter2:
      name: Lüfter 2
    solltemperatur:
      name: Solltemperatur
    verworfen:
      name: Verworfene Nachrichten
    verworfen_a:
      name: Verworfene Zeilen Atom A
    neuaufbauten:
      name: Neuaufbauten zum Ofen
    ofen_wlan_signal:
      name: Signal Ofen-WLAN
    datenbank_id:
      name: Datenbank-ID
    service_stunden:
      name: Stunden bis Service
    zuendungen:
      name: Zündungen
    active_temperatur:
      name: ACTIVE Temperatur roh

binary_sensor:
  - platform: mcz_maestro
    verbunden:
      name: Ofen verbunden
    alarm:
      name: Alarm
    active_ein:
      name: ACTIVE ein
    zuender:
      name: Zünder
    eco:
      name: Eco ein
    silent:
      name: Silent ein

text_sensor:
  - platform: mcz_maestro
    zustand_text:
      name: Zustand
    alarm_code:
      name: Alarmcode
    betriebsart:
      name: Betriebsart
    verbindung:
      name: Verbindung
    meldung:
      name: Letzte Meldung
    firmware:
      name: Firmware Ofen

switch:
  - platform: mcz_maestro
    ofen:
      name: Ofen
    automatik:
      name: Betriebsart Automatik
    toene:
      name: Töne
    zeitprogramm:
      name: Zeitprogramm
    # ACTIVE nur im Zustand Aus oder im Alarm schaltbar, nie bei laufendem Ofen.
    active:
      name: ACTIVE
    eco:
      name: Eco
    silent:
      name: Silent

# Tasten nur für die Bedienung von Hand. Alarm-Reset geht nur im Alarmzustand,
# ACTIVE-Reset nur im Zustand Aus; sonst lehnt Atom B mit Grund ab ("Letzte Meldung").
# Keine Automation darf diese Tasten drücken. Alarme werden nur von Hand zurückgesetzt.
button:
  - platform: mcz_maestro
    alarm_reset:
      name: Alarm zurücksetzen
    active_reset:
      name: ACTIVE zurücksetzen

number:
  - platform: mcz_maestro
    leistung:
      name: Leistungsstufe einstellen
    solltemperatur:
      name: Solltemperatur einstellen
    luefter1:
      name: Lüfter 1 einstellen
    luefter2:
      name: Lüfter 2 einstellen

Vor dem Flashen das Gerät prüfen

Die beiden Atoms sehen gleich aus. Prüfe deshalb vor jedem Aufspielen, welches Gerät gerade am USB hängt. Ich lese dafür die MAC-Adresse aus, notiere sie und klebe auf jedes Gerät ein Schild mit A oder B. Mir ist es einmal passiert, dass die Firmware von Atom B auf Atom A gelandet ist. Atom A hing danach im Heim-WLAN statt im Ofen-WLAN, und die Brücke war tot, bis die richtige Firmware wieder drauf war.

Hier trägst du deine eigenen Daten ein. Statt DEIN_PORT setzt du die Schnittstelle ein, unter macOS etwa /dev/cu.usbmodem1101, unter Linux /dev/ttyACM0, unter Windows COM3.

uvx esptool --chip esp32s3 --port DEIN_PORT read-mac

Ziehe vor dem Anstecken die 5-V-Brücke zwischen den Geräten ab, damit nicht beide gleichzeitig am USB hängen.

Firmware im ESPHome Dashboard erzeugen

  1. Im ESPHome Device Builder beim Gerät auf „Installieren“ klicken, das Symbol mit dem Pfeil nach oben.
  2. „Manueller Download“ wählen. Für die erste Installation nimmst du das Factory-Format, es enthält Bootloader und Partitionstabelle.
  3. Das Kompilieren dauert beim ersten Mal einige Minuten. Am Ende lädt der Browser eine Datei mit der Endung .factory.bin herunter.
  4. Das wiederholst du für das zweite Gerät und benennst beide Dateien eindeutig, etwa mit A und B im Namen.

Erstflash mit ESPHome Web

  1. Chrome oder Edge am Rechner öffnen, beide unterstützen WebSerial. Firefox und Safari gehen nicht.
  2. web.esphome.io aufrufen und den Atom per USB-C-Datenkabel anstecken.
  3. „Connect“ klicken und die Schnittstelle des Atoms auswählen.
  4. „Install“ wählen, die passende .factory.bin auswählen und den Vorgang abwarten.
  5. Kabel abziehen, Schild prüfen, mit dem zweiten Gerät genauso verfahren.

Taucht keine Schnittstelle auf, ist das Kabel oft ein reines Ladekabel. Hilft ein anderes Kabel nicht, halte den Knopf am Atom etwa zwei Sekunden gedrückt, bis die LED grün leuchtet. Dann ist er im Download-Modus und meldet sich neu.

Alternativ mit esptool

Hier trägst du deine eigenen Daten ein. Setze deinen Port und den Dateinamen deiner Firmware ein.

uvx esptool --chip esp32s3 --port DEIN_PORT read-mac
uvx esptool --chip esp32s3 --port DEIN_PORT write-flash 0x0 mcz-ofen-bruecke-a.factory.bin

Der erste Befehl zeigt die MAC-Adresse und damit, welches Gerät dranhängt. Der zweite schreibt die Firmware ab Adresse 0. Die Factory-Datei gehört immer an diese Adresse.

Updates danach

Atom A bekommt neue Firmware immer über USB, denn er hängt im Ofen-WLAN und ist aus dem Heimnetz nicht erreichbar. Bei Atom B hast du die Wahl. In meiner Konfiguration hat er ebenfalls kein ota:, so kann aus dem Heimnetz niemand die Firmware und damit die Befehlsliste austauschen. Wer Atom B nach dem Erstflash lieber über das Netz aktualisiert, ergänzt den folgenden Block mit eigenem Kennwort und spielt ihn einmal per USB auf. Danach geht jedes weitere Update im Device Builder über „Installieren“ und „Drahtlos“.

Hier trägst du deine eigenen Daten ein. Das OTA-Kennwort legst du selbst fest und trägst es als mcz_ofen_bruecke_ota_kennwort in die secrets.yaml ein.

# © Mario Dinger
# Optional, nur für Atom B: in mcz-ofen-bruecke-b.yaml ergänzen.
# Hier trägst du deine eigenen Daten ein. Das Kennwort steht in der secrets.yaml.
ota:
  - platform: esphome
    password: !secret mcz_ofen_bruecke_ota_kennwort

LED und Fehlerbilder

Nach dem Aufspielen zeigt die LED, ob alles stimmt. Bei Atom A bedeutet Rot kein Ofen-WLAN, Gelb WLAN da, aber Ofen nicht verbunden, und Grün verbunden. Atom B blinkt blau, wenn Home Assistant verbunden ist, dauerhaftes Violett heißt nicht verbunden. Lass Atom B zunächst im Nur-Lese-Betrieb laufen und vergleiche die Werte mit dem Display am Ofen, bevor du das Schreiben freigibst.

  • Atom A taucht im Device Builder als online auf oder blinkt blau. Er hat die Firmware von Atom B bekommen. MAC prüfen und die A-Firmware per USB neu aufspielen.
  • Atom B leuchtet rot, gelb oder grün und erscheint nicht in Home Assistant. Er hat die Firmware von Atom A. Ebenso per USB die B-Firmware aufspielen.
  • Atom A bleibt rot. Name oder Kennwort des Ofen-WLANs stimmen nicht, oder der Empfang reicht nicht. Werte in der secrets.yaml prüfen, Atom A näher an den Ofen setzen.
  • Atom B bleibt violett. Heim-WLAN-Daten oder API-Schlüssel passen nicht zu dem, was Home Assistant beim Einbinden gespeichert hat.
  • In der Verbindungskette ist Schritt 2 rot. Die Datenleitungen sind nicht gekreuzt, oder die 5-V-Brücke fehlt.
  • Beim Flashen kommt keine Verbindung zustande. Ladekabel statt Datenkabel, Download-Modus fehlt, oder beide Geräte hängen über die 5-V-Brücke gleichzeitig am USB.
ESPHome Device Builder mit den Geräten MCZ Ofen Brücke A (offline) und MCZ Ofen lokal (online)
Im ESPHome Device Builder steht Atom A immer als offline. Das ist richtig so, er hängt im Ofen-WLAN.

Einbindung in Home Assistant

Atom B erscheint als neues ESPHome-Gerät mit dem Namen „MCZ Ofen lokal“, beim Einbinden fragt Home Assistant nach dem API-Schlüssel. Danach stehen Sensoren, Schalter, Schieberegler und Tasten für den Ofen zur Verfügung. Atom A wird im Device Builder immer als offline angezeigt, weil er im Ofen-WLAN hängt, und das ist so gewollt.

Auf meiner Ofenseite zeigt eine Karte die Verbindung als Kette in vier Schritten, von Atom B über das Kabel und Atom A im Ofen-WLAN bis zum Ofen. Die erste rote Zeile zeigt, wo es hakt. Jede Taste, die etwas am Ofen auslöst, fragt vorher nach einer Bestätigung.

Home-Assistant-Karte mit vier Schritten: Atom B online, Kabel in Ordnung, Atom A findet das Ofen-WLAN nicht, Ofen unbekannt
Die Verbindungskette. Hier fehlt Schritt 3, Atom A findet das Ofen-WLAN nicht.

Die folgende Karte kannst du im Dashboard über „Karte hinzufügen“ und „Manuell“ einfügen. Sie enthält die Verbindungskette, die vier Tasten mit Rückfrage und die wichtigsten Werte und Einstellungen.

Hier trägst du deine eigenen Daten ein. Die Entitäts-IDs beginnen mit mcz_ofen_lokal, weil Atom B in Home Assistant „MCZ Ofen lokal“ heißt. Hast du anzeigename geändert, passt du die IDs entsprechend an.

# © Mario Dinger
type: vertical-stack
cards:
  - type: markdown
    title: Verbindung zum Ofen
    content: >-
      {% set v = states('sensor.mcz_ofen_lokal_verbindung') %}
      {% set b_da = v not in ['unavailable', 'unknown', ''] %}
      {% set kabel_ok = b_da and 'Atom A meldet sich nicht' not in v %}
      {% set wlan_ok = kabel_ok and 'findet das Ofen-WLAN nicht' not in v %}
      {% set ofen_da = is_state('binary_sensor.mcz_ofen_lokal_ofen_verbunden', 'on') %}
      <ha-alert alert-type="{{ 'success' if b_da else 'error' }}" title="1. Atom B (Haus-Seite)">{{ 'Online im Heim-WLAN' if b_da else 'Meldet sich nicht bei Home Assistant' }}</ha-alert>
      <ha-alert alert-type="{{ 'success' if kabel_ok else ('error' if b_da else 'warning') }}" title="2. Kabel Atom B zu Atom A">{{ 'In Ordnung' if kabel_ok else ('Unterbrochen, Kabel oder Strom prüfen' if b_da else 'Unbekannt') }}</ha-alert>
      <ha-alert alert-type="{{ 'success' if wlan_ok else ('error' if kabel_ok else 'warning') }}" title="3. Atom A im Ofen-WLAN">{{ 'Verbunden' if wlan_ok else ('Nicht gefunden, Atom A näher an den Ofen' if kabel_ok else 'Unbekannt') }}</ha-alert>
      <ha-alert alert-type="{{ 'success' if ofen_da else ('error' if wlan_ok else 'warning') }}" title="4. Ofen antwortet">{{ 'Ja' if ofen_da else (v if wlan_ok else 'Unbekannt') }}</ha-alert>
  - type: grid
    columns: 2
    square: false
    cards:
      - type: button
        name: Ofen ein
        icon: mdi:fire
        tap_action:
          action: perform-action
          perform_action: switch.turn_on
          target:
            entity_id: switch.mcz_ofen_lokal_ofen
          confirmation:
            text: Ofen einschalten? Brennschale leer?
      - type: button
        name: Ofen aus
        icon: mdi:fire-off
        tap_action:
          action: perform-action
          perform_action: switch.turn_off
          target:
            entity_id: switch.mcz_ofen_lokal_ofen
          confirmation:
            text: Ofen ausschalten?
      - type: button
        name: Alarm zurücksetzen
        icon: mdi:alarm-light-off
        tap_action:
          action: perform-action
          perform_action: button.press
          target:
            entity_id: button.mcz_ofen_lokal_alarm_zurucksetzen
          confirmation:
            text: Ursache geklärt und Brennschale geprüft?
      - type: button
        name: ACTIVE zurücksetzen
        icon: mdi:air-filter
        tap_action:
          action: perform-action
          perform_action: button.press
          target:
            entity_id: button.mcz_ofen_lokal_active_zurucksetzen
          confirmation:
            text: Geht nur bei ausgeschaltetem Ofen. Fortfahren?
  - type: entities
    title: Ofen lokal
    entities:
      - entity: sensor.mcz_ofen_lokal_zustand
      - entity: sensor.mcz_ofen_lokal_raumtemperatur
      - entity: sensor.mcz_ofen_lokal_abgastemperatur
      - entity: sensor.mcz_ofen_lokal_active_ist
      - entity: sensor.mcz_ofen_lokal_active_soll
      - entity: number.mcz_ofen_lokal_leistungsstufe_einstellen
      - entity: number.mcz_ofen_lokal_solltemperatur_einstellen
      - entity: number.mcz_ofen_lokal_lufter_1_einstellen
      - entity: number.mcz_ofen_lokal_lufter_2_einstellen
      - entity: switch.mcz_ofen_lokal_betriebsart_automatik
      - entity: switch.mcz_ofen_lokal_eco
      - entity: switch.mcz_ofen_lokal_silent
      - entity: sensor.mcz_ofen_lokal_letzte_meldung

Bedienung im Alltag

Bedienen lassen sich Ein und Aus, Leistungsstufe, Solltemperatur, die beiden Lüfter, Automatik, Eco, Silent, Töne und das Zeitprogramm. Passt ein Befehl nicht zum Zustand des Ofens, lehnt Atom B ihn ab und schreibt den Grund in „Letzte Meldung“. Einschalten geht nur, wenn der Ofen aus ist, gerade herunterfährt oder im Standby steht, im Alarm nie.

Home-Assistant-Steuerung mit Tasten Ofen ein, Ofen aus, Alarm zurücksetzen, ACTIVE zurücksetzen und den lokalen Einstellungen
Tasten und Einstellungen in Home Assistant, aufgenommen ohne Verbindung zum Ofen.

Befehle, die vom Zustand abhängen, gehen nur durch, wenn der letzte Datensatz höchstens zehn Sekunden alt ist. Einen Alarm zurücksetzen kannst du nur im Alarmzustand, ACTIVE zurücksetzen nur bei ausgeschaltetem Ofen. Die Cloud-Integration kann parallel weiterlaufen und bleibt der Rückfall. Die Bilder hier sind entstanden, als Atom A keinen Empfang zum Ofen-WLAN hatte, darum stehen bei vielen Werten keine Zahlen.

Grenzen und bekannte Punkte

Die Reichweite ist der heikle Teil. Atom A braucht guten Empfang des Ofen-WLANs, bei mir reichten -94 dBm nicht aus, und den Standort musst du ausprobieren. Ob der Ofen gleichzeitig die Hersteller-App im eigenen WLAN und Atom A verträgt, habe ich nicht geklärt. Die Bedeutung der Felder stammt nicht vom Hersteller, ein Firmware-Update am Ofen kann daran etwas ändern.

Die Brücke ersetzt keine Wartung und keinen Kundendienst. Die drei eigenen ESPHome-Komponenten, die beide Konfigurationen brauchen, sind noch nicht veröffentlicht.

Getestet mit

Getestet habe ich das Projekt nur mit meinem eigenen Ofen, einem MCZ Ray Comfort Air 8 M1 mit Maestro+ und der Ofen-Firmware 1.11.1, dazu ESPHome 2026.9 und 2026.10. Ob andere MCZ-Öfen mit Maestro-Modul genauso antworten, weiß ich nicht. Rückmeldungen dazu nehme ich gern auf.

Eigene Einrichtung, über Tage konfiguriert, angepasst und getestet. © Mario Dinger

← Zurück zu DIY & Maker

Die Suche läuft in deinem Browser. Dein Suchbegriff geht nicht an den Server.

Alle Treffer