Hallo zusammen,
vor ein paar Tagen habe ich erfahren, dass es seit ein paar Wochen eine lokale Rest Api für die Nibe S Serie gibt. Ich habe eine S1255-6 PC und konnte hiermit eine Menge Daten direkt ohne cloud in meinen Homeassistant einbinden. Evtl. gibt es noch mehr Datenpunkte, die könnt ihr über die erzeugte heatpump.txt im config Verzeichnis vom Homeassistant finden (kann sein, dass meine KI nicht alle sinnvollen Datenpunkte erwischt hat). Bei anderen Modellen kann man dann relativ einfach die heatpump.yaml anpassen.
Anbei die Information wie ihr es auch im Homeassistant einbinden könnt.
Große Hilfe war mir die Information von bastin im
Energiesparhaus-Forum:
https://www.energiesparhaus.at/forum-lokale-rest-api-auf-s-serie-geraeten-intro-und-moeglichkeiten/84250Ihr benötigt:
Zugriff auf die Dateien in dem Homeassistant /config/ Verzeichnis
IP der Wärmepumpe
Menüpunkt 7.5.15: Setzen Benutzername und
Passwort in der Wärmepumpe
Erstellen des kodierten Base64 codes mit Benutzername und Passwort z.B. hier: https://mixedanalytics.com/tools/basic-authentication-generator/ (Einfach Benutzername:Passwort eingeben)
Wenn ihr shell_command und command_line bereits in der configuration.yaml einsetzt, müsst ihr es ggfs. an eure Struktur anpassen/einarbeiten. Ich glaube das geht nicht an zwei Orten gleichzeitig.
configuration.yaml ("unter homeassistant:" den Absatz packages hinzufügen):
homeassistant:
packages:
pack_1: !include heatpump.yaml
heatpump.yaml (hier den Base64 Code und die IP der WP eintragen):
shell_command:
get_heatpump_json: |-
curl -k -H "Authorization: Basic [Base64 Code]" -H 'Content-Type: application/json' https://[IP der Wärmepumpe]:8443/api/v1/devices/0/points > heatpump.json
cat heatpump.json | jq -r '.[] | "\(.metadata.variableId)':'\(.title)':'\(.value.integerValue / .metadata.divisor)':'\(.metadata.unit)"' > heatpump.txt
command_line:
# -------------------------
#
Temperatures (°C)
# -------------------------
- sensor:
name: Heatpump Outdoor Temperature
command: "awk -F: '$1==\"4\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
- sensor:
name: Heatpump Supply Line BT2
command: "awk -F: '$1==\"8\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
- sensor:
name: Heatpump Return Line BT3
command: "awk -F: '$1==\"10\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
- sensor:
name: Heatpump Hot Water Top BT7
command: "awk -F: '$1==\"11\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
- sensor:
name: Heatpump Hot Water Charging BT6
command: "awk -F: '$1==\"12\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
- sensor:
name: Heatpump Brine In BT10
command: "awk -F: '$1==\"13\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
- sensor:
name: Heatpump Brine Out BT11
command: "awk -F: '$1==\"14\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
- sensor:
name: Heatpump Condenser Supply Line BT12
command: "awk -F: '$1==\"15\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
- sensor:
name: Heatpump Discharge BT14
command: "awk -F: '$1==\"16\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
- sensor:
name: Heatpump Liquid Line BT15
command: "awk -F: '$1==\"17\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
- sensor:
name: Heatpump Suction Gas BT17
command: "awk -F: '$1==\"19\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
- sensor:
name: Heatpump Average Temperature BT1
command: "awk -F: '$1==\"54\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
- sensor:
name: Heatpump Brine In EP10-BT26
command: "awk -F: '$1==\"147\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
- sensor:
name: Heatpump Calculated Supply Climate System 1
command: "awk -F: '$1==\"1708\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
- sensor:
name: Heatpump Requested Compressor Frequency
command: "awk -F: '$1==\"1771\" {print $3}' heatpump.txt"
unit_of_measurement: "Hz"
scan_interval: 60
device_class: frequency
state_class: measurement
- sensor:
name: Heatpump Max Frequency Compressor
command: "awk -F: '$1==\"1789\" {print $3}' heatpump.txt"
unit_of_measurement: "Hz"
scan_interval: 60
device_class: frequency
state_class: measurement
- sensor:
name: Heatpump Min Frequency Compressor
command: "awk -F: '$1==\"1788\" {print $3}' heatpump.txt"
unit_of_measurement: "Hz"
scan_interval: 60
device_class: frequency
state_class: measurement
- sensor:
name: Heatpump Current Compressor Frequency
command: "awk -F: '$1==\"1799\" {print $3}' heatpump.txt"
unit_of_measurement: "Hz"
scan_interval: 60
device_class: frequency
state_class: measurement
- sensor:
name: Heatpump Inverter Temperature
command: "awk -F: '$1==\"1800\" {print $3}' heatpump.txt"
unit_of_measurement: "°C"
scan_interval: 60
device_class: temperature
state_class: measurement
# -------------------------
# Flow Sensor
# -------------------------
- sensor:
name: Heatpump Flow Sensor BF1
command: "awk -F: '$1==\"58\" {print $3}' heatpump.txt"
unit_of_measurement: "l/m"
scan_interval: 60
device_class: volume_flow_rate
state_class: measurement
# -------------------------
# Fan / Pump Speeds
# -------------------------
- sensor:
name: Heatpump Fan Speed AZ30-GQ2
command: "awk -F: '$1==\"248\" {print $3}' heatpump.txt"
unit_of_measurement: "%"
scan_interval: 60
device_class: speed
state_class: measurement
- sensor:
name: Heatpump Fan Speed AZ30-GQ3
command: "awk -F: '$1==\"249\" {print $3}' heatpump.txt"
unit_of_measurement: "%"
scan_interval: 60
device_class: speed
state_class: measurement
- sensor:
name: Heatpump Heating Medium Pump Speed GP1
command: "awk -F: '$1==\"1975\" {print $3}' heatpump.txt"
unit_of_measurement: "%"
scan_interval: 60
device_class: speed
state_class: measurement
- sensor:
name: Heatpump Brine Pump Speed GP2
command: "awk -F: '$1==\"1977\" {print $3}' heatpump.txt"
unit_of_measurement: "%"
scan_interval: 60
device_class: speed
state_class: measurement
- sensor:
name: Heatpump Heating Medium Pump EB100
command: "awk -F: '$1==\"2559\" {print $3}' heatpump.txt"
unit_of_measurement: "%"
scan_interval: 60
device_class: speed
state_class: measurement
- sensor:
name: Heatpump Brine Pump EB100
command: "awk -F: '$1==\"2560\" {print $3}' heatpump.txt"
unit_of_measurement: "%"
scan_interval: 60
device_class: speed
state_class: measurement
# -------------------------
# Electrical / Power
# -------------------------
- sensor:
name: Heatpump Compressor Power Input
command: "awk -F: '$1==\"1801\" {print $3}' heatpump.txt"
unit_of_measurement: "W"
scan_interval: 60
device_class: power
state_class: measurement
- sensor:
name: Heatpump Current Compressor
command: "awk -F: '$1==\"1806\" {print $3}' heatpump.txt"
unit_of_measurement: "mA"
scan_interval: 60
device_class: current
state_class: measurement
- sensor:
name: Heatpump Compressor Power Input Average
command: "awk -F: '$1==\"1932\" {print $3}' heatpump.txt"
unit_of_measurement: "W"
scan_interval: 60
device_class: power
state_class: measurement
# -------------------------
# Compressor Times (hours)
# -------------------------
- sensor:
name: Heatpump Total Run Time Additional Heat
command: "awk -F: '$1==\"1755\" {print $3}' heatpump.txt"
unit_of_measurement: "h"
scan_interval: 60
device_class: duration
state_class: measurement
- sensor:
name: Heatpump Total Run Time Compressor
command: "awk -F: '$1==\"1961\" {print $3}' heatpump.txt"
unit_of_measurement: "h"
scan_interval: 60
device_class: duration
state_class: measurement
- sensor:
name: Heatpump Total Run Time Compressor Hot Water
command: "awk -F: '$1==\"1963\" {print $3}' heatpump.txt"
unit_of_measurement: "h"
scan_interval: 60
device_class: duration
state_class: measurement
- sensor:
name: Heatpump Compressor Oper Time Total EB100-EP15
command: "awk -F: '$1==\"2544\" {print $3}' heatpump.txt"
unit_of_measurement: "h"
scan_interval: 60
device_class: duration
state_class: measurement
- sensor:
name: Heatpump Compressor Oper Time Hot Water EB100-EP15
command: "awk -F: '$1==\"2545\" {print $3}' heatpump.txt"
unit_of_measurement: "h"
scan_interval: 60
device_class: duration
state_class: measurement
- sensor:
name: Heatpump Compressor Oper Time Total EB100-EP14
command: "awk -F: '$1==\"2562\" {print $3}' heatpump.txt"
unit_of_measurement: "h"
scan_interval: 60
device_class: duration
state_class: measurement
- sensor:
name: Heatpump Compressor Oper Time Hot Water EB100-EP14
command: "awk -F: '$1==\"2563\" {print $3}' heatpump.txt"
unit_of_measurement: "h"
scan_interval: 60
device_class: duration
state_class: measurement