Energy and metering148 — Water Heater Management

Matter Cluster 148 — Water Heater Management

Matter Cluster 148 (0x0094) Water Heater Management: attributes, commands, events, data types, shadow paths and bridge payload examples.

Matter Cluster 148 — Water Heater Management Cluster

Matter Cluster 148, also written as 0x0094, is the Water Heater Management Cluster. This cluster is used to allow clients to control the operation of a hot water heating appliance so that it can be used with energy management. Heating of hot water is one of the main energy uses in homes, and when coupled with the Energy Management cluster, it can help consumers save cost (e.g. using power at cheaper times or from local solar PV generation).

Cluster Identity

FieldValue
Cluster ID decimal148
Cluster ID hex0x0094
Cluster nameWater Heater Management
Cluster revision (Matter 1.6.1)2
Roleapplication
ScopeEndpoint
PICS codeEWATERHTR
Typical endpoint1

Revision history

RevisionChange
1Initial revision
2Added events and simplified data types

Shadow Path Format

Cluster 148 values in the device shadow use this format:

endpoint_id / 148 / attribute_id

Example:

{
  "1/148/0": 0
}
PartMeaning
1Endpoint ID
148Water Heater Management cluster
0HeaterTypes attribute

Cluster 148 Features

The FeatureMap attribute (1/148/65532) is a bitmap. Each bit set means the device implements that feature and the attributes and commands that depend on it.

BitCodeFeatureConformanceMeaning
0EMEnergyManagementOAllows energy management control of the tank
1TPTankPercentOSupports monitoring the percentage of hot water in the tank

Example: FeatureMap = 0 means no optional feature is enabled; 3 means every feature listed above is enabled.


Data Types

BoostStateEnum

ValueNameConformanceMeaning
0InactiveMBoost is not currently active
1ActiveMBoost is currently active

WaterHeaterHeatSourceBitmap (bitmap)

BitNameConformanceMeaning
0ImmersionElement1MImmersion Heating Element 1
1ImmersionElement2MImmersion Heating Element 2
2HeatPumpMHeat pump Heating
3BoilerMBoiler Heating (e.g. Gas or Oil)
4OtherMOther Heating

WaterHeaterBoostInfoStruct (struct)

FieldNameTypeConformanceConstraintMeaning
0Durationelapsed-sMmin 1Indicates the time period, in seconds, for which the boost state is activated.
1OneShotbool[!TP], [TP]—Indicates whether the boost state is automatically canceled once the hot water has reached either: - the set point temperature (from the thermostat cluster) - the TemporarySetpoint temperature (if specified) - the …
2EmergencyBoostboolO—Indicates that the consumer wants the water to be heated quickly.
3TemporarySetpointtemperatureOdescIndicates the target temperature to which the water will be heated.
4TargetPercentagepercentTargetReheat, [TP]—Indicates the target percentage of hot water in the tank that the TankPercentage attribute must reach before the heating is switched off.
5TargetReheatpercent[TP]max TargetPercentageIndicates the percentage to which the hot water in the tank is allowed to fall before again beginning to reheat it.

Cluster 148 Attributes

Cluster 148 defines 6 attributes plus the global attributes. Conformance: M mandatory, O optional, a feature code means "mandatory when that feature is present", square brackets mean "optional when …".

IDHexAttributeTypeConformanceAccessQualitiesDefault
00x0000HeaterTypesWaterHeaterHeatSourceBitmapMR (read: view)——
10x0001HeatDemandWaterHeaterHeatSourceBitmapMR (read: view)——
20x0002TankVolumeuint16EMR (read: view)——
30x0003EstimatedHeatRequiredenergy-mWhEMR (read: view)——
40x0004TankPercentagepercentTPR (read: view)——
50x0005BoostStateBoostStateEnumMR (read: view)——

Global attributes

IDHexAttributeMeaning
655280xFFF8GeneratedCommandListResponse command IDs this server generates.
655290xFFF9AcceptedCommandListCommand IDs this server accepts.
655310xFFFBAttributeListAttribute IDs implemented.
655320xFFFCFeatureMapImplemented optional features (see above).
655330xFFFDClusterRevisionCluster revision implemented; 2 for a Matter 1.6.1 device.

Attribute Details

Attribute 0 / 0x0000 — HeaterTypes

Path example:

1/148/0

Indicates the heat sources that the water heater can call on for heating. If a bit is set then the water heater supports the corresponding heat source.

PropertyValue
TypeWaterHeaterHeatSourceBitmap
ConformanceM
AccessR (read: view)

Bits (WaterHeaterHeatSourceBitmap):

BitNameMeaning
0ImmersionElement1Immersion Heating Element 1
1ImmersionElement2Immersion Heating Element 2
2HeatPumpHeat pump Heating
3BoilerBoiler Heating (e.g. Gas or Oil)
4OtherOther Heating

Example:

{
  "1/148/0": 0
}

Attribute 1 / 0x0001 — HeatDemand

Path example:

1/148/1

Indicates if the water heater is heating water. If a bit is set then the corresponding heat source is active.

PropertyValue
TypeWaterHeaterHeatSourceBitmap
ConformanceM
AccessR (read: view)

