Lokales API für die Bosch Wärmepumpe

10.10.2026
Clock Icon 3 min.
Smart Home

Endlich hat die EU etwas für uns getan! Spaß beiseite.. Tatsächlich hat der European Data Act auch Bosch dazu gezwungen den Zugriff auf die Daten der Wärmepumpe zu ermöglichen. Und zwar ohne Cloudservices und Boschs blöder App.

Ganz konkret geht es um das Modul "BOSCH Connect-Key K 40 RF", welches per LAN oder WLAN die Wärmepumpe mit dem Internet verbindet. Nun kann man per API (laut Bosch "zurzeit" nur lesend) auf die Daten der Wärmepumpe zugreifen.

Entdeckt habe ich die News in dem Blog von Matthias Röckl und gleich geprüft, ob mein Modul ebenfalls die Unterstützung hat. Man kann die Firmware des Connect-Keys in der Bosch-App "HomeCom" prüfen. Dort stand auch, dass das Modul nun die Daten per Local API anbietet. In dem Blog von Matthias ist gut beschrieben, wie man den Auth Token abrufen kann, mit dem die Anfragen an die Wärmepumpe autorisiert werden.

Hier ist Bosch-Doku dazu: https://github.com/bosch-home-comfort/api-docs/blob/main/docs/k-40-rf.md

Und so kann man dann z.B. alle Temperaturwerte abrufen (der JSON-Parser "jq" muss installiert sein):

BASH
 1IP_ADDRESS=<Hier eintragen>
 2TOKEN="Hier eintragen"
 3
 4# Fetch a resource and print "id: value unitOfMeasure" (skips endpoints not available on this system).
 5get_temperature() {
 6  local path="$1"
 7  local response
 8  response=$(curl \
 9    --silent --fail \
10    --insecure \
11    --header "Authorization: Bearer ${TOKEN}" \
12    "https://${IP_ADDRESS}:9443${path}")
13
14  if [ -n "${response}" ]; then
15    echo "${response}" | jq -r '"\(.id): \(.value) \(.unitOfMeasure)"'
16  fi
17}
18
19# Temperature endpoints under /heatSources
20HEAT_SOURCE_TEMPS=(
21  "/heatSources/actualSupplyTemperature"
22  "/heatSources/currentSupplySetpoint"
23  "/heatSources/returnTemperature"
24  "/heatSources/dhw/cylinderTemperature"
25  "/heatSources/dhw/cylinderUpperTemp"
26  "/heatSources/additionalHeater/flowTemp"
27  "/heatSources/sensors/evaporatorTemp_tl1"
28  "/heatSources/sensors/evaporatorTemp_tl2"
29)
30
31# Per-heat-source temperature endpoints (looped over hs1..hs6)
32HEAT_SOURCE_ID_TEMPS=(
33  "returnFlowTemp"
34  "supplyFlowCondenserTemp"
35  "refrigerant/compressorTemp"
36  "refrigerant/liquidPipeCoolingTemp"
37  "refrigerant/liquidPipeHeatingTemp"
38  "refrigerant/lowPressureTemp"
39  "refrigerant/highPressureTemp"
40  "refrigerant/hotGasTemp"
41  "refrigerant/suctionGasTemp"
42  "brineCircuit/collectorInflowTemp"
43  "brineCircuit/collectorOutflowTemp"
44)
45
46for path in "${HEAT_SOURCE_TEMPS[@]}"; do
47  get_temperature "${path}"
48done
49
50for hs in hs1 hs2 hs3 hs4 hs5 hs6; do
51  for sub in "${HEAT_SOURCE_ID_TEMPS[@]}"; do
52    get_temperature "/heatSources/${hs}/${sub}"
53  done
54done

Ich bin gespannt, wann die offizielle Home Assistant Integration verfügbar sein wird 🤩

🛎️ Update vom 11.10.26: Auf der Seite von Bosch ist mehr zu den Schnittstellen beschrieben, es soll noch ein WebAPI kommen: https://www.bosch-homecomfort.com/de/de/wohngebaeude/wissen/sektorenkopplung/schnittstellen/

Einbinden in Home Assistant

Man kann solange die offizielle Integration von Home Assistant nicht da ist, schon mal mit dem Rest-Sensor auf die Daten zugreifen:

Einbinden in configuration.yaml

YAML
 1sensor: !include bosch-heatpump.yaml

Datei bosch-heatpump.yaml

YAML
 1- platform: rest
 2  <<: &bosch_base
 3    verify_ssl: false
 4    headers:
 5      # Adjust the header key/format if the Bosch API requires something other than Bearer
 6      Authorization: "Bearer XXXXXX-REPLACE_WITH_YOUR_TOKEN-XXXXXXXX" 
 7    state_class: measurement
 8    scan_interval: 300
 9  name: "Bosch HP Actual Supply Temperature"
10  value_template: "{{ value_json.value }}"
11  unit_of_measurement: "°C"
12  resource: "https://REPLACE-WITH-YOUR-IP:9443/heatSources/actualSupplyTemperature"
13
14- platform: rest
15  <<: *bosch_base
16  name: "Bosch HP Return Temperature"
17  device_class: temperature
18  unit_of_measurement: "°C"
19  value_template: "{{ value_json.value }}"
20  resource: "https://REPLACE-WITH-YOUR-IP:9443/heatSources/returnTemperature"
21
22- platform: rest
23  <<: *bosch_base
24  name: "Bosch HP DHW Cylinder Temperature"
25  device_class: temperature
26  unit_of_measurement: "°C"
27  value_template: "{{ value_json.value }}"
28  resource: "https://REPLACE-WITH-YOUR-IP:9443/heatSources/dhw/cylinderTemperature"
29
30- platform: rest
31  <<: *bosch_base
32  name: "Bosch HP Additional Heater Flow Temp"
33  device_class: temperature
34  unit_of_measurement: "°C"
35  value_template: "{{ value_json.value }}"
36  resource: "https://REPLACE-WITH-YOUR-IP:9443/heatSources/additionalHeater/flowTemp"
37
38- platform: rest
39  <<: *bosch_base
40  name: "Bosch HP Number Of Starts"
41  value_template: "{{ value_json.value | int }}"
42  resource: "https://REPLACE-WITH-YOUR-IP:9443/heatSources/numberOfStarts"