Merge PR #82: PowerConfiguration cluster: Add battery voltage

electricalmeasurement-formatting
jenkins 2023-02-21 17:42:47 +01:00
commit b7fe5a624e
2 changed files with 20 additions and 2 deletions

View File

@ -41,6 +41,11 @@ double ZigbeeClusterPowerConfiguration::batteryPercentage() const
return m_batteryPercentage;
}
double ZigbeeClusterPowerConfiguration::batteryVoltage() const
{
return m_batteryVoltage;
}
ZigbeeClusterPowerConfiguration::BatteryAlarmMask ZigbeeClusterPowerConfiguration::batteryAlarmState() const
{
return m_batteryAlarmState;
@ -50,7 +55,17 @@ void ZigbeeClusterPowerConfiguration::setAttribute(const ZigbeeClusterAttribute
{
ZigbeeCluster::setAttribute(attribute);
if (attribute.id() == AttributeBatteryPercentageRemaining) {
if (attribute.id() == AttributeBatteryVoltage) {
bool ok;
quint8 value = attribute.dataType().toUInt8(&ok);
if (ok) {
m_batteryVoltage = value / 10.0;
qCDebug(dcZigbeeCluster()) << "PowerConfiguration battery voltage changed on" << m_node << m_endpoint << this << m_batteryVoltage << "V";
emit batteryVoltageChanged(m_batteryVoltage);
} else {
qCWarning(dcZigbeeCluster()) << "Failed to parse battery voltage attribute data" << m_node << m_endpoint << this << attribute;
}
} else if (attribute.id() == AttributeBatteryPercentageRemaining) {
bool valueOk = false;
quint8 value = attribute.dataType().toUInt8(&valueOk);
if (valueOk) {
@ -58,7 +73,7 @@ void ZigbeeClusterPowerConfiguration::setAttribute(const ZigbeeClusterAttribute
qCDebug(dcZigbeeCluster()) << "PowerConfiguration remaining battery percentage changed on" << m_node << m_endpoint << this << m_batteryPercentage << "%";
emit batteryPercentageChanged(m_batteryPercentage);
} else {
qCWarning(dcZigbeeCluster()) << "Failed to parse attribute data" << m_node << m_endpoint << this << attribute;
qCWarning(dcZigbeeCluster()) << "Failed to parse battery percentage attribute data" << m_node << m_endpoint << this << attribute;
}
} else if (attribute.id() == AttributeBatteryAlarmState) {
bool ok;

View File

@ -101,16 +101,19 @@ public:
explicit ZigbeeClusterPowerConfiguration(ZigbeeNetwork *network, ZigbeeNode *node, ZigbeeNodeEndpoint *endpoint, Direction direction, QObject *parent = nullptr);
double batteryPercentage() const;
double batteryVoltage() const;
BatteryAlarmMask batteryAlarmState() const;
private:
double m_batteryPercentage = 0;
double m_batteryVoltage = 0;
BatteryAlarmMask m_batteryAlarmState = BatteryAlarmNone;
void setAttribute(const ZigbeeClusterAttribute &attribute) override;
signals:
void batteryPercentageChanged(double percentage);
void batteryVoltageChanged(double voltage);
void batteryAlarmStateChanged(ZigbeeClusterPowerConfiguration::BatteryAlarmMask alarmState);
};