Bits (WaterHeaterHeatSourceBitmap):

BitNameMeaning
0ImmersionElement1Immersion Heating Element 1
1ImmersionElement2Immersion Heating Element 2
2HeatPumpHeat pump Heating
3BoilerBoiler Heating (e.g. Gas or Oil)
4OtherOther Heating

Example:

{
  "1/148/1": 0
}

Attribute 2 / 0x0002 — TankVolume

Path example:

1/148/2

Indicates the volume of water that the hot water tank can hold (in units of Litres). This allows an energy management system to estimate the required heating energy needed to reach the target temperature.

PropertyValue
Typeuint16
ConformanceEM
AccessR (read: view)

Example:

{
  "1/148/2": 1
}

Attribute 3 / 0x0003 — EstimatedHeatRequired

Path example:

1/148/3

Indicates the estimated heat energy needed to raise the water temperature to the target setpoint. This can be computed by taking the specific heat capacity of water (4182 J/kg °C) and by knowing the current temperature of the water, the tank volume and target temperature.

PropertyValue
Typeenergy-mWh
ConformanceEM
AccessR (read: view)
Constraintmin 0

Example:

{
  "1/148/3": 1
}

Attribute 4 / 0x0004 — TankPercentage

Path example:

1/148/4

Indicates an approximate level of hot water stored in the tank, which might help consumers understand the amount of hot water remaining in the tank. The accuracy of this attribute is manufacturer specific. In most hot water tanks, there is a stratification effect where the hot water layer rests above a cooler layer of water below. For this reason cold water is fed in at the bottom of the tank and the hot water is drawn from the top.

PropertyValue
Typepercent
ConformanceTP
AccessR (read: view)

Example:

{
  "1/148/4": 1
}

Attribute 5 / 0x0005 — BoostState

Path example:

1/148/5

No condensed specification text is available for BoostState; use the type, conformance and constraint below together with the cluster description above.

PropertyValue
TypeBoostStateEnum
ConformanceM
AccessR (read: view)

Values (BoostStateEnum):

ValueNameMeaning
0InactiveBoost is not currently active
1ActiveBoost is currently active

Example:

{
  "1/148/5": 0
}

Cluster 148 Commands

Cluster 148 has 2 client-to-server commands and 0 responses.

IDHexCommandDirectionConformanceResponseDescription
00x00Boostclient → serverMstatusAllows a client to request that the water heater is put into a Boost state.
10x01CancelBoostclient → serverMstatusAllows a client to cancel an ongoing Boost operation.

AcceptedCommandList

The AcceptedCommandList attribute lists the command IDs the endpoint actually implements:

endpoint_id / 148 / 65529
{
  "1/148/65529": [
    0,
    1
  ]
}

Before sending a Cluster 148 command, check that the command ID exists in endpoint/148/65529. Optional commands are only present when the matching feature is set in FeatureMap.


Bridge Command Payload Format

The bridge accepts Matter commands in this structure:

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 148,
    "command_name": "Boost",
    "payload": {},
    "timed_request_timeout_ms": 1000
  }
}

For Cluster 148, always use "cluster_id": 148. Payload keys are the command field names in lowerCamelCase. Octet-string fields are base64-encoded. timed_request_timeout_ms is required for timed commands and ignored otherwise.


Command: Boost

Purpose

Allows a client to request that the water heater is put into a Boost state.

Command Identity

FieldValue
Command ID0
Command hex0x00
Command nameBoost
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: manage)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0BoostInfoboostInfoWaterHeaterBoostInfoStructM——

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 148,
    "command_name": "Boost",
    "payload": {
      "boostInfo": {
        "duration": 1,
        "oneShot": true,
        "emergencyBoost": true,
        "temporarySetpoint": 1
      }
    }
  }
}

Command: CancelBoost

Purpose

Allows a client to cancel an ongoing Boost operation. This command has no payload.

Command Identity

FieldValue
Command ID1
Command hex0x01
Command nameCancelBoost
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: manage)

Payload Fields

This command has no payload fields.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 148,
    "command_name": "CancelBoost",
    "payload": {}
  }
}

Cluster 148 Events

IDHexEventPriorityConformanceDescription
00x00BoostStartedinfoMThis event is generated whenever a Boost command is accepted.
10x01BoostEndedinfoMThis event is generated whenever the BoostState transitions from Active to Inactive.

Event 0 — BoostStarted

This event is generated whenever a Boost command is accepted. The corresponding structure fields within the WaterHeaterBoostInfoStruct are copied from the Boost command.

IDFieldTypeConformanceMeaning
0BoostInfoWaterHeaterBoostInfoStructM—

Event 1 — BoostEnded

This event is generated whenever the BoostState transitions from Active to Inactive.

This event has no fields.


SmartphoneKey Notes

  • Cluster 148 is not currently exposed by SmartphoneKey devices. This page documents the Matter 1.6.1 specification so that future devices can be interpreted without changes to the backend.
  • Shadow paths follow endpoint/148/attribute; attribute values that the device reports as unreadable are written as n/a.
  • Attribute IDs, command IDs and enum values on this page come from the CSA Matter 1.6.1 data model; descriptions are condensed from the specification text.