Kapitel 6

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.

10 Minuten Zuletzt geprüft: 22.09.2026 DE EN

Was nicht stimmt

Öffne die Karte Truma Wasser. Wahrscheinlich steht dort nicht verfügbar. Schuld sind zwei voneinander unabhängige Dinge:

Erstens: „nan" bei ausgeschalteter Heizung
Solange Boiler oder Heizung aus sind, gibt es keine Solltemperatur. Dein CampMatic sendet dafür den Wert 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 integer

Da die Heizung meistens aus ist, ist die Karte meistens leer.
Zweitens: eine Temperatur, die es nicht gibt
Die Karte bietet 40, 60 und 80 °C an. Deine Truma kennt für das Warmwasser aber nur Aus, 40 °C und 60 °C. Wer 80 °C wählt, wartet vergeblich.

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.

Nur 40 und 60 Grad — auch wenn die Karte 80 anbietet
Die automatisch angelegte Karte lässt 80 °C zu. Beim VW Grand California solltest du das nicht einstellen: Das Bedienteil im Fahrzeug bietet selbst nur bis 60 °C an, und die Warmwasserleitungen sind für mehr nicht ausgelegt. Die Auswahl, die wir gleich bauen, kennt deshalb nur Aus, 40 und 60 °C.

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:

/config/configuration.yaml yaml
homeassistant:
  packages: !include_dir_named packages
Hast du schon einen homeassistant:-Block?
Dann schreibe nur die Zeile 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:

Im Terminal-Add-on bash
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.

/config/packages/campmatic.yaml yaml Herunterladen
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 }}"
Immer nur ein Befehl auf einmal
Zum Einschalten genügt der Sollwert — der Boiler geht dabei von selbst an. Schick nicht zusätzlich einen Befehl für die Betriebsart hinterher.

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.
Nur ein mqtt: und ein template: je Datei
Das ist die wichtigste Regel für diese Datei — und der Fehler, der am schwersten zu finden ist. Kommt mqtt: mehrfach vor, gilt nur der letzte Block. Alle vorher aufgeführten Sensoren verschwinden lautlos und stehen danach auf nicht verfügbarohne 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.

Neu laden genügt hier nicht
Neue MQTT-Sensoren erscheinen erst nach einem echten Neustart. Wer nur die Konfiguration neu lädt, sieht sie zwar in der Liste, aber dauerhaft als nicht verfügbar — und sucht den Fehler dann an der falschen Stelle.
Bevor du weitergehst
  • In configuration.yaml steht der packages-Eintrag
  • Die Datei /config/packages/campmatic.yaml existiert
  • Die Konfigurationsprüfung meldet keinen Fehler
  • Nach dem Neustart gibt es die Entität select.warmwasser und sie steht auf Aus