tadasdanielius / daikin_altherma

Daikin Altherma custom component for home assistant
MIT License
80 stars 6 forks source link

Missing temperature sensor for water tank #32

Open matejsp opened 2 years ago

matejsp commented 2 years ago

They is no sensor for water tank current temperature and set temperature. Unable to create a graph for it. But it is for indoor and outdoor temperature. image

And there is some wierd $NULL inside ID. image

tadasdanielius commented 2 years ago

The nulls are weird but water heater should be under water_heater domain. Search for water_heater in entities

image image
matejsp commented 2 years ago

Yes I can see history on the water heater control, but I cannot add a graph pointing to the water temperature.

For example climate control has various sensors:

image

vs water heater that has only energy available:

image

I want to create entities card with header 'graph' but it is not working.

type: entities
entities:
  - water_heater.domestic_toplotna_crpalka_voda
title: Toplotna crpalka - Voda
header:
  type: graph
  entity: water_heater.domestic_toplotna_crpalka_voda

But I can do it for climate control:

type: entities
entities:
  - switch.climate_control
  - select.operation_mode
  - number.temperature_control
title: Toplotna crpalka
header:
  type: graph
  entity: sensor.indoor_temperature
  detail: 2
  hours_to_show: 168

getting:

image
matejsp commented 2 years ago

Another thing is why not using thermostat widget for climate control? Should be better suitable for heat pump?

image

Btw. Great work! Love it!

tadasdanielius commented 2 years ago

The water tank is implemented as Water Heater Entity You can extract temperature by creating template sensors. Somewhere in your configuration.yaml you can put this (just put the right entity names)

template:
  - sensor:
      - name: "Water Tank Target Temperature"
        unit_of_measurement: °C
        device_class: temperature
        state: >
          {{ state_attr('water_heater.domestic_hot_water_tank','temperature') }}

      - name: "Water Tank Current Temperature"
        unit_of_measurement: °C
        device_class: temperature
        state: >
          {{ state_attr('water_heater.domestic_hot_water_tank','current_temperature') }}

And you should have sensors which you can plot how you want.

Now regarding the thermostat. At least my device does not provide such thing as "target temperature", I can only control "Leaving water temperature" therefore the default thermostat entity does not play very well, so I created separate entities. But, you can easily wrap it up to generic_thermostat

put somewhere in your configuration.yaml

climate:
  - platform: generic_thermostat
    name: My Heater
    unique_id: daikin_climate_control
    target_sensor: sensor.your_temperature_sensor
    min_temp: 18
    max_temp: 26
    heater: switch.your_daiking_climate_control
    target_temp: 20
    cold_tolerance: 0.3
    hot_tolerance: 0.3
    ac_mode: false
    initial_hvac_mode: "heat"
    min_cycle_duration:
      seconds: 5
tadasdanielius commented 2 years ago

BTW more details on how to control Hot water tank: change temperature / turn on/of you can find here

matejsp commented 2 years ago

Tnx. I will create template sensors for now. Would like to have them by default (like it is done for Indoor and Outdoor Temperature though so it is easier to use :). Perhaps add those two samples to readme. They are really valuable to not search for correct one.

So you can only set leaving water temperature? Wierd :) perhaps that's why I cannot set target temperature. It would be nice to support multiple device types. Will investigate further.

Regarding the $NULL ... and target temperature ... If it helps. Read from websocket: /[0]/MNAE/1/UnitProfile/la /[0]/MNAE/2/UnitProfile/la /[0]/MNCSE-node/deviceInfo /[0]/MNCSE-node/firmware

UnitProfile 1:

