Skip to content

Commit 97f2dbe

Browse files
committed
Start on WHM 2.2 + initial support for WaterHeater modes
1 parent 40e4c8c commit 97f2dbe

File tree

6 files changed

+239
-12
lines changed

6 files changed

+239
-12
lines changed

examples/platform/linux/AppMain.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@
9090
#if CHIP_DEVICE_CONFIG_ENABLE_ENERGY_REPORTING_TRIGGER
9191
#include <app/clusters/electrical-energy-measurement-server/EnergyReportingTestEventTriggerHandler.h>
9292
#endif
93+
#if CHIP_DEVICE_CONFIG_ENABLE_WATER_HEATER_MANAGEMENT_TRIGGER
94+
#include <app/clusters/water-heater-management-server/WaterHeaterManagementTestEventTriggerHandler.h>
95+
#endif
9396
#include <app/TestEventTriggerDelegate.h>
9497

9598
#include <signal.h>
@@ -553,6 +556,10 @@ void ChipLinuxAppMainLoop(AppMainLoopImplementation * impl)
553556
static EnergyReportingTestEventTriggerHandler sEnergyReportingTestEventTriggerHandler;
554557
sTestEventTriggerDelegate.AddHandler(&sEnergyReportingTestEventTriggerHandler);
555558
#endif
559+
#if CHIP_DEVICE_CONFIG_ENABLE_WATER_HEATER_MANAGEMENT_TRIGGER
560+
static WaterHeaterManagementTestEventTriggerHandler sWaterHeaterManagementTestEventTriggerHandler;
561+
sTestEventTriggerDelegate.AddHandler(&sWaterHeaterManagementTestEventTriggerHandler);
562+
#endif
556563

557564
initParams.testEventTriggerDelegate = &sTestEventTriggerDelegate;
558565

examples/platform/linux/BUILD.gn

+1-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ source_set("app-main") {
118118
"CHIP_DEVICE_CONFIG_ENABLE_BOOLEAN_STATE_CONFIGURATION_TRIGGER=${chip_enable_boolean_state_configuration_trigger}",
119119
"CHIP_DEVICE_CONFIG_ENABLE_ENERGY_EVSE_TRIGGER=${chip_enable_energy_evse_trigger}",
120120
"CHIP_DEVICE_CONFIG_ENABLE_ENERGY_REPORTING_TRIGGER=${chip_enable_energy_reporting_trigger}",
121-
"CHIP_DEVICE_CONFIG_ENABLE_WATER_HEATER_MANAGEMEN_TRIGGER=${chip_enable_water_heater_management_trigger}",
121+
"CHIP_DEVICE_CONFIG_ENABLE_WATER_HEATER_MANAGEMENT_TRIGGER=${chip_enable_water_heater_management_trigger}",
122122
]
123123

124124
public_configs = [ ":app-main-config" ]

examples/water-heater-management-app/water-heater-management-common/src/WhmManufacturer.cpp

+15-3
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,15 @@ WaterHeaterManagementDelegate * GetWhmDelegate()
7171

7272
void SetTestEventTrigger_BasicInstallationTestEvent()
7373
{
74-
// WaterHeaterManagementDelegate * dg = GetWhmDelegate();
74+
WaterHeaterManagementDelegate * dg = GetWhmDelegate();
75+
76+
dg->SetHeaterTypes(BitMask<WaterHeaterTypeBitmap>(WaterHeaterTypeBitmap::kImmersionElement2));
77+
dg->SetHeatDemand(BitMask<WaterHeaterDemandBitmap>(WaterHeaterDemandBitmap::kImmersionElement2));
78+
dg->SetTankVolume(21);
79+
dg->SetEstimatedHeatRequired(10000);
80+
dg->SetTankPercentage(35);
81+
dg->SetBoostState(BoostStateEnum::kInactive);
82+
7583
}
7684

7785
void SetTestEventTrigger_BasicInstallationTestEventClear()
@@ -96,7 +104,11 @@ void SetTestEventTrigger_WaterTemperature66CTestEvent()
96104

97105
void SetTestEventTrigger_ManualModeTestEvent()
98106
{
99-
// WaterHeaterManagementDelegate * dg = GetWhmDelegate();
107+
WaterHeaterManagementDelegate * dg = GetWhmDelegate();
108+
109+
dg->
110+
ChipLogProgress(Support, "[Whm::kManualModeTestEvent] => Simulate the Water Heater Mode being set to MANUAL");
111+
SetTestEventTrigger_ManualModeTestEvent();
100112
}
101113

102114
void SetTestEventTrigger_OffModeTestEvent()
@@ -109,7 +121,7 @@ void SetTestEventTrigger_DrawOffHotWaterTestEvent()
109121
// WaterHeaterManagementDelegate * dg = GetWhmDelegate();
110122
}
111123

