Implement timeout settings for occupancy sensing cluster
This commit is contained in:
parent
a70afb965d
commit
4141de2200
@ -41,6 +41,48 @@ bool ZigbeeClusterOccupancySensing::occupied() const
|
|||||||
return m_occupied;
|
return m_occupied;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
quint16 ZigbeeClusterOccupancySensing::pirOccupiedToUnoccupiedDelay() const
|
||||||
|
{
|
||||||
|
return m_pirOccupiedToUnoccupiedDelay;
|
||||||
|
}
|
||||||
|
|
||||||
|
ZigbeeClusterReply *ZigbeeClusterOccupancySensing::setPirOccupiedToUnoccupiedDelay(quint16 pirOccupiedToUnoccupiedDelay)
|
||||||
|
{
|
||||||
|
ZigbeeClusterLibrary::WriteAttributeRecord record;
|
||||||
|
record.attributeId = AttributePirOccupiedToUnoccupiedDelay;
|
||||||
|
record.dataType = Zigbee::Uint16;
|
||||||
|
record.data = ZigbeeDataType(pirOccupiedToUnoccupiedDelay).data();
|
||||||
|
return writeAttributes({record});
|
||||||
|
}
|
||||||
|
|
||||||
|
quint16 ZigbeeClusterOccupancySensing::pirUnoccupiedToOccupiedDelay() const
|
||||||
|
{
|
||||||
|
return m_pirUnoccupiedToOccupiedDelay;
|
||||||
|
}
|
||||||
|
|
||||||
|
ZigbeeClusterReply *ZigbeeClusterOccupancySensing::setPirUnoccupiedToOccupiedDelay(quint16 pirUnoccupiedToOccupiedDelay)
|
||||||
|
{
|
||||||
|
ZigbeeClusterLibrary::WriteAttributeRecord record;
|
||||||
|
record.attributeId = AttributePirUnoccupiedToOccupiedDelay;
|
||||||
|
record.dataType = Zigbee::Uint16;
|
||||||
|
record.data = ZigbeeDataType(pirUnoccupiedToOccupiedDelay).data();
|
||||||
|
return writeAttributes({record});
|
||||||
|
}
|
||||||
|
|
||||||
|
quint16 ZigbeeClusterOccupancySensing::pirUnoccupiedToOccupiedThreshold() const
|
||||||
|
{
|
||||||
|
return m_pirUnoccupiedToOccupiedThreshold;
|
||||||
|
}
|
||||||
|
|
||||||
|
ZigbeeClusterReply *ZigbeeClusterOccupancySensing::setPirUnoccupiedToOccupiedThreshold(quint16 pirUnoccupiedToOccupiedThreshold)
|
||||||
|
{
|
||||||
|
ZigbeeClusterLibrary::WriteAttributeRecord record;
|
||||||
|
record.attributeId = AttributePirUnoccupiedToOccupiedThreshold;
|
||||||
|
record.dataType = Zigbee::Uint16;
|
||||||
|
record.data = ZigbeeDataType(pirUnoccupiedToOccupiedThreshold).data();
|
||||||
|
return writeAttributes({record});
|
||||||
|
}
|
||||||
|
|
||||||
void ZigbeeClusterOccupancySensing::setAttribute(const ZigbeeClusterAttribute &attribute)
|
void ZigbeeClusterOccupancySensing::setAttribute(const ZigbeeClusterAttribute &attribute)
|
||||||
{
|
{
|
||||||
ZigbeeCluster::setAttribute(attribute);
|
ZigbeeCluster::setAttribute(attribute);
|
||||||
@ -56,5 +98,35 @@ void ZigbeeClusterOccupancySensing::setAttribute(const ZigbeeClusterAttribute &a
|
|||||||
} else {
|
} else {
|
||||||
qCWarning(dcZigbeeCluster()) << "Failed to convert value from attribute" << m_node << m_endpoint << this << attribute;
|
qCWarning(dcZigbeeCluster()) << "Failed to convert value from attribute" << m_node << m_endpoint << this << attribute;
|
||||||
}
|
}
|
||||||
|
} else if (attribute.id() == AttributePirOccupiedToUnoccupiedDelay) {
|
||||||
|
bool valueOk;
|
||||||
|
quint16 value = attribute.dataType().toUInt16(&valueOk);
|
||||||
|
if (valueOk) {
|
||||||
|
m_pirOccupiedToUnoccupiedDelay = value;
|
||||||
|
qCDebug(dcZigbeeCluster()) << "PirOccupiedToUnoccupiedDelay changed on" << m_node << m_endpoint << this << m_pirOccupiedToUnoccupiedDelay;
|
||||||
|
emit pirOccupiedToUnoccupiedDelayChanged(m_pirOccupiedToUnoccupiedDelay);
|
||||||
|
} else {
|
||||||
|
qCWarning(dcZigbeeCluster()) << "Failed to convert value from attribute" << m_node << m_endpoint << this << attribute;
|
||||||
|
}
|
||||||
|
} else if (attribute.id() == AttributePirUnoccupiedToOccupiedDelay) {
|
||||||
|
bool valueOk;
|
||||||
|
quint16 value = attribute.dataType().toUInt16(&valueOk);
|
||||||
|
if (valueOk) {
|
||||||
|
m_pirUnoccupiedToOccupiedDelay = value;
|
||||||
|
qCDebug(dcZigbeeCluster()) << "PirUnccupiedToOccupiedDelay changed on" << m_node << m_endpoint << this << m_pirOccupiedToUnoccupiedDelay;
|
||||||
|
emit pirUnoccupiedToOccupiedDelayChanged(m_pirUnoccupiedToOccupiedDelay);
|
||||||
|
} else {
|
||||||
|
qCWarning(dcZigbeeCluster()) << "Failed to convert value from attribute" << m_node << m_endpoint << this << attribute;
|
||||||
|
}
|
||||||
|
} else if (attribute.id() == AttributePirUnoccupiedToOccupiedThreshold) {
|
||||||
|
bool valueOk;
|
||||||
|
quint16 value = attribute.dataType().toUInt16(&valueOk);
|
||||||
|
if (valueOk) {
|
||||||
|
m_pirUnoccupiedToOccupiedThreshold = value;
|
||||||
|
qCDebug(dcZigbeeCluster()) << "PirUnoccupiedToOccupiedThreshold changed on" << m_node << m_endpoint << this << m_pirOccupiedToUnoccupiedDelay;
|
||||||
|
emit pirUnoccupiedToOccupiedThresholdChanged(m_pirUnoccupiedToOccupiedThreshold);
|
||||||
|
} else {
|
||||||
|
qCWarning(dcZigbeeCluster()) << "Failed to convert value from attribute" << m_node << m_endpoint << this << attribute;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -74,13 +74,29 @@ public:
|
|||||||
|
|
||||||
bool occupied() const;
|
bool occupied() const;
|
||||||
|
|
||||||
|
quint16 pirOccupiedToUnoccupiedDelay() const;
|
||||||
|
ZigbeeClusterReply *setPirOccupiedToUnoccupiedDelay(quint16 pirOccupiedToUnoccupiedDelay);
|
||||||
|
|
||||||
|
quint16 pirUnoccupiedToOccupiedDelay() const;
|
||||||
|
ZigbeeClusterReply *setPirUnoccupiedToOccupiedDelay(quint16 pirUnoccupiedToOccupiedDelay);
|
||||||
|
|
||||||
|
quint16 pirUnoccupiedToOccupiedThreshold() const;
|
||||||
|
ZigbeeClusterReply *setPirUnoccupiedToOccupiedThreshold(quint16 pirUnoccupiedToOccupiedThreshold);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_occupied = false;
|
bool m_occupied = false;
|
||||||
|
|
||||||
|
quint16 m_pirOccupiedToUnoccupiedDelay = 0;
|
||||||
|
quint16 m_pirUnoccupiedToOccupiedDelay = 0;
|
||||||
|
quint16 m_pirUnoccupiedToOccupiedThreshold = 0;
|
||||||
|
|
||||||
void setAttribute(const ZigbeeClusterAttribute &attribute) override;
|
void setAttribute(const ZigbeeClusterAttribute &attribute) override;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void occupancyChanged(bool occupied);
|
void occupancyChanged(bool occupied);
|
||||||
|
void pirOccupiedToUnoccupiedDelayChanged(quint16 pirOccupiedToUnoccupiedDelay);
|
||||||
|
void pirUnoccupiedToOccupiedDelayChanged(quint16 pirUnoccupiedToOccupiedDelay);
|
||||||
|
void pirUnoccupiedToOccupiedThresholdChanged(quint16 pirUnoccupiedToOccupiedThreshold);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user