Extend color cluster with color temperature property

pull/10/head
Simon Stürz 2020-11-13 10:36:42 +01:00
parent 008fd0c55b
commit be292a67f6
2 changed files with 31 additions and 5 deletions

View File

@ -213,10 +213,32 @@ ZigbeeClusterReply *ZigbeeClusterColorControl::commandStepColorTemperature(Zigbe
return executeClusterCommand(ZigbeeClusterColorControl::CommandStepColorTemperature, payload);
}
quint16 ZigbeeClusterColorControl::colorTemperatureMireds() const
{
return m_colorTemperatureMireds;
}
void ZigbeeClusterColorControl::setAttribute(const ZigbeeClusterAttribute &attribute)
{
qCDebug(dcZigbeeCluster()) << "Attribute changed" << m_node << m_endpoint << this << static_cast<Attribute>(attribute.id()) << attribute.dataType();
updateOrAddAttribute(attribute);
switch (attribute.id()) {
case AttributeColorTemperatureMireds: {
bool valueOk = false;
quint16 value = attribute.dataType().toUInt16(&valueOk);
if (valueOk) {
m_colorTemperatureMireds = value;
qCDebug(dcZigbeeCluster()) << "Color temperature mired changed on" << m_node << m_endpoint << this << m_colorTemperatureMireds;
emit colorTemperatureMiredsChanged(m_colorTemperatureMireds);
} else {
qCWarning(dcZigbeeCluster()) << "Failed to parse attribute data" << m_node << m_endpoint << this << attribute;
}
break;
}
default:
break;
}
}
void ZigbeeClusterColorControl::processDataIndication(ZigbeeClusterLibrary::Frame frame)

View File

@ -135,7 +135,7 @@ public:
ColorCapabilityXY = 0x08,
ColorCapabilityColorTemperature = 0x10
};
Q_ENUM(ColorCapability)
Q_FLAG(ColorCapability)
Q_DECLARE_FLAGS(ColorCapabilities, ColorCapability)
enum Command {
@ -189,7 +189,7 @@ public:
ColorLoopUpdateTime = 0x04,
ColorLoopUpdateStartHue = 0x08
};
Q_ENUM(ColorLoopUpdate)
Q_FLAG(ColorLoopUpdate)
Q_DECLARE_FLAGS(ColorLoopUpdateFlags, ColorLoopUpdate)
enum ColorLoopAction {
@ -231,7 +231,14 @@ public:
ZigbeeClusterReply *commandMoveColorTemperature(MoveMode moveMode, quint16 rate, quint16 minColorTemperature, quint16 maxColorTemperature);
ZigbeeClusterReply *commandStepColorTemperature(StepMode stepMode, quint16 stepSize, quint16 transitionTime, quint16 minColorTemperature, quint16 maxColorTemperature);
quint16 colorTemperatureMireds() const;
signals:
void colorTemperatureMiredsChanged(quint16 colorTemperatureMireds);
private:
quint16 m_colorTemperatureMireds = 0;
void setAttribute(const ZigbeeClusterAttribute &attribute) override;
protected:
@ -239,7 +246,4 @@ protected:
};
Q_DECLARE_OPERATORS_FOR_FLAGS(ZigbeeClusterColorControl::ColorCapabilities)
Q_DECLARE_OPERATORS_FOR_FLAGS(ZigbeeClusterColorControl::ColorLoopUpdateFlags)
#endif // ZIGBEECLUSTERCOLORCONTROL_H