112-
bool HandleWhmTestEventTrigger(uint64_t eventTrigger)
124+
bool HandleWaterHeaterManagementTestEventTrigger(uint64_t eventTrigger)
113125
{
114126
WaterHeaterManagementTrigger trigger = static_cast<WaterHeaterManagementTrigger>(eventTrigger);
115127

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
Copyright (c) 2024 Project CHIP Authors
4+
5+
Licensed under the Apache License, Version 2.0 (the "License");
6+
you may not use this file except in compliance with the License.
7+
You may obtain a copy of the License at
8+
9+
http://www.apache.org/licenses/LICENSE-2.0
10+
11+
Unless required by applicable law or agreed to in writing, software
12+
distributed under the License is distributed on an "AS IS" BASIS,
13+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
See the License for the specific language governing permissions and
15+
limitations under the License.
16+
-->
17+
<configurator>
18+
<domain name="CHIP"/>
19+
20+
<enum name="ModeTag" type="enum16">
21+
<cluster code="0x009E"/>
22+
<item value="0x4000" name="Off"/>
23+
<item value="0x4001" name="Manual"/>
24+
<item value="0x4002" name="Timed"/>
25+
</enum>
26+
27+
<cluster>
28+
<domain>General</domain>
29+
<name>Water Heater Mode</name>
30+
<code>0x009E</code>
31+
<define>WATER_HEATER_MODE_CLUSTER</define>
32+
<client init="false" tick="false">true</client>
33+
<server init="false" tick="false">true</server>
34+
<description>Attributes and commands for selecting a mode from a list of supported options.</description>
35+
<globalAttribute side="either" code="0xFFFD" value="1"/>
36+
37+
<features>
38+
<feature bit="0" code="DEPONOFF" name="OnOff" summary="Dependency with the OnOff cluster">
39+
<optionalConform/>
40+
</feature>
41+
</features>
42+
43+
<!-- Base data types -->
44+
<attribute side="server" code="0x0000" define="SUPPORTED_MODES" type="array" entryType="ModeOptionStruct" writable="false" optional="false" isNullable="false" length="255">SupportedModes</attribute>
45+
<attribute side="server" code="0x0001" define="CURRENT_MODE" type="int8u" writable="false" optional="false" isNullable="false" reportable="true">CurrentMode</attribute>
46+
<attribute side="server" code="0x0002" define="START_UP_MODE" type="int8u" writable="true" optional="true" isNullable="true">StartUpMode</attribute>
47+
<attribute side="server" code="0x0003" define="ON_MODE" type="int8u" writable="true" optional="true" isNullable="true">OnMode</attribute>
48+
49+
<!-- Commands -->
50+
<command source="client" code="0x00" name="ChangeToMode" response="ChangeToModeResponse" optional="false">
51+
<description>
52+
This command is used to change device modes.
53+
On receipt of this command the device SHALL respond with a ChangeToModeResponse command.
54+
</description>
55+
<arg name="NewMode" type="int8u" optional="false"/>
56+
</command>
57+
58+
<command source="server" code="0x01" name="ChangeToModeResponse" disableDefaultResponse="true" optional="false">
59+
<description>
60+
This command is sent by the device on receipt of the ChangeToModeWithStatus command.
61+
</description>
62+
<arg name="Status" type="enum8" optional="false"/>
63+
<arg name="StatusText" type="char_string" lenght="64" optional="true"/>
64+
</command>
65+
</cluster>
66+
</configurator>

src/python_testing/EWATERHTRBase.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -70,25 +70,25 @@ async def send_cancel_boost_command(self, endpoint: int = None, timedRequestTime
7070
asserts.assert_equal(e.status, expected_status, "Unexpected error returned")
7171

7272
async def send_test_event_trigger_basic_installation_test_event(self):
73-
await self.send_test_event_triggers(eventTrigger=0x0098000000000000)
73+
await self.send_test_event_triggers(eventTrigger=0x0094000000000000)
7474

7575
async def send_test_event_trigger_basic_installation_test_eventClear(self):
76-
await self.send_test_event_triggers(eventTrigger=0x0098000000000001)
76+
await self.send_test_event_triggers(eventTrigger=0x0094000000000001)
7777

7878
async def send_test_event_trigger_water_temperature20C_test_event(self):
79-
await self.send_test_event_triggers(eventTrigger=0x0098000000000002)
79+
await self.send_test_event_triggers(eventTrigger=0x0094000000000002)
8080

8181
async def send_test_event_trigger_water_temperature61C_test_event(self):
82-
await self.send_test_event_triggers(eventTrigger=0x0098000000000003)
82+
await self.send_test_event_triggers(eventTrigger=0x0094000000000003)
8383

8484
async def send_test_event_trigger_water_temperature66C_test_event(self):
85-
await self.send_test_event_triggers(eventTrigger=0x0098000000000004)
85+
await self.send_test_event_triggers(eventTrigger=0x0094000000000004)
8686

8787
async def send_test_event_trigger_manual_mode_test_event(self):
88-
await self.send_test_event_triggers(eventTrigger=0x0098000000000005)
88+
await self.send_test_event_triggers(eventTrigger=0x0094000000000005)
8989

9090
async def send_test_event_trigger_off_mode_test_event(self):
91-
await self.send_test_event_triggers(eventTrigger=0x0098000000000006)
91+
await self.send_test_event_triggers(eventTrigger=0x0094000000000006)
9292

9393
async def send_test_event_trigger_draw_off_hot_water_test_event(self):
94-
await self.send_test_event_triggers(eventTrigger=0x0098000000000007)
94+
await self.send_test_event_triggers(eventTrigger=0x0094000000000007)

0 commit comments

Comments
 (0)