{
  "SyncStatus": "update",
  "Sensor": [
    "IndoorTemperature",
    "OutdoorTemperature",
    "LeavingWaterTemperatureCurrent"
  ],
  "UnitStatus": [
    "ErrorState",
    "InstallerState",
    "WarningState",
    "EmergencyState",
    "TargetTemperatureOverruledState"
  ],
  "Operation": {
    "Power": [
      "on",
      "standby"
    ],
    "OperationMode": [
      "heating",
      "cooling",
      "auto"
    ],
    "TargetTemperature": {
      "heating": {
        "maxValue": 30.0,
        "minValue": 12.0,
        "stepValue": 0.5
      },
      "cooling": {
        "maxValue": 35.0,
        "minValue": 15.0,
        "stepValue": 0.5
      },
      "auto": {
        "maxValue": 35.0,
        "minValue": 15.0,
        "stepValue": 0.5
      }
    },
    "RoomTemperatureHeating": {
      "maxValue": 30.0,
      "minValue": 12.0,
      "stepValue": 0.5,
      "settable": true
    },
    "RoomTemperatureCooling": {
      "maxValue": 35.0,
      "minValue": 15.0,
      "stepValue": 0.5,
      "settable": true
    },
    "RoomTemperatureAuto": {
      "maxValue": 35.0,
      "minValue": 15.0,
      "stepValue": 0.5,
      "settable": true
    },
    "LeavingWaterTemperatureOffsetHeating": {
      "maxValue": 10,
      "minValue": -10,
      "stepValue": 1,
      "settable": true
    },
    "LeavingWaterTemperatureCooling": {
      "maxValue": 22,
      "minValue": 18,
      "stepValue": 1,
      "settable": true
    }
  },
  "Schedule": {
    "Base": "action",
    "defaultScheduleAvailable": "true",
    "NameAdjustable": "false",
    "List": {
      "heating": [
        {
          "StartTime": {
            "stepValue": 10.0,
            "unit": "minutes"
          },
          "TargetTemperature": {
            "heating": {
              "maxValue": 30.0,
              "minValue": 12.0,
              "stepValue": 1
            }
          },
          "Actions": [
            "StartTime",
            "TargetTemperature"
          ],
          "maxActionsAllowed": 6
        },
        [
          "monday",
          "tuesday",
          "wednesday",
          "thursday",
          "friday",
          "saturday",
          "sunday"
        ],
        [
          "monday",
          "tuesday",
          "wednesday",
          "thursday",
          "friday",
          "saturday",
          "sunday"
        ],
        [
          "monday",
          "tuesday",
          "wednesday",
          "thursday",
          "friday",
          "saturday",
          "sunday"
        ],
        []
      ],
      "cooling": [
        {
          "StartTime": {
            "stepValue": 10.0,
            "unit": "minutes"
          },
          "TargetTemperature": {
            "cooling": {
              "maxValue": 35.0,
              "minValue": 15.0,
              "stepValue": 1
            }
          },
          "Actions": [
            "StartTime",
            "TargetTemperature"
          ],
          "maxActionsAllowed": 6
        },
        [
          "monday",
          "tuesday",
          "wednesday",
          "thursday",
          "friday",
          "saturday",
          "sunday"
        ],
        []
      ]
    }
  },
  "Consumption": {
    "Electrical": {
      "unit": "kWh",
      "Heating": {
        "Daily": {
          "contentCount": 24,
          "resolution": 2
        },
        "Weekly": {
          "contentCount": 14,
          "resolution": 1
        },
        "Monthly": {
          "contentCount": 24,
          "resolution": 1
        }
      },
      "Cooling": {
        "Daily": {
          "contentCount": 24,
          "resolution": 2
        },
        "Weekly": {
          "contentCount": 14,
          "resolution": 1
        },
        "Monthly": {
          "contentCount": 24,
          "resolution": 1
        }
      }
    }
  }
}

UnitProfile 2:

{
  "SyncStatus": "reboot",
  "Sensor": [
    "TankTemperature"
  ],
  "UnitStatus": [
    "ErrorState",
    "InstallerState",
    "WeatherDependentState",
    "WarningState",
    "EmergencyState"
  ],
  "Operation": {
    "Power": [
      "on",
      "standby"
    ],
    "OperationMode": [
      "heating"
    ],
    "TargetTemperature": {
      "heating": {
        "maxValue": 60.0,
        "minValue": 30.0,
        "stepValue": 0.5
      }
    },
    "DomesticHotWaterTemperatureHeating": {
      "maxValue": 60.0,
      "minValue": 30.0,
      "stepValue": 1.0,
      "settable": true
    },
    "powerful": [
      "0",
      "1"
    ]
  },
  "Schedule": {},
  "Consumption": {
    "Electrical": {
      "unit": "kWh",
      "Heating": {
        "Daily": {
          "contentCount": 24,
          "resolution": 2
        },
        "Weekly": {
          "contentCount": 14,
          "resolution": 1
        },
        "Monthly": {
          "contentCount": 24,
          "resolution": 1
        }
      }
    }
  }
}

Device info:

{
  "rn": "deviceInfo",
  "ri": "0081",
  "pi": "007f",
  "ty": 13,
  "ct": "20000000T000000Z",
  "lt": "20000000T000000Z",
  "st": 0,
  "mgd": 1007,
  "dlb": "180800171",
  "man": "Daikin",
  "mod": "BRP069A62",
  "dty": "HVAC controller",
  "fwv": "1700390A",
  "swv": "436CC160000",
  "hwv": ""
}

Firmware:

{
  "rn": "firmware",
  "ri": "0080",
  "pi": "007f",
  "ty": 13,
  "ct": "20000000T000000Z",
  "lt": "20000000T000000Z",
  "st": 0,
  "mgd": 1001,
  "vr": "1700390A",
  "fwn": "",
  "url": "",
  "ud": false,
  "uds": {
    "sus": 1
  }
}
tadasdanielius commented 2 years ago

The reason I don't have room temperature setting is probably because I have no thermostat attached to the heatpump. And honestly I don't need one. I control the water flow separately to each room and with HA I have virtual thermostats for every room.

MattrixST commented 2 months ago

As @matejsp points out, having DHWT sensors exposed by default would become very handy. Great integration BTW!