MeshTalos-Client/managed_components/espressif__esp-zboss-lib/include/zcl/zb_zcl_price.h
2025-12-03 14:20:11 +08:00

4576 lines
206 KiB
C

/*
* Copyright (c) 2012-2022 DSR Corporation, Denver CO, USA
* Copyright (c) 2021-2022 Espressif Systems (Shanghai) PTE LTD
* All rights reserved.
*
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form, except as embedded into a Espressif Systems
* integrated circuit in a product or a software update for such product,
* must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* 4. Any software provided in binary form under this license must not be reverse
* engineered, decompiled, modified and/or disassembled.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/* PURPOSE: Price cluster definitions
*/
#ifndef ZB_ZCL_PRICE_H
#define ZB_ZCL_PRICE_H 1
#include "zcl/zb_zcl_common.h"
#include "zcl/zb_zcl_commands.h"
/** @cond DOXYGEN_ZCL_SECTION */
/** @addtogroup ZB_ZCL_PRICE
* @{
* @details
* The Price Cluster provides the mechanism for communicating Gas, Energy, or
* Water pricing information within the premises.
*/
/* Cluster ZB_ZCL_CLUSTER_ID_PRICE */
/** @defgroup ZB_ZCL_PRICE_ATTRS Price cluster attributes
* @{
*/
/** @defgroup ZB_ZCL_PRICE_SRV_ATTRIBUTES_GROUP Price cluster server attributes
* @{
* @details
* For convenience, the attributes defined in this cluster are arranged into sets
* of related attributes; each set can contain up to 256 attributes. Attribute
* identifiers are encoded such that the most significant Octet specifies the
* attribute set and the least significant Octet specifies the attribute within
* the set.
*/
/** @brief Price Cluster General server attributes
* @see SE spec, Table D-73
*/
enum zb_zcl_price_srv_attr_set_e
{
ZB_ZCL_PRICE_SET_TIER_LABEL = 0x00, /**< Provides a method for utilities to assign a label to the Price Tier. */
ZB_ZCL_PRICE_SET_BLOCK_THRESHOLD = 0x01, /**< Provides remote access to the Price server Block Thresholds. */
ZB_ZCL_PRICE_SET_BLOCK_PERIOD = 0x02, /**< Provides remote access to the Price server Block Threshold period. */
ZB_ZCL_PRICE_SET_COMMODITY = 0x03, /**< Represents items that are associated with a particular commodity. */
ZB_ZCL_PRICE_SET_BLOCK_PRICE_INFORMATION = 0x04, /**< Provides remote access to the block prices. */
ZB_ZCL_PRICE_SET_EXTENDED_PRICE_INFORMATION = 0x05, /**< Represents extended price information. */
ZB_ZCL_PRICE_SET_TARIFF_INFORMATION = 0x06, /**< Represents items that are associated with a particular Price Tariff. */
ZB_ZCL_PRICE_SET_BILLING_INFORMATION = 0x07, /**< Provides remote access to the Price server Billing information. */
ZB_ZCL_PRICE_SET_CREDIT_PAYMENT = 0x08, /**< Provides a method for the HAN (IHD) to understand the current status
* of the credit-only payment made to the energy supplier. */
/* reserved 0x09 - 0x7F */
ZB_ZCL_PRICE_SET_RECEIVED_TIER_LABEL = 0x80, /**< Provides a method for utilities to assign a label to Received Price Tiers. */
ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_THRESHOLD = 0x81, /**< Provides remote access to the Price server ReceivedBlockThresholds. */
ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PERIOD = 0x82, /**< Provides remote access to the Price server Received Block Threshold period. */
/* reserved 0x83 */
ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PRICE_INFORMATION = 0x84, /**< @copydetails ZB_ZCL_PRICE_SET_BLOCK_PRICE_INFORMATION_GROUP */
ZB_ZCL_PRICE_SET_RECEIVED_EXTENDED_PRICE_INFORMATION = 0x85, /**< @copydetails ZB_ZCL_PRICE_SET_EXTENDED_PRICE_INFORMATION_GROUP */
ZB_ZCL_PRICE_SET_RECEIVED_TARIFF_INFORMATION = 0x86, /**< @copydetails ZB_ZCL_PRICE_SET_TARIFF_INFORMATION_GROUP */
ZB_ZCL_PRICE_SET_RECEIVED_BILLING_INFORMATION = 0x87, /**< @copydetails ZB_ZCL_PRICE_SET_BILLING_INFORMATION_GROUP */
/* reserved 0x88 - 0xFF */
};
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_TIER_LABEL_GROUP Tier Label
* @{
*/
/** @brief Tier Label (Delivered) Attributes Set
* @see SE spec, D.4.2.2.1
*/
enum zb_zcl_price_set_tier_label_e
{
/** The TierNPriceLabel attributes provide a method for utilities to assign a
* label to the Price Tier declared within the Publish Price command.
*/
ZB_ZCL_ATTR_PRICE_SRV_TIER1_PRICE_LABEL = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_TIER_LABEL, 0x00),
ZB_ZCL_ATTR_PRICE_SRV_TIER2_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER16_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER17_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER18_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER19_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER20_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER21_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER22_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER23_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER24_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER25_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER26_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER27_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER28_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER29_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER30_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER31_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER32_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER33_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER34_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER35_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER36_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER37_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER38_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER39_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER40_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER41_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER42_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER43_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER44_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER45_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER46_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER47_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_TIER48_PRICE_LABEL,
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TIERN_PRICE_LABEL_GNR(tierN, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_TIER ## tierN ## _PRICE_LABEL, \
ZB_ZCL_ATTR_TYPE_OCTET_STRING, \
ZB_ZCL_ATTR_ACCESS_READ_WRITE, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @} */ /* end of ZB_ZCL_PRICE_SET_TIER_LABEL_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_BLOCK_THRESHOLD_GROUP Block Threshold
* @{
* @details
* The following set of attributes provides remote access to the Price server
* Block Thresholds. Block Threshold values are crossed when the
* CurrentBlockPeriodConsumptionDelivered attribute value is greater than a
* BlockNThreshold attribute. The number of block thresholds is indicated by
* the Number of Block Thresholds field in the associated Publish Price command.
* The number of blocks is one greater than the number of thresholds.
*/
/** @brief Block Threshold (Delivered) Attributes Set
* @see SE spec, D.4.2.2.2
*/
enum zb_zcl_set_block_threshold_e
{
/** Attributes Block1Threshold through Block15Threshold represent the block
* threshold values for a given period (typically the billing cycle).
*/
ZB_ZCL_ATTR_PRICE_SRV_BLOCK1_THRESHOLD = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_BLOCK_THRESHOLD, 0x00),
ZB_ZCL_ATTR_PRICE_SRV_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_BLOCK15_THRESHOLD,
/** Where a single set of thresholds is used, the BlockThresholdCount
* attribute indicates the number of applicable BlockNThresholds. Where more
* than one set of thresholds is used, each set will be accompanied by an
* appropriate TierNBlockThresholdCount attribute
*/
ZB_ZCL_ATTR_PRICE_SRV_BLOCK_THRESHOLD_COUNT,
/** Attributes Tier1Block1Threshold through Tier15Block15Threshold represent
* the block threshold values applicable to a specific TOU tier for a given
* period (typically the billing cycle).
*/
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK15_THRESHOLD,
/** The TierNBlockThresholdCount attributes hold the number of block
* thresholds applicable to a given tier.
*/
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK_THRESHOLD_COUNT,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK15_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK_THRESHOLD_COUNT,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK15_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK_THRESHOLD_COUNT,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK15_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK_THRESHOLD_COUNT,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK15_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK_THRESHOLD_COUNT,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK15_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK_THRESHOLD_COUNT,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK15_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK_THRESHOLD_COUNT,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK15_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK_THRESHOLD_COUNT,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK15_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK_THRESHOLD_COUNT,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK15_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK_THRESHOLD_COUNT,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK15_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK_THRESHOLD_COUNT,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK15_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK_THRESHOLD_COUNT,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK15_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK_THRESHOLD_COUNT,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK15_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK_THRESHOLD_COUNT,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK1_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK15_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK_THRESHOLD_COUNT,
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_BLOCKN_THRESHOLD_GNR(blockN, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_BLOCK ## blockN ## _THRESHOLD, \
ZB_ZCL_ATTR_TYPE_48BIT, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) data_ptr \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_BLOCK_THRESHOLD_COUNT_GNR(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_BLOCK_THRESHOLD_COUNT, \
ZB_ZCL_ATTR_TYPE_U8, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) data_ptr \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TIERN_BLOCKM_THRESHOLD_GNR(blockN, tierN, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_TIER ## tierN ## _BLOCK ## blockN ## _THRESHOLD, \
ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TIERN_BLOCK_THRESHOLD_COUNT_GNR(tierN, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_TIER ## tierN ## _BLOCK_THRESHOLD_COUNT, \
ZB_ZCL_ATTR_TYPE_U8, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) data_ptr \
}
/** @endcond */ /* internals_doc */
/** @} */ /* end of ZB_ZCL_PRICE_SET_BLOCK_THRESHOLD_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_BLOCK_PERIOD_GROUP Block Period
* @{
* @details
* This set of attributes provides remote access to the Price server
* Block Threshold period (typically the billing cycle) information.
*/
/** @brief Block Period (Delivered) Attributes Set
* @see SE spec, D.4.2.2.3
*/
enum zb_zcl_price_set_block_period_e
{
/** The StartOfBlockPeriod attribute represents the start time of the current
* block tariff period.
*/
ZB_ZCL_ATTR_PRICE_SRV_START_OF_BLOCK_PERIOD = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_BLOCK_PERIOD, 0x00),
/** The BlockPeriodDuration attribute represents the current block tariff
* period duration in units defined by the BlockPeriodDurationType attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_BLOCK_PERIOD_DURATION,
/** ThresholdMultiplier provides a value to be multiplied against Threshold
* attributes.
*/
ZB_ZCL_ATTR_PRICE_SRV_THRESHOLD_MULTIPLIER,
/** ThresholdDivisor provides a value to divide the result of applying
* the ThresholdMultiplier attribute to Block Threshold values to derive
* values That can be compared against the CurrentBlockPeriodConsumptionDelivered
* attribute within the Metering cluster.
*/
ZB_ZCL_ATTR_PRICE_SRV_THRESHOLD_DIVISOR,
/** The BlockPeriodDurationType attribute indicates the timebase used for the
* BlockPeriodDuration attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_BLOCK_PERIOD_DURATION_TYPE,
/* reserved 0x0205 - 0x02FF */
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_START_OF_BLOCK_PERIOD(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_START_OF_BLOCK_PERIOD, \
ZB_ZCL_ATTR_TYPE_UTC_TIME, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_BLOCK_PERIOD_DURATION(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_BLOCK_PERIOD_DURATION, \
ZB_ZCL_ATTR_TYPE_U24, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_THRESHOLD_MULTIPLIER(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_THRESHOLD_MULTIPLIER, \
ZB_ZCL_ATTR_TYPE_U24, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_THRESHOLD_DIVISOR(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_THRESHOLD_DIVISOR, \
ZB_ZCL_ATTR_TYPE_U24, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_BLOCK_PERIOD_DURATION_TYPE(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_BLOCK_PERIOD_DURATION_TYPE, \
ZB_ZCL_ATTR_TYPE_8BITMAP, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @brief @e BlockPeriodDurationType attribute values
* @see SE spec, table D-105.
* @see ZB_ZCL_ATTR_PRICE_SRV_BLOCK_PERIOD_DURATION_TYPE
*/
typedef enum zb_zcl_price_block_period_duration_type_e
{
ZB_ZCL_PRICE_BLOCK_PERIOD_DURATION_TYPE_MINUTES = 0x00, /**< minutes (default) */
ZB_ZCL_PRICE_BLOCK_PERIOD_DURATION_TYPE_DAYS = 0x01, /**< days */
ZB_ZCL_PRICE_BLOCK_PERIOD_DURATION_TYPE_WEEKS = 0x02, /**< weeks */
ZB_ZCL_PRICE_BLOCK_PERIOD_DURATION_TYPE_MONTHS = 0x03, /**< months */
} zb_zcl_price_block_period_duration_type_t;
/** @} */ /* end of ZB_ZCL_PRICE_SET_BLOCK_PERIOD_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_COMMODITY_GROUP Commodity
* @{
* @details
* This set of attributes represents items that are associated with a
* particular commodity.
*/
/** Values and Descriptions for the CalorificValueUnit Attribute
* @see SE spec, subclause D.4.2.2.4.6
*/
typedef enum zb_zcl_price_calorific_value_unit_values_e
{
ZB_ZCL_PRICE_CALORIFIC_VALUE_UNIT_MJ_M3 = 0x01, /**< MJ/m3 */
ZB_ZCL_PRICE_CALORIFIC_VALUE_UNIT_MJ_KG, /**< MJ/kg */
} zb_zcl_price_calorific_value_unit_values_t;
/** @brief Commodity Attributes Set
* @see SE spec, D.4.2.2.4
*/
enum zb_zcl_price_set_commodity_e
{
/** CommodityType provides a label for identifying the type of pricing server
* present.
*/
ZB_ZCL_ATTR_PRICE_SRV_COMMODITY_TYPE = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_COMMODITY, 0x00),
/** The value of the Standing Charge is a daily fixed charge associated with
* supplying the commodity, measured in base unit of Currency with the decimal
* point located as indicated by the Trailing Digits field of a Publish Price
* command or PriceTrailingDigit attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_STANDING_CHARGE,
/** The conversion factor is used for gas meter and takes into account changes
* in the volume of gas based on temperature and pressure.
*/
ZB_ZCL_ATTR_PRICE_SRV_CONVERSION_FACTOR,
/** An 8-bit BitMap used to determine where the decimal point is located in
* the ConversionFactor attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_CONVERSION_FACTOR_TRAILING_DIGIT,
/** The amount of heat generated when a given mass of fuel is completely burned.
*/
ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE,
/** This attribute defines the unit for the CalorificValue.
*/
ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE_UNIT,
/** An 8-bit BitMap used to determine where the decimal point is located in
* the CalorificValue attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE_TRAILING_DIGIT,
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_COMMODITY_TYPE(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_COMMODITY_TYPE, \
ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) data_ptr \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_STANDING_CHARGE(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_STANDING_CHARGE, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CONVERSION_FACTOR(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CONVERSION_FACTOR, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CONVERSION_FACTOR_TRAILING_DIGIT(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CONVERSION_FACTOR_TRAILING_DIGIT, \
ZB_ZCL_ATTR_TYPE_8BITMAP, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE_UNIT(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE_UNIT, \
ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE_TRAILING_DIGIT(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE_TRAILING_DIGIT, \
ZB_ZCL_ATTR_TYPE_8BITMAP, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @} */ /* end of ZB_ZCL_PRICE_SET_COMMODITY_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_BLOCK_PRICE_INFORMATION_GROUP Block Price Information
* @{
* @details
* This attributes set provide remote access to the block prices.
* The Block Price Information attribute set supports Block and combined
* Tier-Block pricing, the number of blocks is one greater than the number of
* block thresholds defined in the Pricing cluster
*/
/** @brief Block Price Information (Delivered) Attributes Set
* @see SE spec, D.4.2.2.5
*/
enum zb_zcl_price_set_block_price_information_e
{
/** Attributes PriceNoTierBlock1 through PriceTier15Block16 represent the
* price of Energy, Gas, or Water delivered to the premises (i.e. delivered
* to the customer from the utility) at a specific price tier as defined by
* a TOU schedule, Block Threshold or a real time pricing period.
*/
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK1_PRICE = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_BLOCK_PRICE_INFORMATION, 0x00),
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK16_PRICE,
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCKN_PRICE_GNR(blockN, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK ## blockN ## _PRICE, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TIERN_BLOCKM_PRICE_GNR(tierN, blockM, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_TIER ## tierN ## _BLOCK ## blockM ## _PRICE, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @} */ /* end of ZB_ZCL_PRICE_SET_BLOCK_PRICE_INFORMATION_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_EXTENDED_PRICE_INFORMATION_GROUP Extended Price Information
* @{
* @details
* In case of TOU charging only, the price server allows support for up to 48
* TOU rates. To reduce the number of attributes, Tier1Block1Price through
* Tier15Block1Price attributes are reused to represent rates for tiers 1 to 15.
* Rates for tiers 16 to 48 are provided in the extended price information set.
*/
/** @brief Extended Price Information (Delivered) Attributes Set
* @see SE spec, D.4.2.2.6
*/
enum zb_zcl_price_set_extended_price_information_e
{
/* reserved 0x0500 - 0x050E */
/** Attributes PriceTier16 through PriceTier48 represent the price of Energy,
* Gas, or Water delivered to the premises (i.e. delivered to the customer
* from the utility) at a specific price tier.
*/
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER16 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_EXTENDED_PRICE_INFORMATION, 0x0F),
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER17,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER18,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER19,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER20,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER21,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER22,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER23,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER24,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER25,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER26,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER27,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER28,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER29,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER30,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER31,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER32,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER33,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER34,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER35,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER36,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER37,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER38,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER39,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER40,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER41,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER42,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER43,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER44,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER45,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER46,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER47,
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER48,
/* reserved 0x0530 - 0x05FD */
/** Attribute CPP1 Price represents the price of Energy, Gas, or Water
* delivered to the premises (i.e. delivered to the customer from the utility)
* while Critical Peak Pricing 'CPP1' is being applied.
*/
ZB_ZCL_ATTR_PRICE_SRV_CPP1_PRICE = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_EXTENDED_PRICE_INFORMATION, 0x0FE),
/** Attribute CPP2 Price represents the price of Energy, Gas, or Water
* delivered to the premises (i.e. delivered to the customer from the utility)
* while Critical Peak Pricing 'CPP2' is being applied.
*/
ZB_ZCL_ATTR_PRICE_SRV_CPP2_PRICE,
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIERN_GNR(tierN, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER ## tierN, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CPPN_PRICE_GNR(cppN, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CPP ## cppN ## _PRICE, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @} */ /* end of ZB_ZCL_PRICE_SET_EXTENDED_PRICE_INFORMATION_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_TARIFF_INFORMATION_GROUP Tariff Information
* @{
* @details
* This set of attributes represents items that are associated with a
* particular Price Tariff.
* @note The terms tier and rate are used
* interchangeably here, but do define the same thing.
*/
/** @brief Tariff Information (Delivered) Attributes Set
* @see SE spec, D.4.2.2.7
*/
enum zb_zcl_price_set_tariff_information_e
{
/* reserved 0x0600 - 0x060F */
/** The TariffLabel attribute provides a method for utilities to assign a
* label to an entire set of tariff information.
*/
ZB_ZCL_ATTR_PRICE_SRV_TARIFF_LABEL = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_TARIFF_INFORMATION, 0x10),
/** An 8-bit integer which indicates the number of price tiers used while this
* tariff is active.
*/
ZB_ZCL_ATTR_PRICE_SRV_NUMBER_OF_PRICE_TIERS_IN_USE,
/** An 8-bit integer which indicates the total number of block thresholds used
* in the currently active tariff.
*/
ZB_ZCL_ATTR_PRICE_SRV_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE,
/** An 8-bit enumeration indicating how the mixed TOU / Block charging is to
* be applied.
*/
ZB_ZCL_ATTR_PRICE_SRV_TIER_BLOCK_MODE,
/* reserved 0x0614 */
/** An 8-bit enumeration identifying the base unit of measure.
*/
ZB_ZCL_ATTR_PRICE_SRV_UNIT_OF_MEASURE = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_TARIFF_INFORMATION, 0x15),
/** An unsigned 16-bit integer containing identifying information concerning
* the local unit of currency used in the Price cluster.
*/
ZB_ZCL_ATTR_PRICE_SRV_CURRENCY,
/** An 8-bit BitMap used to determine where the decimal point is located for
* prices provided in the Standing Charge attribute and the Price Matrix command.
*/
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TRAILING_DIGIT,
/* reserved 0x0618 */
/** An 8-bit enumeration identifying the resolution period for Block Tariff.
*/
ZB_ZCL_ATTR_PRICE_SRV_TARIFF_RESOLUTION_PERIOD = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_TARIFF_INFORMATION, 0x19),
/* reserved 0x061A - 0x061F */
/** Used to calculate the amount of carbon dioxide (CO2) produced from energy use.
*/
ZB_ZCL_ATTR_PRICE_SRV_CO2 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_TARIFF_INFORMATION, 0x20),
/** This attribute is an 8-bit enumeration which defines the unit for the CO2 attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_CO2_UNIT,
/** An 8-bit Bit-Map used to determine where the decimal point is located in
* the CO2 attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_CO2_TRAILING_DIGIT,
/* reserved 0x628 - 0x06FF */
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TARIFF_LABEL(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_TARIFF_LABEL, \
ZB_ZCL_ATTR_TYPE_OCTET_STRING, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_NUMBER_OF_PRICE_TIERS_IN_USE(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_NUMBER_OF_PRICE_TIERS_IN_USE, \
ZB_ZCL_ATTR_TYPE_U8, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE, \
ZB_ZCL_ATTR_TYPE_U8, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TIER_BLOCK_MODE(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_TIER_BLOCK_MODE, \
ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @see SE spec, table D-82. */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TIER_BLOCK_MODE(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_TIER_BLOCK_MODE, \
ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @see @ref zb_zcl_metering_unit_of_measure_e */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_UNIT_OF_MEASURE(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_UNIT_OF_MEASURE, \
ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CURRENCY(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CURRENCY, \
ZB_ZCL_ATTR_TYPE_U16, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_PRICE_TRAILING_DIGIT(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_PRICE_TRAILING_DIGIT, \
ZB_ZCL_ATTR_TYPE_8BITMAP, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @brief @e TariffResolutionPeriod attribute values
* @see SE spec, Table D-107
* @see @ref ZB_ZCL_ATTR_PRICE_SRV_TARIFF_RESOLUTION_PERIOD
*/
typedef enum zb_zcl_price_tariff_resolution_period_e
{
ZB_ZCL_ATTR_PRICE_TARIFF_RESOLUTION_PERIOD_NOT_DEFINED = 0x00, /**< Not defined */
ZB_ZCL_ATTR_PRICE_TARIFF_RESOLUTION_PERIOD_BLOCK_PERIOD, /**< Block Period */
ZB_ZCL_ATTR_PRICE_TARIFF_RESOLUTION_PERIOD_1DAY, /**< 1 Day */
} zb_zcl_price_tariff_resolution_period_t;
/** @cond internals_doc */
/** @see @ref zb_zcl_price_tariff_resolution_period_t. */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TARIFF_RESOLUTION_PERIOD(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_TARIFF_RESOLUTION_PERIOD, \
ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CO2(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CO2, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @brief @e CO2Unit attribute values
* @see SE spec, Table D-83.
* @see ZB_ZCL_ATTR_PRICE_SRV_CO2_UNIT
*/
typedef enum zb_zcl_price_co2_unit_e
{
ZB_ZCL_ATTR_PRICE_CO2_UNIT_KG_PER_KWH = 0x01, /**< kg per kWh */
ZB_ZCL_ATTR_PRICE_CO2_UNIT_KG_PER_GALLON_OF_GASOLINE = 0x02, /**< kg per Gallon of Gasoline */
ZB_ZCL_ATTR_PRICE_CO2_UNIT_KG_PER_THERM_OF_NATURAL_GAS = 0x03, /**< kg per Therm of Natural Gas */
} zb_zcl_price_co2_unit_t;
/** @cond internals_doc */
/** @see @ref zb_zcl_price_co2_unit_t */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CO2_UNIT(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CO2_UNIT, \
ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CO2_TRAILING_DIGIT(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CO2_TRAILING_DIGIT, \
ZB_ZCL_ATTR_TYPE_8BITMAP, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @} */ /* end of ZB_ZCL_PRICE_SET_TARIFF_INFORMATION_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_BILLING_INFORMATION_GROUP Billing Information
* @{
* @details
* This set of attributes provides remote access to the Price server
* Billing information.
*/
/** @brief Billing Information (Delivered) Attributes Set
* @see SE spec, D.4.2.2.8
*/
enum zb_zcl_price_set_billing_information_e
{
/** The CurrentBillingPeriodStart attribute represents the start time of the
* current billing period.
*/
ZB_ZCL_ATTR_PRICE_SRV_CURRENT_BILLING_PERIOD_START = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_BILLING_INFORMATION, 0x00),
/** The CurrentBillingPeriodDuration attribute represents the current billing
* period duration in minutes.
*/
ZB_ZCL_ATTR_PRICE_SRV_CURRENT_BILLING_PERIOD_DURATION,
/** The LastBillingPeriodStart attribute represents the start time of the last
* billing period.
*/
ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_START,
/** The LastBillingPeriodDuration attribute is the duration of the last
* billing period in minutes (start to end of last billing period).
*/
ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_DURATION,
/** The LastBillingPeriodConsolidatedBill attribute is an amount for the cost
* of the energy supplied from the date of the LastBillingPeriodStart
* attribute and until the duration of the LastBillingPeriodDuration attribute
* expires, measured in base unit of Currency with the decimal point located
* as indicated by the Trailing Digits attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_CONSOLIDATED_BILL,
/* reserved 0x0705 - 0x07FF */
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CURRENT_BILLING_PERIOD_START(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CURRENT_BILLING_PERIOD_START, \
ZB_ZCL_ATTR_TYPE_UTC_TIME, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CURRENT_BILLING_PERIOD_DURATION(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CURRENT_BILLING_PERIOD_DURATION, \
ZB_ZCL_ATTR_TYPE_U24, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_START(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_START, \
ZB_ZCL_ATTR_TYPE_UTC_TIME, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_DURATION(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_DURATION, \
ZB_ZCL_ATTR_TYPE_U24, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_CONSOLIDATED_BILL(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_CONSOLIDATED_BILL, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @} */ /* end of ZB_ZCL_PRICE_SET_BILLING_INFORMATION_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_CREDIT_PAYMENT_GROUP Credit Payment
* @{
* @details
* The Credit Payments Attribute set provides a method for the HAN (IHD) to
* understand the current status of the credit-only payment made to the energy
* supplier. These payments are for a credit meter only and do not cover any
* Prepayment Top up or payment. This attribute set is used to display the bill
* on the IHD should this service be required. Devices that require this information
* should use standard ZCL commands to read this information.
*/
/** @brief Credit Payment Attributes Set
* @see SE spec, D.2.2.9
*/
enum zb_zcl_price_set_credit_payment_e
{
/** The CreditPaymentDueDate attribute indicates the date and time when the
* next credit payment is due to be paid by the consumer to the supplier.
*/
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DUE_DATE = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_CREDIT_PAYMENT, 0x00),
/** The CreditPaymentStatus attribute indicates the current status of the last payment.
*/
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_STATUS,
/** This is the total of the consolidated bill amounts accumulated since the
* last payment.
*/
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_OVER_DUE_AMOUNT,
/* reserved 0x0803 - 0x0809 */
/** The PaymentDiscount attribute indicates the discount that the energy
* supplier has applied to the consolidated bill.
*/
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_CREDIT_PAYMENT, 0x0A),
/** The PaymentDiscountPeriod attribute indicates the period for which this
* discount shall be applied for.
*/
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_PERIOD,
/* reserved 0x080C - 0x080F */
/** The CreditPayment attributes indicate the amount paid by the consumer to
* the energy supplier.
*/
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_1 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_CREDIT_PAYMENT, 0x10),
/** The CreditPaymentDate attributes indicate the last time the consumer made
* a payment to the energy supplier.
*/
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DATE_1,
/** The CreditPaymentRef attributes indicate the reference number given to the
* payment by the energy supplier.
*/
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_REF_1,
/* reserved 0x0813 - 0x081F */
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_2 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_CREDIT_PAYMENT, 0x20),
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DATE_2,
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_REF_2,
/* reserved 0x0823 - 0x082F */
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_3 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_CREDIT_PAYMENT, 0x30),
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DATE_3,
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_REF_3,
/* reserved 0x0833 - 0x083F */
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_4 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_CREDIT_PAYMENT, 0x40),
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DATE_4,
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_REF_4,
/* reserved 0x0843 - 0x084F */
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_5 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_CREDIT_PAYMENT, 0x50),
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DATE_5,
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_REF_5,
/* reserved 0x0853 - 0x08FF */
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DUE_DATE(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DUE_DATE, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @brief @e CreditPaymentStatus attribute values
* @see SE spec, Table D-86.
* @see ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_STATUS
*/
typedef enum zb_zcl_price_credit_payment_status_e
{
ZB_ZCL_PRICE_CREDIT_PAYMENT_PENDING = 0x00, /**< Pending */
ZB_ZCL_PRICE_CREDIT_PAYMENT_RECEIVED = 0x01, /**< Received/Paid */
ZB_ZCL_PRICE_CREDIT_PAYMENT_PAID = ZB_ZCL_PRICE_CREDIT_PAYMENT_RECEIVED, /**< @copydoc ZB_ZCL_PRICE_CREDIT_PAYMENT_RECEIVED */
ZB_ZCL_PRICE_CREDIT_PAYMENT_OVERDUE = 0x02, /**< Overdue */
ZB_ZCL_PRICE_CREDIT_PAYMENT_2PAYMENTS_OVERDUE = 0x03, /**< 2 Payments overdue */
ZB_ZCL_PRICE_CREDIT_PAYMENT_3PAYMENTS_OVERDUE = 0x04, /**< 3 Payments overdue */
/* reserved 0x05 - 0xFF */
} zb_zcl_price_credit_payment_status_t;
/** @cond internals_doc */
/** @see @ref zb_zcl_price_credit_payment_status_t */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_STATUS(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_STATUS, \
ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_OVER_DUE_AMOUNT(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_OVER_DUE_AMOUNT, \
ZB_ZCL_ATTR_TYPE_S32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT, \
ZB_ZCL_ATTR_TYPE_S32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_PERIOD(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_PERIOD, \
ZB_ZCL_ATTR_TYPE_S32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_N(paymentN, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_ ## paymentN, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DATE_N(paymentN, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DATE_ ## paymentN, \
ZB_ZCL_ATTR_TYPE_UTC_TIME, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_REF_N(paymentN, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_REF_ ## paymentN, \
ZB_ZCL_ATTR_TYPE_UTC_TIME, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @} */ /* end of ZB_ZCL_PRICE_SET_CREDIT_PAYMENT_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_RECEIVED_TIER_LABEL_GROUP Tier Label
* @{
*/
/** @brief Received Tier Label Attributes Set
* @see SE spec, D.4.2.2.10
*/
enum zb_zcl_price_set_received_tier_label
{
/** The ReceivedTierNPriceLabel attributes provide a method for utilities to
* assign a label to Received Price Tiers.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER1_PRICE_LABEL = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_TIER_LABEL, 0x00),
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER2_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER3_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER4_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER5_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER6_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER7_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER8_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER9_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER10_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER11_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER12_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER13_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER14_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER15_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER16_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER17_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER18_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER19_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER20_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER21_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER22_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER23_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER24_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER25_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER26_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER27_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER28_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER29_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER30_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER31_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER32_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER33_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER34_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER35_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER36_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER37_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER38_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER39_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER40_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER41_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER42_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER43_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER44_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER45_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER46_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER47_PRICE_LABEL,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER48_PRICE_LABEL,
/* reserved 0x8030 - 0x80FF */
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIERN_PRICE_LABEL_GNR(tierN, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER ## tierN ## _PRICE_LABEL, \
ZB_ZCL_ATTR_TYPE_OCTET_STRING, \
ZB_ZCL_ATTR_ACCESS_READ_WRITE, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */
/** @} */ /* end of ZB_ZCL_PRICE_SET_RECEIVED_TIER_LABEL_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_THRESHOLD_GROUP Received Block Threshold
* @{
* @details
* This set of attributes provides remote access to the Price server
* ReceivedBlockThresholds. The number of block thresholds is indicated by the
* NumberOfBlockThresholds field in the associated PublishTariffInformation
* command. The number of blocks is one greater than the number of thresholds.
*/
/** @brief Received Block Threshold Attributes Set
* @see SE spec, D.4.2.2.11
*/
enum zb_zcl_price_set_received_block_threshold_e
{
/** The format of these attributes is the same as for the 'Delivered' Block Thresholds
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK1_THRESHOLD = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_THRESHOLD, 0x00),
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK2_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK3_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK4_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK5_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK6_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK7_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK8_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK9_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK10_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK11_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK12_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK13_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK14_THRESHOLD,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK15_THRESHOLD,
/* reserved 0x810F - 0x81FF */
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCKN_THRESHOLD_GNR(blockN, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK ## blockN ## _THRESHOLD, \
ZB_ZCL_ATTR_TYPE_48BIT, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */
/** @} */ /* end of ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_THRESHOLD_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PERIOD_GROUP Received Block Period
* @{
* @details
* This set of attributes provides remote access to the Price server
* Received Block Threshold period (typically the billing cycle) information.
*/
/** @brief Received Block Period Attributes Set
* @see SE spec, D.4.2.2.12
*/
enum zb_zcl_price_set_received_block_period_e
{
/** The format of this attribute is the same as for the 'Delivered'
* StartOfBlockPeriod attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_START_OF_BLOCK_PERIOD = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PERIOD, 0x00),
/** The format of this attribute is the same as for the 'Delivered'
* BlockPeriodDuration attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK_PERIOD_DURATION,
/** The format of this attribute is the same as for the 'Delivered'
* ThresholdMultiplier attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_THRESHOLD_MULTIPLIER,
/** The format of this attribute is the same as for the 'Delivered'
* ThresholdDivisor attribute
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_THRESHOLD_DIVISOR,
/* reserved 0x8204 - 0x82FF */
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_START_OF_BLOCK_PERIOD(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_START_OF_BLOCK_PERIOD, \
ZB_ZCL_ATTR_TYPE_UTC_TIME, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK_PERIOD_DURATION(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK_PERIOD_DURATION, \
ZB_ZCL_ATTR_TYPE_U24, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_THRESHOLD_MULTIPLIER(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_THRESHOLD_MULTIPLIER, \
ZB_ZCL_ATTR_TYPE_U24, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_THRESHOLD_DIVISOR(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_THRESHOLD_DIVISOR, \
ZB_ZCL_ATTR_TYPE_U24, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @} */ /* end of ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PERIOD_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PRICE_INFORMATION_GROUP Received Block Price Information
* @{
*/
/** @brief Received Block Price Information Attributes Set
* @see SE spec, D.4.2.2.13
*/
enum zb_zcl_price_set_received_block_price_information_e
{
/** The format and use of these attributes is the same as for the
* 'Delivered' TierNBlockNPrice attributes.
*/
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK1_PRICE = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PRICE_INFORMATION, 0x00),
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK16_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK1_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK2_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK3_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK4_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK5_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK6_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK7_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK8_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK9_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK10_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK11_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK12_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK13_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK14_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK15_PRICE,
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK16_PRICE,
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCKN_PRICE_GNR(blockN, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK ## blockN ## _PRICE, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RX_TIERN_BLOCKM_PRICE_GNR(tierN, blockM, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RX_TIER ## tierN ## _BLOCK ## blockM ## _PRICE, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @} */ /* end of ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PRICE_INFORMATION_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_RECEIVED_EXTENDED_PRICE_INFORMATION_GROUP Received Extended Price Information
* @{
* @details
* In case of TOU charging only, the price server shall support up to 48 TOU
* rates. To reduce the number of attributes, RxTierNBlock1Price attributes
* are reused to represent rates for tiers 1 to 15. Rates for tiers 16 to 48
* are provided in the Received Extended Price Information Set.
*/
/** @brief Received Extended Price Information Attributes Set
* @see SE spec, D.4.2.2.14
*/
enum zb_zcl_price_set_received_extended_price_information_e
{
/* reserved 0x8500 - 0x850E */
/** The format and use of these attributes is the same as for the
* 'Delivered' PriceTierN attributes.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER16 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_EXTENDED_PRICE_INFORMATION, 0x0F),
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER17,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER18,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER19,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER20,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER21,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER22,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER23,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER24,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER25,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER26,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER27,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER28,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER29,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER30,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER31,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER32,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER33,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER34,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER35,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER36,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER37,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER38,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER39,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER40,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER41,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER42,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER43,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER44,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER45,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER46,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER47,
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER48,
/* reserved 0x8530 - 0x85FF */
};
/** @brief Default value for Price cluster revision global attribute */
#define ZB_ZCL_PRICE_CLUSTER_REVISION_DEFAULT ((zb_uint16_t)0x0002u)
/** @brief Default value for Tier1_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER1_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x31 ,0x00}
/** @brief Default value for Tier2_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER2_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x32 ,0x00}
/** @brief Default value for Tier3_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER3_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x33 ,0x00}
/** @brief Default value for Tier4_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER4_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x34 ,0x00}
/** @brief Default value for Tier5_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER5_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x35 ,0x00}
/** @brief Default value for Tier6_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER6_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x36 ,0x00}
/** @brief Default value for Tier7_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER7_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x37 ,0x00}
/** @brief Default value for Tier8_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER8_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x38 ,0x00}
/** @brief Default value for Tier9_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER9_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x39 ,0x00}
/** @brief Default value for Tier10_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER10_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x31 ,0x30, 0x00}
/** @brief Default value for Tier11_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER11_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x31 ,0x31, 0x00}
/** @brief Default value for Tier12_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER12_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x31 ,0x32, 0x00}
/** @brief Default value for Tier13_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER13_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x31 ,0x33, 0x00}
/** @brief Default value for Tier14_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER14_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x31 ,0x34, 0x00}
/** @brief Default value for Tier15_PriceLabel attribute */
#define ZB_ZCL_PRICE_SRV_TIER15_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x31 ,0x35, 0x00}
/** @brief Default value for ConversionFactor attribute */
#define ZB_ZCL_PRICE_SRV_CONVERSION_FACTOR_DEFAULT_VALUE ((zb_uint32_t)0x10000000)
/** @brief Default value for ConversionFactorTrailingDigit attribute */
#define ZB_ZCL_PRICE_SRV_CONVERSION_FACTOR_TRAILING_DIGIT_DEFAULT_VALUE ((zb_uint8_t)0x70)
/** @brief Default value for CalorificValue attribute */
#define ZB_ZCL_PRICE_SRV_CALORIFIC_VALUE_DEFAULT_VALUE ((zb_uint32_t)0x2625A00)
/** @brief Default value for CalorificValueUnit attribute */
#define ZB_ZCL_PRICE_SRV_CALORIFIC_VALUE_UNIT_DEFAULT_VALUE ((zb_uint8_t)0x1)
/** @brief Default value for CalorificValueTrailingDigit attribute */
#define ZB_ZCL_PRICE_SRV_CALORIFIC_VALUE_TRAILING_DIGIT_DEFAULT_VALUE ((zb_uint8_t)0x60)
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIERN_GNR(tierN, data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER ## tierN, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @} */ /* end of ZB_ZCL_PRICE_SET_RECEIVED_EXTENDED_PRICE_INFORMATION_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_RECEIVED_TARIFF_INFORMATION_GROUP Received Tariff Information
* @{
* @details
* The following set of attributes represents items that are associated with a
* particular Received Price Tariff.
*/
/** @brief Received Tariff Information Attributes Set
* @see SE spec, D.4.2.2.15
*/
enum zb_zcl_price_set_received_tariff_information_e
{
/* reserved 0x8600 - 0x860F */
/** The format and use of this attribute is the same as for the
* 'Delivered' TariffLabel attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TARIFF_LABEL = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_TARIFF_INFORMATION, 0x10),
/** The format and use of this attribute is the same as for the
* 'Delivered' NumberOfPriceTiersInUse attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_NUMBER_OF_PRICE_TIERS_IN_USE,
/** The format and use of this attribute is the same as for the
* 'Delivered' NumberOfBlockThresholdsInUse attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE,
/** The format and use of this attribute is the same as for the
* 'Delivered' TierBlockMode attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER_BLOCK_MODE,
/* reserved 0x8614 */
/** An 8-bit enumeration identifying the resolution period for Block Tariff.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TARIFF_RESOLUTION_PERIOD = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_TARIFF_INFORMATION, 0x15),
/* reserved 0x8616 - 0x8624 */
/** The format and use of this attribute is the same as for the
* 'Delivered' CO2 attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_TARIFF_INFORMATION, 0x25),
/** The format and use of this attribute is the same as for the
* 'Delivered' CO2Unit attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2_UNIT,
/** The format and use of this attribute is the same as for the
* 'Delivered' CO2TrailingDigit attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2_TRAILING_DIGIT,
/* reserved 0x8528 - 0x85FF */
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TARIFF_LABEL(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TARIFF_LABEL, \
ZB_ZCL_ATTR_TYPE_OCTET_STRING, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_NUMBER_OF_PRICE_TIERS_IN_USE(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_NUMBER_OF_PRICE_TIERS_IN_USE, \
ZB_ZCL_ATTR_TYPE_U8, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE, \
ZB_ZCL_ATTR_TYPE_U8, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @see SE spec, table D-82. */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER_BLOCK_MODE(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER_BLOCK_MODE, \
ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @see @ref zb_zcl_price_tariff_resolution_period_t. */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TARIFF_RESOLUTION_PERIOD(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TARIFF_RESOLUTION_PERIOD, \
ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @see @ref zb_zcl_price_co2_unit_t */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2_UNIT(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2_UNIT, \
ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2_TRAILING_DIGIT(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2_TRAILING_DIGIT, \
ZB_ZCL_ATTR_TYPE_8BITMAP, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @} */ /* end of ZB_ZCL_PRICE_SET_RECEIVED_TARIFF_INFORMATION_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_SET_RECEIVED_BILLING_INFORMATION_GROUP Received Billing Information
* @{
* @details
* The following set of attributes represents items that are associated with
* particular Received Billing information.
*/
/** @brief Received Billing Information Attributes Set
* @see SE spec, D.4.2.2.16
*/
enum zb_zcl_price_set_received_billing_information
{
/** The format and use of this attribute is the same as for the
* 'Delivered' CurrentBillingPeriodStart attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CURRENT_BILLING_PERIOD_START = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_BILLING_INFORMATION, 0x00),
/** The format and use of this attribute is the same as for the
* 'Delivered' CurrentBillingPeriodDuration attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CURRENT_BILLING_PERIOD_DURATION,
/** The format and use of this attribute is the same as for the
* 'Delivered' LastBillingPeriodStart attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_START,
/** The format and use of this attribute is the same as for the
* 'Delivered' LastBillingPeriodDuration attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_DURATION,
/** The format and use of this attribute is the same as for the
* 'Delivered' LastBillingPeriodConsolidatedBill attribute.
*/
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_CONSOLIDATED_BILL,
/* reserved 0x8705 - 0x87FF */
};
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CURRENT_BILLING_PERIOD_START(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CURRENT_BILLING_PERIOD_START, \
ZB_ZCL_ATTR_TYPE_UTC_TIME, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CURRENT_BILLING_PERIOD_DURATION(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CURRENT_BILLING_PERIOD_DURATION, \
ZB_ZCL_ATTR_TYPE_U24, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_START(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_START, \
ZB_ZCL_ATTR_TYPE_UTC_TIME, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_DURATION(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_DURATION, \
ZB_ZCL_ATTR_TYPE_U24, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_CONSOLIDATED_BILL(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_CONSOLIDATED_BILL, \
ZB_ZCL_ATTR_TYPE_U32, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @} */ /* end of ZB_ZCL_PRICE_SET_RECEIVED_BILLING_INFORMATION_GROUP */
/******************************************************************************/
/** @def ZB_ZCL_DECLARE_PRICE_SRV_ATTRIB_LIST
* @brief Declare server-side Price cluster attributes
* @param attr_list - Attribute list name.
* @param commodity_type - pointer to variable to store @ref ZB_ZCL_ATTR_PRICE_SRV_COMMODITY_TYPE "CommodityType" attribute value.
*/
#define ZB_ZCL_DECLARE_PRICE_SRV_ATTRIB_LIST(attr_list, commodity_type) \
ZB_ZCL_START_DECLARE_ATTRIB_LIST_CLUSTER_REVISION(attr_list, ZB_ZCL_PRICE) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_PRICE_SRV_COMMODITY_TYPE, (commodity_type)) \
ZB_ZCL_FINISH_DECLARE_ATTRIB_LIST
/** @} */ /* end of ZB_ZCL_PRICE_SRV_ATTRIBUTES_GROUP */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_CLIENT_ATTRIBUTES_GROUP Price cluster client attributes
* @{
*/
/** @brief Price Cluster client attributes */
typedef enum zb_zcl_price_cli_attr_e
{
/** @e PriceIncreaseRandomizeMinutes attribute represents the maximum amount
* of time to be used when randomizing the response to a price increase.
*/
ZB_ZCL_ATTR_PRICE_CLI_PRICE_INCREASE_RANDOMIZE_MINUTES = 0x0000,
/** @e PriceDecreaseRandomizeMinutes attribute represents the maximum number
* of minutes to be used when randomizing the response to a price decrease.
*/
ZB_ZCL_ATTR_PRICE_CLI_PRICE_DECREASE_RANDOMIZE_MINUTES = 0x0001,
/** @e CommodityType attribute provides a label for identifying the type of pricing client present.
*/
ZB_ZCL_ATTR_PRICE_CLI_COMMODITY_TYPE = 0x0002,
} zb_zcl_price_cli_attr_t;
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_CLI_PRICE_INCREASE_RANDOMIZE_MINUTES(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_CLI_PRICE_INCREASE_RANDOMIZE_MINUTES, \
ZB_ZCL_ATTR_TYPE_U8, \
ZB_ZCL_ATTR_ACCESS_READ_WRITE, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_CLI_PRICE_DECREASE_RANDOMIZE_MINUTES(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_CLI_PRICE_DECREASE_RANDOMIZE_MINUTES, \
ZB_ZCL_ATTR_TYPE_U8, \
ZB_ZCL_ATTR_ACCESS_READ_WRITE, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_CLI_COMMODITY_TYPE(data_ptr) \
{ \
ZB_ZCL_ATTR_PRICE_CLI_COMMODITY_TYPE, \
ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) (data_ptr) \
}
/** @endcond */ /* internals_doc */
/** @def ZB_ZCL_DECLARE_PRICE_CLI_ATTRIB_LIST
* @brief Declare client-side Price cluster attributes
* @param attr_list - Attribute list name
* @param inc_rand_min - pointer to variable to store @ref ZB_ZCL_ATTR_PRICE_CLI_PRICE_INCREASE_RANDOMIZE_MINUTES "PriceIncreaseRandomizeMinutes" attribute value.
* @param dec_rand_min - pointer to variable to store @ref ZB_ZCL_ATTR_PRICE_CLI_PRICE_DECREASE_RANDOMIZE_MINUTES "PriceDecreaseRandomizeMinutes" attribute value.
* @param commodity_type - pointer to variable to store "CommodityType" attribute value.
*/
#define ZB_ZCL_DECLARE_PRICE_CLI_ATTRIB_LIST(attr_list, inc_rand_min, dec_rand_min, commodity_type) \
ZB_ZCL_START_DECLARE_ATTRIB_LIST_CLUSTER_REVISION(attr_list, ZB_ZCL_PRICE) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_PRICE_CLI_PRICE_INCREASE_RANDOMIZE_MINUTES, (inc_rand_min)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_PRICE_CLI_PRICE_DECREASE_RANDOMIZE_MINUTES, (dec_rand_min)) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_PRICE_CLI_COMMODITY_TYPE, (commodity_type)) \
ZB_ZCL_FINISH_DECLARE_ATTRIB_LIST
/** @} */ /* end of ZB_ZCL_PRICE_CLIENT_ATTRIBUTES_GROUP */
/** @} */ /* end of ZB_ZCL_PRICE_ATTRS */
/******************************************************************************/
/** @defgroup ZB_ZCL_PRICE_CLUSTER_COMMANDS Price cluster commands
* @{
*/
/** @brief Price cluster client command identifiers.
* @see SE spec, subclause D.4.2.3.
*/
typedef enum zb_zcl_price_client_cmd_e
{
/** GetCurrentPrice command initiates a PublishPrice command for the current time.
* @see SE spec, subclause D.4.2.3.2.
* @see zb_zcl_price_get_current_price_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_GET_CURRENT_PRICE = 0x00,
/** GetScheduledPrices command initiates a PublishPrice command for available
* price events.
* @see zb_zcl_price_get_scheduled_prices_payload_s
* @see SE spec, subclause D.4.2.3.3. */
ZB_ZCL_PRICE_CLI_CMD_GET_SCHEDULED_PRICES = 0x01,
/** PriceAcknowledgement command provides the ability to acknowledge a
* previously sent PublishPrice command.
* @see SE spec, subclause D.4.2.3.4.
* @see zb_zcl_price_ack_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_PRICE_ACK = 0x02,
/** GetBlockPeriod(s) command.
* This command initiates a PublishBlockPeriod command for the currently
* scheduled block periods.
* @see SE spec, subclause D.4.2.3.5.
* @see zb_zcl_price_get_block_period_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_GET_BLOCK_PERIOD = 0x03,
/** GetConversionFactor command.
* This command initiates a PublishConversionFactor command(s) for scheduled
* conversion factor updates.
* @see SE spec, subclause D.4.2.3.6
* @see zb_zcl_price_get_conversion_factor_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_GET_CONVERSION_FACTOR = 0x04,
/** GetCalorificValue command.
* This command initiates a PublishCalorificValue command(s) for scheduled
* calorific value updates.
* @see SE spec, subclause D.4.2.3.7.
* @see zb_zcl_price_client_get_calorific_value_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_GET_CALORIFIC_VALUE = 0x05,
/** GetTariffInformation command.
* This command initiates PublishTariffInformation command(s) for scheduled
* tariff updates.
* @see SE spec, subclause D.4.2.3.8.
* @see zb_zcl_price_get_tariff_information_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_GET_TARIFF_INFORMATION = 0x06,
/** GetPriceMatrix command.
* This command initiates a PublishPriceMatrix command for the scheduled Price
* Matrix updates.
* @see SE spec, subclause D.4.2.3.9.
* @see zb_zcl_price_get_price_matrix_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_GET_PRICE_MATRIX = 0x07,
/** GetBlockThresholds command.
* This command initiates a PublishBlockThreshold command for the scheduled
* Block Threshold updates.
* @see SE spec, subclause D.4.2.3.10.
* @see zb_zcl_price_get_block_thresholds_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_GET_BLOCK_THRESHOLDS = 0x08,
/** GetCO2Value command.
* This command initiates PublishCO2Value command(s) for scheduled CO2
* conversion factor updates.
* @see SE spec, subclause D.4.2.3.11.
* @see zb_zcl_price_get_co2_value_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_GET_CO2_VALUE = 0x09,
/** GetTierLabels command.
* This command allows a client to retrieve the tier labels associated with a
* given tariff; this command initiates a PublishTierLabels command from
* the server.
* @see SE spec, subclause D.4.2.3.12.
* @see zb_zcl_price_get_tier_labels_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_GET_TIER_LABELS = 0x0A,
/** GetBillingPeriod command.
* This command initiates one or more PublishBillingPeriod commands for
* currently scheduled billing periods.
* @see SE spec, subclause D.4.2.3.13.
* @see zb_zcl_price_get_billing_period_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_GET_BILLING_PERIOD = 0x0B,
/** GetConsolidatedBill command.
* This command initiates one or more PublishConsolidatedBill commands with
* the requested billing information.
* @see SE spec, subclause D.4.2.3.14.
* @see zb_zcl_price_get_consolidated_bill_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_GET_CONSOLIDATED_BILL = 0x0C,
/** CPPEventResponse command.
* The CPPEventResponse command is sent from a Client (IHD) to the ESI to
* notify it of a Critical Peak Pricing event authorization.
*
* @note The CPPEventResponse command in current revision of SE specification
* is provisional and not certifiable. This feature may change before reaching
* certifiable status in a future revision of SE specification.
*
* @see SE spec, subclause D.4.2.3.15.
* @see zb_zcl_price_cpp_event_response_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_CPP_EVENT_RESPONSE = 0x0D,
/** GetCreditPayment command.
* This command initiates PublishCreditPayment commands for the requested
* credit payment information.
* @see SE spec, subclause D.4.2.3.16.
* @see zb_zcl_price_get_credit_payment_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_GET_CREDIT_PAYMENT = 0x0E,
/** GetCurrencyConversion command.
* This command initiates a PublishCurrencyConversion command for the currency
* conversion factor updates.
* @see SE spec, subclause D.4.2.3.17.
* @see zb_zcl_price_publish_currency_conversion_payload_s
*/
ZB_ZCL_PRICE_CLI_CMD_GET_CURRENCY_CONVERSION = 0x0F,
/** GetTariffCancellation command.
* This command initiates the return of the last CancelTariff command held on
* the associated server.
* @see SE spec, subclauseD.4.2.3.18.
* @note This command has no payload.
*/
ZB_ZCL_PRICE_CLI_CMD_GET_TARIFF_CANCELLATION = 0x10,
/* reserved 0x11 - 0xFF */
} zb_zcl_price_client_cmd_t;
/** @brief Price cluster server command identifiers
* @see SE spec, subclause D.4.2.4.
*/
typedef enum zb_zcl_price_server_cmd_e
{
/** PublishPrice command.
* The Publish Price command is generated in response to receiving a
* GetCurrentPrice command, in response to a GetScheduledPrices command,
* and when an update to the pricing information is available from the
* commodity provider.
* @see SE spec, subclause D.4.2.4.1.
* @see zb_zcl_price_publish_price_payload_s
*/
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_PRICE = 0x00,
/** PublishBlockPeriod command.
* The Publish Block Period command is generated in response to receiving a
* GetBlockPeriod(s) command (see sub-clause D.4.2.3.5) or when an update
* to the block tariff schedule is available from the commodity provider.
* @see SE spec, subclause D.4.2.4.2.
* @see zb_zcl_price_publish_block_period_payload_s
*/
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_BLOCK_PERIOD = 0x01,
/** PublishConversionFactor command.
* The PublishConversionFactor command is sent in response to a
* GetConversionFactor command or if a new conversion factor is available.
* @see SE spec, subclause D.4.2.4.3.
* @see zb_zcl_price_publish_conversion_factor_payload_s
*/
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CONVERSION_FACTOR = 0x02,
/** PublishCalorificValue command.
* The PublishCalorificValue command is sent in response to a
* GetCalorificValue command or if a new calorific value is available.
* @see SE spec, subclause D.4.2.4.4.
* @see zb_zcl_price_publish_calorific_value_s
*/
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CALORIFIC_VALUE = 0x03,
/** PublishTariffInformation command.
* The PublishTariffInformation command is sent in response to a
* GetTariffInformation command or if new tariff information is available
* (including Price Matrix and Block Thresholds).
* @see SE spec, subclause D.4.2.4.5.
* @see zb_zcl_price_publish_tariff_information_payload_s
*/
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_TARIFF_INFORMATION = 0x04,
/** PublishPriceMatrix command.
* The PublishPriceMatrix command is used to publish the Block Price
* Information Set (up to 15 tiers x 15 blocks) and
* the Extended Price Information Set (up to 48 tiers).
* The PublishPriceMatrix command is sent in response to
* a GetPriceMatrix command.
* @see SE spec, subclause D.4.2.4.6.
* @see zb_zcl_price_publish_price_matrix_payload_s
*/
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_PRICE_MATRIX = 0x05,
/** PublishBlockThresholds command.
* The PublishBlockThresholds command is sent in response to
* a GetBlockThresholds command.
* @see SE spec, subclause D.4.2.4.7.
* @see zb_zcl_price_publish_block_thresholds_payload_s
*/
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_BLOCK_THRESHOLDS = 0x06,
/** PublishCO2Value command.
* The PublishCO2Value command is sent in response to a GetCO2Value command or
* if a new CO2 conversion factor is available.
* @see SE spec, subclause D.4.2.4.8.
* @see zb_zcl_price_publish_co2_value_payload_s
*/
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CO2_VALUE = 0x07,
/** PublishTierLabels command.
* The PublishTierLabels command is generated in response to receiving a
* GetTierLabels command or when there is a tier label change.
* @see SE spec, subclause D.4.2.4.9.
* @see zb_zcl_price_publish_tier_labels_payload_s
*/
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_TIER_LABELS = 0x08,
/** PublishBillingPeriod command.
* The PublishBillingPeriod command is generated in response to receiving a
* GetBillingPeriod(s) command or when an update to the Billing schedule is
* available from the commodity supplier.
* @see SE spec, subclause D.4.2.4.10.
* @see zb_zcl_price_publish_billing_period_payload_s
*/
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_BILLING_PERIOD = 0x09,
/** PublishConsolidatedBill command.
* The PublishConsolidatedBill command is used to make consolidated billing
* information from previous billing periods available to other end devices.
* This command is issued in response to a GetConsolidatedBill command or
* if new billing information is available.
* @see SE spec, subclause D.4.2.4.11.
* @see zb_zcl_price_publish_consolidated_bill_payload_s
*/
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CONSOLIDATED_BILL = 0x0A,
/** PublishCPPEvent command.
* The PublishCPPEvent command is sent from an ESI to its Price clients to
* notify them of a Critical Peak Pricing (CPP) event.
*
* @note The CPPEventResponse command in current revision of SE specification
* is provisional and not certifiable. This feature may change before reaching
* certifiable status in a future revision of SE specification.
*
* @see SE spec, subclause D.4.2.4.12.
* @see zb_zcl_price_publish_cpp_event_payload_s
*/
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CPP_EVENT = 0x0B,
/** PublishCreditPayment command.
* The PublishCreditPayment command is used to update the credit payment
* information when available.
* @see SE spec, subclause D.4.2.4.13.
* @see zb_zcl_price_publish_credit_payment_payload_s
*/
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CREDIT_PAYMENT = 0x0C,
/** PublishCurrencyConversion command.
* The PublishCurrencyConversion command is sent in response to a
* GetCurrencyConversion command or when a new currency becomes available.
* @see SE spec, subclause D.4.2.4.14.
* @see zb_zcl_price_publish_currency_conversion_payload_s
*/
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CURRENCY_CONVERSION = 0x0D,
/** CancelTariff command.
* The CancelTariff command indicates that all data associated with a
* particular tariff instance should be discarded.
* @see SE spec, subclause D.4.2.4.15.
* @see zb_zcl_price_cancel_tariff_payload_s
*/
ZB_ZCL_PRICE_SRV_CMD_CANCEL_TARIFF = 0x0E,
/* reserved 0x0F - 0xFF */
} zb_zcl_price_server_cmd_t;
/* PRICE cluster commands list : only for information - do not modify */
#define ZB_ZCL_CLUSTER_ID_PRICE_SERVER_ROLE_GENERATED_CMD_LIST \
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_PRICE, \
ZB_ZCL_PRICE_SRV_CMD_PUBLISH_TIER_LABELS
#define ZB_ZCL_CLUSTER_ID_PRICE_CLIENT_ROLE_RECEIVED_CMD_LIST ZB_ZCL_CLUSTER_ID_PRICE_SERVER_ROLE_GENERATED_CMD_LIST
#define ZB_ZCL_CLUSTER_ID_PRICE_CLIENT_ROLE_GENERATED_CMD_LIST \
ZB_ZCL_PRICE_CLI_CMD_GET_CURRENT_PRICE, \
ZB_ZCL_PRICE_CLI_CMD_GET_SCHEDULED_PRICES, \
ZB_ZCL_PRICE_CLI_CMD_PRICE_ACK, \
ZB_ZCL_PRICE_CLI_CMD_GET_TIER_LABELS
#define ZB_ZCL_CLUSTER_ID_PRICE_SERVER_ROLE_RECEIVED_CMD_LIST ZB_ZCL_CLUSTER_ID_PRICE_CLIENT_ROLE_GENERATED_CMD_LIST
/** @brief @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_PRICE "PublishPrice" command payload.
* @see SE spec, subclause D.4.2.3.1.1.
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_price_payload_s
{
/** Unique identifier for the commodity provider. */
zb_uint32_t provider_id; /* (M) */
/** Commodity provider-specific information regarding
* the current billing rate.
*/
zb_uint8_t rate_label[13]; /* (M) */
/** Unique identifier generated by the commodity provider
* allows devices to determine which pricing information is newer.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** UTC Time field containing the current time as determined
* by the device.
*/
zb_uint32_t current_time; /* (M) */
/** Field identifying the commodity as well as this base units of measure.
* @see enum zb_zcl_metering_unit_of_measure_e
*/
zb_uint8_t unit_of_measure; /* (M) */
/** Field identifying information concerning the local unit of
* currency used in the price field.
* @see ISO-4217
*/
zb_uint16_t currency; /* (M) */
/** Determines where the decimal point is located in the price field */
zb_bitfield_t price_trailing_digit:4; /* (M) */
/** Indicates the current price tier as chosen by the commodity provider */
zb_bitfield_t price_tier:4; /* (M) */
/** Represents the maximum number of price tiers available. */
zb_bitfield_t number_of_price_tiers:4; /* (M) */
/** Indicates the register tier used with the
* current Price Tier (@ref price_tier).
*/
zb_bitfield_t register_tier:4; /* (M) */
/** Denotes the time at which the signal becomes valid.
* Value 0x00000000 is a special time denoting "now".
*/
zb_uint32_t start_time; /* (M) */
/** Denotes amount of time in minutes after Start Time (@ref start_time)
* during which the price signal is valid.
*/
zb_uint16_t duration_in_minutes; /* (M) */
/** Contains the price of the commodity measured in base unit of
* Currency per Unit of Measure (@ref currency per @ref unit_of_measure)
* with the decimal point located as indicated by
* the Price Trailing Digit field (@ref price_trailing_digit) when
* the commodity is delivered to premises.
*/
zb_uint32_t price; /* (M) */
/* Optional fields. */
/** Gives the ratio of the price denoted in the Price field (@ref price)
* to the "normal" price, chosen by the commodity provider.
*/
zb_uint8_t price_ratio; /* (O) */
/** Contains the price of the commodity measured in base unit of
* Currency per Unit of Measure (@ref currency per @ref unit_of_measure)
* with the decimal point located as indicated by
* the Price Trailing Digit field (@ref price_trailing_digit) when
* the commodity is received from premises.
*/
zb_uint32_t generation_price; /* (O) */
/** Gives the ratio of the price denoted in the Generation Price
* field (@ref price) to the "normal" price,
* chosen by the commodity provider.
*/
zb_uint8_t generation_price_ratio; /* (O) */
/** Provides mechanism to describe an alternative measure of the cost
* of the energy consumed.
*/
zb_uint32_t alternate_cost_delivered; /* (O) */
/** Identifies the unit for Alternate Cost Delivered field
* (@ref alternate_cost_delivered)
*/
zb_uint8_t alternate_cost_unit; /* (O) */
/** Determines where the decimal point is located in
* the alternate cost field.
*/
zb_uint8_t alternate_cost_trailing_digit; /* (O) */
/** Indicates the number of block thresholds available. */
zb_uint8_t number_of_block_thresholds; /* (O) */
/** Identifies additional control options (PriceAcknowledgement policy and
* total number of tier flag).
*/
zb_uint8_t price_control; /* (O) */
/** Specifies the total number of generation tiers applicable in the
* current tariff.
*/
zb_uint8_t number_of_generation_tiers; /* (O) */
/** Specifies the current generation tier. */
zb_uint8_t generation_tier; /* (O) */
/** Indicates a maximum number of tier available.
* @see number_of_generation_tiers
*/
zb_uint8_t extended_number_of_price_tiers; /* (O) */
/** Indicates the current price tier.
* @see price_tier
*/
zb_uint8_t extended_price_tier; /* (O) */
/** Indicates the register tier used with the
* current Price Tier (@ref register_tier).
*/
zb_uint8_t extended_register_tier; /* (O) */
} ZB_PACKED_STRUCT zb_zcl_price_publish_price_payload_t;
/** @def ZB_ZCL_PRICE_PUBLISH_PRICE_PAYLOAD_SIZE_IS_VALID
*/
#define ZB_ZCL_PRICE_PUBLISH_PRICE_PAYLOAD_SIZE_IS_VALID(size) \
(size > (sizeof(zb_zcl_price_publish_price_payload_t) \
- ZB_SIZEOF_FIELD(zb_zcl_price_publish_price_payload_t, rate_label)))
/** @def ZB_ZCL_PRICE_PUBLISH_PRICE_PAYLOAD_EXPECTED_SIZE
* @brief Returns actual size of payload.
* @details PublishPrice packet payload doesn't have fixed length because of 'rate_label'
* field. This macro can be used to check payload size of incoming packet.
*/
#define ZB_ZCL_PRICE_PUBLISH_PRICE_PAYLOAD_EXPECTED_SIZE(pl) \
(sizeof(*(pl)) \
- (ZB_ZCL_STRING_CONST_SIZE((pl)->rate_label) - ZB_ZCL_GET_STRING_LENGTH((pl)->rate_label)))
/** @def ZB_ZCL_PRICE_DEFAULT_PRICE_CONTROL_VALUE
* @brief Controls PriceAck policy for outgoing PublishPrice packets.
* SE devices can enable this field (refer @ref zb_zcl_price_publish_price_payload_t::price_control)
* if they want to receive @ref ZB_ZCL_PRICE_CLI_CMD_PRICE_ACK "PriceAcknowledgement" command as
* response to @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_PRICE "PublishPrice" command, but this behavior
* is valid only for SE version >= 1.1.
* SE 1.2 is used, so this field is set to 1 by default.
*/
#define ZB_ZCL_PRICE_DEFAULT_PRICE_CONTROL_VALUE 0x01
/** @def ZB_ZCL_PRICE_PUBLISH_PRICE_PAYLOAD_INIT
* @brief Macro for initializing @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_PRICE "PublishPrice" Command payload.
* @see @ref zb_zcl_price_publish_price_payload_t
* @par Example
* @code{C}
* zb_zcl_price_publish_price_payload_t pl = ZB_ZCL_PRICE_PUBLISH_PRICE_PAYLOAD_INIT;
* @endcode
*/
#define ZB_ZCL_PRICE_PUBLISH_PRICE_PAYLOAD_INIT \
(zb_zcl_price_publish_price_payload_t) \
{ \
.price_ratio = 0xFF, \
.generation_price = 0xFFFFFFFF, \
.generation_price_ratio = 0xFF, \
.alternate_cost_delivered = 0xFFFFFFFF, \
.alternate_cost_unit = 0xFF, \
.alternate_cost_trailing_digit = 0xFF, \
.number_of_block_thresholds = 0xFF, \
.price_control = ZB_ZCL_PRICE_DEFAULT_PRICE_CONTROL_VALUE, \
.number_of_generation_tiers = 0x00, \
.generation_tier = 0x00, \
.extended_number_of_price_tiers = 0x00, \
.extended_price_tier = 0x00, \
.extended_register_tier = 0x00, \
}
/** @brief @ref ZB_ZCL_PRICE_CLI_CMD_PRICE_ACK "PriceAcknowledgement" Command payload
* @see SE spec, D.4.2.3.4.1
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_ack_payload_s
{
/** Unique identifier for the commodity provider. */
zb_uint32_t provider_id; /* (M) */
/** Unique identifier generated by the commodity provider.
* allows devices to determine which pricing information is newer.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** @e UTCTime field containing the current time as determined
* by the device.
*/
zb_uint32_t current_time; /* (M) */
/** Identifies additional control options (PriceAcknowledgement policy and
* total number of tier flag).
*/
zb_uint8_t price_control; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_ack_payload_t;
/** @cond internals_doc */
/** Check if @ref ZB_ZCL_PRICE_CLI_CMD_PRICE_ACK "PriceAcknowledgement" Command payload is valid
*/
#define ZB_ZCL_PRICE_ACK_PAYLOAD_SIZE_IS_VALID(size) \
((size) >= sizeof(zb_zcl_price_ack_payload_t))
/** @ref zb_zcl_price_ack_payload_t initializer */
#define ZB_ZCL_PRICE_ACK_PAYLOAD_INIT (zb_zcl_price_ack_payload_t) {0}
/** Initialize @ref zb_zcl_price_ack_payload_t from
* @ref zb_zcl_price_publish_price_payload_t values.
*/
#define ZB_ZCL_PRICE_ACK_PAYLOAD_INIT_FROM_PUBLISH_PRICE_PAYLOAD(pl) \
(zb_zcl_price_ack_payload_t) { \
.provider_id = (pl)->provider_id, \
.issuer_event_id = (pl)->issuer_event_id, \
.current_time = zb_get_utc_time(), \
.price_control = (pl)->price_control, \
}
/** @endcond */ /* internals_doc */
/** @brief @ref ZB_ZCL_PRICE_CLI_CMD_GET_CURRENT_PRICE "GetCurrentPrice" Command Payload Format
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_get_current_price_payload_s
{
/** @e CommandOptions field is 8 Bits in length
* @note Zero bit is Requestor Rx On When Idle, others are reserved.
*/
zb_uint8_t command_options;
} ZB_PACKED_STRUCT zb_zcl_price_get_current_price_payload_t;
/** @def ZB_ZCL_PRICE_GET_CURRENT_PRICE_PAYLOAD_INIT
* @brief Macro for initializing @ref ZB_ZCL_PRICE_CLI_CMD_GET_CURRENT_PRICE "GetCurrentPrice" Command payload
*/
#define ZB_ZCL_PRICE_GET_CURRENT_PRICE_PAYLOAD_INIT \
(zb_zcl_price_get_current_price_payload_t) {0}
/** @def ZB_ZCL_PRICE_GET_CURRENT_PRICE_PAYLOAD_SIZE_IS_VALID
* @brief Check if @ref ZB_ZCL_PRICE_CLI_CMD_GET_CURRENT_PRICE "GetCurrentPrice" Command payload is valid
*/
#define ZB_ZCL_PRICE_GET_CURRENT_PRICE_PAYLOAD_SIZE_IS_VALID(size) \
((size) >= sizeof(zb_zcl_price_get_current_price_payload_t))
/** @brief @ref ZB_ZCL_PRICE_CLI_CMD_GET_SCHEDULED_PRICES "GetScheduledPrices" Command Payload Format
* @see SE spec, D.4.2.3.3.1
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_get_scheduled_prices_payload_s
{
/** @e StartTime represents the minimum ending time for any scheduled or
* currently active pricing events to be resent.
* @note Value 0x00000000 will be replaced with the current time stamp.
*/
zb_uint32_t start_time;
/** @e NumberOfEvents represents the maximum number of events to be sent.
* @note Value 0 indicates no maximum limit.
*/
zb_uint8_t number_of_events;
} ZB_PACKED_STRUCT zb_zcl_price_get_scheduled_prices_payload_t;
/** @def ZB_ZCL_PRICE_GET_SCHEDULED_PRICES_PAYLOAD_INIT
* @brief Macro for initializing @ref ZB_ZCL_PRICE_CLI_CMD_GET_SCHEDULED_PRICES "GetScheduledPrices" Command payload
*/
#define ZB_ZCL_PRICE_GET_SCHEDULED_PRICES_PAYLOAD_INIT \
(zb_zcl_price_get_scheduled_prices_payload_t) {0}
/** @def ZB_ZCL_PRICE_GET_SCHEDULED_PRICES_PAYLOAD_SIZE_IS_VALID
* @brief Check if @ref ZB_ZCL_PRICE_CLI_CMD_GET_SCHEDULED_PRICES "GetScheduledPrices" Command payload is valid
*/
#define ZB_ZCL_PRICE_GET_SCHEDULED_PRICES_PAYLOAD_SIZE_IS_VALID(size) \
((size) >= sizeof(zb_zcl_price_get_scheduled_prices_payload_t))
/** @ref ZB_ZCL_PRICE_CLI_CMD_GET_BLOCK_PERIOD "GetBlockPeriod" command payload
* @see SE spec, subclause D.4.2.3.5
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_get_block_period_payload_s
{
/** UTC Timestamp representing the minimum ending time for any scheduled or currently block period
* events to be resent.
*/
zb_uint32_t start_time; /* (M) */
/** An 8-bit Integer which indicates the maximum number of Publish Block Period commands
* that can be sent.
*/
zb_uint8_t number_of_events; /* (M) */
/** An 8-bit bitmap identifying the type of tariff published in this command. The least significant
* nibble represents an enumeration of the tariff type.
* @see SE spec, Table D-108
* @see zb_zcl_price_tariff_type_t
*/
zb_uint8_t tariff_type; /* (O) */
} ZB_PACKED_STRUCT zb_zcl_price_client_get_block_period_payload_t;
/** @ref ZB_ZCL_PRICE_CLI_CMD_GET_CONVERSION_FACTOR "GetConversionFactor" command payload.
* @see SE spec, subclause D.4.2.3.6.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_get_conversion_factor_payload_s
{
/** UTC Timestamp indicating the earliest start time of values to be returned by the corresponding
* @e PublishConversionFactor command.
* */
zb_uint32_t earliest_start_time; /* (M) */
/** A 32-bit integer representing the minimum @e IssuerEventID of values to be returned by the
* corresponding @e PublishCalorificValue command.
*/
zb_uint32_t min_issuer_event_id; /* (M) */
/** An 8-bit integer which represents the maximum number of @e PublishConversionFactor commands that
* the client is willing to receive in response to this command. A value of 0 indicates no maximum
* limit.
*/
zb_uint8_t number_of_commands; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_get_conversion_factor_payload_t;
/** @ref ZB_ZCL_PRICE_CLI_CMD_GET_CALORIFIC_VALUE "GetCalorificValue" command payload
* @see SE spec, subclause D.4.2.3.7
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_client_get_calorific_value_payload_s
{
/** UTC Timestamp indicating the earliest start time of values to be returned by the
* corresponding @e PublishCalorificValue command.
* */
zb_uint32_t earliest_start_time; /* (M) */
/** A 32-bit integer representing the minimum @e IssuerEventID of values to be returned by the
* corresponding @e PublishCalorificValue command.
*/
zb_uint32_t min_issuer_event_id; /* (M) */
/** An 8-bit Integer which represents the maximum number of @e PublishCalorificValue commands that the
* client is willing to receive in response to this command. A value of 0 indicates no maximum limit
*/
zb_uint8_t number_of_commands; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_client_get_calorific_value_payload_t;
/** @ref ZB_ZCL_PRICE_CLI_CMD_GET_TARIFF_INFORMATION "GetTariffInformation" command payload
* @see SE spec, subclause D.4.2.3.8.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_get_tariff_information_payload_s
{
/** UTC Timestamp indicating the earliest start time of tariffs to be returned by the
* corresponding @e PublishTariffInformation command.
*/
zb_uint32_t earliest_start_time; /* (M) */
/** A 32-bit integer representing the minimum @e IssuerEventID of tariffs to be returned by the
* corresponding @e PublishTariffInformation command.
*/
zb_uint32_t min_issuer_event_id; /* (M) */
/** An 8-bit integer which represents the maximum number of @e PublishTariffInformation commands that
* the client is willing to receive in response to this command. A value of 0 would indicate all
* available @e PublishTariffInformation commands shall be returned.
*/
zb_uint8_t number_of_commands; /* (M) */
/** An 8-bit bitmap identifying the type of tariff published in this command. The least significant
* nibble represents an enumeration of the tariff type.
* The most significant nibble is reserved
* @see SE spec, Table D-108
* @see zb_zcl_price_tariff_type_t
*/
zb_uint8_t tariff_type; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_get_tariff_information_payload_t;
/** @ref ZB_ZCL_PRICE_CLI_CMD_GET_PRICE_MATRIX "GetPriceMatrix" command payload
* @see SE spec, subclause D.4.2.3.9
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_get_price_matrix_payload_s
{
/** @e IssuerTariffID indicates the tariff to which the requested Price Matrix belongs. */
zb_uint32_t issuer_tariff_id;
} ZB_PACKED_STRUCT zb_zcl_price_get_price_matrix_payload_t;
/** @ref ZB_ZCL_PRICE_CLI_CMD_GET_BLOCK_THRESHOLDS "GetBlockThresholds" command payload
* @see SE spec, subclause D.4.2.3.10
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_get_block_thresholds_payload_s
{
/** @e IssuerTariffID indicates the tariff to which the requested Block
* Thresholds belong.
*/
zb_uint32_t issuer_tariff_id; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_get_block_thresholds_payload_t;
/** @ref ZB_ZCL_PRICE_CLI_CMD_GET_CO2_VALUE "GetCO2Value" command payload
* @see SE spec, subclause D.4.2.3.11.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_get_co2_value_payload_s
{
/** UTC Timestamp indicating the earliest start time of values to be returned by the corresponding
* @e PublishCO2Value command. The first returned @e PublishCO2Value command shall be the instance
* which is active or becomes active at or after the stated @e EarliestStartTime. If more than one
* instance is requested, the active and scheduled instances shall be sent with ascending ordered
* @e StartTime.
*/
zb_uint32_t earliest_start_time; /* (M) */
/** A 32-bit integer representing the minimum @e IssuerEventID of values to be returned by the
* corresponding @e PublishCO2Value command.
*/
zb_uint32_t min_issuer_event_id; /* (M) */
/** An 8-bit Integer which represents the maximum number of @e PublishCO2Value commands that the
* client is willing to receive in response to this command. A value of 0 would indicate all
* available @e PublishCO2Value commands shall be returned.
*/
zb_uint8_t number_of_commands; /* (M) */
/** An 8-bit bitmap identifying the type of tariff published in this command. The least significant
* nibble represents an enumeration of the tariff type.
* @see SE spec, Table D-108
* @see zb_zcl_price_tariff_type_t
*/
zb_uint8_t tariff_type; /* (O) */
} ZB_PACKED_STRUCT zb_zcl_price_get_co2_value_payload_t;
/** @ref ZB_ZCL_PRICE_CLI_CMD_GET_TIER_LABELS "GetTierLabels" command payload
* @see SE spec, subclause D.4.2.3.12.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_get_tier_labels_payload_s
{
/** Unique identifier generated by the commodity supplier. This is used to
* identify the tariff that the labels apply to.
*/
zb_uint32_t issuer_tariff_id; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_get_tier_labels_payload_t;
#define ZB_ZCL_PRICE_GET_TIER_LABELS_PAYLOAD_SIZE_IS_VALID(size) \
((size) >= sizeof(zb_zcl_price_get_tier_labels_payload_t))
/** @ref ZB_ZCL_PRICE_CLI_CMD_GET_BILLING_PERIOD "GetBillingPeriod" command payload
* @see SE spec, subclause D.4.2.3.13.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_get_billing_period_payload_s
{
/** UTC Timestamp indicating the earliest start time of billing periods to be
* returned by the corresponding @e PublishBillingPeriod command.
*/
zb_uint32_t earliest_start_time; /* (M) */
/** A 32-bit integer representing the minimum @e IssuerEventID of billing
* periods to be returned by the corresponding @e PublishBillingPeriod command.
*/
zb_uint32_t min_issuer_event_id; /* (M) */
/** An 8-bit Integer which indicates the maximum number of @e PublishBillingPeriod commands
* that the client is willing to receive in response to this command.
*/
zb_uint8_t number_of_commands; /* (M) */
/** An 8-bit bitmap identifying the @e TariffType of the requested @e BillingPeriod information.
* The least significant nibble represents an enumeration of the tariff type.
* The most significant nibble is reserved.
* @see SE spec, Table D-108
* @see zb_zcl_price_tariff_type_t
*/
zb_uint8_t tariff_type; /* (O) */
} ZB_PACKED_STRUCT zb_zcl_price_get_billing_period_payload_t;
/** @ref ZB_ZCL_PRICE_CLI_CMD_GET_CONSOLIDATED_BILL "GetConsolidatedBill" command payload
* @see SE spec, subclause D.4.2.3.14.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_get_consolidated_bill_payload_s
{
/** UTC Timestamp indicating the earliest start time of billing information to be
* returned by the corresponding @e PublishConsolidatedBill command.
*/
zb_uint32_t earliest_start_time; /* (M) */
/** A 32-bit integer representing the minimum @e IssuerEventID of billing information
* to be returned by the corresponding @e PublishConsolidatedBill command.
*/
zb_uint32_t min_issuer_event_id; /* (M) */
/** An 8-bit Integer which indicates the maximum number of @e PublishConsolidatedBill
* commands that can be sent. A value of 0 would indicate all available @e PublishConsolidatedBill
* commands shall be returned.
*/
zb_uint8_t number_of_commands; /* (M) */
/** An 8-bit bitmap identifying the @e TariffType of the requested @e BillingPeriod information.
* The least significant nibble represents an enumeration of the tariff type.
* The most significant nibble is reserved.
* @see SE spec, Table D-108
* @see zb_zcl_price_tariff_type_t
*/
zb_uint8_t tariff_type; /* (O) */
} ZB_PACKED_STRUCT zb_zcl_price_get_consolidated_bill_payload_t;
/** @ref ZB_ZCL_PRICE_CLI_CMD_CPP_EVENT_RESPONSE "CPPEventResponse" command payload
* @see SE spec, subclause D.4.2.3.15.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_cpp_event_response_payload_s
{
/** Unique identifier generated by the commodity provider. When new information is provided that
* replaces older information for the same time period, this field allows devices
* to determine which information is newer.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** An 8-bit enumeration identifying the status of the CPP event. This field shall contain the
* 'Accepted' or 'Rejected' values
* @see SE spec, Table D-113
* @see zb_zcl_price_cpp_event_status_t
*/
zb_uint8_t cpp_auth; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_cpp_event_response_payload_t;
/** @ref ZB_ZCL_PRICE_CLI_CMD_GET_CREDIT_PAYMENT "GetCreditPayment" command payload
* @see SE spec, subclause D.4.2.3.16.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_get_credit_payment_payload_s
{
/** UTC timestamp indicating the latest @e CreditPaymentDate of records to be returned
* by the corresponding @e PublishCreditPayment commands. The first returned
* @e PublishCreditPayment command shall be the most recent record with its
* @e CreditPaymentDate equal to or older than the @e LatestEndTime provided.
*/
zb_uint32_t latest_end_time; /* (M) */
/** An 8-bit integer that represents the maximum number of @e PublishCreditPayment
* commands that the client is willing to receive in response to this command.
*/
zb_uint8_t number_of_commands; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_get_credit_payment_payload_t;
/** Block Period Control Field BitMap
* @see SE spec, Table D-104
* @see zb_zcl_price_publish_block_period_payload_s::block_period_control
*/
typedef enum zb_zcl_price_block_period_control_field_bitmap_e
{
ZB_ZCL_PRICE_CONTROL_PRICE_ACKNOWLEDGEMENT_REQUIRED = 1 << 0, /**< 1=Price Acknowledgement required,@n
* 0=Price Acknowledgement not required
*/
ZB_ZCL_PRICE_CONTROL_REPEATING_BLOCK = 1 << 1, /**< 1=Repeating Block, @n
* 0=Non Repeating Block
*/
} zb_zcl_price_block_period_control_field_t;
/** @brief Block Period Duration Control Enumeration
* @see SE spec, Table D-106
*/
typedef enum zb_zcl_price_block_period_duration_control_e
{
ZB_ZCL_PRICE_DURATION_START_OF_TIMEBASE = 0x00, /**< Start of Timebase */
ZB_ZCL_PRICE_DURATION_END_OF_TIMEBASE, /**< End of Timebase */
ZB_ZCL_PRICE_DURATION_NOT_SPECIFIED /**< Not Specified */
} zb_zcl_price_block_period_duration_control_t;
/** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_BLOCK_PERIOD "PublishBlockPeriod" command payload
* @see SE spec, subclause D.4.2.4.2.1
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_block_period_payload_s
{
/** An unsigned 32-bit field containing a unique identifier for the commodity provider.
* This field allows differentiation in deregulated markets where multiple
* commodity providers may be available.
*/
zb_uint32_t provider_id; /* (M) */
/** Unique identifier generated by the commodity provider. When new block period
* information is provided that replaces older information for the same period,
* this field allows devices to determine which information is newer.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** A @e UTCTime field to denote the time at which the block tariff period starts.
*/
zb_uint32_t block_period_start_time; /* (M) */
/** An unsigned 24-bit field to denote the block tariff period .
*/
zb_uint24_t block_period_duration; /* (M) */
/** Identifies additional control options for the block period event. A value of
* 0x00 indicates field not used.
*/
zb_uint8_t block_period_control;
/** An 8-bit bitmap where the least significant nibble is an enumerated sub-field
* indicating the time base used for the duration, and the most significant nibble
* is an enumerated sub-field providing duration control.
* @see zb_zcl_price_block_period_duration_type_e
*/
zb_uint8_t block_period_duration_type; /* (M) */
/** An 8-bit bitmap identifying the type of tariff published in this command.
* The least significant nibble represents an enumeration of the tariff type.
* @see SE spec, Table D-108
* @see zb_zcl_price_tariff_type_t
*/
zb_uint8_t tariff_type; /* (M) */
/** An 8-bit enumeration identifying the resolution period for the block tariff.
* @see SE spec, Table D-107
* @see zb_zcl_price_tariff_resolution_period_t
*/
zb_uint8_t tariff_resolution_period; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_publish_block_period_payload_t;
/** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CONVERSION_FACTOR "PublishConversionFactor" command payload
* @see SE spec, subclause D.4.2.4.3.1
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_conversion_factor_payload_s
{
/** Unique identifier generated by the commodity provider.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** A @e UTCTime field to denote the time at which the value becomes valid.
* The value remains valid until replaced by a newer one.
*/
zb_uint32_t start_time; /* (M) */
/** @see SE spec, subclause D.4.2.2.4.3 */
zb_uint32_t conversion_factor; /* (M) */
/** @see SE spec, subclause D.4.2.2.4.4 */
zb_uint8_t conversion_factor_trailing_digit; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_publish_conversion_factor_payload_t;
/** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CALORIFIC_VALUE "PublishCalorificValue" command payload
* @see SE spec, subclause D.4.2.4.4.
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_calorific_value_payload_s
{
/** Unique identifier generated by the commodity provider.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** A @e UTCTime field to denote the time at which the value becomes valid.
* The value remains valid until replaced by a newer one.
*/
zb_uint32_t start_time; /* (M) */
/** @see sub-clause D.4.2.2.4.5
*/
zb_uint32_t calorific_value; /* (M) */
/** @see sub-clause D.4.2.2.4.6
*/
zb_uint8_t calorific_value_unit; /* (M) */
/** @see sub-clause D.4.2.2.4.7
*/
zb_uint8_t calorific_value_trailing_digit; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_publish_calorific_value_payload_t;
/** Tariff Type Enumeration
* @see SE spec, Table D-108
*/
typedef enum zb_zcl_price_tariff_type_e
{
ZB_ZCL_PRICE_TARIFF_TYPE_DELIVERED = 0x00, /**< Delivered Tariff */
ZB_ZCL_PRICE_TARIFF_TYPE_RECEIVED, /**< Received Tariff */
ZB_ZCL_PRICE_TARIFF_TYPE_DELIVERED_AND_RECEIVED, /**< Delivered and Received Tariff */
} zb_zcl_price_tariff_type_t;
/** Tariff Charging Scheme Enumeration
* @see SE spec, Table D-109
*/
typedef enum zb_zcl_price_tariff_charging_scheme_e
{
ZB_ZCL_PRICE_TOU_TARIFF = 0x00, /**< TOU Tariff */
ZB_ZCL_PRICE_BLOCK_TARIFF, /**< Block Tariff */
ZB_ZCL_PRICE_BLOCK_TOU_TARIFF_COMMON, /**< Block/TOU Tariff with common thresholds */
ZB_ZCL_PRICE_BLOCK_TOU_TARIFF_INDIVIDUAL, /**< Block/TOU Tariff with individual thresholds per tier */
} zb_zcl_price_tariff_charging_scheme_t;
/** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_TARIFF_INFORMATION "PublishTariffInformation" command payload
* @see SE spec, subclause D.4.2.4.5.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_tariff_information_payload_s
{
/** A unique identifier for the commodity supplier. */
zb_uint32_t provider_id; /* (M) */
/** Unique identifier generated by the commodity provider. When new information
* is provided that replaces older information for the same time period, this field
* allows devices to determine which information is newer.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** Unique identifier generated by the commodity supplier.
*/
zb_uint32_t issuer_tariff_id; /* (M) */
/** A UTC Time field to denote the time at which the price signal becomes valid.
*/
zb_uint32_t start_time; /* (M) */
/** An 8-bit bitmap identifying the type of tariff published in this command.
* The least significant nibble represents an enumeration of the tariff type,
* the most significant nibble represents an enumeration specifying the charging
* scheme.
* @see SE spec, Table D-108 and Table D-109
* @see zb_zcl_price_tariff_type_t
* @see zb_zcl_price_tariff_charging_scheme_e
*/
zb_uint8_t tariff_type_charging_scheme; /* (M) */
/** The format and use of this field is the same as for the @e TariffLabel attribute
* or @e ReceivedTariffLabel attribute
*/
zb_uint8_t tariff_label[25]; /* (M) */
/** The format and use of this field is the same as for the @e NumberOfPriceTiersInUse
* attribute or @e ReceivedNumberOfPriceTiersInUse attribute
*/
zb_uint8_t number_of_price_tiers_in_use; /* (M) */
/** The format and use of this field is the same as for the @e NumberOfBlockThresholdsInUse
* attribute or @e ReceivedNumberOfBlockThresholdsInUse attribute
*/
zb_uint8_t number_of_block_thresholds_in_use; /* (M) */
/** The format and use of this field is the same as for the @e UnitOfMeasure attribute
*/
zb_uint8_t unit_of_measure; /* (M) */
/** The format and use of this field is the same as for the @e Currencyattribute
*/
zb_uint16_t currency; /* (M) */
/** The format and use of this field is the same as for the @e PriceTrailingDigit
* attribute
*/
zb_uint8_t price_trailing_digit; /* (M) */
/** The format and use of this field is the same as for the @e StandingCharge
* attribute. A value of 0xFFFFFFFF indicates the field is not used
*/
zb_uint32_t standing_charge; /* (M) */
/** The format and use of this field is the same as for the @e TierBlockMode
* attribute or @e ReceivedTierBlockMode attribute
*/
zb_uint8_t tier_block_mode; /* (M) */
/** @e BlockThresholdMultiplier provides a value to be multiplied against Threshold
* parameter(s). If present, this attribute must be applied to all @e BlockThreshold
* values to derive values that can be compared against the @e CurrentBlockPeriodConsumptionDelivered
* attribute within the Metering cluster. This parameter must be used in conjunction
* with the @e BlockThresholdDivisor parameter(s).
*/
zb_uint24_t block_threshold_multiplier; /* (M) */
/** @e BlockThresholdDivisor provides a value to divide the result of applying the
* @e ThresholdMultiplier attribute to @e BlockThreshold values to derive values that
* can be compared against the @e CurrentBlockPeriodConsumptionDelivered attribute
* within the Metering cluster. This attribute must be used in conjunction with
* the @e BlockThresholdMultiplier parameter(s). In case no divisor is defined,
* this field shall be set to 1.
*/
zb_uint24_t block_threshold_devisor; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_publish_tariff_information_payload_t;
/** PublishPriceMatrix and PublishBlockThresholds Sub-Payload Control Bitmap
* @see SE spec, Table D-110
* @see SE spec, Table D-111
* @see zb_zcl_price_publish_matrix_type_e
* @see zb_zcl_price_publish_block_thresholds_type_e
*/
enum zb_zcl_price_sub_payload_control_bitmap_e
{
ZB_ZCL_PRICE_SUB_PAYLOAD_TYPE = 0, /**< 0-bit of bitfield */
};
/** PublishPriceMatrix Sub-Payload Control values.
* @see SE spec, Table D-110
* @see zb_zcl_price_sub_payload_control_bitmap_e
*/
typedef enum zb_zcl_price_publish_matrix_type_e
{
ZB_ZCL_PRICE_BLOCK_TOU_BASED_INFORMATION = 0x00, /**< The information stored in the
* sub payload is Block only or Block/TOU based
*/
ZB_ZCL_PRICE_TOU_BASED_INFORMATION = 0x01, /**< The information stored in the sub
* payload is TOU based.
*/
} zb_zcl_price_publish_matrix_type_t;
/** PriceMatrix Sub-Payload
* @see SE spec, subclause D.4.2.4.6.2.1
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_price_matrix_sub_payload_s
{
/** The @e Tier/Block ID specifies the TOU Tier or the TOU Tier and Block that
* the subsequent @e Price field in the command applies to
*/
zb_uint8_t tier_block_id; /* (M) */
/** This field holds the price information for the Block/TOU or TOU identified
* by the previous @e Tier/Block @e ID field.
*/
zb_uint32_t price; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_price_matrix_sub_payload_t;
/** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_PRICE_MATRIX "PublishPriceMatrix" command payload
* @see SE spec, subclause D.4.2.4.6.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_price_matrix_payload_s
{
/** A unique identifier for the commodity supplier. */
zb_uint32_t provider_id; /* (M) */
/** Unique identifier generated by the commodity provider. When new information
* is provided that replaces older information for the same time period, this field
* allows devices to determine which information is newer.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** A @e UTCTime field to denote the time at which the price signal becomes valid.
*/
zb_uint32_t start_time; /* (M) */
/** Unique identifier generated by the commodity supplier. This must match the
* @e IssuerTariffID sent in the related @e PublishTariffInformation command.
*/
zb_uint32_t issuer_tariff_id; /* (M) */
/** The @e CommandIndex is used to count the payload fragments in the case that
* an entire payload does not fit into one message. The @e CommandIndex starts
* at 0 and is incremented for each fragment belonging to the same command.
*/
zb_uint8_t command_index; /* (M) */
/** In the case that an entire payload does not fit into one message, the
* @e TotalNumberOfCommands field indicates the total number of sub-commands
* in the message.
*/
zb_uint8_t total_number_of_commands; /* (M) */
/** An 8-bit bitmap, the least significant bit of which specifies the information
* type stored in the sub payload. The remaining bits are reserved.
*/
zb_uint8_t sub_payload_control; /* (M) */
/** @see zb_zcl_price_price_matrix_sub_payload_s
*/
zb_zcl_price_price_matrix_sub_payload_t *price_matrix_sub_payload; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_publish_price_matrix_payload_t;
/** PublishBlockThresholds Sub-Payload Control values
* @see SE spec, Table D-111
* @see zb_zcl_price_sub_payload_control_bitmap_e
*/
typedef enum zb_zcl_price_publish_block_thresholds_type_e
{
ZB_ZCL_PRICE_SPECIFIC_TOU_TIER = 0x00, /**< Block Thresholds supplied
* apply to a specific TOU tier
*/
ZB_ZCL_PRICE_ALL_TOU_TIER = 0X01, /**< Block Thresholds supplied apply to
* all TOU tiers or when Block Only charging
* is in operation
*/
} zb_zcl_price_publish_block_thresholds_type_t;
/** BlockThreshold Sub-Payload Format
* @see SE spec, subclause D.4.2.4.7.2.1
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_block_threshold_sub_payload_s
{
/** The Tier/NumberOfBlockThresholds field is an 8 bitmap. The format of the
* bitmap is decided by bit0 of the sub-payload control field.
* @n If Bit0 of the Sub-Payload Control field is 0, then the least significant
* nibble represents a value specifying the number of thresholds to follow in
* the command. The most significant nibble represents the Tier that the subsequent
* block threshold values apply to.
* @n If Bit0 of the Sub-Payload Control field is 1, then the most significant
* nibble is unused and should be set to 0.
* @n Valid values for the NumberOfBlockThresholds sub-field are 0 to 15
* reflecting no block in use (0) to block 15(15).
* Valid values for the Tiers sub-field are from 0 to 15 reflecting no tier to tier
* fifteen.
*/
zb_uint8_t tier_number_of_block_thresholds;
/** The Block Thresholds represent the threshold values applicable to an
* individual block period and, where applicable, to a particular tier.
*/
zb_uint48_t block_threshold[15];
} ZB_PACKED_STRUCT zb_zcl_price_block_threshold_sub_payload_t;
/** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_BLOCK_THRESHOLDS "PublishBlockThresholds" command payload
* @see SE spec, subclause D.4.2.4.7.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_block_thresholds_payload_s
{
/** An unsigned 32-bit field containing a unique identifier for the commodity
* provider.
*/
zb_uint32_t provider_id; /* (M) */
/** Unique identifier generated by the commodity provider. When new information
* is provided that replaces older information for the same time period, this
* field allows devices to determine which information is newer.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** A @e UTCTime field to denote the time at which the price signal becomes valid.
*/
zb_uint32_t start_time; /* (M) */
/** Unique identifier generated by the commodity supplier. This must match the
* @e IssuerTariffID sent in the related @e PublishTariffInformation command.
*/
zb_uint32_t issuer_tariff_id; /* (M) */
/** The @e CommandIndex is used to count the payload fragments in the case where
* the entire payload does not fit into one message. The @e CommandIndex starts
* at 0 and is incremented for each fragment belonging to the same command.
*/
zb_uint8_t command_index; /* (M) */
/** In the case where the entire payload does not fit into one message, the
* @e TotalNumberOfCommands field indicates the total number of sub-commands
* in the message.
*/
zb_uint8_t total_number_of_commands; /* (M) */
/** The Sub-Payload Control bitmap specifies the usage of the information contained
* within the Block Threshold Sub-Payload.
* @see zb_zcl_price_publish_block_thresholds_sub_payload_control_bitmap_e
*/
zb_uint8_t sub_payload_control; /* (M) */
/** The BlockThreshold Sub-Payload consists of multiple sets of data which
* consist of a @e TierID, @e BlockThresholdCount and the threshold values
* associated with the stated Tier.
* @see zb_zcl_price_block_threshold_sub_payload_t
*/
zb_zcl_price_block_threshold_sub_payload_t *block_threshold_sub_payload; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_publish_block_thresholds_payload_t;
/** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CO2_VALUE "PublishCO2Value" command payload
* @see SE spec, subclause D.4.2.4.8.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_co2_value_payload_s
{
/** An unsigned 32-bit field containing a unique identifier for the commodity
* provider.
*/
zb_uint32_t provider_id; /* (M) */
/** Unique identifier generated by the commodity provider. When new information
* is provided that replaces older information for the same time period, this field
* allows devices to determine which information is newer.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** A @e UTCTime field to denote the time at which the @e CO2 value becomes valid.
*/
zb_uint32_t start_time; /* (M) */
/** An 8-bit bitmap identifying the type of tariff published in this command.
* The least significant nibble represents an enumeration of the tariff type.
* The most significant nibble is reserved.
* @see zb_zcl_price_tariff_type_t
*/
zb_uint8_t tariff_type; /* (M) */
/** The format and use of this field is the same as for the @e CO2 attribute or
* @e ReceivedCO2 attribute . A value of 0xFFFFFFFF indicates field not used.
*/
zb_uint32_t co2_value; /* (M) */
/** The format and use of this field is the same as for the @e CO2Unit attribute
* or @e ReceivedCO2Unit attribute. A value of 0xFF indicates field not used.
*/
zb_uint8_t co2_value_unit; /* (M) */
/** The format and use of this field is the same as for the @e CO2TrailingDigit
* attribute or @e ReceivedCO2TrailingDigit attribute.
* A value of 0xFF indicates field not used.
*/
zb_uint8_t co2_value_trailing_digit; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_publish_co2_value_payload_t;
/** @see SE spec, subclause D.4.2.4.9.2
* @see zb_zcl_price_publish_tier_labels_payload_t::tier_labels
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_tier_labels_sub_payload_s
{
/** The tier number that the associated @e TierLabel applies to. */
zb_uint8_t tier_id; /* (M) */
/** Octet String field capable of storing a 12 character string (the first
* character indicates the string length, represented in hexadecimal format)
* encoded in the UTF-8 format.
*/
zb_uint8_t tier_label[13]; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_publish_tier_labels_sub_payload_t;
/** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_TIER_LABELS "PublishTierLabels" command payload
* @see SE spec, subclause D.4.2.4.9.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_tier_labels_payload_s
{
/** An unsigned 32-bit field containing a unique identifier for the commodity
* provider.
*/
zb_uint32_t provider_id; /* (M) */
/** Unique identifier generated by the commodity provider. When new information
* is provided that replaces older information for the same time period, this field
* allows devices to determine which information is newer.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** Unique identifier generated by the commodity supplier. This is used to
* identify the tariff that the labels apply to.
*/
zb_uint32_t issuer_tariff_id; /* (M) */
/** The @e CommandIndex is used to count the payload fragments in the case where
* the entire payload does not fit into one message. The @e CommandIndex starts
* at 0 and is incremented for each fragment belonging to the same command.
*/
zb_uint8_t command_index; /* (M) */
/** In the case where the entire payload does not fit into one message, the
* @e TotalNumberOfCommands field indicates the total number of sub-commands
* in the message.
*/
zb_uint8_t total_number_of_commands; /* (M) */
/** The number of @e TierID/Tier Label sets contained within the command.
*/
zb_uint8_t number_of_labels; /* (M) */
/** @see zb_zcl_price_publish_tier_labels_sub_payload_t */
zb_zcl_price_publish_tier_labels_sub_payload_t *tier_labels;
} ZB_PACKED_STRUCT zb_zcl_price_publish_tier_labels_payload_t;
/** Check if @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_TIER_LABELS "PublishTierLabels" command payload size is valid
* @param size - size of received data payload
*/
#define ZB_ZCL_PRICE_PUBLISH_TIER_LABELS_PAYLOAD_SIZE_IS_VALID(size) \
((size >= (sizeof(zb_zcl_price_publish_tier_labels_payload_t)-sizeof(void *)) ? ZB_TRUE : ZB_FALSE))
/** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_BILLING_PERIOD "PublishBillingPeriod" command payload
* @see SE spec, D.4.2.4.10
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_billing_period_payload_s
{
/** An unsigned 32-bit field containing a unique identifier for the commodity
* provider.
*/
zb_uint32_t provider_id; /* (M) */
/** Unique identifier generated by the commodity provider. When new information is
* provided that replaces older information for the same time period, this field
* allows devices to determine which information is newer.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** A @e UTCTime field to denote the time at which the billing period starts.
*/
zb_uint32_t billing_period_start_time; /* (M) */
/** An unsigned 24-bit field to denote the billing period duration. The
* duration units are defined by the @e BillingPeriodDurationType field.
*/
zb_uint24_t billing_period_duration; /* (M) */
/** An 8-bit bitmap where the least significant nibble is an enumerated
* sub-field indicating the time base used for the duration, and the most
* significant nibble is an enumerated sub-field providing duration control.
* @see zb_zcl_price_block_period_duration_type_t
* @see zb_zcl_price_block_period_duration_control_t
*/
zb_uint8_t billing_period_duration_type; /* (M) */
/** An 8-bit bitmap identifying the type of tariff published in this command.
* The least significant nibble represents an enumeration of the tariff type.
* The most significant nibble is reserved.
* @see zb_zcl_price_block_period_duration_control_t
*/
zb_uint8_t tariff_type; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_publish_billing_period_payload_t;
/** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CONSOLIDATED_BILL "PublishConsolidatedBill" command payload
* @see SE spec, subclause D.4.2.4.11.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_consolidated_bill_payload_s
{
/** An unsigned 32-bit field containing a unique identifier for the commodity
* provider.
*/
zb_uint32_t provider_id; /* (M) */
/** Unique identifier generated by the commodity provider. When new information
* is provided that replaces older information for the same time period, this field
* allows devices to determine which information is newer.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** A @e UTCTime field containing the start time of the related billing period.
*/
zb_uint32_t billing_period_start_time; /* (M) */
/** An unsigned 24-bit field denoting the duration of the related billing period.
*/
zb_uint24_t billing_period_duration; /* (M) */
/** An 8-bit bitmap where the least significant nibble is an enumerated sub-field
* indicating the time base used for the duration, and the most significant nibble
* is an enumerated sub-field providing duration control.
* @see SE spec, Table D-105, Table D-106
*/
zb_uint8_t billing_period_duration_type; /* (M) */
/** An 8-bit bitmap identifying the type of tariff published in this command.
* The least significant nibble represents an enumeration of the tariff type.
* The most significant nibble is reserved.
* @see zb_zcl_price_tariff_type_t
*/
zb_uint8_t tariff_type; /* (M) */
/** An unsigned 32-bit field containing the consolidated bill value for the
* stated billing period.
*/
zb_uint32_t consolidated_bill; /* (M) */
/** An unsigned 16-bit field containing identifying information concerning the
* local unit of currency used in the @e ConsolidatedBill field.
*/
zb_uint16_t currency; /* (M) */
/** An 8-bit field used to determine where the decimal point is located in the
* @e ConsolidatedBill field.
*/
zb_uint8_t bill_trailing_digit; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_publish_consolidated_bill_payload_t;
/** CPP Auth Enumeration
* @see SE spec, Table D-112
*/
typedef enum zb_zcl_price_cpp_price_tier_e
{
ZB_ZCL_PRICE_CPP_PRICE_TIER_CPP1 = 0, /**< CPP1 */
ZB_ZCL_PRICE_CPP_PRICE_TIER_CPP2 = 1, /**< CPP2 */
} zb_zcl_price_cpp_price_tier_t;
/** CPP Auth Enumeration
* @see SE spec, Table D-113
*/
typedef enum zb_zcl_price_cpp_event_status_e
{
ZB_ZCL_PRICE_CPP_EVENT_STATUS_PENDING = 0, /**< Pending */
ZB_ZCL_PRICE_CPP_EVENT_STATUS_ACCEPTED, /**< Accepted */
ZB_ZCL_PRICE_CPP_EVENT_STATUS_REJECTED, /**< Rejected */
ZB_ZCL_PRICE_CPP_EVENT_STATUS_FORCED, /**< Forced */
} zb_zcl_price_cpp_event_status_t;
/** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CPP_EVENT "PublishCPPEvent" command payload
* @see SE spec, subclause D.4.2.4.12.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_cpp_event_payload_s
{
/** An unsigned 32-bit field containing a unique identifier for the commodity
* provider.
*/
zb_uint32_t provider_id; /* (M) */
/** Unique identifier generated by the commodity provider. When new information
* is provided that replaces older information for the same time period, this field
* allows devices to determine which information is newer.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** A @e UTCTime field to denote the time at which the CPP event begins. A start
* date/time of 0x00000000 shall indicate that the command should be executed
* immediately.
*/
zb_uint32_t start_time; /* (M) */
/** Defines the duration of the CPP event.
*/
zb_uint16_t duration_in_minutes; /* (M) */
/** An 8-bit bitmap identifying the type of tariff published in this command.
* The least significant nibble represents an enumeration of the tariff type.
* The most significant nibble is reserved.
* @see zb_zcl_price_tariff_type_t
*/
zb_uint8_t tariff_type; /* (M) */
/** An 8-bit enumeration identifying the price tier associated with this CPP event.
* The price(s) contained in the active price matrix for that price tier will override
* the normal pricing scheme.
* @see zb_zcl_price_cpp_price_tier_t
*/
zb_uint8_t cpp_price_tier; /* (M) */
/** An 8-bit enumeration identifying the status of the CPP event.
* @see zb_zcl_price_cpp_event_status_t
*/
zb_uint8_t cpp_auth; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_publish_cpp_event_payload_t;
/** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CREDIT_PAYMENT "PublishCreditPayment" command payload.
* @see SE spec, subclause D.4.2.4.13.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_credit_payment_payload_s
{
/** An unsigned 32-bit field containing a unique identifier for the commodity
* provider.
*/
zb_uint32_t provider_id; /* (M) */
/** Unique identifier generated by the commodity provider. When new information
* is provided that replaces older information for the same time period, this field
* allows devices to determine which information is newer.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** A @e UTCTime field containing the time that the next credit payment is due. */
zb_uint32_t credit_payment_due_date; /* (M) */
/** An unsigned 32-bit field denoting the current amount this is overdue from
* the consumer. This field should be provided in the same currency as used in
* the Price cluster.
*/
zb_uint32_t credit_payment_overdue_amount; /* (M) */
/** An 8-bit enumeration identifying the current credit payment status.
*/
zb_uint8_t credit_payment_status; /* (M) */
/** An unsigned 32-bit field denoting the last credit payment. This field should
* be provided in the same currency as used in the Price cluster.
*/
zb_uint32_t credit_payment; /* (M) */
/** A @e UTCTime field containing the time at which the last credit payment
* was made.
*/
zb_uint32_t credit_payment_date; /* (M) */
/** An string of between 0-20 octets used to denote the last credit payment
* reference used by the energy supplier.
*/
zb_uint8_t credit_payment_ref[21]; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_publish_credit_payment_payload_t;
/** Currency Change Control Enumeration
* @see SE spec, Table D-114
*/
typedef enum zb_zcl_price_currency_change_control_e
{
ZB_ZCL_PRICE_CLEAR_BILLING_INFORMATION = 1 << 0, /**< 1 = Clear Billing Information
* @n 0 = Do Not Clear Billing Information
*/
ZB_ZCL_PRICE_CONVERT_BILLING_INFORMATION = 1 << 1, /**< 1 = Convert Billing Information using the New Currency
* @n 0 = Do Not Convert Billing Information
*/
ZB_ZCL_PRICE_CLEAR_OLD_CONSUMPTION_DATA = 1 << 2, /**< 1 = Clear Old Consumption Data
* @n 0 = Do Not Clear Old Consumption Data
*/
ZB_ZCL_PRICE_CONVERT_OLD_CONSUMPTION_DATA = 1 << 3, /**< 1 = Convert Old Consumption Data using the New Currency
* @n 0 = Do Not Convert Old Consumption Data
*/
} zb_zcl_price_currency_cghange_control_t;
/** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CURRENCY_CONVERSION "PublishCurrencyConversion" command payload.
* @see SE spec, subclause D.4.2.4.14.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_publish_currency_conversion_payload_s
{
/** An unsigned 32-bit field containing a unique identifier for the commodity
* provider.
*/
zb_uint32_t provider_id; /* (M) */
/** Unique identifier generated by the commodity provider. When new information
* is provided that replaces older information for the same time period, this
* field allows devices to determine which information is newer.
*/
zb_uint32_t issuer_event_id; /* (M) */
/** A @e UTCTime field to denote the time at which the new currency becomes valid.
*/
zb_uint32_t start_time; /* (M) */
/** An unsigned 16-bit field containing identifying information concerning the
* old local unit of currency used in the Price cluster.
*/
zb_uint16_t old_currency; /* (M) */
/** An unsigned 16-bit field containing identifying information concerning the
* new local unit of currency used in the Price cluster. The value of the @e NewCurrency
* field should match the values defined by ISO 4217.
*/
zb_uint16_t new_currency; /* (M) */
/** The format and use of this field is the same as for the @e ConversionFactor
* attribute as defined in D.4.2.2.4.3.
*/
zb_uint32_t conversion_factor; /* (M) */
/** The format and use of this field is the same as for the
* @e ConversionFactorTrailingDigit attribute as defined in D.4.2.2.4.4.
*/
zb_uint8_t conversion_factor_trailing_digit; /* (M) */
/** A 32-bit mask that denotes the functions that are required to be carried
* out on processing of this command.
*/
zb_uint32_t currency_change_control_flags; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_publish_currency_conversion_payload_t;
/** @ref ZB_ZCL_PRICE_SRV_CMD_CANCEL_TARIFF "CancelTariff" command payload
* @see SE spec, subclause D.4.2.4.15.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_price_cancel_tariff_payload_s
{
/** An unsigned 32-bit field containing a unique identifier for the commodity
* provider.
*/
zb_uint32_t provider_id; /* (M) */
/** Unique identifier generated by the commodity Supplier. All parts of a tariff
* instance shall have the same @e IssuerTariffID.
*/
zb_uint32_t issuer_tariff_id; /* (M) */
/** An 8-bit bitmap identifying the type of tariff to be cancelled by this command.
* The least significant nibble represents an enumeration of the tariff type.
* The most significant nibble is reserved.
* @see SE spec, Table D-108
* @see zb_zcl_price_tariff_type_t
*/
zb_uint8_t tariff_type; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_price_cancel_tariff_payload_t;
/** @cond internals_doc */
/** @def ZB_ZCL_PRICE_GET_REQUESTOR_RX_ON_WHEN_IDLE
* @brief Macro for getting Requestor RX on When Idle state.
* @param x - zb_zcl_price_get_current_price_payload_t value.
*/
#define ZB_ZCL_PRICE_GET_REQUESTOR_RX_ON_WHEN_IDLE(x) ZB_CHECK_BIT_IN_BIT_VECTOR(x, 0)
/** @def ZB_ZCL_PRICE_SET_REQUESTOR_RX_ON_WHEN_IDLE
* @brief Macro for setting Requestor RX on When Idle state.
* @param x - zb_zcl_price_get_current_price_payload_t value.
*/
#define ZB_ZCL_PRICE_SET_REQUESTOR_RX_ON_WHEN_IDLE(x) ZB_SET_BIT_IN_BIT_VECTOR(x, 0)
/** @endcond */ /* internals_doc */
/** @def ZB_ZCL_PRICE_SEND_CMD_GET_CURRENT_PRICE
* @brief Macro for sending @ref ZB_ZCL_PRICE_CLI_CMD_GET_CURRENT_PRICE "GetCurrentPrice" command.
* @param _param - Reference to buffer.
* @param _dst_addr - Address of the device to send command to.
* @param _dst_addr_mode - Address mode for _dst_addr.
* @param _dst_ep - Destination endpoint.
* @param _src_ep - Current endpoint.
* @param _rx_on_when_idle - Helps to determine publishing
* policy for the server, (see SE spec, subclause D.4.2.3.2.1.1)
*/
#define ZB_ZCL_PRICE_SEND_CMD_GET_CURRENT_PRICE( \
_param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _rx_on_when_idle) \
zb_zcl_price_send_cmd_get_current_price( \
_param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _rx_on_when_idle, NULL)
/** @def ZB_ZCL_PRICE_SEND_CMD_GET_SCHEDULED_PRICES
* @brief Macro for sending @ref ZB_ZCL_PRICE_CLI_CMD_GET_SCHEDULED_PRICES "GetScheduledPrices" command.
* @param _param - Reference to buffer.
* @param _dst_addr - Address of the device to send command to.
* @param _dst_addr_mode - Address mode for _dst_addr.
* @param _dst_ep - Destination endpoint.
* @param _src_ep - Current endpoint.
* @param _payload - Packet payload (@ref
* zb_zcl_price_get_scheduled_prices_payload_t).
*/
#define ZB_ZCL_PRICE_SEND_CMD_GET_SCHEDULED_PRICES( \
_param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload) \
zb_zcl_price_send_cmd_get_scheduled_prices( \
_param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, NULL)
/** @def ZB_ZCL_PRICE_SEND_CMD_PUBLISH_PRICE
* @brief Macro for sending @ref ZB_ZCL_PRICE_SEND_CMD_PUBLISH_PRICE "PublishPrice" command.
* @param _param - Reference to buffer.
* @param _dst_addr - Address of the device to send command to.
* @param _dst_addr_mode - Address mode for _dst_addr.
* @param _dst_ep - Destination endpoint.
* @param _src_ep - Current endpoint.
* @param _payload - Packet payload (@ref zb_zcl_price_publish_price_payload_t).
*/
#define ZB_ZCL_PRICE_SEND_CMD_PUBLISH_PRICE( \
_param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload) \
zb_zcl_price_send_cmd_publish_price( \
_param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, NULL)
/** @def ZB_ZCL_PRICE_SEND_CMD_GET_TIER_LABELS
* @brief Macro for sending @ref ZB_ZCL_PRICE_CLI_CMD_GET_TIER_LABELS "GetTierLabels" command.
* @param _param - Reference to buffer.
* @param _dst_addr - Address of the device to send command to.
* @param _dst_addr_mode - Address mode for _dst_addr.
* @param _dst_ep - Destination endpoint.
* @param _src_ep - Current endpoint.
* @param _payload - Packet payload (ref to @ref zb_zcl_price_get_tier_labels_payload_t).
*/
#define ZB_ZCL_PRICE_SEND_CMD_GET_TIER_LABELS(_param, _dst_addr, _dst_addr_mode, \
_dst_ep, _src_ep, _payload) \
zb_zcl_price_send_cmd_get_tier_labels(_param, _dst_addr, _dst_addr_mode, \
_dst_ep, _src_ep, _payload, NULL)
/** @def ZB_ZCL_PRICE_SEND_CMD_PUBLISH_TIER_LABELS
* @brief Macro for sending @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_TIER_LABELS "PublishTierLabels" command.
* @param _param - Reference to buffer.
* @param _dst_addr - Address of the device to send command to.
* @param _dst_addr_mode - Address mode for _dst_addr.
* @param _dst_ep - Destination endpoint.
* @param _src_ep - Current endpoint.
* @param _payload - Packet payload (ref to @ref zb_zcl_price_publish_tier_labels_payload_t).
*/
#define ZB_ZCL_PRICE_SEND_CMD_PUBLISH_TIER_LABELS(_param, _dst_addr, _dst_addr_mode, \
_dst_ep, _src_ep, _payload) \
zb_zcl_price_send_cmd_publish_tier_labels(_param, _dst_addr, _dst_addr_mode, \
_dst_ep, _src_ep, _payload, NULL)
/** @cond internals_doc */
/** @def ZB_ZCL_PRICE_SEND_CMD_PRICE_ACK
* @brief Macro for sending @ref ZB_ZCL_PRICE_CLI_CMD_PRICE_ACK "PriceAcknowledgement" command.
* @param _param - Reference to buffer.
* @param _dst_addr - Address of the device to send command to.
* @param _dst_addr_mode - Address mode for _dst_addr.
* @param _dst_ep - Destination endpoint.
* @param _src_ep - Current endpoint.
* @param _payload - Packet payload (@ref zb_zcl_price_ack_payload_t).
*/
#define ZB_ZCL_PRICE_SEND_CMD_PRICE_ACK( \
_param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload) \
zb_zcl_price_send_cmd_price_ack( \
_param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, NULL)
/** @cond internals_doc */
/** @def ZB_ZCL_PRICE_SEND_CMD_PRICE_ACK_TSN
* @brief Macro for sending @ref ZB_ZCL_PRICE_SEND_CMD_PRICE_ACK_TSN "PriceAcknowledgement" command.
* @param _param - Reference to buffer.
* @param _dst_addr - Address of the device to send command to.
* @param _dst_addr_mode - Address mode for _dst_addr.
* @param _dst_ep - Destination endpoint.
* @param _src_ep - Current endpoint.
* @param _payload - Packet payload (@ref zb_zcl_price_ack_payload_t).
* @param _tsn - sequence number of source command
*/
#define ZB_ZCL_PRICE_SEND_CMD_PRICE_ACK_TSN( \
_param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, _tsn) \
zb_zcl_price_send_cmd_price_ack_tsn( \
_param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, _tsn, NULL)
void zb_zcl_price_send_cmd_publish_price(zb_uint8_t param, const zb_addr_u *dst_addr,
zb_aps_addr_mode_t dst_addr_mode, zb_uint8_t dst_ep,
zb_uint8_t src_ep,
const zb_zcl_price_publish_price_payload_t *payload,
zb_callback_t cb);
void zb_zcl_price_send_cmd_get_current_price(zb_uint8_t param, const zb_addr_u *dst_addr,
zb_aps_addr_mode_t dst_addr_mode, zb_uint8_t dst_ep,
zb_uint8_t src_ep, zb_uint8_t rx_on_when_idle,
zb_callback_t cb);
void zb_zcl_price_send_cmd_price_ack(zb_uint8_t param, const zb_addr_u *dst_addr,
zb_aps_addr_mode_t dst_addr_mode,
zb_uint8_t dst_ep, zb_uint8_t src_ep,
const zb_zcl_price_ack_payload_t *payload,
zb_callback_t cb);
/** Function for sending @ref ZB_ZCL_PRICE_CLI_CMD_PRICE_ACK_TSN "PriceAcknowledgement" command.
* @param _param - Reference to buffer.
* @param _dst_addr - Address of the device to send command to.
* @param _dst_addr_mode - Address mode for _dst_addr.
* @param _dst_ep - Destination endpoint.
* @param _src_ep - Current endpoint.
* @param _payload - Packet payload (@ref zb_zcl_price_ack_payload_t).
* @param _tsn - sequence number of source command
* @param cb - Callback which should be called when the ZCL stack receives APS ack.
*/
void zb_zcl_price_send_cmd_price_ack_tsn(zb_uint8_t param, const zb_addr_u *dst_addr,
zb_aps_addr_mode_t dst_addr_mode,
zb_uint8_t dst_ep, zb_uint8_t src_ep,
const zb_zcl_price_ack_payload_t *payload,
zb_uint8_t tsn,
zb_callback_t cb);
void zb_zcl_price_send_cmd_get_scheduled_prices(zb_uint8_t param, const zb_addr_u *dst_addr,
zb_aps_addr_mode_t dst_addr_mode, zb_uint8_t dst_ep,
zb_uint8_t src_ep,
const zb_zcl_price_get_scheduled_prices_payload_t *payload,
zb_callback_t cb);
void zb_zcl_price_send_cmd_get_tier_labels(zb_uint8_t param, zb_addr_u *dst_addr,
zb_aps_addr_mode_t dst_addr_mode, zb_uint8_t dst_ep,
zb_uint8_t src_ep,
zb_zcl_price_get_tier_labels_payload_t *payload,
zb_callback_t cb);
void zb_zcl_price_send_cmd_publish_tier_labels(zb_uint8_t param, zb_addr_u *dst_addr,
zb_aps_addr_mode_t dst_addr_mode, zb_uint8_t dst_ep,
zb_uint8_t src_ep,
zb_zcl_price_publish_tier_labels_payload_t *payload,
zb_callback_t cb);
/** @endcond */ /* internals_doc */
/** @} */ /* end of ZB_ZCL_PRICE_CLUSTER_COMMANDS */
/** @cond internals_doc */
/*** Internal handler for Price Cluster commands */
void zb_zcl_price_init_server(void);
void zb_zcl_price_init_client(void);
#define ZB_ZCL_CLUSTER_ID_PRICE_SERVER_ROLE_INIT zb_zcl_price_init_server
#define ZB_ZCL_CLUSTER_ID_PRICE_CLIENT_ROLE_INIT zb_zcl_price_init_client
/** @endcond */ /* internals_doc */
/** @} */ /* Price cluster */
/** @endcond */ /* DOXYGEN_ZCL_SECTION */
#endif /* ZB_ZCL_PRICE_H */