Implement timeout settings for occupancy sensing cluster
parent
a70afb965d
commit
4141de2200
|
|
@ -41,6 +41,48 @@ bool ZigbeeClusterOccupancySensing::occupied() const
|
|||
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)
|
||||
{
|
||||
ZigbeeCluster::setAttribute(attribute);
|
||||
|
|
@ -56,5 +98,35 @@ void ZigbeeClusterOccupancySensing::setAttribute(const ZigbeeClusterAttribute &a
|
|||
} else {
|
||||
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;
|
||||
|
||||
quint16 pirOccupiedToUnoccupiedDelay() const;
|
||||
ZigbeeClusterReply *setPirOccupiedToUnoccupiedDelay(quint16 pirOccupiedToUnoccupiedDelay);
|
||||
|
||||
quint16 pirUnoccupiedToOccupiedDelay() const;
|
||||
ZigbeeClusterReply *setPirUnoccupiedToOccupiedDelay(quint16 pirUnoccupiedToOccupiedDelay);
|
||||
|
||||
quint16 pirUnoccupiedToOccupiedThreshold() const;
|
||||
ZigbeeClusterReply *setPirUnoccupiedToOccupiedThreshold(quint16 pirUnoccupiedToOccupiedThreshold);
|
||||
|
||||
private:
|
||||
bool m_occupied = false;
|
||||
|
||||
quint16 m_pirOccupiedToUnoccupiedDelay = 0;
|
||||
quint16 m_pirUnoccupiedToOccupiedDelay = 0;
|
||||
quint16 m_pirUnoccupiedToOccupiedThreshold = 0;
|
||||
|
||||
void setAttribute(const ZigbeeClusterAttribute &attribute) override;
|
||||
|
||||
signals:
|
||||
void occupancyChanged(bool occupied);
|
||||
void pirOccupiedToUnoccupiedDelayChanged(quint16 pirOccupiedToUnoccupiedDelay);
|
||||
void pirUnoccupiedToOccupiedDelayChanged(quint16 pirUnoccupiedToOccupiedDelay);
|
||||
void pirUnoccupiedToOccupiedThresholdChanged(quint16 pirUnoccupiedToOccupiedThreshold);
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue