Weishaupt Heatpump integration via modbus

@AndiE1234 you can not do a JAZ Tag calculation as the electricity from Modbus is only available in steps of 1 ! meaning your power consumption was 1.99 kW - and you still think you used 1kW for the thermal energy produced.

I only look at month and year JAZ for the day value I implemented myself a SW based WPST_Strom_Tag which gets the job done. You can not rely on the register of the WBB.

@kakash your graphs shows the issue with JAZ Tag … it is basically not usable as power consumption is rounded to the full kWh.

I did build myself a SW approximation for power during the day leveraging the Leistungsanforderung value. This works much better and avoid having high jumps like in your graph from 15 back towards 4.

  • platform: template
    sensors:
    heat_pump_electric_power:
    friendly_name: “Heat Pump Power”
    unit_of_measurement: “kW”
    device_class: power
    unique_id: “0412660815061367648539”
    value_template: >
    {% set base_power = 0.017 + states(‘sensor.value_jitter_integration_fix’) | float(default=0) + states(‘sensor.wp_leistungsanforderung’) | float(default=0) * 0.0189 %}
    {% set additional_power = 0 %}
    {% if states(‘sensor.wp_e1_status’) == ‘1’ %}
    {% set additional_power = additional_power + 3.5 %}
    {% endif %}
    {% if states(‘sensor.wp_e2_status’) == ‘1’ %}
    {% set additional_power = additional_power + 3.5 %}
    {% endif %}
    {{ base_power + additional_power }}
    attribute_templates:
    last_update: 1

The result in attached graph - from here you can integrate into Heat Pump Energy and use for a daily JAZ.

2 Likes

@ThijsPenn Yes for the water pump flow - you can read from register 43107 -

Thank you @rafdev18 for your input.
Unfortunately i think you’re calculation is wrong.

As far as i can see:

  • The wp_Leistungsanforderung has a direct correlation with the power output of the heat pump.

  • in my case my WBB12 can deliver up to 11kW of energy. This maximal energy output is also relative to the air temperature. So right now with 10°C air temperature, i can get around 10,5kW heat output.

  • When i read 40% Power, it means then 0,4*10,5=4,2kW → fits more or less the reading in WEM-Portal


Back to your calculations:

  1. you seems to multiply the “%” directly with your current reading consumption (100%=18,9kW). This may be correct, but only for a short period of time. As soon, as the temperature varies, it will be wrong.

Solution for JAZ Daily

  1. the best would be webscraper on the WEM Portal OR the local WEM local Portal. I’ve tried briefly without sucess
  2. the second best option, is for me, my actual calulation, but only take the last value of the day.
  • i could use this values to monitor a trend versus the monthly value

Solution for Actual Power Consumption in kW
3) i would also like to have a visualisation of the “actual power consumption in kW” so that i can map it on my energy graph with the photovoltaik.

  • On the “WEM Portal integration” the power output in kW is available. I could use this value and divide it with the monthly JAZ, to have a rough idea about the actual consumption. But this is also just a rough calculation

PS: You mentioned, that you can see the yearly JAZ ? how can you get it? the register 36104 and 36704 sends me only “0” as value

I think the Stat registers behave totally different depending on the kind of heatpump and software-version.
I will try to get a real spec from Weishaupt for my LS 13-B with SW-Version 0202038212.

In my case, the 3670x don’t work at all.
I get the real “Jahr” values (36x04) correctly like they are shown on the display
But somehow the heute/gestern/Monat values are not working correctly, they show totally different values than the display, and are not updated. The “Jahr” is updated correctly. Don’t know why.

I created a sensor with the errortext and the troubleshooting. maybe not the best yaml code, but it works.
offtopic: at the last 2 weeks my WBB12 got a lot of the error 101. One week ago a servicetechnician has optimized some parameters, but the faults happens again. Weishaupt told me that this is not a real error, the problem is the warm temperatures (Übergangszeit). They are waiting for a software update so solve the issue.

