32
32
import time
33
33
34
34
import chip .clusters as Clusters
35
- from matter_testing_support import MatterBaseTest , TestStep , async_test_body , default_matter_test_main
35
+ from chip .clusters .Types import NullValue
36
+ from matter_testing_support import EventChangeCallback , MatterBaseTest , TestStep , async_test_body , default_matter_test_main
36
37
from mobly import asserts
37
38
from TC_EWATERHTRBase import EWATERHTRBase
38
39
@@ -175,6 +176,12 @@ async def test_TC_EWATERHTR_2_2(self):
175
176
self .step ("1" )
176
177
# Commission DUT - already done
177
178
179
+ # Subscribe to Events and when they are sent push them to a queue for checking later
180
+ events_callback = EventChangeCallback (Clusters .WaterHeaterManagement )
181
+ await events_callback .start (self .default_controller ,
182
+ self .dut_node_id ,
183
+ self .matter_test_config .endpoint )
184
+
178
185
self .step ("2" )
179
186
await self .check_test_event_triggers_enabled ()
180
187
@@ -235,6 +242,16 @@ async def test_TC_EWATERHTR_2_2(self):
235
242
self .step ("8b" )
236
243
await self .check_whm_attribute ("BoostState" , Clusters .WaterHeaterManagement .Enums .BoostStateEnum .kActive )
237
244
245
+ ################################################################################
246
+ event_data = events_callback .wait_for_event_report (Clusters .WaterHeaterManagement .Events .BoostStarted )
247
+ asserts .assert_equal (event_data .boostInfo .duration , 5 )
248
+ asserts .assert_equal (event_data .boostInfo .oneShot , True )
249
+ asserts .assert_true (event_data .boostInfo .emergencyBoost is None , "emergencyBoost should be None" )
250
+ asserts .assert_true (event_data .boostInfo .temporarySetpoint is None , "temporarySetpoint should be None" )
251
+ asserts .assert_true (event_data .boostInfo .targetPercentage is None , "targetPercentage should be None" )
252
+ asserts .assert_true (event_data .boostInfo .targetReheat is None , "targetReheat should be None" )
253
+ ################################################################################
254
+
238
255
self .step ("9" )
239
256
time .sleep (6 )
240
257
@@ -245,6 +262,10 @@ async def test_TC_EWATERHTR_2_2(self):
245
262
self .step ("9b" )
246
263
await self .check_whm_attribute ("BoostState" , Clusters .WaterHeaterManagement .Enums .BoostStateEnum .kInactive )
247
264
265
+ ################################################################################
266
+ event_data = events_callback .wait_for_event_report (Clusters .WaterHeaterManagement .Events .BoostEnded )
267
+ ################################################################################
268
+
248
269
self .step ("10" )
249
270
await self .send_boost_command (duration = 600 , one_shot = True )
250
271
@@ -256,6 +277,16 @@ async def test_TC_EWATERHTR_2_2(self):
256
277
self .step ("10b" )
257
278
await self .check_whm_attribute ("BoostState" , Clusters .WaterHeaterManagement .Enums .BoostStateEnum .kActive )
258
279
280
+ ################################################################################
281
+ event_data = events_callback .wait_for_event_report (Clusters .WaterHeaterManagement .Events .BoostStarted )
282
+ asserts .assert_equal (event_data .boostInfo .duration , 600 )
283
+ asserts .assert_equal (event_data .boostInfo .oneShot , True )
284
+ asserts .assert_true (event_data .boostInfo .emergencyBoost is None , "emergencyBoost should be None" )
285
+ asserts .assert_true (event_data .boostInfo .temporarySetpoint is None , "temporarySetpoint should be None" )
286
+ asserts .assert_true (event_data .boostInfo .targetPercentage is None , "targetPercentage should be None" )
287
+ asserts .assert_true (event_data .boostInfo .targetReheat is None , "targetReheat should be None" )
288
+ ################################################################################
289
+
259
290
self .step ("11" )
260
291
await self .send_test_event_trigger_water_temperature61C_test_event ()
261
292
@@ -266,6 +297,10 @@ async def test_TC_EWATERHTR_2_2(self):
266
297
self .step ("11b" )
267
298
await self .check_whm_attribute ("BoostState" , Clusters .WaterHeaterManagement .Enums .BoostStateEnum .kInactive )
268
299
300
+ ################################################################################
301
+ event_data = events_callback .wait_for_event_report (Clusters .WaterHeaterManagement .Events .BoostEnded )
302
+ ################################################################################
303
+
269
304
self .step ("12" )
270
305
await self .send_test_event_trigger_water_temperature20C_test_event ()
271
306
@@ -284,6 +319,16 @@ async def test_TC_EWATERHTR_2_2(self):
284
319
self .step ("13b" )
285
320
await self .check_whm_attribute ("BoostState" , Clusters .WaterHeaterManagement .Enums .BoostStateEnum .kActive )
286
321
322
+ ################################################################################
323
+ event_data = events_callback .wait_for_event_report (Clusters .WaterHeaterManagement .Events .BoostStarted )
324
+ asserts .assert_equal (event_data .boostInfo .duration , 600 )
325
+ asserts .assert_true (event_data .boostInfo .oneShot is None , "oneShot should be None" )
326
+ asserts .assert_true (event_data .boostInfo .emergencyBoost is None , "emergencyBoost should be None" )
327
+ asserts .assert_true (event_data .boostInfo .temporarySetpoint is None , "temporarySetpoint should be None" )
328
+ asserts .assert_true (event_data .boostInfo .targetPercentage is None , "targetPercentage should be None" )
329
+ asserts .assert_true (event_data .boostInfo .targetReheat is None , "targetReheat should be None" )
330
+ ################################################################################
331
+
287
332
self .step ("14" )
288
333
await self .send_test_event_trigger_water_temperature61C_test_event ()
289
334
@@ -315,6 +360,10 @@ async def test_TC_EWATERHTR_2_2(self):
315
360
self .step ("16b" )
316
361
await self .check_whm_attribute ("BoostState" , Clusters .WaterHeaterManagement .Enums .BoostStateEnum .kInactive )
317
362
363
+ ################################################################################
364
+ event_data = events_callback .wait_for_event_report (Clusters .WaterHeaterManagement .Events .BoostEnded )
365
+ ################################################################################
366
+
318
367
self .step ("17" )
319
368
await self .send_boost_command (duration = 600 , temporary_setpoint = 6500 )
320
369
@@ -326,6 +375,16 @@ async def test_TC_EWATERHTR_2_2(self):
326
375
self .step ("17b" )
327
376
await self .check_whm_attribute ("BoostState" , Clusters .WaterHeaterManagement .Enums .BoostStateEnum .kActive )
328
377
378
+ ################################################################################
379
+ event_data = events_callback .wait_for_event_report (Clusters .WaterHeaterManagement .Events .BoostStarted )
380
+ asserts .assert_equal (event_data .boostInfo .duration , 600 )
381
+ asserts .assert_true (event_data .boostInfo .oneShot is None , "oneShot should be None" )
382
+ asserts .assert_true (event_data .boostInfo .emergencyBoost is None , "emergencyBoost should be None" )
383
+ asserts .assert_equal (event_data .boostInfo .temporarySetpoint , 6500 )
384
+ asserts .assert_true (event_data .boostInfo .targetPercentage is None , "targetPercentage should be None" )
385
+ asserts .assert_true (event_data .boostInfo .targetReheat is None , "targetReheat should be None" )
386
+ ################################################################################
387
+
329
388
self .step ("18" )
330
389
await self .send_test_event_trigger_water_temperature61C_test_event ()
331
390
@@ -358,6 +417,16 @@ async def test_TC_EWATERHTR_2_2(self):
358
417
self .step ("20b" )
359
418
await self .check_whm_attribute ("BoostState" , Clusters .WaterHeaterManagement .Enums .BoostStateEnum .kActive )
360
419
420
+ ################################################################################
421
+ event_data = events_callback .wait_for_event_report (Clusters .WaterHeaterManagement .Events .BoostStarted )
422
+ asserts .assert_equal (event_data .boostInfo .duration , 600 )
423
+ asserts .assert_true (event_data .boostInfo .oneShot is None , "oneShot should be None" )
424
+ asserts .assert_true (event_data .boostInfo .emergencyBoost is None , "emergencyBoost should be None" )
425
+ asserts .assert_equal (event_data .boostInfo .temporarySetpoint , 7000 )
426
+ asserts .assert_true (event_data .boostInfo .targetPercentage is None , "targetPercentage should be None" )
427
+ asserts .assert_true (event_data .boostInfo .targetReheat is None , "targetReheat should be None" )
428
+ ################################################################################
429
+
361
430
self .step ("21" )
362
431
await self .send_cancel_boost_command ()
363
432
@@ -368,9 +437,17 @@ async def test_TC_EWATERHTR_2_2(self):
368
437
self .step ("21b" )
369
438
await self .check_whm_attribute ("BoostState" , Clusters .WaterHeaterManagement .Enums .BoostStateEnum .kInactive )
370
439
440
+ ################################################################################
441
+ event_data = events_callback .wait_for_event_report (Clusters .WaterHeaterManagement .Events .BoostEnded )
442
+ ################################################################################
443
+
371
444
self .step ("22" )
372
445
await self .send_cancel_boost_command ()
373
446
447
+ ################################################################################
448
+ event_data = events_callback .wait_for_event_expect_no_report ()
449
+ ################################################################################
450
+
374
451
self .step ("23" )
375
452
await self .send_test_event_trigger_basic_installation_test_event_clear ()
376
453
0 commit comments