Main reasoning behind this is actually that Tuya devices seem to send a CancelMessage command every other minute and are currently spamming the log with unhandled ZCL indication warnings. Instead of just silencing the warning (which is very useful most of the times) I decided to complete the implementation of the metering cluster and actually make it a handled ZCL indication.
618 lines
30 KiB
C++
618 lines
30 KiB
C++
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
*
|
|
* Copyright 2013 - 2022, nymea GmbH
|
|
* Contact: contact@nymea.io
|
|
*
|
|
* This file is part of nymea-zigbee.
|
|
* This project including source code and documentation is protected by copyright law, and
|
|
* remains the property of nymea GmbH. All rights, including reproduction, publication,
|
|
* editing and translation, are reserved. The use of this project is subject to the terms of a
|
|
* license agreement to be concluded with nymea GmbH in accordance with the terms
|
|
* of use of nymea GmbH, available under https://nymea.io/license
|
|
*
|
|
* GNU Lesser General Public License Usage
|
|
* Alternatively, this project may be redistributed and/or modified under the terms of the GNU
|
|
* Lesser General Public License as published by the Free Software Foundation; version 3.
|
|
* this project is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
* See the GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License along with this project.
|
|
* If not, see <https://www.gnu.org/licenses/>.
|
|
*
|
|
* For any further details and any questions please contact us under contact@nymea.io
|
|
* or see our FAQ/Licensing Information on https://nymea.io/license/faq
|
|
*
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
#ifndef ZIGBEECLUSTERMETERING_H
|
|
#define ZIGBEECLUSTERMETERING_H
|
|
|
|
#include <QObject>
|
|
#include "zcl/zigbeecluster.h"
|
|
#include "zcl/zigbeeclusterreply.h"
|
|
|
|
class ZigbeeNode;
|
|
class ZigbeeNetwork;
|
|
class ZigbeeNodeEndpoint;
|
|
class ZigbeeNetworkReply;
|
|
|
|
class ZigbeeClusterMetering : public ZigbeeCluster
|
|
{
|
|
Q_OBJECT
|
|
friend class ZigbeeNode;
|
|
friend class ZigbeeNetwork;
|
|
|
|
public:
|
|
enum Attribute {
|
|
// Reading information set
|
|
AttributeCurrentSummationDelivered = 0x0000,
|
|
AttributeCurrentSummationReceived = 0x0001,
|
|
AttributeCurrentMaxDemandDelivered = 0x0002,
|
|
AttributeCurrentMaxDemandReceived = 0x0003,
|
|
AttributeDFTSummation = 0x0004,
|
|
AttributeDailyFreezeTime = 0x0005,
|
|
AttributePowerFactor = 0x0006,
|
|
AttributeReadingSnapShotTime = 0x0007,
|
|
AttributeCurrentMaxDemandDeliveredTime = 0x0008,
|
|
AttributeCurrentMaxDemandReceivedTime = 0x0009,
|
|
AttributeDefaultUpdatePeriod = 0x000A,
|
|
AttributeFastPollUpdatePeriod = 0x000B,
|
|
AttributeCurrentBlockPeriodConsumptionDelivered = 0x000C,
|
|
AttributeDailyConsumptionTarget = 0x000D,
|
|
AttributeCurrentBlock = 0x000E,
|
|
AttributeProfileIntervalPeriod = 0x000F,
|
|
AttributeIntervalReadReportingPeriod = 0x0010,
|
|
AttributePresetReadingTime = 0x0011,
|
|
AttributeVolumePerReport = 0x0012,
|
|
AttributeFlowRestriction = 0x0013,
|
|
AttributeSupplyStatus = 0x0014,
|
|
AttributeCurrentInletEnergyCarrierSummation = 0x0015,
|
|
AttributeCurrentOutletEnergyCarrierSummation = 0x0016,
|
|
AttributeInletTemperature = 0x0017,
|
|
AttributeOutletTemperature = 0x0018,
|
|
AttributeControlTemperature = 0x0019,
|
|
AttributeCurrentInletEnergyCarrierDemand = 0x001A,
|
|
AttributeCurrentOutletEnergyCarrierDemand = 0x001B,
|
|
AttributePreviousBlockPeriodConsumptionDelivered = 0x001C,
|
|
|
|
// Summation TOU information set
|
|
AttributeCurrentTier1SummationDelivered = 0x0100,
|
|
AttributeCurrentTier1SummationReceived = 0x0101,
|
|
AttributeCurrentTier2SummationDelivered = 0x0102,
|
|
AttributeCurrentTier2SummationReceived = 0x0103,
|
|
AttributeCurrentTier3SummationDelivered = 0x0104,
|
|
AttributeCurrentTier3SummationReceived = 0x0105,
|
|
AttributeCurrentTier4SummationDelivered = 0x0106,
|
|
AttributeCurrentTier4SummationReceived = 0x0107,
|
|
AttributeCurrentTier5SummationDelivered = 0x0108,
|
|
AttributeCurrentTier5SummationReceived = 0x0109,
|
|
AttributeCurrentTier6SummationDelivered = 0x010A,
|
|
AttributeCurrentTier6SummationReceived = 0x010B,
|
|
AttributeCurrentTier7SummationDelivered = 0x010C,
|
|
AttributeCurrentTier7SummationReceived = 0x010D,
|
|
AttributeCurrentTier8SummationDelivered = 0x010E,
|
|
AttributeCurrentTier8SummationReceived = 0x010F,
|
|
AttributeCurrentTier9SummationDelivered = 0x0110,
|
|
AttributeCurrentTier9SummationReceived = 0x0111,
|
|
AttributeCurrentTier10SummationDelivered = 0x0112,
|
|
AttributeCurrentTier10SummationReceived = 0x0113,
|
|
AttributeCurrentTier11SummationDelivered = 0x0114,
|
|
AttributeCurrentTier11SummationReceived = 0x0115,
|
|
AttributeCurrentTier12SummationDelivered = 0x0116,
|
|
AttributeCurrentTier12SummationReceived = 0x0117,
|
|
AttributeCurrentTier13SummationDelivered = 0x0118,
|
|
AttributeCurrentTier13SummationReceived = 0x0119,
|
|
AttributeCurrentTier14SummationDelivered = 0x011A,
|
|
AttributeCurrentTier14SummationReceived = 0x011B,
|
|
AttributeCurrentTier15SummationDelivered = 0x011C,
|
|
AttributeCurrentTier15SummationReceived = 0x011D,
|
|
|
|
// Meter status attribute set
|
|
AttributeStatus = 0x0200,
|
|
AttributeRemainingBatteryLife = 0x0201,
|
|
AttributeHoursInOperation = 0x0202,
|
|
AttributeHoursInFault = 0x0203,
|
|
|
|
// Formatting
|
|
AttributeUnitofMeasure = 0x0300,
|
|
AttributeMultiplier = 0x0301,
|
|
AttributeDivisor = 0x0302,
|
|
AttributeSummationFormatting = 0x0303,
|
|
AttributeDemandFormatting = 0x0304,
|
|
AttributeHistoricalConsumptionFormatting = 0x0305,
|
|
AttributeMeteringDeviceType = 0x0306,
|
|
AttributeSiteID = 0x0307,
|
|
AttributeMeterSerialNumber = 0x0308,
|
|
AttributeEnergyCarrierUnitOfMeasure = 0x0309,
|
|
AttributeEnergyCarrierSummationFormatting = 0x030A,
|
|
AttributeEnergyCarrierDemandFormatting = 0x030B,
|
|
AttributeTemperatureUnitOfMeasure = 0x030B,
|
|
AttributeTemperatureFormatting = 0x030C,
|
|
|
|
// Historical consumption
|
|
AttributeInstantaneousDemand = 0x0400,
|
|
AttributeCurrentDayConsumptionDelivered = 0x0401,
|
|
AttributeCurrentDayConsumptionReceived = 0x0402,
|
|
AttributePreviousDayConsumptionDelivered = 0x0403,
|
|
AttributePreviousDayConsumptionReceived = 0x0404,
|
|
AttributeCurrentPartialProfileIntervalStartTimeDelivered = 0x0405,
|
|
AttributeCurrentPartialProfileIntervalStartTimeReceived = 0x0406,
|
|
AttributeCurrentPartialProfileIntervalValueDelivered = 0x0407,
|
|
AttributeCurrentPartialProfileIntervalValueReceived = 0x0408,
|
|
AttributeCurrentDayMaxPressure = 0x0409,
|
|
AttributeCurrentDayMinPressure = 0x040A,
|
|
AttributePreviousDayMaxPressure = 0x040B,
|
|
AttributePreviousDayMinPressure = 0x040C,
|
|
AttributeCurrentDayMaxDemand = 0x040D,
|
|
AttributePreviousDayMaxDemand = 0x040E,
|
|
AttributeCurrentMonthMaxDemand = 0x040F,
|
|
AttributeCurrentYearMaxDemand = 0x0410,
|
|
AttributeCurrentDayMaxEnergyCarrierDemand = 0x0411,
|
|
AttributePreviousDayMaxEnergyCarrierDemand = 0x0412,
|
|
AttributeCurrentMonthMaxEnergyCarrierDemand = 0x0413,
|
|
AttributeCurrentMonthMinEnergyCarrierDemand = 0x0414,
|
|
AttributeCurrentYearMaxEnergyCarrierDemand = 0x0415,
|
|
AttributeCurrentYearMinEnergyCarrierDemand = 0x0416,
|
|
|
|
// Load profile configuration
|
|
AttributeMaxNumberOfPeriodsDelivered = 0x0500,
|
|
|
|
// Supply limit,
|
|
AttributeCurrentDemandDelivered = 0x0600,
|
|
AttributeDemandLimit = 0x0601,
|
|
AttributeDemandIntegrationPeriod = 0x0602,
|
|
AttributeNumberOfDemandSubintervals = 0x0603,
|
|
|
|
// Block information
|
|
AttributeCurrentNoTierBlock1SummationDelivered = 0x0700,
|
|
AttributeCurrentNoTierBlock2SummationDelivered = 0x0701,
|
|
AttributeCurrentNoTierBlock3SummationDelivered = 0x0702,
|
|
AttributeCurrentNoTierBlock4SummationDelivered = 0x0703,
|
|
AttributeCurrentNoTierBlock5SummationDelivered = 0x0704,
|
|
AttributeCurrentNoTierBlock6SummationDelivered = 0x0705,
|
|
AttributeCurrentNoTierBlock7SummationDelivered = 0x0706,
|
|
AttributeCurrentNoTierBlock8SummationDelivered = 0x0707,
|
|
AttributeCurrentNoTierBlock9SummationDelivered = 0x0708,
|
|
AttributeCurrentNoTierBlock10SummationDelivered = 0x0709,
|
|
AttributeCurrentNoTierBlock11SummationDelivered = 0x070A,
|
|
AttributeCurrentNoTierBlock12SummationDelivered = 0x070B,
|
|
AttributeCurrentNoTierBlock13SummationDelivered = 0x070C,
|
|
AttributeCurrentNoTierBlock14SummationDelivered = 0x070D,
|
|
AttributeCurrentNoTierBlock15SummationDelivered = 0x070E,
|
|
AttributeCurrentNoTierBlock16SummationDelivered = 0x070F,
|
|
AttributeCurrentTier1Block1SummationDelivered = 0x0710,
|
|
AttributeCurrentTier1Block2SummationDelivered = 0x0711,
|
|
AttributeCurrentTier1Block3SummationDelivered = 0x0712,
|
|
AttributeCurrentTier1Block4SummationDelivered = 0x0713,
|
|
AttributeCurrentTier1Block5SummationDelivered = 0x0714,
|
|
AttributeCurrentTier1Block6SummationDelivered = 0x0715,
|
|
AttributeCurrentTier1Block7SummationDelivered = 0x0716,
|
|
AttributeCurrentTier1Block8SummationDelivered = 0x0717,
|
|
AttributeCurrentTier1Block9SummationDelivered = 0x0718,
|
|
AttributeCurrentTier1Block10SummationDelivered = 0x0719,
|
|
AttributeCurrentTier1Block11SummationDelivered = 0x071A,
|
|
AttributeCurrentTier1Block12SummationDelivered = 0x071B,
|
|
AttributeCurrentTier1Block13SummationDelivered = 0x071C,
|
|
AttributeCurrentTier1Block14SummationDelivered = 0x071D,
|
|
AttributeCurrentTier1Block15SummationDelivered = 0x071E,
|
|
AttributeCurrentTier1Block16SummationDelivered = 0x071F,
|
|
AttributeCurrentTier2Block1SummationDelivered = 0x0720,
|
|
AttributeCurrentTier2Block2SummationDelivered = 0x0721,
|
|
AttributeCurrentTier2Block3SummationDelivered = 0x0722,
|
|
AttributeCurrentTier2Block4SummationDelivered = 0x0723,
|
|
AttributeCurrentTier2Block5SummationDelivered = 0x0724,
|
|
AttributeCurrentTier2Block6SummationDelivered = 0x0725,
|
|
AttributeCurrentTier2Block7SummationDelivered = 0x0726,
|
|
AttributeCurrentTier2Block8SummationDelivered = 0x0727,
|
|
AttributeCurrentTier2Block9SummationDelivered = 0x0728,
|
|
AttributeCurrentTier2Block10SummationDelivered = 0x0729,
|
|
AttributeCurrentTier2Block11SummationDelivered = 0x072A,
|
|
AttributeCurrentTier2Block12SummationDelivered = 0x072B,
|
|
AttributeCurrentTier2Block13SummationDelivered = 0x072C,
|
|
AttributeCurrentTier2Block14SummationDelivered = 0x072D,
|
|
AttributeCurrentTier2Block15SummationDelivered = 0x072E,
|
|
AttributeCurrentTier2Block16SummationDelivered = 0x072F,
|
|
AttributeCurrentTier3Block1SummationDelivered = 0x0730,
|
|
AttributeCurrentTier3Block2SummationDelivered = 0x0731,
|
|
AttributeCurrentTier3Block3SummationDelivered = 0x0732,
|
|
AttributeCurrentTier3Block4SummationDelivered = 0x0733,
|
|
AttributeCurrentTier3Block5SummationDelivered = 0x0734,
|
|
AttributeCurrentTier3Block6SummationDelivered = 0x0735,
|
|
AttributeCurrentTier3Block7SummationDelivered = 0x0736,
|
|
AttributeCurrentTier3Block8SummationDelivered = 0x0737,
|
|
AttributeCurrentTier3Block9SummationDelivered = 0x0738,
|
|
AttributeCurrentTier3Block10SummationDelivered = 0x0739,
|
|
AttributeCurrentTier3Block11SummationDelivered = 0x073A,
|
|
AttributeCurrentTier3Block12SummationDelivered = 0x073B,
|
|
AttributeCurrentTier3Block13SummationDelivered = 0x073C,
|
|
AttributeCurrentTier3Block14SummationDelivered = 0x073D,
|
|
AttributeCurrentTier3Block15SummationDelivered = 0x073E,
|
|
AttributeCurrentTier3Block16SummationDelivered = 0x073F,
|
|
AttributeCurrentTier4Block1SummationDelivered = 0x0740,
|
|
AttributeCurrentTier4Block2SummationDelivered = 0x0741,
|
|
AttributeCurrentTier4Block3SummationDelivered = 0x0742,
|
|
AttributeCurrentTier4Block4SummationDelivered = 0x0743,
|
|
AttributeCurrentTier4Block5SummationDelivered = 0x0744,
|
|
AttributeCurrentTier4Block6SummationDelivered = 0x0745,
|
|
AttributeCurrentTier4Block7SummationDelivered = 0x0746,
|
|
AttributeCurrentTier4Block8SummationDelivered = 0x0747,
|
|
AttributeCurrentTier4Block9SummationDelivered = 0x0748,
|
|
AttributeCurrentTier4Block10SummationDelivered = 0x0749,
|
|
AttributeCurrentTier4Block11SummationDelivered = 0x074A,
|
|
AttributeCurrentTier4Block12SummationDelivered = 0x074B,
|
|
AttributeCurrentTier4Block13SummationDelivered = 0x074C,
|
|
AttributeCurrentTier4Block14SummationDelivered = 0x074D,
|
|
AttributeCurrentTier4Block15SummationDelivered = 0x074E,
|
|
AttributeCurrentTier4Block16SummationDelivered = 0x074F,
|
|
|
|
AttributeCurrentTier5Block1SummationDelivered = 0x0750,
|
|
AttributeCurrentTier5Block2SummationDelivered = 0x0751,
|
|
AttributeCurrentTier5Block3SummationDelivered = 0x0752,
|
|
AttributeCurrentTier5Block4SummationDelivered = 0x0753,
|
|
AttributeCurrentTier5Block5SummationDelivered = 0x0754,
|
|
AttributeCurrentTier5Block6SummationDelivered = 0x0755,
|
|
AttributeCurrentTier5Block7SummationDelivered = 0x0756,
|
|
AttributeCurrentTier5Block8SummationDelivered = 0x0757,
|
|
AttributeCurrentTier5Block9SummationDelivered = 0x0758,
|
|
AttributeCurrentTier5Block10SummationDelivered = 0x0759,
|
|
AttributeCurrentTier5Block11SummationDelivered = 0x075A,
|
|
AttributeCurrentTier5Block12SummationDelivered = 0x075B,
|
|
AttributeCurrentTier5Block13SummationDelivered = 0x075C,
|
|
AttributeCurrentTier5Block14SummationDelivered = 0x075D,
|
|
AttributeCurrentTier5Block15SummationDelivered = 0x075E,
|
|
AttributeCurrentTier5Block16SummationDelivered = 0x075F,
|
|
|
|
AttributeCurrentTier6Block1SummationDelivered = 0x0760,
|
|
AttributeCurrentTier6Block2SummationDelivered = 0x0761,
|
|
AttributeCurrentTier6Block3SummationDelivered = 0x0762,
|
|
AttributeCurrentTier6Block4SummationDelivered = 0x0763,
|
|
AttributeCurrentTier6Block5SummationDelivered = 0x0764,
|
|
AttributeCurrentTier6Block6SummationDelivered = 0x0765,
|
|
AttributeCurrentTier6Block7SummationDelivered = 0x0766,
|
|
AttributeCurrentTier6Block8SummationDelivered = 0x0767,
|
|
AttributeCurrentTier6Block9SummationDelivered = 0x0768,
|
|
AttributeCurrentTier6Block10SummationDelivered = 0x0769,
|
|
AttributeCurrentTier6Block11SummationDelivered = 0x076A,
|
|
AttributeCurrentTier6Block12SummationDelivered = 0x076B,
|
|
AttributeCurrentTier6Block13SummationDelivered = 0x076C,
|
|
AttributeCurrentTier6Block14SummationDelivered = 0x076D,
|
|
AttributeCurrentTier6Block15SummationDelivered = 0x076E,
|
|
AttributeCurrentTier6Block16SummationDelivered = 0x076F,
|
|
|
|
AttributeCurrentTier7Block1SummationDelivered = 0x0770,
|
|
AttributeCurrentTier7Block2SummationDelivered = 0x0771,
|
|
AttributeCurrentTier7Block3SummationDelivered = 0x0772,
|
|
AttributeCurrentTier7Block4SummationDelivered = 0x0773,
|
|
AttributeCurrentTier7Block5SummationDelivered = 0x0774,
|
|
AttributeCurrentTier7Block6SummationDelivered = 0x0775,
|
|
AttributeCurrentTier7Block7SummationDelivered = 0x0776,
|
|
AttributeCurrentTier7Block8SummationDelivered = 0x0777,
|
|
AttributeCurrentTier7Block9SummationDelivered = 0x0778,
|
|
AttributeCurrentTier7Block10SummationDelivered = 0x0779,
|
|
AttributeCurrentTier7Block11SummationDelivered = 0x077A,
|
|
AttributeCurrentTier7Block12SummationDelivered = 0x077B,
|
|
AttributeCurrentTier7Block13SummationDelivered = 0x077C,
|
|
AttributeCurrentTier7Block14SummationDelivered = 0x077D,
|
|
AttributeCurrentTier7Block15SummationDelivered = 0x077E,
|
|
AttributeCurrentTier7Block16SummationDelivered = 0x077F,
|
|
|
|
AttributeCurrentTier8Block1SummationDelivered = 0x0780,
|
|
AttributeCurrentTier8Block2SummationDelivered = 0x0781,
|
|
AttributeCurrentTier8Block3SummationDelivered = 0x0782,
|
|
AttributeCurrentTier8Block4SummationDelivered = 0x0783,
|
|
AttributeCurrentTier8Block5SummationDelivered = 0x0784,
|
|
AttributeCurrentTier8Block6SummationDelivered = 0x0785,
|
|
AttributeCurrentTier8Block7SummationDelivered = 0x0786,
|
|
AttributeCurrentTier8Block8SummationDelivered = 0x0787,
|
|
AttributeCurrentTier8Block9SummationDelivered = 0x0788,
|
|
AttributeCurrentTier8Block10SummationDelivered = 0x0789,
|
|
AttributeCurrentTier8Block11SummationDelivered = 0x078A,
|
|
AttributeCurrentTier8Block12SummationDelivered = 0x078B,
|
|
AttributeCurrentTier8Block13SummationDelivered = 0x078C,
|
|
AttributeCurrentTier8Block14SummationDelivered = 0x078D,
|
|
AttributeCurrentTier8Block15SummationDelivered = 0x078E,
|
|
AttributeCurrentTier8Block16SummationDelivered = 0x078F,
|
|
|
|
AttributeCurrentTier9Block1SummationDelivered = 0x0790,
|
|
AttributeCurrentTier9Block2SummationDelivered = 0x0791,
|
|
AttributeCurrentTier9Block3SummationDelivered = 0x0792,
|
|
AttributeCurrentTier9Block4SummationDelivered = 0x0793,
|
|
AttributeCurrentTier9Block5SummationDelivered = 0x0794,
|
|
AttributeCurrentTier9Block6SummationDelivered = 0x0795,
|
|
AttributeCurrentTier9Block7SummationDelivered = 0x0796,
|
|
AttributeCurrentTier9Block8SummationDelivered = 0x0797,
|
|
AttributeCurrentTier9Block9SummationDelivered = 0x0798,
|
|
AttributeCurrentTier9Block10SummationDelivered = 0x0799,
|
|
AttributeCurrentTier9Block11SummationDelivered = 0x079A,
|
|
AttributeCurrentTier9Block12SummationDelivered = 0x079B,
|
|
AttributeCurrentTier9Block13SummationDelivered = 0x079C,
|
|
AttributeCurrentTier9Block14SummationDelivered = 0x079D,
|
|
AttributeCurrentTier9Block15SummationDelivered = 0x079E,
|
|
AttributeCurrentTier9Block16SummationDelivered = 0x079F,
|
|
|
|
AttributeCurrentTier10Block1SummationDelivered = 0x07A0,
|
|
AttributeCurrentTier10Block2SummationDelivered = 0x07A1,
|
|
AttributeCurrentTier10Block3SummationDelivered = 0x07A2,
|
|
AttributeCurrentTier10Block4SummationDelivered = 0x07A3,
|
|
AttributeCurrentTier10Block5SummationDelivered = 0x07A4,
|
|
AttributeCurrentTier10Block6SummationDelivered = 0x07A5,
|
|
AttributeCurrentTier10Block7SummationDelivered = 0x07A6,
|
|
AttributeCurrentTier10Block8SummationDelivered = 0x07A7,
|
|
AttributeCurrentTier10Block9SummationDelivered = 0x07A8,
|
|
AttributeCurrentTier10Block10SummationDelivered = 0x07A9,
|
|
AttributeCurrentTier10Block11SummationDelivered = 0x07AA,
|
|
AttributeCurrentTier10Block12SummationDelivered = 0x07AB,
|
|
AttributeCurrentTier10Block13SummationDelivered = 0x07AC,
|
|
AttributeCurrentTier10Block14SummationDelivered = 0x07AD,
|
|
AttributeCurrentTier10Block15SummationDelivered = 0x07AE,
|
|
AttributeCurrentTier10Block16SummationDelivered = 0x07AF,
|
|
|
|
AttributeCurrentTier11Block1SummationDelivered = 0x07B0,
|
|
AttributeCurrentTier11Block2SummationDelivered = 0x07B1,
|
|
AttributeCurrentTier11Block3SummationDelivered = 0x07B2,
|
|
AttributeCurrentTier11Block4SummationDelivered = 0x07B3,
|
|
AttributeCurrentTier11Block5SummationDelivered = 0x07B4,
|
|
AttributeCurrentTier11Block6SummationDelivered = 0x07B5,
|
|
AttributeCurrentTier11Block7SummationDelivered = 0x07B6,
|
|
AttributeCurrentTier11Block8SummationDelivered = 0x07B7,
|
|
AttributeCurrentTier11Block9SummationDelivered = 0x07B8,
|
|
AttributeCurrentTier11Block10SummationDelivered = 0x07B9,
|
|
AttributeCurrentTier11Block11SummationDelivered = 0x07BA,
|
|
AttributeCurrentTier11Block12SummationDelivered = 0x07BB,
|
|
AttributeCurrentTier11Block13SummationDelivered = 0x07BC,
|
|
AttributeCurrentTier11Block14SummationDelivered = 0x07BD,
|
|
AttributeCurrentTier11Block15SummationDelivered = 0x07BE,
|
|
AttributeCurrentTier11Block16SummationDelivered = 0x07BF,
|
|
|
|
AttributeCurrentTier12Block1SummationDelivered = 0x07C0,
|
|
AttributeCurrentTier12Block2SummationDelivered = 0x07C1,
|
|
AttributeCurrentTier12Block3SummationDelivered = 0x07C2,
|
|
AttributeCurrentTier12Block4SummationDelivered = 0x07C3,
|
|
AttributeCurrentTier12Block5SummationDelivered = 0x07C4,
|
|
AttributeCurrentTier12Block6SummationDelivered = 0x07C5,
|
|
AttributeCurrentTier12Block7SummationDelivered = 0x07C6,
|
|
AttributeCurrentTier12Block8SummationDelivered = 0x07C7,
|
|
AttributeCurrentTier12Block9SummationDelivered = 0x07C8,
|
|
AttributeCurrentTier12Block10SummationDelivered = 0x07C9,
|
|
AttributeCurrentTier12Block11SummationDelivered = 0x07CA,
|
|
AttributeCurrentTier12Block12SummationDelivered = 0x07CB,
|
|
AttributeCurrentTier12Block13SummationDelivered = 0x07CC,
|
|
AttributeCurrentTier12Block14SummationDelivered = 0x07CD,
|
|
AttributeCurrentTier12Block15SummationDelivered = 0x07CE,
|
|
AttributeCurrentTier12Block16SummationDelivered = 0x07CF,
|
|
|
|
AttributeCurrentTier13Block1SummationDelivered = 0x07D0,
|
|
AttributeCurrentTier13Block2SummationDelivered = 0x07D1,
|
|
AttributeCurrentTier13Block3SummationDelivered = 0x07D2,
|
|
AttributeCurrentTier13Block4SummationDelivered = 0x07D3,
|
|
AttributeCurrentTier13Block5SummationDelivered = 0x07D4,
|
|
AttributeCurrentTier13Block6SummationDelivered = 0x07D5,
|
|
AttributeCurrentTier13Block7SummationDelivered = 0x07D6,
|
|
AttributeCurrentTier13Block8SummationDelivered = 0x07D7,
|
|
AttributeCurrentTier13Block9SummationDelivered = 0x07D8,
|
|
AttributeCurrentTier13Block10SummationDelivered = 0x07D9,
|
|
AttributeCurrentTier13Block11SummationDelivered = 0x07DA,
|
|
AttributeCurrentTier13Block12SummationDelivered = 0x07DB,
|
|
AttributeCurrentTier13Block13SummationDelivered = 0x07DC,
|
|
AttributeCurrentTier13Block14SummationDelivered = 0x07DD,
|
|
AttributeCurrentTier13Block15SummationDelivered = 0x07DE,
|
|
AttributeCurrentTier13Block16SummationDelivered = 0x07DF,
|
|
|
|
AttributeCurrentTier14Block1SummationDelivered = 0x07E0,
|
|
AttributeCurrentTier14Block2SummationDelivered = 0x07E1,
|
|
AttributeCurrentTier14Block3SummationDelivered = 0x07E2,
|
|
AttributeCurrentTier14Block4SummationDelivered = 0x07E3,
|
|
AttributeCurrentTier14Block5SummationDelivered = 0x07E4,
|
|
AttributeCurrentTier14Block6SummationDelivered = 0x07E5,
|
|
AttributeCurrentTier14Block7SummationDelivered = 0x07E6,
|
|
AttributeCurrentTier14Block8SummationDelivered = 0x07E7,
|
|
AttributeCurrentTier14Block9SummationDelivered = 0x07E8,
|
|
AttributeCurrentTier14Block10SummationDelivered = 0x07E9,
|
|
AttributeCurrentTier14Block11SummationDelivered = 0x07EA,
|
|
AttributeCurrentTier14Block12SummationDelivered = 0x07EB,
|
|
AttributeCurrentTier14Block13SummationDelivered = 0x07EC,
|
|
AttributeCurrentTier14Block14SummationDelivered = 0x07ED,
|
|
AttributeCurrentTier14Block15SummationDelivered = 0x07EE,
|
|
AttributeCurrentTier14Block16SummationDelivered = 0x07EF,
|
|
|
|
AttributeCurrentTier15Block1SummationDelivered = 0x07F0,
|
|
AttributeCurrentTier15Block2SummationDelivered = 0x07F1,
|
|
AttributeCurrentTier15Block3SummationDelivered = 0x07F2,
|
|
AttributeCurrentTier15Block4SummationDelivered = 0x07F3,
|
|
AttributeCurrentTier15Block5SummationDelivered = 0x07F4,
|
|
AttributeCurrentTier15Block6SummationDelivered = 0x07F5,
|
|
AttributeCurrentTier15Block7SummationDelivered = 0x07F6,
|
|
AttributeCurrentTier15Block8SummationDelivered = 0x07F7,
|
|
AttributeCurrentTier15Block9SummationDelivered = 0x07F8,
|
|
AttributeCurrentTier15Block10SummationDelivered = 0x07F9,
|
|
AttributeCurrentTier15Block11SummationDelivered = 0x07FA,
|
|
AttributeCurrentTier15Block12SummationDelivered = 0x07FB,
|
|
AttributeCurrentTier15Block13SummationDelivered = 0x07FC,
|
|
AttributeCurrentTier15Block14SummationDelivered = 0x07FD,
|
|
AttributeCurrentTier15Block15SummationDelivered = 0x07FE,
|
|
AttributeCurrentTier15Block16SummationDelivered = 0x07FF,
|
|
|
|
// Alarms
|
|
AttributeGenericAlarmMask = 0x0800,
|
|
AttributeElectricityAlarmMask = 0x0801,
|
|
AttributeGenericFlowPressureAlarmMask = 0x0802,
|
|
AttributeWaterSpecificAlarmMask = 0x0803,
|
|
AttributeHeatandCoolingSpecificAlarmMask = 0x0804,
|
|
AttributeGasSpecificAlarmMask = 0x0805,
|
|
};
|
|
Q_ENUM(Attribute)
|
|
|
|
enum SupplyStatus {
|
|
SupplyStatusOff = 0x00,
|
|
SupplyStatusArmed = 0x01,
|
|
SupplyStatusOn = 0x02
|
|
};
|
|
Q_ENUM(SupplyStatus)
|
|
|
|
enum UnitOfMeasure {
|
|
UnitOfMeasureBinaryKWh = 0x00,
|
|
UnitOfMeasureBinaryCubicMeter = 0x01,
|
|
UnitOfMeasureBinaryCubicFeet = 0x02,
|
|
UnitOfMeasureBinaryCentum = 0x03,
|
|
UnitOfMeasureBinaryUSGallons = 0x04,
|
|
UnitOfMeasureBinaryImperialGallons = 0x05,
|
|
UnitOfMeasureBinaryBTU = 0x06,
|
|
UnitOfMeasureBinaryLiters = 0x07,
|
|
UnitOfMeasureBinaryKPAGauge = 0x08,
|
|
UnitOfMeasureBinaryKPAAbsolute = 0x09,
|
|
UnitOfMeasureBinaryMegaCubicFeet = 0x0A,
|
|
UnitOfMeasureBinaryUnitless = 0x0B,
|
|
UnitOfMeasureBinaryMegaJoule = 0x0C,
|
|
|
|
UnitOfMeasureBCDKWh = 0x80,
|
|
UnitOfMeasureBCDCubicMeter = 0x81,
|
|
UnitOfMeasureBCDCubicFeet = 0x82,
|
|
UnitOfMeasureBCDCentum = 0x83,
|
|
UnitOfMeasureBCDUSGallons = 0x84,
|
|
UnitOfMeasureBCDImperialGallons = 0x85,
|
|
UnitOfMeasureBCDBTU = 0x86,
|
|
UnitOfMeasureBCDLiters = 0x87,
|
|
UnitOfMeasureBCDKPAGauge = 0x88,
|
|
UnitOfMeasureBCDKPAAbsolute = 0x89,
|
|
UnitOfMeasureBCDMegaCubicFeet = 0x8A,
|
|
UnitOfMeasureBCDUnitless = 0x8B,
|
|
UnitOfMeasureBCDMegaJoule = 0x8C,
|
|
};
|
|
Q_ENUM(UnitOfMeasure)
|
|
|
|
enum MeteringDeviceType {
|
|
MeteringDeviceTypeElectric = 0x00,
|
|
MeteringDeviceTypeGas = 0x01,
|
|
MeteringDeviceTypeWater = 0x02,
|
|
MeteringDeviceTypeThermal = 0x03,
|
|
MeteringDeviceTypePressure = 0x04,
|
|
MeteringDeviceTypeHeat = 0x05,
|
|
MeteringDeviceTypeCooling = 0x06,
|
|
MeteringDeviceTypeMirroredGas = 0x80,
|
|
MeteringDeviceTypeMirroredWater = 0x81,
|
|
MeteringDeviceTypeMirroredThermal = 0x82,
|
|
MeteringDeviceTypeMirroredPressure = 0x83,
|
|
MeteringDeviceTypeMirroredHeat = 0x84,
|
|
MeteringDeviceTypeMirroredCooling = 0x85,
|
|
};
|
|
Q_ENUM(MeteringDeviceType)
|
|
|
|
enum TemperatureUnitOfMeasure {
|
|
TemperatureUnitOfMeasureBinaryKelvin = 0x00,
|
|
TemperatureUnitOfMeasureBinaryDegreesCelsius = 0x01,
|
|
TemperatureUnitOfMeasureBinaryDegreesFahrenheit = 0x02,
|
|
|
|
TemperatureUnitOfMeasureBCDKelvin = 0x80,
|
|
TemperatureUnitOfMeasureBCDDegreesCelsius = 0x81,
|
|
TemperatureUnitOfMeasureBCDDegreesFahrenheit = 0x82,
|
|
};
|
|
Q_ENUM(TemperatureUnitOfMeasure)
|
|
|
|
enum AlarmCode {
|
|
// Generic
|
|
AlarmCodeCheckMeter = 0x00,
|
|
AlarmCodeLowBattery = 0x01,
|
|
AlarmCodeTamperDetected = 0x02,
|
|
AlarmCodeInputFailure = 0x03, // Electricity Power failure, water pipe empty, sensor failure
|
|
AlarmCodeInputQualityFailure = 0x04, // power quality, low presure, burst
|
|
AlarmCodeLeakDetect = 0x05,
|
|
AlarmCodeServiceDisconnect = 0x06,
|
|
AlarmCodeInputReversed = 0x07, // electricity reversed, reverse flow, sensor reversed
|
|
|
|
// Electricity
|
|
AlarmCodeLowVoltageL1 = 0x10,
|
|
AlarmCodeHighVoltageL1 = 0x11,
|
|
AlarmCodeLowVoltageL2 = 0x12,
|
|
AlarmCodeHighVoltageL2 = 0x13,
|
|
AlarmCodeLowVoltageL3 = 0x14,
|
|
AlarmCodeHighVoltageL3 = 0x15,
|
|
AlarmCodeOverCurrentL1 = 0x16,
|
|
AlarmCodeOverCurrentL2 = 0x17,
|
|
AlarmCodeOverCurrentL3 = 0x18,
|
|
AlarmCodeFrequencyTooLowL1 = 0x19,
|
|
AlarmCodeFrequencyTooHighL1 = 0x1A,
|
|
AlarmCodeFrequencyTooLowL2 = 0x1B,
|
|
AlarmCodeFrequencyTooHighL2 = 0x1C,
|
|
AlarmCodeFrequencyTooLowL3 = 0x1D,
|
|
AlarmCodeFrequencyTooHighL3 = 0x1E,
|
|
AlarmCodeGroundFault = 0x1F,
|
|
AlarmCodeElectricTamperDetect = 0x20,
|
|
|
|
// Flow/Pressure
|
|
AlarmCodeBurstDetect = 0x30,
|
|
AlarmCodePressureTooLow = 0x31,
|
|
AlarmCodePressureTooHigh = 0x32,
|
|
AlarmCodeFlowSensorCommunicationError = 0x33,
|
|
AlarmCodeFlowSensorMeasurementFault = 0x34,
|
|
AlarmCodeFlowSensorReverseFlow = 0x35,
|
|
AlarmCodeFlowSensorAirDetect = 0x36,
|
|
AlarmCodePipeEmpty = 0x37,
|
|
|
|
// Heat and cooling specific
|
|
AlarmCodeInletTemperatureSensorFault = 0x50,
|
|
AlarmCodeOutletTemperatureSensorFault = 0x51,
|
|
};
|
|
Q_ENUM(AlarmCode)
|
|
|
|
enum ClientCommand {
|
|
CommandGetProfile = 0x00,
|
|
CommandRequestMirrorResponse = 0x01,
|
|
CommandMirrorRemoved = 0x02,
|
|
CommandRequestFastPollMode = 0x03
|
|
};
|
|
Q_ENUM(ClientCommand)
|
|
|
|
enum ServerCommand {
|
|
CommandDisplayMessage = 0x00,
|
|
ClientCommandCancelMessage = 0x01
|
|
};
|
|
Q_ENUM(ServerCommand)
|
|
|
|
enum MessageTransmission {
|
|
MessageTransmissionNormal = 0x0,
|
|
MessageTransmissionNormalAndAnonymousInterPan = 0x1,
|
|
MessageTransmissionAnonymousInterPan = 0x2
|
|
};
|
|
Q_ENUM(MessageTransmission)
|
|
|
|
enum MessagePriority {
|
|
MessagePriorityLow = 0x0,
|
|
MessagePriorityMedium = 0x1,
|
|
MessagePriorityHigh = 0x2,
|
|
MessagePriorityCritical = 0x3
|
|
};
|
|
Q_ENUM(MessagePriority)
|
|
|
|
|
|
explicit ZigbeeClusterMetering(ZigbeeNetwork *network, ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint, Direction direction, QObject *parent = nullptr);
|
|
|
|
// Used to refresh formatting attributes (multiplier/divisor)
|
|
ZigbeeClusterReply* readFormatting();
|
|
|
|
quint32 multiplier() const;
|
|
quint32 divisor() const;
|
|
|
|
quint64 currentSummationDelivered() const;
|
|
qint32 instantaneousDemand() const;
|
|
|
|
signals:
|
|
void currentSummationDeliveredChanged(quint64 currentSummationDelivered);
|
|
void instantaneousDemandChanged(qint32 instantaneousDemand);
|
|
|
|
void showMessage(quint32 messageId, const QString &message, quint32 time, quint16 durationInMinutes, MessageTransmission transmission, MessagePriority priority, bool confirmationRequired);
|
|
void cancelMessage(quint32 messageId, MessageTransmission transmission, MessagePriority priority, bool confirmationRequired);
|
|
|
|
private:
|
|
void setAttribute(const ZigbeeClusterAttribute &attribute) override;
|
|
void processDataIndication(ZigbeeClusterLibrary::Frame frame) override;
|
|
|
|
quint32 m_multiplier = 1;
|
|
quint32 m_divisor = 1;
|
|
|
|
quint64 m_currentSummationDelivered = 0;
|
|
qint32 m_instantaneousDemand = 0;
|
|
};
|
|
|
|
#endif // ZIGBEECLUSTERMETERING_H
|