Template.yaml

    - name: "WP Fehler Text" # source: https://www.weishaupt.de/uploads/tx_weishaupt_documents/documents/83315301.pdf
      attributes:
        errornumber: "{{ states('sensor.wp_fehler') | int }}"
        errortext: >
          {% set value = states('sensor.wp_fehler')|int() %}
          {% if value == 65535 %}{% set errortext = 'kein Fehler' %}
          {% elif value == 1 %}{% set errortext = 'Kältemittelfühler Expansionsventil Eintritt (T1)' %}
          {% elif value == 2 %}{% set errortext = 'Luftansaugfühler (T2)' %}
          {% elif value == 3 %}{% set errortext = 'Wärmetauscherfühler AG Austritt (T3)' %}
          {% elif value == 4 %}{% set errortext = 'Verdichtersauggasfühler (T4)' %}
          {% elif value == 5 %}{% set errortext = 'EVI-Sauggasfühler (T5)' %}
          {% elif value == 6 %}{% set errortext = 'Kältemittelfühler IG Austritt (T6)' %}
          {% elif value == 7 %}{% set errortext = 'Ölsumpffühler (T7)' %}
          {% elif value == 8 %}{% set errortext = 'Expansionsventil EVI' %}
          {% elif value == 9 %}{% set errortext = 'Niederdrucksensor (P1)' %}
          {% elif value == 10 %}{% set errortext = 'Hochdrucksensor (P2)' %}
          {% elif value == 11 %}{% set errortext = 'Mitteldrucksensor (P3)' %}
          {% elif value == 12 %}{% set errortext = 'Expansionsventil Kühlen defekt' %}
          {% elif value == 13 %}{% set errortext = 'keine Kommunikation zum Inverter' %}
          {% elif value == 14 %}{% set errortext = 'keine Kommunikation zum Außengerät' %}
          {% elif value == 15 %}{% set errortext = 'Hochdruckschalter hat ausgelöst' %}
          {% elif value == 16 %}{% set errortext = 'Inverter gesperrt, da in den letzten 10 Stunden 10 Fehler aufgetreten sind' %}
          {% elif value == 17 %}{% set errortext = 'EEPROM Speicher-Fehler' %}
          {% elif value == 18 %}{% set errortext = 'keine Modbus-Kommunikation zwischen Regler EC und Steuerplatine Kältesatz' %}
          {% elif value == 19 %}{% set errortext = 'durch Inverter-Alarm Wärmepumpe abgeschaltet' %}
          {% elif value == 20 %}{% set errortext = 'Verdichter passt nicht zur Konfiguration' %}
          {% elif value == 21 %}{% set errortext = 'Niederdruck-Störung' %}
          {% elif value == 22 %}{% set errortext = 'zu geringe Überhitzung' %}
          {% elif value == 23 %}{% set errortext = 'zu hohe Überhitzung' %}
          {% elif value == 24 %}{% set errortext = 'EVI zu hohe Überhitzung' %}
          {% elif value == 25 %}{% set errortext = 'Kältemittelmenge zu niedrig' %}
          {% elif value == 26 %}{% set errortext = 'Hochdruck-Störung' %}
          {% elif value == 27 %}{% set errortext = 'Kondensationstemperatur zu niedrig' %}
          {% elif value == 28 %}{% set errortext = 'Kondensationstemperatur zu hoch' %}
          {% elif value == 29 %}{% set errortext = 'Verdampfungstemperatur zu niedrig' %}
          {% elif value == 30 %}{% set errortext = 'Verdampfungstemperatur zu hoch' %}
          {% elif value == 32 %}{% set errortext = 'Wärmepumpe nicht kompatibel' %}
          {% elif value == 33 %}{% set errortext = 'Regler EC hat keine Verbindung zum Erweiterungsmodul EM-HK' %}
          {% elif value == 40 %}{% set errortext = 'Volumenstrom zu gering' %}
          {% elif value == 41 %}{% set errortext = 'Spreizung LWT/Rücklauf negativ / Vierwegeventil schaltet nach dem Abtauen nicht zurück; nach 3 Warnungen verriegelt die Anlage)' %}
          {% elif value == 43 %}{% set errortext = 'Ventilator blockiert' %}
          {% elif value == 44 %}{% set errortext = 'Drehzahl Ventilator zu niedrig' %}
          {% elif value == 47 %}{% set errortext = 'Kommunikation Regler EC zu Steuerplatine Kältesatz fehlerhaft' %}
          {% elif value == 50 %}{% set errortext = 'Außenfühler (B1) unterbrochen' %}
          {% elif value == 51 %}{% set errortext = 'Außenfühler (B1) kurzgeschlossen' %}
          {% elif value == 52 %}{% set errortext = 'Weichenfühler (B2) unterbrochen' %}
          {% elif value == 53 %}{% set errortext = 'Weichenfühler (B2) kurzgeschlossen' %}
          {% elif value == 54 %}{% set errortext = 'Warmwasserfühler (B3) unterbrochen' %}
          {% elif value == 55 %}{% set errortext = 'Warmwasserfühler (B3) kurzgeschlossen' %}
          {% elif value == 56 %}{% set errortext = 'Vorlauffühler Verflüssiger (B4) unterbrochen' %}
          {% elif value == 57 %}{% set errortext = 'Vorlauffühler Verflüssiger (B4) kurzgeschlossen' %}
          {% elif value == 58 %}{% set errortext = 'Vorlauffühler (B7) unterbrochen' %}
          {% elif value == 59 %}{% set errortext = 'Vorlauffühler (B7) kurzgeschlossen' %}
          {% elif value == 60 %}{% set errortext = 'Rücklauffühler (B9) unterbrochen' %}
          {% elif value == 61 %}{% set errortext = 'Rücklauffühler (B9) kurzgeschlossen' %}
          {% elif value == 64 %}{% set errortext = 'Pufferfühler (B11) unterbrochen' %}
          {% elif value == 65 %}{% set errortext = 'Pufferfühler (B11) kurzgeschlossen' %}
          {% elif value == 66 %}{% set errortext = 'Mischerfühler regenerativ (B2.1) unterbrochen' %}
          {% elif value == 67 %}{% set errortext = 'Mischerfühler regenerativ (B2.1) kurzgeschlossen' %}
          {% elif value == 70 %}{% set errortext = 'Vorlauffühler Zweiter Heizkreis (B6.2) unterbrochen' %}
          {% elif value == 71 %}{% set errortext = 'Vorlauffühler Zweiter Heizkreis (B6.2) kurzgeschlossen' %}
          {% elif value == 72 %}{% set errortext = 'Fühler (T1.2) unterbrochen' %}
          {% elif value == 73 %}{% set errortext = 'Fühler (T1.2) kurzgeschlossen' %}
          {% elif value == 74 %}{% set errortext = 'Fühler (T2.2) unterbrochen' %}
          {% elif value == 75 %}{% set errortext = 'Fühler (T2.2) kurzgeschlossen' %}
          {% elif value == 90 %}{% set errortext = 'Analogeingang AE1 unterbrochen' %}
          {% elif value == 91 %}{% set errortext = 'Analogeingang AE1 kurzgeschlossen' %}
          {% elif value == 92 %}{% set errortext = 'Analogeingang AE2 unterbrochen' %}
          {% elif value == 93 %}{% set errortext = 'Analogeingang AE2 kurzgeschlossen' %}
          {% elif value == 94 %}{% set errortext = 'Analogeingang AE3 unterbrochen' %}
          {% elif value == 95 %}{% set errortext = 'Analogeingang AE3 kurzgeschlossen' %}
          {% elif value == 101 %}{% set errortext = 'Wärmepumpe wird außerhalb der Einsatzgrenzen betrieben' %}
          {% elif value == 102 %}{% set errortext = 'maximale Abtauzeit überschritten' %}
          {% elif value == 103 %}{% set errortext = 'Kommunikation Kältekreis fehlerhaft' %}
          {% elif value == 104 %}{% set errortext = 'Druckgastemperatur zu hoch' %}
          {% elif value == 105 %}{% set errortext = 'Stromaufnahme vom Inverter zu hoch' %}
          {% elif value == 106 %}{% set errortext = 'Stromaufnahme zu hoch' %}
          {% elif value == 107 %}{% set errortext = 'Gleichspannung am Inverter zu hoch' %}
          {% elif value == 108 %}{% set errortext = 'Gleichspannung am Inverter zu niedrig' %}
          {% elif value == 109 %}{% set errortext = 'Wärmepumpe wird außerhalb vom zulässigen Spannungsbereich betrieben' %}
          {% elif value == 110 %}{% set errortext = 'Wärmepumpe wird außerhalb vom zulässigen Spannungsbereich betrieben' %}
          {% elif value == 111 %}{% set errortext = 'Hochdruckschalter hat ausgelöst' %}
          {% elif value == 112 %}{% set errortext = 'Inverter ist überhitzt' %}
          {% elif value == 113 %}{% set errortext = 'Inverter ist überhitzt' %}
          {% elif value == 114 %}{% set errortext = 'Stellung vom Verdichtermotor kann nicht bestimmt werden' %}
          {% elif value == 117 %}{% set errortext = 'Gleichspannung am Inverter zu niedrig' %}
          {% elif value == 118 %}{% set errortext = 'Strom zwischen Inverter und Verdichter ist zu hoch' %}
          {% elif value == 119 %}{% set errortext = 'Stromaufnahme vom Verdichter zu hoch Zeitüberschreitung' %}
          {% elif value == 120 %}{% set errortext = 'Invertertemperatur zu hoch' %}
          {% elif value == 121 %}{% set errortext = 'Spannung am Inverter zu gering' %}
          {% elif value == 122 %}{% set errortext = 'Modbus-Konfigurationsfehler' %}
          {% elif value == 123 %}{% set errortext = 'keine Modbus-Verbindung' %}
          {% elif value == 124 %}{% set errortext = 'Druckgastemperatur zu hoch' %}
          {% elif value == 127 %}{% set errortext = 'Invertertemperatur zu hoch' %}
          {% elif value == 128 %}{% set errortext = 'Inverter ist überhitzt' %}
          {% elif value == 129 %}{% set errortext = 'Modbus-Kommunikation fehlerhaft' %}
          {% elif value == 130 %}{% set errortext = 'Modbus-Kommunikation fehlerhaft' %}
          {% elif value == 133 %}{% set errortext = 'Elektronikfehler' %}
          {% elif value == 135 %}{% set errortext = 'Hochdruckschalter defekt' %}
          {% elif value == 136 %}{% set errortext = 'Verdichter passt nicht zur Konfiguration' %}
          {% elif value == 137 %}{% set errortext = 'Hochdruckschalter passt nicht zur Konfiguration' %}
          {% elif value == 140 %}{% set errortext = 'Druckgastemperatur zu niedrig' %}
          {% elif value == 143 %}{% set errortext = 'Invertertemperatur zu niedrig' %}
          {% elif value == 144 %}{% set errortext = 'Drosselspulentemperatur zu niedrig' %}
          {% else %}{% set errortext = 'undefiniert' %}
          {% endif %}
          {{ errortext }}

        troubleshooting: >
          {% set value = states('sensor.wp_fehler')|int() %}
          {% if value == 65535 %}{% set troubleshooting = '' %}
          {% elif value == 1 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 2 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 3 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 4 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 5 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 6 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 7 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 8 %}{% set troubleshooting = 'Leitung prüfen, ggf. austauschen. Ggf. defektes Expansionsventil austauschen.' %}
          {% elif value == 9 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 10 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 11 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 12 %}{% set troubleshooting = 'Leitung prüfen, ggf. austauschen. Expansionsventil austauschen.' %}
          {% elif value == 13 %}{% set troubleshooting = 'Lastspannung am Verdichter und Inverter prüfen. & Verbindungsleitung Steuerplatine Kältesatz zu Inverter prüfen. & Ggf. defekte Steuerplatine Kältesatz austauschen.' %}
          {% elif value == 14 %}{% set troubleshooting = 'Verbindungsleitung zum Außengerät prüfen.' %}
          {% elif value == 15 %}{% set troubleshooting = 'Drücke im Kältekreis kontrollieren. Volumenstrom prüfen. & Verdrahtung prüfen. & Sicherstellen, dass die Einsatzgrenzen der Wärmepumpe eingehalten werden. & Kältekreis prüfen.' %}
          {% elif value == 16 %}{% set troubleshooting = 'Spannungsversorgung mindestens 10 Minuten unterbrechen. Bei wiederholtem Auftreten Weishaupt-Kundendienst benachrichtigen.' %}"
          {% elif value == 17 %}{% set troubleshooting = 'Spannungsversorgung mindestens 10 Minuten unterbrechen.' %}
          {% elif value == 18 %}{% set troubleshooting = 'Modbus-Verbindung prüfen.' %}
          {% elif value == 19 %}{% set troubleshooting = 'Bei wiederholtem Auftreten Weishaupt-Kundendienst benachrichtigen.' %}
          {% elif value == 20 %}{% set troubleshooting = 'Verdichtertyp prüfen. & Spannungsversorgung mindestens 10 Minuten unterbrechen.' %}
          {% elif value == 21 %}{% set troubleshooting = 'Verdampfer auf Eisfreiheit prüfen. Funktion Ventilator prüfen. & Niederdrucksensor (P1) prüfen. Kältekreis prüfen.' %}
          {% elif value == 22 %}{% set troubleshooting = 'Wenn der Fehler wiederholt auftritt: Überhitzung prüfen. & Verdichtersauggasfühler (T4) prüfen. Niederdrucksensor (P1) prüfen. & Antrieb Expansionsventil prüfen. Kältekreis prüfen.' %}
          {% elif value == 23 %}{% set troubleshooting = 'Wenn der Fehler wiederholt auftritt: Überhitzung prüfen. & Verdichtersauggasfühler (T4) prüfen. Niederdrucksensor (P1) prüfen. & Antrieb Expansionsventil prüfen. Kältekreis prüfen.' %}
          {% elif value == 24 %}{% set troubleshooting = 'Wenn der Fehler wiederholt auftritt: Kältekreis prüfen. & Lecksuche durchführen.' %}
          {% elif value == 25 %}{% set troubleshooting = 'Wenn der Fehler wiederholt auftritt: Kältekreis prüfen. & Lecksuche durchführen.' %}
          {% elif value == 26 %}{% set troubleshooting = 'Wärmeabnahme prüfen. & Hohe Warmwasser-Solltemperaturen vermeiden. & Sicherstellen, dass die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird. & Einstellung Überströmventil prüfen.' %}
          {% elif value == 27 %}{% set troubleshooting = 'Der erwartete Betriebszustand wird bei hoher Außentemperatur und geringer Vorlauftemperatur nicht erreichen. & Anlage mit 2. Wärmeerzeuger hochheizen.' %}
          {% elif value == 28 %}{% set troubleshooting = 'Wärmeabnahme prüfen. Einstellung Überströmventil prüfen. Heizwasser-Volumenstrom prüfen.' %}
          {% elif value == 29 %}{% set troubleshooting = 'Verdampfer auf Eisfreiheit prüfen. Funktion Ventilator prüfen. & Kältekreis prüfen.' %}
          {% elif value == 30 %}{% set troubleshooting = 'Die Einsatzgrenze der Wärmepumpe wurde überschritten. & Sicherstellen, dass die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird.' %}
          {% elif value == 32 %}{% set troubleshooting = 'Spannungsversorgung Verdichter prüfen. Spannungsversorgung von den Klemmen zum Kältesatz prüfen. & Weishaupt-Kundendienst benachrichtigen.' %}
          {% elif value == 33 %}{% set troubleshooting = 'Verbindungsleitung zwischen Regler und Erweiterungsmodul prüfen.' %}
          {% elif value == 40 %}{% set troubleshooting = 'Mindestvolumenstrom beachten [Kap. 3.4.6]. Volumenstrom prüfen, ggf. erhöhen. & Leitung Volumenstromsensor (B10) prüfen. Volumenstromsensor (B10) prüfen, ggf. austauschen.' %}
          {% elif value == 41 %}{% set troubleshooting = 'Volumenstrom anpassen. Pumpenleistung reduzieren. Vierwegeventil prüfen. & Ggf. Funktion deaktivieren.' %}
          {% elif value == 43 %}{% set troubleshooting = 'Verdampfer auf Eisfreiheit prüfen. Funktion Ventilator prüfen.' %}
          {% elif value == 44 %}{% set troubleshooting = 'Verdampfer auf Eisfreiheit prüfen. Funktion Ventilator prüfen.' %}
          {% elif value == 47 %}{% set troubleshooting = 'Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 50 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 51 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 52 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 53 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 54 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 55 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 56 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 57 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 58 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 59 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 60 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 61 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 64 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 65 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 66 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 67 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 70 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 71 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 72 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 73 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 74 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 75 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 90 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 91 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 92 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 93 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 94 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 95 %}{% set troubleshooting = 'Fühler und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 101 %}{% set troubleshooting = 'Sicherstellen, dass die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird, siehe W 26 bis W 30.' %}
          {% elif value == 102 %}{% set troubleshooting = 'Bei exponiertem Aufstellungsort kann starker Wind zu dieser Warnung führen. Nach der Abtauung Verdampfer auf Eisfreiheit prüfen.' %}
          {% elif value == 103 %}{% set troubleshooting = 'Spannungsversorgung mindestens 10 Minuten unterbrechen. Bei wiederholtem Auftreten Weishaupt-Kundendienst benachrichtigen.' %}
          {% elif value == 104 %}{% set troubleshooting = 'Wärmeabnahme prüfen. Kältekreis prüfen.' %}
          {% elif value == 105 %}{% set troubleshooting = 'Sicherstellen, dass die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird. & Verdichteranschluss am Inverter prüfen.' %}
          {% elif value == 106 %}{% set troubleshooting = 'Sicherstellen, dass die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird. & Spannungsversorgung prüfen (Netzspannung zu gering). & Drosselspulen in der 400 V Zuleitung zum Inverter prüfen.' %}
          {% elif value == 107 %}{% set troubleshooting = 'Sicherstellen, dass die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird. & Spannungsversorgung prüfen.' %}
          {% elif value == 108 %}{% set troubleshooting = 'Sicherstellen, dass die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird. & Spannungsversorgung prüfen.' %}
          {% elif value == 109 %}{% set troubleshooting = 'Spannungsversorgung prüfen.' %}
          {% elif value == 110 %}{% set troubleshooting = 'Spannungsversorgung prüfen.' %}
          {% elif value == 111 %}{% set troubleshooting = 'Wärmeabnahme prüfen. & Einstellung vom Überströmventil prüfen. Stellung der Kugelhähne am Innenund Außengerät prüfen. & Drücke im Kältekreis kontrollieren. Volumenstrom kontrollieren. & Verdrahtung prüfen. & Sicherstellen, dass die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird. & Kältekreis prüfen.' %}
          {% elif value == 112 %}{% set troubleshooting = 'Sicherstellen, dass: die Montagebedingungen für das Innengerät eingehalten werden & die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird & Weishaupt-Kundendienst benachrichtigen (Version der Steuerplatine Kältesatz RCC Modbus prüfen).' %}
          {% elif value == 113 %}{% set troubleshooting = 'Sicherstellen, dass: die Montagebedingungen für das Innengerät eingehalten werden & die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird & Weishaupt-Kundendienst benachrichtigen (Version der Steuerplatine Kältesatz RCC Modbus prüfen).' %}
          {% elif value == 114 %}{% set troubleshooting = 'Sicherstellen, dass die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird. & Verdichteranschluss am Inverter prüfen.' %}
          {% elif value == 117 %}{% set troubleshooting = 'Sicherstellen, dass die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird. & Spannungsversorgung prüfen.' %}
          {% elif value == 118 %}{% set troubleshooting = 'Sicherstellen, dass die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird. & Verdichteranschluss am Inverter prüfen. Verdichter-Wicklungswiderstände messen.' %}
          {% elif value == 119 %}{% set troubleshooting = 'Sicherstellen, dass die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird. & Verdichteranschluss am Inverter prüfen. Verdichter-Wicklungswiderstände messen.' %}
          {% elif value == 120 %}{% set troubleshooting = 'Sicherstellen, dass: die Montagebedingungen für das Innengerät eingehalten werden & die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird' %}
          {% elif value == 121 %}{% set troubleshooting = 'Spannung nach den Drosselspulen messen.' %}
          {% elif value == 122 %}{% set troubleshooting = 'Spannungsversorgung mindestens 10 Minuten unterbrechen.' %}
          {% elif value == 123 %}{% set troubleshooting = 'Modbus-Verbindung (Leitung und Stecker) zwischen Inverter und Steuerplatine Kältesatz prüfen. & Spannungsversorgung mindestens 10 Minuten unterbrechen.' %}
          {% elif value == 124 %}{% set troubleshooting = 'Wärmeabnahme prüfen. Kältekreis prüfen.' %}
          {% elif value == 127 %}{% set troubleshooting = 'Sicherstellen, dass: die Montagebedingungen für das Innengerät eingehalten werden & die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird' %}
          {% elif value == 128 %}{% set troubleshooting = 'Sicherstellen, dass: die Montagebedingungen für das Innengerät eingehalten werden & die Wärmepumpe innerhalb der Einsatzgrenzen betrieben wird & Weishaupt-Kundendienst benachrichtigen (Version der Steuerplatine Kältesatz RCC Modbus prüfen).' %}
          {% elif value == 129 %}{% set troubleshooting = 'Modbus-Verbindung zwischen Inverter und Steuerplatine Kältesatz prüfen (Leitung und Stecker). & Spannungsversorgung mindestens 10 Minuten unterbrechen.' %}
          {% elif value == 130 %}{% set troubleshooting = 'Modbus-Verbindung zwischen Inverter und Steuerplatine Kältesatz prüfen (Leitung und Stecker). & Spannungsversorgung mindestens 10 Minuten unterbrechen.' %}
          {% elif value == 133 %}{% set troubleshooting = 'Spannungsversorgung mindestens 10 Minuten unterbrechen.' %}
          {% elif value == 135 %}{% set troubleshooting = 'Hochdruckschalter-Anschluss prüfen.' %}
          {% elif value == 136 %}{% set troubleshooting = 'Verdichtertyp prüfen. & Spannungsversorgung mindestens 10 Minuten unterbrechen.' %}
          {% elif value == 137 %}{% set troubleshooting = 'Hochdruckschalter prüfen. Spannungsversorgung mindestens 10 Minuten unterbrechen.' %}
          {% elif value == 140 %}{% set troubleshooting = 'Druckgasfühler (DT) und Leitung prüfen, ggf. austauschen.' %}
          {% elif value == 143 %}{% set troubleshooting = 'Kühlung am Inverter prüfen. Gerät neu starten.' %}
          {% elif value == 144 %}{% set troubleshooting = 'Sicherstellen, dass die Montagebedingungen für das Innengerät eingehalten werden.' %}
          {% else %}{% set troubleshooting = 'undefiniert' %}
          {% endif %}
          {{ troubleshooting }}
      state: >
        {% set value = states('sensor.wp_fehler')|int() %}
        {% if value == 65535 %}
          {{ "Kein Fehler"}}
        {% else %}
          {{ states('sensor.wp_fehler')|int() }}: {{ state_attr('sensor.wp_fehler_text', 'errortext') }}
        {% endif %}

1 Like

@kakash my code was not for the heat pump output - I use Leistungsanforderung to calculate my electric power consumption.

PLS See attached it is quite aligned with the WPST_Strom_Tag

I did exactly what you are interested in - I can compare the power usage of my heat pump between PV power consumption and grid import.

This is good enough for me:

With this estimation I can then extract my total energy and grid energy portion …

… you can see that I did use 86 kWh Energy in October out of which only 33 kWh were Grid import … the rest was PV :slight_smile: not an exact science but I compared my data for 2 weeks and it looks reasonable close :wink:

@AndiE1234 - Hi Andi - great work ! will immediately reuse your code ! THANK YOU ! Also on my end the same currently with the 101 warnings. It is really the warm temperature – one thing I read is to further increase the room temperature setting so you do not hit the “outside norm” operating area these days.

I am new to the Weishaupt WBB - so for now I am watching this - it is really weather dependent -

1 Like

Hi , the “raumsoll” is not the problem. I would like to set the current room temperature (“Raumtemperatur”) like " WEM-RG1 2.1"

Hi @rafdev18 ,
nice dashboard.
Can you help me how do you get the sensor-card showing the min/max values as number and how do you got them in green?
Thanks
image

this is awesome, just can you enlighten me about the value_jitter_integration_fix? What exactly is that sensor?

I realized this for the HK like this:

template: 
  select:
  - 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 %}
1 Like

I discovered that my LS 13-B not only stores the current statistics values, but also from the former days/months/years.
If you click the display, you see the historical graph, see below.

The problem seems to be, that the corresponding Modbus registers for the values (36101, 36103,36104) only show the values of the FIRST value of the graph, and NOT the CURRENT day/month/year:

  • read_input_registers: 36101 - value: [25]
  • read_input_registers: 36102 - value: [39]
  • read_input_registers: 36103 - value: [137] ← See picture below, this value does not contain the current value, but the first value of the statistics per month
  • read_input_registers: 36104 - value: [392]

Anyone an idea, if this is a bug on the WWP or if there is a special modbus trick to get the current or all values?

Hi @thrymr - as you need to integrate the software calculated WBB power in order to have your daily energy consumption you do need to use a Riemann Integration.

The Riemann Integration has the flaw it does not work well on non changing values. Meaning when the heat pump is not running the compressor and the power value is constant this will be not integrated into the value distorting the outcome of the energy sensor.

The easiest fix I was able to implement to add for 10 minutes 0.01 watts and then for 10 mins subtract 0.01 watts for 10 minutes. This way the value never stays static but the integration still shows the right energy result :wink: took me some days to find this workaround. PLS find the sensor code attached:

  • platform: template
    sensors:
    value_jitter_integration_fix:
    friendly_name: Value Integration Jitter Fix
    value_template: >
    {% set minutes = (now().hour * 60) + now().minute %}
    {% set is_positive = (minutes // 10) % 2 == 0 %}
    {% set value = 0.001 if is_positive else -0.001 %}
    {{ value }}
1 Like

Hi @rafdev18 , thanks for sharing your details on the jitter trick.
Reading through this I check back with your formula further up in the post on calculating the electrical power used.
I have the very same heat pump model as yours and would agree to 100% “Leistungsanforderung” pulling 2.750 W.
However, your formula does not appear to reflect that. INstead it calaculates values much lower:
{% set base_power = 0.017 + states(‘sensor.value_jitter_integration_fix’) | float(default=0) + states(‘sensor.wp_leistungsanforderung’) | float(default=0) * 0.0189 %}

Could you please explain why you choose those numbers?

Many thanks, Stefan

supplementary:

  - 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 %}

Hi Stefan, thanks for challenging my math. I basically did measure over my energy meter the power consumption of the heat pump when I did WW and I saw the max Leistungsanforderung. This is how I calculated the needed adjustment factors.

So I did not come with a 100% = 2.75 kW math but measured what for example 67% Leistungsanforderung means for my power at this point in time.

The proof for me is that my integrated energy follows very close the energy counter in the WBB. I have minimal deviations at the end of the day — so I am happy. Maybe you can measure with your approach if you achieve better results and I am more then happy to learn.

Just some inspiration - you can build with picture element a nice schema with live values for your heat pump. Much better then checking values in a list :wink:

1 Like

Hi,
i have a WGB8 from weishaupt. Today weishaupt sent me the modbus tabel. But in this tabel are not the temps from Brine (Soletemperatur). Have anybody an idea what are the hiden registers for this value? Thx for Feedback.

1 Like

Hello everyone,

I have a Weishaupt WTC-GB 15-B. I already set a static ip but it seems like I can’t get the modbus connectivity to work. I always receive a “connection refused” on port 502. Do I need to active another setting or is modbus not supportged on this device?