diff --git a/README.md b/README.md index e69de29..cbd37f5 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,5 @@ +Setup um eine Weishautp wärmepumpe per ModBus in Homeassistant einzubinden + +Ein Thread dazu: +https://community.home-assistant.io/t/weishaupt-heatpump-integration-via-modbus/436823 + diff --git a/WBB_WP_ModbusTCP.xlsx.ods b/WBB_WP_ModbusTCP.xlsx.ods new file mode 100644 index 0000000..3aa42b3 Binary files /dev/null and b/WBB_WP_ModbusTCP.xlsx.ods differ diff --git a/homeassistant/config/configuration.yaml b/homeassistant/config/configuration.yaml new file mode 100644 index 0000000..942ae3e --- /dev/null +++ b/homeassistant/config/configuration.yaml @@ -0,0 +1,57 @@ + +# Loads default set of integrations. Do not remove. +default_config: + +# Load frontend themes from the themes folder +frontend: + themes: !include_dir_merge_named themes + +automation: !include automations.yaml +script: !include scripts.yaml + +scene: !include scenes.yaml + +modbus: !include weishaupt.yaml + +template: + select: + - name: Systembetriebsart + unique_id: wpump_mode + state: "{{ states('sensor.wp_systembetriebsart_text') }}" + options: "{{ ['Automatik', 'Heizen', 'Kühlen', 'Sommer', 'Standby', '2. WEZ']}}" + select_option: + service: modbus.write_register + data: + hub: wpump + slave: 1 + address: 40001 + value: > + {% if option == "Automatik" %} 0 + {% elif option == "Heizen" %} 1 + {% elif option == "Kühlen" %} 2 + {% elif option == "Sommer" %} 3 + {% elif option == "Standby" %} 4 + {% elif option == "2. WEZ" %} 5 + {% endif %} + - name: Heizkreis Betriebsart + unique_id: wpump_hk_mode + state: "{{ states('sensor.wp_heizkreis_betriebsart_text') }}" + options: "{{ ['Automatik', 'Komfort', 'Normal', 'Absenk', 'Standby']}}" + select_option: + service: modbus.write_register + data: + hub: wpump + slave: 1 + address: 41103 + value: > + {% if option == "Automatik" %} + 0 + {% elif option == "Komfort" %} + 1 + {% elif option == "Normal" %} + 2 + {% elif option == "Absenk" %} + 3 + {% elif option == "Standby" %} + 4 + {% endif %} diff --git a/homeassistant/config/scenes.yaml b/homeassistant/config/scenes.yaml new file mode 100644 index 0000000..49b8fc9 --- /dev/null +++ b/homeassistant/config/scenes.yaml @@ -0,0 +1,15 @@ +- id: '1731416586384' + name: Neue Szene + entities: + select.heizkreis_betriebsart: + options: + - Automatik + - Komfort + - Normal + - Absenk + - Standby + friendly_name: Heizkreis Betriebsart + state: unknown + metadata: + select.heizkreis_betriebsart: + entity_only: true diff --git a/homeassistant/config/sensors.yaml b/homeassistant/config/sensors.yaml new file mode 100644 index 0000000..8241d1d --- /dev/null +++ b/homeassistant/config/sensors.yaml @@ -0,0 +1,248 @@ + #WW + - name: WP_Warmwassersolltemperatur + slave: 1 + address: 32101 + input_type: input + unit_of_measurement: °C + state_class: measurement + scale: 0.1 + offset: 0 + precision: 1 + data_type: int16 + unique_id: wpump.wwsolltemp + - name: WP_Warmwassertemperatur + slave: 1 + address: 32102 + input_type: input + unit_of_measurement: °C + state_class: measurement + scale: 0.1 + offset: 0 + precision: 1 + data_type: int16 + unique_id: wpump.wwtemp + #System + - name: WP_Betrieb + slave: 1 + address: 30006 + input_type: input + scale: 1 + offset: 0 + precision: 0 + data_type: int16 + unique_id: wpump.betrieb + - name: WP_Stoerungsfrei + slave: 1 + address: 30005 + input_type: input + scale: 1 + offset: 0 + precision: 0 + data_type: int16 + - name: WP_Außentemperatur + slave: 1 + address: 30001 + input_type: input + unit_of_measurement: °C + state_class: measurement + scale: 0.1 + offset: 0 + precision: 1 + data_type: int16 + #Heizkreis + - name: WP_Raumsolltemperatur + slave: 1 + address: 31101 + input_type: input + unit_of_measurement: °C + state_class: measurement + scale: 0.1 + offset: 0 + precision: 1 + data_type: int16 + - name: WP_Vorlaufsolltemperatur + slave: 1 + address: 31104 + input_type: input + unit_of_measurement: °C + state_class: measurement + scale: 0.1 + offset: 0 + precision: 1 + data_type: int16 + - name: WP_Vorlauftemperatur + slave: 1 + address: 33104 + input_type: input + unit_of_measurement: °C + state_class: measurement + scale: 0.1 + offset: 0 + precision: 1 + data_type: int16 + - name: WP_Rücklauftemperatur + slave: 1 + address: 33105 + input_type: input + unit_of_measurement: °C + state_class: measurement + scale: 0.1 + offset: 0 + precision: 1 + data_type: int16 + - name: WP_Leistungsanforderung + slave: 1 + address: 33103 + input_type: input + unit_of_measurement: '%' + state_class: measurement + scale: 1 + offset: 0 + precision: 1 + data_type: int16 + - name: WP_Heizkurve + slave: 1 + address: 41108 + input_type: holding + state_class: measurement + scale: 0.01 + offset: 0 + precision: 2 + data_type: int16 + # 2. WEZ + - name: WP_E1_Status + slave: 1 + address: 34104 + input_type: input + scale: 1 + offset: 0 + precision: 0 + data_type: int16 + - name: WP_E2_Status + slave: 1 + address: 34105 + input_type: input + scale: 1 + offset: 0 + precision: 0 + data_type: int16 + - name: WP_E1_Stunden + slave: 1 + address: 34106 + input_type: input + unit_of_measurement: h + state_class: measurement + scale: 1 + offset: 0 + precision: 0 + data_type: int16 + - name: WP_E2_Stunden + slave: 1 + address: 34107 + input_type: input + unit_of_measurement: h + state_class: measurement + scale: 1 + offset: 0 + precision: 0 + data_type: int16 + #Stats + - name: WPST_Gesamt_Tag + slave: 1 + address: 36101 + input_type: input + unit_of_measurement: kWh + state_class: total_increasing + device_class: energy + scale: 1 + offset: 0 + precision: 1 + data_type: int16 + - name: WPST_Gesamt_Monat + slave: 1 + address: 36103 + input_type: input + unit_of_measurement: kWh + state_class: total_increasing + device_class: energy + scale: 1 + offset: 0 + precision: 1 + data_type: int16 + - name: WPST_Gesamt_Jahr + slave: 1 + address: 36104 + input_type: input + unit_of_measurement: kWh + state_class: total_increasing + device_class: energy + scale: 1 + offset: 0 + precision: 1 + data_type: int16 + - name: WPST_Heizen_Tag + slave: 1 + address: 36201 + input_type: input + unit_of_measurement: kWh + state_class: total_increasing + device_class: energy + scale: 1 + offset: 0 + precision: 1 + data_type: int16 + - name: WPST_Heizen_Monat + slave: 1 + address: 36203 + input_type: input + unit_of_measurement: kWh + state_class: total_increasing + device_class: energy + scale: 1 + offset: 0 + precision: 1 + data_type: int16 + - name: WPST_Heizen_Jahr + slave: 1 + address: 36204 + input_type: input + unit_of_measurement: kWh + state_class: total_increasing + device_class: energy + scale: 1 + offset: 0 + precision: 1 + data_type: int16 + - name: WPST_WW_Tag + slave: 1 + address: 36301 + input_type: input + unit_of_measurement: kWh + state_class: total_increasing + device_class: energy + scale: 1 + offset: 0 + precision: 1 + data_type: int16 + - name: WPST_WW_Monat + slave: 1 + address: 36303 + input_type: input + unit_of_measurement: kWh + state_class: total_increasing + device_class: energy + scale: 1 + offset: 0 + precision: 1 + data_type: int16 + - name: WPST_WW_Jahr + slave: 1 + address: 36304 + input_type: input + unit_of_measurement: kWh + state_class: total_increasing + device_class: energy + scale: 1 + offset: 0 + precision: 1 + data_type: int16 diff --git a/homeassistant/config/weishaupt.yaml b/homeassistant/config/weishaupt.yaml new file mode 100644 index 0000000..d9ee857 --- /dev/null +++ b/homeassistant/config/weishaupt.yaml @@ -0,0 +1,20 @@ +- name: wpump + type: tcp + host: 192.168.1.7 + port: 502 + climates: + - name: "WP_Warmwasser" + #address: 42103 + address: 32102 + slave: 1 + input_type: input + max_temp: 50 + min_temp: 15 + offset: 0 + precision: 1 + scale: 0.1 + target_temp_register: 42103 + temp_step: 1 + temperature_unit: C + unique_id: 123-456-abc + sensors: !include sensors.yaml diff --git a/homeassistant/docker-compose.yaml b/homeassistant/docker-compose.yaml new file mode 100644 index 0000000..ff80a32 --- /dev/null +++ b/homeassistant/docker-compose.yaml @@ -0,0 +1,14 @@ +version: "3" +services: + homeassisstant: + container_name: homeassistant + image: "ghcr.io/home-assistant/home-assistant:stable" + ports: + - 8123:8123 + volumes: + - ./config:/config + - /etc/localtime:/etc/localtime:ro + - /run/dbus:/run/dbus:ro + restart: unless-stopped + privileged: true + network_mode: host