Skip to content

Commit 4d8685d

Browse files
committed
GH-31: Thermostat Operating State CC
Forwarded: #31 Bug-SiliconLabs: UIC-3071 Bug-Github: #31
1 parent 3b43b68 commit 4d8685d

File tree

15 files changed

+1241
-2
lines changed

15 files changed

+1241
-2
lines changed

applications/dev_ui/dev_gui/zap-generated/src/cluster-types/cluster-type-attributes.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//To add support for new clusters, modify addon-helper.js
33
//To change the stucture of the ClusterTypeAttrs, modify cluster-type-attributes.zapt
44

5-
5+
66
//generate ClusterTypes
77
export let ClusterTypeAttrs: any = {
88
Basic: {
@@ -8795,7 +8795,11 @@ export let ClusterTypeAttrs: any = {
87958795
{ name: "HeatSecondStageOn", mask: 8, type: "boolean", offset: 3 },
87968796
{ name: "CoolSecondStageOn", mask: 16, type: "boolean", offset: 4 },
87978797
{ name: "FanSecondStageOn", mask: 32, type: "boolean", offset: 5 },
8798-
{ name: "FanThirdStageOn", mask: 64, type: "boolean", offset: 6 }
8798+
{ name: "FanThirdStageOn", mask: 64, type: "boolean", offset: 6 },
8799+
{ name: "PendingHeat", mask: 128, type: "boolean", offset: 7 },
8800+
{ name: "PendingCool", mask: 256, type: "boolean", offset: 8 },
8801+
{ name: "Vent/Economizer", mask: 512, type: "boolean", offset: 9 },
8802+
{ name: "AuxHeating", mask: 1024, type: "boolean", offset: 10 }
87998803
]
88008804
},
88018805
{

applications/zpc/components/dotdot_mapper/rules/Thermostat.uam

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ def zwTHERMOSTAT_MODE_VERSION 0x4001
2121
def zwTHERMOSTAT_MODE 0x4002
2222
def zwTHERMOSTAT_SUPPORTED_MODES 0x4003
2323

24+
//Thermostat Operating State CC
25+
def zwTHERMOSTAT_OPERATING_STATE_MODE 0x4202
26+
2427
// Thermostat Cluster
2528
def zb_LocalTemperature 0x02010000
2629
def zb_HVACSystemTypeConfiguration 0x02010009
@@ -40,6 +43,7 @@ def zb_SystemMode 0x0201001c
4043
def zb_TemperatureSetpointHold 0x02010023
4144
def zb_TemperatureSetpointHoldDuration 0x02010024
4245
def zb_ThermostatProgrammingOperationMode 0x02010025
46+
def zb_ThermostatRunningState 0x02010029
4347
def zb_OccupiedSetback 0x02010034
4448
def zb_OccupiedSetbackMin 0x02010035
4549
def zb_OccupiedSetbackMax 0x02010036
@@ -55,6 +59,7 @@ def zb_ACCoilTemperature 0x02010046
5559
def zb_ACCapacityFormat 0x02010047
5660

5761
def thermostat_setpoint_supported (e'zwTHERMOSTAT_SETPOINT_TYPE[2].zwTHERMOSTAT_SETPOINT_VALUE_SCALE | e'zwTHERMOSTAT_SETPOINT_TYPE[1].zwTHERMOSTAT_SETPOINT_VALUE_SCALE)
62+
def no_thermostat_operating_state (e'zwTHERMOSTAT_OPERATING_STATE_MODE == 0)
5863

5964
scope 0 {
6065
// We map Setpoint setpoint_type 0x01 (HEATING) and 0x02 (COOLING)
@@ -252,4 +257,21 @@ scope 0 chain_reaction(0) {
252257
d'zb_ACCapacityFormat =
253258
if (r'zb_ACCapacityFormat != d'zb_ACCapacityFormat) r'zb_ACCapacityFormat
254259
undefined
260+
261+
// Thermostat Operating State
262+
r'zb_ThermostatRunningState =
263+
if (no_thermostat_operating_state) undefined
264+
if (r'zwTHERMOSTAT_OPERATING_STATE_MODE == 0x00) 0x00
265+
if (r'zwTHERMOSTAT_OPERATING_STATE_MODE == 0x01) 0x01
266+
if (r'zwTHERMOSTAT_OPERATING_STATE_MODE == 0x02) 0x02
267+
if (r'zwTHERMOSTAT_OPERATING_STATE_MODE == 0x03) 0x04
268+
if (r'zwTHERMOSTAT_OPERATING_STATE_MODE == 0x04) 0x80
269+
if (r'zwTHERMOSTAT_OPERATING_STATE_MODE == 0x05) 0x100
270+
if (r'zwTHERMOSTAT_OPERATING_STATE_MODE == 0x06) 0x200
271+
if (r'zwTHERMOSTAT_OPERATING_STATE_MODE == 0x07) 0x400
272+
if (r'zwTHERMOSTAT_OPERATING_STATE_MODE == 0x08) 0x08
273+
if (r'zwTHERMOSTAT_OPERATING_STATE_MODE == 0x09) 0x10
274+
if (r'zwTHERMOSTAT_OPERATING_STATE_MODE == 0x0A) 0x20
275+
if (r'zwTHERMOSTAT_OPERATING_STATE_MODE == 0x0B) 0x40
276+
0x00 // Default state (idle)
255277
}

applications/zpc/components/zpc_attribute_store/include/attribute_store_defined_attribute_types.h

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,39 @@ DEFINE_ATTRIBUTE(ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_SETPOINT_MAX_VALUE,
691691
DEFINE_ATTRIBUTE(ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_SETPOINT_MAX_VALUE_SCALE,
692692
((COMMAND_CLASS_THERMOSTAT_SETPOINT << 8) | 0x09))
693693

694+
/////////////////////////////////////////////////
695+
// Thermostat Operating State Command Class
696+
/// zwave_cc_version_t
697+
DEFINE_ATTRIBUTE(ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_VERSION,
698+
ZWAVE_CC_VERSION_ATTRIBUTE(COMMAND_CLASS_THERMOSTAT_OPERATING_STATE))
699+
/// Current State
700+
DEFINE_ATTRIBUTE(ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_CURRENT_STATE,
701+
((COMMAND_CLASS_THERMOSTAT_OPERATING_STATE << 8) | 0x02))
702+
/// Log supported count (v2)
703+
DEFINE_ATTRIBUTE(ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_SUPPORTED_BITMASK,
704+
((COMMAND_CLASS_THERMOSTAT_OPERATING_STATE << 8) | 0x03))
705+
/// Log supported (v2)
706+
DEFINE_ATTRIBUTE(ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_SUPPORTED,
707+
((COMMAND_CLASS_THERMOSTAT_OPERATING_STATE << 8) | 0x04))
708+
/// Log count (v2)
709+
DEFINE_ATTRIBUTE(ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_BITMASK,
710+
((COMMAND_CLASS_THERMOSTAT_OPERATING_STATE << 8) | 0x05))
711+
/// Log State (v2)
712+
DEFINE_ATTRIBUTE(ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_STATE,
713+
((COMMAND_CLASS_THERMOSTAT_OPERATING_STATE << 8) | 0x06))
714+
/// Log Usage Today (hours) (v2)
715+
DEFINE_ATTRIBUTE(ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_USAGE_TODAY_HOURS,
716+
((COMMAND_CLASS_THERMOSTAT_OPERATING_STATE << 8) | 0x07))
717+
/// Log Usage Today (min) (v2)
718+
DEFINE_ATTRIBUTE(ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_USAGE_TODAY_MIN,
719+
((COMMAND_CLASS_THERMOSTAT_OPERATING_STATE << 8) | 0x08))
720+
/// Log Usage Yesterday (hours) (v2)
721+
DEFINE_ATTRIBUTE(ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_USAGE_YESTERDAY_HOURS,
722+
((COMMAND_CLASS_THERMOSTAT_OPERATING_STATE << 8) | 0x09))
723+
/// Log Usage Yesterday (min) (v2)
724+
DEFINE_ATTRIBUTE(ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_USAGE_YESTERDAY_MIN,
725+
((COMMAND_CLASS_THERMOSTAT_OPERATING_STATE << 8) | 0x0A))
726+
694727
/////////////////////////////////////////////////
695728
// Wakeup command class
696729
DEFINE_ATTRIBUTE(ATTRIBUTE_COMMAND_CLASS_WAKE_UP_VERSION,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/******************************************************************************
2+
* # License
3+
* <b>Copyright 2024 Silicon Laboratories Inc. www.silabs.com</b>
4+
******************************************************************************
5+
* The licensor of this software is Silicon Laboratories Inc. Your use of this
6+
* software is governed by the terms of Silicon Labs Master Software License
7+
* Agreement (MSLA) available at
8+
* www.silabs.com/about-us/legal/master-software-license-agreement. This
9+
* software is distributed to you in Source Code format and is governed by the
10+
* sections of the MSLA applicable to Source Code.
11+
*
12+
*****************************************************************************/
13+
14+
/**
15+
* @defgroup zwave_command_class_thermostat_operating_state_types Type definitions for attribute storage of the Sound Switch Command Class
16+
* @ingroup zpc_attribute_store_command_classes_types
17+
* @brief Type definitions for the Sound Switch Command Class.
18+
*
19+
* @{
20+
*/
21+
22+
#ifndef ZWAVE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_TYPES_H
23+
#define ZWAVE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_TYPES_H
24+
25+
#include <stdint.h>
26+
27+
///> Operating State. uint8_t
28+
typedef uint8_t thermostat_operating_state_t;
29+
///> Usage representation (v2). uint8_t
30+
typedef uint8_t thermostat_operating_state_usage_t;
31+
32+
#ifdef __cplusplus
33+
extern "C" {
34+
#endif
35+
36+
#ifdef __cplusplus
37+
}
38+
#endif
39+
40+
#endif //ZWAVE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_TYPES_H
41+
/** @} end zwave_command_class_thermostat_operating_state_types */

applications/zpc/components/zpc_attribute_store/src/zpc_attribute_store_type_registration.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,22 @@ static const std::vector<attribute_schema_t> attribute_schema = {
302302
{ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_SETPOINT_MIN_VALUE_SCALE, "Min Value Scale", ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_SETPOINT_TYPE, U32_STORAGE_TYPE},
303303
{ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_SETPOINT_MAX_VALUE, "Max Value", ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_SETPOINT_TYPE, I32_STORAGE_TYPE},
304304
{ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_SETPOINT_MAX_VALUE_SCALE, "Max Value Scale", ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_SETPOINT_TYPE, U32_STORAGE_TYPE},
305+
306+
/////////////////////////////////////////////////////////////////////
307+
// Thermostat Operating State Command Class attributes
308+
/////////////////////////////////////////////////////////////////////
309+
{ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_VERSION, "Thermostat Operating State Version", ATTRIBUTE_ENDPOINT_ID, U8_STORAGE_TYPE},
310+
{ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_CURRENT_STATE, "Thermostat Operating State", ATTRIBUTE_ENDPOINT_ID, U8_STORAGE_TYPE},
311+
// V2
312+
{ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_SUPPORTED_BITMASK, "Thermostat Operating State Log Supported Count", ATTRIBUTE_ENDPOINT_ID, U32_STORAGE_TYPE},
313+
{ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_SUPPORTED, "Thermostat Operating State Log Supported", ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_SUPPORTED_BITMASK, U8_STORAGE_TYPE},
314+
{ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_BITMASK, "Thermostat Operating State Log", ATTRIBUTE_ENDPOINT_ID, U32_STORAGE_TYPE},
315+
{ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_STATE, "Thermostat Operating State Log State", ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_BITMASK, U8_STORAGE_TYPE},
316+
{ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_USAGE_TODAY_HOURS, "Thermostat Operating State Log Usage Today (Hours)", ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_STATE, U8_STORAGE_TYPE},
317+
{ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_USAGE_TODAY_MIN, "Thermostat Operating State Log Usage Today (Min)", ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_STATE, U8_STORAGE_TYPE},
318+
{ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_USAGE_YESTERDAY_HOURS, "Thermostat Operating State Log Usage Yesterday (Hours)", ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_STATE, U8_STORAGE_TYPE},
319+
{ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_USAGE_YESTERDAY_MIN, "Thermostat Operating State Log Usage Yesterday (Hours)", ATTRIBUTE_COMMAND_CLASS_THERMOSTAT_OPERATING_STATE_LOG_STATE, U8_STORAGE_TYPE},
320+
305321
/////////////////////////////////////////////////////////////////////
306322
// Supervision Command Class attributes
307323
/////////////////////////////////////////////////////////////////////

applications/zpc/components/zwave_command_classes/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ add_library(
4646
src/zwave_command_class_switch_multilevel.c
4747
src/zwave_command_class_thermostat_mode.c
4848
src/zwave_command_class_thermostat_setpoint.c
49+
src/zwave_command_class_thermostat_operating_state.c
4950
src/zwave_command_class_time.c
5051
src/zwave_command_class_user_code.c
5152
src/zwave_command_class_version.c

0 commit comments

Comments
 (0)