Bereitstellung der Truma Heizung via ci_mqtt_bridge (Innentemperatur)

Hallo zusammen,

ich habe auf einem Core Pro zusätzlich Home Assistant installiert.

Innerhalb von Home Assistant habe ich den VanPi MQTT Server eingebunden. Somit habe ich in Home Assistant direkten Zugriff auf meine Truma Heizung. Diese wird via Auto Discovery gefunden.

Innerhalb von Home Assistant schaut’s bei mir so aus:

Die Bedienung funktioniert soweit.

Etwas unschön finde ich, dass die aktuelle Temperatur nicht ersichtlich ist. Wenn ich die Doku richtig verstehe, wird die MQTT Integration durch dieses Skript /home/pi/pekaway/ci2mqtt/ci_mqtt_bridge bereitgestellt (closed source). Daher die Frage an @Vincent und @Karl : Wäre es denkbar, dass ihr innerhalb die MQTT Integration die Innentemperatur bereitstellt?

Das config Topic verweist auf eine Temperatur:

“homeassistant/climate/truma_air/config”:

{“action_template”:“{% if value_json.air.target == ‘off’ or value_json.air.target == ‘0’ %} off {% else %} heat {% endif %}”,“action_topic”:“CI/devices/TrumaCombiHeater/status”,“availability_topic”:“CI/devices/TrumaCombiHeater/status/LWT”,“device”:{“identifiers”:[“combi_d_4”],“manufacturer”:“Truma”,“model”:“Combi D 4”,“name”:“Truma Combi Heater”},“max_temp”:30,“min_temp”:5,“mode_command_topic”:“CI/devices/TrumaCombiHeater/control/air/target”,“mode_state_template”:“{% set t = value_json.air.target %} {% if t == ‘off’ or t == ‘0’ or t == 0 %} off {% else %} heat {% endif %}”,“mode_state_topic”:“CI/devices/TrumaCombiHeater/status”,“modes”:[“off”,“heat”],“name”:“Air”,“payload_available”:“online”,“payload_not_available”:“offline”,“precision”:1,“temperature_command_topic”:“CI/devices/TrumaCombiHeater/control/air/target”,“temperature_state_template”:“{% set t = value_json.air.target | default(‘off’) %} {% if t == ‘off’ %} 0 {% else %} {{ t.replace(‘°C’,‘’) | int }} {% endif %}”,“temperature_state_topic”:“CI/devices/TrumaCombiHeater/status”,“temperature_unit”:“C”,“unique_id”:“truma_air_thermostat”}

Allerdings ist dort dann keine Temperatur enthalten:

topic “CI/devices/TrumaCombiHeater/status”:

{“air”:{“mode”:“normal”,“target”:“14°C”},“diagnostics”:{“alive”:“online”,“energy”:“fuel”,“error”:“none”,“flags”:"frost_ctrl window_closed ",“manual_mode_active”:false,“model”:“Combi D 4”,“power_limit”:900},“metrics”:{“cpplus_fw”:“v4.5.2 (Build 4594)”,“cpplus_time”:“20:47:35”,“heater_fw”:“v6.0.2 (Build 65535)”,“last_valid_age_sec”:0,“manual_mode_count”:7,“publish_count”:“60.835”,“script_runtime”:“4d, 00:51”},“water”:{“target”:“off”}}

Mir ist bewusst, dass die Truma keine Temperatur via CI bereitstellt. Aber man könnte hier ja die Temp ausgeben, die man selbst als Innentemperatur definiert hat.

Danke und Viele Grüße

Michael

1 Like

Ich antworte mir mal selbst.

Durch die Definition einer eigenen climate Entität wird mir nun die aktuelle Temperatur angezeigt.

Die Definition entspricht dem, was das Programm /home/pi/pekaway/ci2mqtt/ci_mqtt_bridge bereitstellt. Lediglich current_temperature_topic habe ich mit dem korrekten MQTT Topic befüllt.

climate:
- name: “Truma Air”
  unique_id: truma_air_thermostat_custom
  modes: [“off”, “heat”]

  availability_topic: "CI/devices/TrumaCombiHeater/status/LWT"
  payload_available: "online"
  payload_not_available: "offline"

  mode_command_topic: "CI/devices/TrumaCombiHeater/control/air/target"
  mode_state_topic: "CI/devices/TrumaCombiHeater/status"
  mode_state_template: >-
    {% set t = value_json.air.target %}
    {% if t == 'off' or t == '0' or t == 0 %} off {% else %} heat {% endif %}

  action_topic: "CI/devices/TrumaCombiHeater/status"
  action_template: >-
    {% if value_json.air.target in ['off','0'] %} off {% else %} heating {% endif %}

  temperature_command_topic: "CI/devices/TrumaCombiHeater/control/air/target"
  temperature_state_topic: "CI/devices/TrumaCombiHeater/status"
  temperature_state_template: >-
    {% set t = value_json.air.target | default('off') %}
    {% if t == 'off' %} 0 {% else %} {{ t.replace('°C','') | int }} {% endif %}

  current_temperature_topic: "pkw/temp1/temp"

  temperature_unit: "C"
  min_temp: 5
  max_temp: 30
  precision: 1
  temp_step: 1

Im Dashboard sieht’s dann so aus:

Das Dashboard zeigt ein weiteres Problem, mit dem ich gekäpft habe. Mir persönlich gefällt die Karte simple-thermostat aus dem HACS. Prinzipbedingt zeigen aber alle Climate Karten bei der Truma Heizung im ausgeschalteten Zustand eine Soll-Temperatur von 0,0. Klickt man die Temperatur schritweise hoch, erhält man bis 4,5°C eine Fehlermeldung. Ab 5°C springt die Heizung an.

Ich wollte daher eine Lösung, die die Tempoeraturwahl im ausgeschalteten Zustand deaktiviert.

Man braucht dazu zwei Lösungen aus dem HACS:

Mit diesem Coding schaut die Karte dann aus, wie gewünscht:

type: custom:simple-thermostat
entity: climate.truma_air
version: 3
layout:
  mode:
    icons: true
    names: true
    headings: false
header:
  icon: mdi:radiator
sensors:
  - id: temperature
    label: "Ist-Temperatur:"
    template: "{{ current_temperature | formatNumber }} °C"
  - id: state
    label: "Zustand:"
    template: "{{ state.text }}"
card_mod:
  style: |
    .current-wrapper {
      opacity: {{ '0.3' if is_state('climate.truma_air', 'off') else '1' }};
      pointer-events: {{ 'none' if is_state('climate.truma_air', 'off') else 'auto' }};
      transition: opacity 0.3s ease;
    }
decimals: 1
unit: °C

Ausgeschaltet:

Heizbetrieb:

Vielleicht hilft das ja dem einen oder anderen …