Truma-Karten reparieren
Die beiden Heizungskarten, die Home Assistant von selbst anlegt, sind leider unbrauchbar — aus zwei Gründen, die nichts mit deiner Einrichtung zu tun haben. Dieses Kapitel baut funktionierenden Ersatz. Danach lässt sich das Warmwasser zuverlässig schalten.
Was nicht stimmt
Öffne die Karte Truma Wasser. Wahrscheinlich steht dort nicht verfügbar. Schuld sind zwei voneinander unabhängige Dinge:
nan — „keine Zahl“. Home Assistant kann daraus keine Temperatur machen und setzt die ganze Karte auf nicht verfügbar. Im Protokoll steht:Value error while updating state of climate…truma_wasser … with payload: b'nan': cannot convert float NaN to integerDa die Heizung meistens aus ist, ist die Karte meistens leer.
Beides lässt sich in Home Assistant sauber lösen. Wir legen eigene Sensoren an, die mit nan umgehen können, und darauf eine Auswahl mit genau den drei Zuständen, die es wirklich gibt.
Der packages-Ordner
Alle folgenden Sensoren kommen in eine einzige Datei. Damit sie sich nicht mit dem in die Quere kommt, was du sonst noch in Home Assistant konfiguriert hast, nutzen wir den packages-Mechanismus.
packages einschalten
Ergänze in /config/configuration.yaml ganz am Ende:
homeassistant:
packages: !include_dir_named packages
packages: !include_dir_named packages darunter, eingerückt wie die anderen Einträge. Ein zweiter homeassistant:-Block führt zu einem Fehler. Ordner anlegen
Lege den Ordner /config/packages an — im File editor über Neuer Ordner, im Terminal so:
mkdir -p /config/packages
Den Ersatz einbauen
Lege die Datei /config/packages/campmatic.yaml an. Der folgende Ausschnitt enthält die drei Ersatzsensoren und die Warmwasser-Auswahl. Ersetze <GERAETE_ID> durch deine Gerätenummer.
mqtt:
sensor:
- name: "Warmwasser Sollwert"
unique_id: campmatic_<GERAETE_ID>_ww_soll
state_topic: "campmatic/<GERAETE_ID>/climate/truma_wasser/target_temperature/state"
value_template: "{{ none if value | lower in ['nan','inf','-inf',''] else value }}"
unit_of_measurement: "°C"
device_class: temperature
expire_after: 2700
availability_topic: "campmatic/<GERAETE_ID>/status"
payload_available: "online"
payload_not_available: "offline"
- name: "Heizung Sollwert"
unique_id: campmatic_<GERAETE_ID>_heiz_soll
state_topic: "campmatic/<GERAETE_ID>/climate/truma_heizung/target_temperature/state"
value_template: "{{ none if value | lower in ['nan','inf','-inf',''] else value }}"
unit_of_measurement: "°C"
device_class: temperature
expire_after: 2700
availability_topic: "campmatic/<GERAETE_ID>/status"
payload_available: "online"
payload_not_available: "offline"
- name: "Warmwasser Betriebsart"
unique_id: campmatic_<GERAETE_ID>_ww_mode
state_topic: "campmatic/<GERAETE_ID>/climate/truma_wasser/mode/state"
entity_category: diagnostic
expire_after: 2700
availability_topic: "campmatic/<GERAETE_ID>/status"
payload_available: "online"
payload_not_available: "offline"
template:
- select:
- name: "Warmwasser"
unique_id: campmatic_<GERAETE_ID>_warmwasser
icon: mdi:water-thermometer
state: >-
{% set mode = states('sensor.warmwasser_betriebsart') %}
{% set soll = states('sensor.warmwasser_sollwert') | float(0) %}
{% if mode == 'heat' and soll >= 50 %}60 °C
{% elif mode == 'heat' %}40 °C
{% else %}Aus{% endif %}
options: "{{ ['Aus', '40 °C', '60 °C'] }}"
select_option:
- choose:
- conditions: "{{ option == 'Aus' }}"
sequence:
- action: mqtt.publish
data:
topic: "campmatic/<GERAETE_ID>/climate/truma_wasser/mode/command"
payload: "off"
default:
# Ein einziger Befehl. Der Sollwert schaltet den Boiler selbst ein.
- action: mqtt.publish
data:
topic: "campmatic/<GERAETE_ID>/climate/truma_wasser/target_temperature/command"
payload: "{{ 60 if option == '60 °C' else 40 }}"
Der Grund: Deine Box sammelt Befehle und gibt sie gebündelt an die Truma weiter, sobald das Bedienteil danach fragt. Das dauert einen Moment. Kommt in dieser Zeit ein zweiter Befehl, überschreibt er den ersten — und ein Einschaltbefehl setzt den Sollwert dabei auf 40 °C zurück. Du wählst also 60 °C und bekommst 40 °C.
Dieselbe Regel gilt für die Heizung im nächsten Kapitel: ein Befehl, dann warten, bis sich der Zustand ändert — erst danach der nächste.
mqtt: mehrfach vor, gilt nur der letzte Block. Alle vorher aufgeführten Sensoren verschwinden lautlos und stehen danach auf nicht verfügbar — ohne dass die Konfigurationsprüfung etwas meldet.In den nächsten Kapiteln kommen weitere Sensoren dazu. Häng sie immer als Listeneinträge unter das vorhandene
mqtt: sensor:, niemals mit einem neuen mqtt: davor. Danach: Entwicklerwerkzeuge → Konfiguration prüfen, und wenn dort alles in Ordnung ist, Home Assistant neu starten.
- In
configuration.yamlsteht derpackages-Eintrag - Die Datei
/config/packages/campmatic.yamlexistiert - Die Konfigurationsprüfung meldet keinen Fehler
- Nach dem Neustart gibt es die Entität
select.warmwasserund sie steht auf Aus