Zum Hauptinhalt springenZur Hauptnavigation springen

Home Assistant Fehler: Deine manuell konfigurierte(n) MQTT-sensor(en) erfordert Aufmerksamkeit

Home Assistant Fehler: Deine manuell konfigurierte(n) MQTT-sensor(en) erfordert Aufmerksamkeit
Veröffentlicht am 8.9.2022
Home Assistant

Empfohlene Produkte

📦 Shopping-Tipps für dich

Ausgewählte Empfehlungen für dein Smart Home Projekt

Lädt Produkte... (smartswitch → zigbee → sensor → automation)

Mit dem Update 2022.8 wurde das „Reparieren“ Feature in Home Assistant eingeführt. Seit dem prüft Home Assistant auf bekannte Probleme und weist einen in den Einstellungen direkt mit sprechenden Meldungen auf erkannte Fehler hin. In der Regel beinhaltet die Fehlermeldung auch direkt einen Link zur entsprechenden Dokumentation.

Seit dem September Update 2022.9 werden viele wohl die folgende Warnung bzgl. manuell konfigurierter Entitäten vom Platform-Typ MQTT erhalten haben. Dabei kann es sich um Sensoren, Binary-Sensoren, Schalter, Buttons oder andere Integrationstypen handeln. Somit kann es auch durchaus vorkommen, dass Ihr die Meldung mehrfach erhaltet, nur eben für unterschiedliche Integrationstypen.

Beispiel für eine Warnung über eine veraltete manuelle MQTT-Sensor Konfiguration

Was genau bedeutet diese Meldung?

Bisher war es so, dass MQTT-Sensoren unter der Integration „sensor“ mit dem Platformtyp „mqtt“ eingetragen wurden. Binär-Sensoren wurden ebenfalls mit dem Platformtyp „mqtt“ angegeben, jedoch unter der Integration „binary_sensor“. Kurz gesagt, alle MQTT-Entitäten waren über sämtliche Integrationen in der Konfiguration verstreut.
Genau das soll sich nun ändern. Und zwar wurde nun für MQTT eine eigene Integration eingeführt unter der nun alle MQTT-Entitäten zusammengefasst werden.

Aber keine Sorge. Wie in dem „Repair-Hinweis“ zu lesen ist, funktioniert die alte Definitionsart auch weiterhin. Zumindest bis zum Dezember Update. Das heißt man hat noch drei Monate Zeit seine Konfiguration entsprechend zu überarbeiten.

Eigentlich muss man das ganze aber auch gar nicht auf die lange Bank schieben, denn so eine große Änderung ist für die Anpassung gar nicht notwendig.
Schauen wir uns einmal an, was zu tun ist, um den „Fehler“ wieder los zu werden, bzw. richtiger wäre, wie wir die Konfiguration auf die neue Definitionsart der MQTT-Entitäten anpassen müssen.

Alte Konfiguration

Bisher sah die Konfiguration für MQTT-Entitäten in etwa so aus:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 binary_sensor: - platform: mqtt device_class: window unique_id: bad_schlafzimmer_2 name: Schlafzimmer Fenstersensor 2 state_topic: tele/sonoff_gateway/RESULT value_template: "{{ value_json.RfReceived.Data }}" payload_on: 'E6240A' payload_off: 'E6240E' - platform: mqtt device_class: window unique_id: bad_schlafzimmer_1 name: Schlafzimmer Fenstersensor 1 state_topic: tele/sonoff_gateway/RESULT value_template: "{{ value_json.RfReceived.Data }}" payload_on: 'E6240B' payload_off: 'E6240C' button: - platform: mqtt name: "Roborock Start" icon: mdi:gate command_topic: "valetudo/rockrobo/command" payload_press: 'start' qos: 1 retain: false unique_id: "roborock_start" climate: - platform: mqtt name: "Buero Thermostat" min_temp: 4 max_temp: 30 temp_step: 1 modes: current_temperature_topic: shellies/shellytrv-8CF68108C443/info current_temperature_template: "{{ value_json.thermostats[0].tmp.value }}" temperature_command_topic: shellies/shellytrv-1/thermostat/0/command/target_t unique_id: 2af60efd-e04f-44cb-8d93-f7cf8283a7c5 light: - platform: mqtt name: Flurlicht Unten icon: mdi:lightbulb state_topic: tele/sonoff_gateway/RESULT command_topic: cmnd/sonoff_gateway/RfCode payload_on: '#500115' payload_off: '#500114' optimistic: "true" qos: 1 retain: false state_value_template: "{{ value_json.RfReceived.Data }}" unique_id: flurlicht_eg sensor: - platform: mqtt name: Kuechenjalousie-Taster Action state_topic: "zigbee2mqtt/Taster Küchenjalousie/action" expire_after: 1 payload_not_available: 'off' switch: - platform: mqtt name: Leinwand icon: mdi:projector-screen state_topic: tele/sonoff_gateway/RESULT command_topic: cmnd/sonoff_gateway/RfCode payload_on: '#913BF4' payload_off: '#913BF1' optimistic: "true" qos: 1 retain: false value_template: "{{ value_json.RfReceived.Data }}" unique_id: beamer_leinwand


Anpassen der Konfiguration an die neue MQTT Integration

Wie eben schon erwähnt sind in der ursprünglichen Konfiguration die Definitionen der MQTT-Entitäten über die einzelnen Integrationen verteilt. Um die anzupassenden Einträge zu finden müsst Ihr einfach eure gesamte Konfiguration nach dem Eintrag „platform: mqtt“ durchsuchen. Alle Einträge mit dieser Angabe müssen angepasst werden und in Zukunft unter der MQTT-Integration eingetragen werden.

Das heißt man erzeugt eine neue Integration „mqtt“ (Also eine neue Zeile mit dem Eintrag „mqtt:“ ohne Einrückung) und innerhalb der MQTT-Integration für jede Integration die in die neue MQTT-Integration umgezogen werden soll einen Untergeordneten Eintrag mit dem jeweiligen Namen.
Für beispielsweise die „binary_sensor“ Integration wird also unterhalb von der neuen Zeile „mqtt:“ eine weitere Zeile mit „binary_sensor:“ angelegt. Dieser Eintrag wird um 2 Leertasten eingerückt.
Abschließend verschiebt man noch die Definitionen der entsprechenden Integration unter den entsprechenden Eintrag.
Da es sich bei diesen „Unterkategorien“ um Listen handelt wird jede neue Entity-Definition mit einem Minus eingeleitet welches um 4 Leertasten eingerückt ist.
Das einzige was Ihr nach dem Verschieben an den Einträgen ändern müsst ist das entfernen der Angabe „platform: mqtt“.

Das Konfigurationsbeispiel von oben würde nach der Anpassung an die neue Schreibweise wie folgt aussehen:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 mqtt: binary_sensor: - device_class: window unique_id: bad_schlafzimmer_2 name: Schlafzimmer Fenstersensor 2 state_topic: tele/sonoff_gateway/RESULT value_template: "{{ value_json.RfReceived.Data }}" payload_on: 'E6240A' payload_off: 'E6240E' - device_class: window unique_id: bad_schlafzimmer_1 name: Schlafzimmer Fenstersensor 1 state_topic: tele/sonoff_gateway/RESULT value_template: "{{ value_json.RfReceived.Data }}" payload_on: 'E6240B' payload_off: 'E6240C' button: - name: "Roborock Start" icon: mdi:gate command_topic: "valetudo/rockrobo/command" payload_press: 'start' qos: 1 retain: false unique_id: "roborock_start" climate: - name: "Buero Thermostat" min_temp: 4 max_temp: 30 temp_step: 1 modes: current_temperature_topic: shellies/shellytrv-8CF68108C443/info current_temperature_template: "{{ value_json.thermostats[0].tmp.value }}" temperature_command_topic: shellies/shellytrv-1/thermostat/0/command/target_t unique_id: 2af60efd-e04f-44cb-8d93-f7cf8283a7c5 light: - name: Flurlicht Unten icon: mdi:lightbulb state_topic: tele/sonoff_gateway/RESULT command_topic: cmnd/sonoff_gateway/RfCode payload_on: '#500115' payload_off: '#500114' optimistic: "true" qos: 1 retain: false state_value_template: "{{ value_json.RfReceived.Data }}" unique_id: flurlicht_eg sensor: - name: Kuechenjalousie-Taster Action state_topic: "zigbee2mqtt/Taster Küchenjalousie/action" expire_after: 1 payload_not_available: 'off' switch: - name: Leinwand icon: mdi:projector-screen state_topic: tele/sonoff_gateway/RESULT command_topic: cmnd/sonoff_gateway/RfCode payload_on: '#913BF4' payload_off: '#913BF1' optimistic: "true" qos: 1 retain: false value_template: "{{ value_json.RfReceived.Data }}" unique_id: beamer_leinwand


Änderungen bei aufgeteilter Konfiguration

Wenn es sich um eine aufgeteilte Konfiguration handelt und beispielsweise die Sensoren mit Include eingebunden wurden, muss für die neue MQTT-Integration eine neue Datei bzw. bei include_dir_named oder include_dir_merge_named ein neues Verzeichnis angelegt und eingebunden werden.

Das heist in der configuration.yaml ergänzt Ihr z.B. die folgende Zeile und legt die Datei mqtt.yaml an:

1 mqtt: !include mqtt.yaml

Anschließend muss die neue Datei mqtt.yaml angelegt und alle Einträge der Platform MQTT in diese Datei verschoben werden. Auch hier muss der Eintrag „platform: mqtt“ aus jedem Eintrag entfernt werden.
Der einzige Unterschied ist, dass man hier die erste Zeile „mqtt:“ nicht mehr benötigt, da die Integration bereits in der Include-Zeile in der configuration.yaml angegeben wurde.

Die Binärsensoren in der mqtt.yaml sähen demnach wie folgt aus:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 binary_sensor: - device_class: window unique_id: bad_schlafzimmer_2 name: Schlafzimmer Fenstersensor 2 state_topic: tele/sonoff_gateway/RESULT value_template: "{{ value_json.RfReceived.Data }}" payload_on: 'E6240A' payload_off: 'E6240E' - device_class: window unique_id: bad_schlafzimmer_1 name: Schlafzimmer Fenstersensor 1 state_topic: tele/sonoff_gateway/RESULT value_template: "{{ value_json.RfReceived.Data }}" payload_on: 'E6240B' payload_off: 'E6240C'


Ich hoffe, ich konnte euch mit dieser Erklärung ein wenig weiter helfen.
Wenn Ihr noch Fragen haben solltet, schaut gerne einfach auf unserem Discord vorbei. Dort kann euch sicher bei eurem Problem geholfen werden!
https://www.smarthomeyourself.de/discord

Shopping-Empfehlungen

Passende smartswitch-Produkte

Weitere empfohlene Produkte für dein Smart Home

Lädt Produkte... (smartswitch → zigbee → sensor → automation)

Artikel teilen

Teilen: