KartoffelToby / better_thermostat

This custom component for Home Assistant will add crucial features to your climate-controlling TRV (Thermostatic Radiator Valves) to save you the work of creating automations to make it smart. It combines a room-temperature sensor, window/door sensors, weather forecasts, or an ambient temperature probe to decide when it should call for heat and automatically calibrate your TRVs to fix the imprecise measurements taken in the radiator's vicinity.
https://better-thermostat.org
GNU Affero General Public License v3.0
752 stars 123 forks source link

Over- and under-shooting with BRT-100 #1244

Open hayvan96 opened 8 months ago

hayvan96 commented 8 months ago

Prerequisites

* [x] Output from Home Assistant Device Diagnostic from BT

```{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2023.12.4",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.11.6",
    "docker": true,
    "arch": "x86_64",
    "timezone": "Europe/Paris",
    "os_name": "Linux",
    "os_version": "6.1.71-haos",
    "supervisor": "2023.12.0",
    "host_os": "Home Assistant OS 11.4",
    "docker_version": "24.0.7",
    "chassis": "vm",
    "run_as_root": true
  },
  "custom_components": {
    "idfm": {
      "version": "2.0.0",
      "requirements": [
        "idfm-api==1.3.0"
      ]
    },
    "hacs": {
      "version": "1.33.0",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    },
    "localtuya": {
      "version": "5.2.1",
      "requirements": []
    },
    "pollens": {
      "version": "2023.06.01",
      "requirements": []
    },
    "xiaomi_cloud_map_extractor": {
      "version": "v2.2.0",
      "requirements": [
        "pillow",
        "pybase64",
        "python-miio",
        "requests",
        "pycryptodome"
      ]
    },
    "xiaomi_gateway3": {
      "version": "3.3.5",
      "requirements": [
        "zigpy>=0.44.1"
      ]
    },
    "xiaomi_miio_fan": {
      "version": "2023.12.0.0",
      "requirements": [
        "construct==2.10.68",
        "python-miio>=0.5.12"
      ]
    },
    "better_thermostat": {
      "version": "1.4.0",
      "requirements": []
    },
    "adaptive_lighting": {
      "version": "1.20.0",
      "requirements": [
        "ulid-transform"
      ]
    },
    "rte_ecowatt": {
      "version": "0.6.3",
      "requirements": [
        "Async-OAuthlib==0.0.9"
      ]
    }
  },
  "integration_manifest": {
    "domain": "better_thermostat",
    "name": "Better Thermostat",
    "after_dependencies": [
      "climate"
    ],
    "codeowners": [
      "@kartoffeltoby"
    ],
    "config_flow": true,
    "dependencies": [
      "climate",
      "recorder"
    ],
    "documentation": "https://github.com/KartoffelToby/better_thermostat",
    "iot_class": "local_push",
    "issue_tracker": "https://github.com/KartoffelToby/better_thermostat/issues",
    "requirements": [],
    "version": "1.4.0",
    "is_built_in": false
  },
  "data": {
    "info": {
      "name": "TRV Chambre \u00e0 coucher",
      "temperature_sensor": "sensor.a4c138062544_temperature",
      "off_temperature": 16,
      "tolerance": 0.0,
      "humidity_sensor": "sensor.a4c138062544_humidity",
      "window_sensors": null,
      "outdoor_sensor": null,
      "weather": null,
      "cooler": null,
      "window_off_delay": 0,
      "window_off_delay_after": 0,
      "model": "BRT-100-TRV"
    },
    "thermostat": {
      "climate.moes_chambre_a_coucher": {
        "name": "MOES Chambre \u00e0 coucher",
        "state": "heat",
        "attributes": {
          "hvac_modes": [
            "heat"
          ],
          "min_temp": 5.0,
          "max_temp": 35.0,
          "target_temp_step": 1.0,
          "preset_modes": [
            "none",
            "programming",
            "manual",
            "temporary_manual",
            "holiday"
          ],
          "current_temperature": 17.0,
          "temperature": 16.0,
          "hvac_action": "idle",
          "preset_mode": "manual",
          "friendly_name": "MOES Chambre \u00e0 coucher",
          "supported_features": 17
        },
        "bt_config": {
          "calibration": "target_temp_based",
          "calibration_mode": "heating_power_calibration",
          "protect_overheating": false,
          "no_off_system_mode": true,
          "heat_auto_swapped": false,
          "valve_maintenance": false,
          "child_lock": true,
          "homaticip": false
        },
        "bt_adapter": "mqtt",
        "bt_integration": "mqtt",
        "model": "BRT-100-TRV"
      }
    },
    "external_temperature_sensor": {
      "entity_id": "sensor.a4c138062544_temperature",
      "state": "16.0",
      "attributes": {
        "state_class": "measurement",
        "native_value": 16.0,
        "unit_of_measurement": "\u00b0C",
        "device_class": "temperature",
        "friendly_name": "Capteur Chambre \u00e0 coucher Temperature"
      },
      "last_changed": "2024-01-13T07:44:10.990942+00:00",
      "last_updated": "2024-01-13T07:44:10.990942+00:00",
      "context": {
        "id": "01HM0WEF7EH4736FVXQA2FM5Y7",
        "parent_id": null,
        "user_id": null
      }
    },
    "window_sensor": "-"
  }
}

Description

Hi I had to change my coordinator (conbee2 to sonoff-P) and as a consequence, had to re-pair my devices. Since then, the 2 TRV in the living room are systematically undershooting (stalling 1°C under the target), and the bedroom TRV is overshooting.

I'll illustrate the overshooting part (and json/state above are linked to the bedroom TRV), as it's more annoying and energy wasting.

Capture d'écran 2024-01-13 090943

Target is 15°C. It started to heat to 17°C this morning.

My settings : target based, AI time, "if your device doesn't support off, use 5°C", and "child lock".

On my previous settings, I remember I had to wait a few days before AI calibration took effect, but never had this kind of annoying behavior.

On these MOES BRT-100-TRV, should I use other options, like "swap auto/heat"?

Thanks for your help

Steps to Reproduce

  1. Set a target, eg 15°C
  2. Wait and see

Expected behavior:

TRV should fluctuate around the target.

Actual behavior:

it starts heating before hitting the target, and, over time, tends to heat to higher temperature. After a while (see figure above), it even heats +2°C above target.

Versions

HA 2023.12.3 , BT 1.4.0

Additional information

On the other hand, my other TRV have the opposite behaviour. They stop heating before reaching target. During night, I set 17, during day 19. Typically, it will stabilize around 18. I have the impression valves are not full open (even according to the thermostat, they're heating). Again I'm waiting a few days without fiddling to see how and if AI changes anything.

code-chicken commented 8 months ago

Hi,

I am also having the problem with undershooting. A workaround for me was to make any changes to BT configuration. Right after saving the new settings BT seems to work correctly for at least one day. Maybe this is the same problem: #1250