Skip to content

Commit

Permalink
cover actions and properties fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
Илья Титов committed Nov 14, 2023
1 parent 905f7bc commit 97b965f
Show file tree
Hide file tree
Showing 11 changed files with 18 additions and 33 deletions.
4 changes: 2 additions & 2 deletions actions/common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ QByteArray Actions::CoverPosition::request(const QString &, const QVariant &data
if (value > 100)
value = 100;

if (option("invertCover").toBool())
if (!option("invertCover").toBool())
value = 100 - value;

return zclHeader(FC_CLUSTER_SPECIFIC, m_transactionId++, 0x05).append(reinterpret_cast <char*> (&value), sizeof(value));
Expand All @@ -115,7 +115,7 @@ QByteArray Actions::CoverTilt::request(const QString &, const QVariant &data)
if (value > 100)
value = 100;

if (option("invertCover").toBool())
if (!option("invertCover").toBool())
value = 100 - value;

return zclHeader(FC_CLUSTER_SPECIFIC, m_transactionId++, 0x08).append(reinterpret_cast <char*> (&value), sizeof(value));
Expand Down
2 changes: 1 addition & 1 deletion actions/lumi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ QByteArray ActionsLUMI::CoverPosition::request(const QString &, const QVariant &
if (value > 100)
value = 100;

if (option("invertCover").toBool())
if (!option("invertCover").toBool())
value = 100 - value;

value = qToLittleEndian(value);
Expand Down
2 changes: 1 addition & 1 deletion actions/tuya.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ QByteArray ActionsTUYA::CoverMotor::request(const QString &name, const QVariant
if (value > 100)
value = 100;

if (option("invertCover").toBool())
if (!option("invertCover").toBool())
value = 100 - value;

value = qToBigEndian(value);
Expand Down
2 changes: 1 addition & 1 deletion deploy/data/usr/share/homed-zigbee/ikea.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
{
"description": "FYRTUR or KADRILJ Roller Blind",
"modelNames": ["FYRTUR block-out roller blind", "KADRILJ roller blind"],
"properties": ["batteryPercentage", "coverStatus", "coverPosition"],
"properties": ["batteryPercentage", "coverPosition"],
"actions": ["coverStatus", "coverPosition"],
"bindings": ["battery", "pollControl", "cover"],
"reportings": ["batteryPercentage", "coverPosition"],
Expand Down
2 changes: 1 addition & 1 deletion deploy/data/usr/share/homed-zigbee/tuya.json
Original file line number Diff line number Diff line change
Expand Up @@ -713,7 +713,7 @@
{
"description": "TUYA TS130F Cover Relay/Switch",
"modelNames": ["_TZ3000_1dd0d5yi", "_TZ3000_egq7y6pr", "_TZ3000_fccpjz5z", "_TZ3000_fvhunhxb", "_TZ3000_vd43bbfq", "_TZ3000_zirycpws", "_TZ3210_dwytrmda"],
"properties": ["coverStatus", "coverPosition", "tuyaCoverSwitch"],
"properties": ["coverPosition", "tuyaCoverSwitch"],
"actions": ["coverStatus", "coverPosition", "tuyaCoverSwitch"],
"exposes": ["cover", "event", "calibration", "reverse"],
"options": {"event": ["open", "stop", "close"], "calibration": {"boolean": true, "icon": "mdi:swap-horizontal-bold"}, "reverse": {"boolean": true, "icon": "mdi:swap-horizontal-bold"}}
Expand Down
1 change: 0 additions & 1 deletion device.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -462,7 +462,6 @@ void DeviceList::recognizeDevice(const Device &device)
break;

case CLUSTER_WINDOW_COVERING:
it.value()->properties().append(Property(new Properties::CoverStatus));
it.value()->properties().append(Property(new Properties::CoverPosition));
it.value()->actions().append(Action(new Actions::CoverStatus));
it.value()->actions().append(Action(new Actions::CoverPosition));
Expand Down
22 changes: 10 additions & 12 deletions properties/common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,32 +88,30 @@ void Properties::Level::parseAttribte(quint16, quint16 attributeId, const QByteA
m_value = static_cast <quint8> (data.at(0));
}

void Properties::CoverStatus::parseAttribte(quint16, quint16 attributeId, const QByteArray &data)
{
if (attributeId != 0x0008)
return;

m_value = static_cast <quint8> (option("invertCover").toBool() ? 100 - data.at(0) : data.at(0)) ? "open" : "closed";
}

void Properties::CoverPosition::parseAttribte(quint16, quint16 attributeId, const QByteArray &data)
{
qint8 value = static_cast <quint8> (option("invertCover").toBool() ? 100 - data.at(0) : data.at(0));
QMap <QString, QVariant> map;
qint8 value = static_cast <quint8> (option("invertCover").toBool() ? data.at(0) : 100 - data.at(0));

if (attributeId != 0x0008 || value == meta().value("position", 0xFF).toInt())
return;

m_value = value;
map.insert("cover", value ? "open" : "closed");
map.insert("position", value);
m_value = map;
}

void Properties::CoverTilt::parseAttribte(quint16, quint16 attributeId, const QByteArray &data)
{
qint8 value = static_cast <quint8> (option("invertCover").toBool() ? 100 - data.at(0) : data.at(0));
QMap <QString, QVariant> map;
qint8 value = static_cast <quint8> (option("invertCover").toBool() ? data.at(0) : 100 - data.at(0));

if (attributeId != 0x0009 || value == meta().value("tilt", 0xFF).toInt())
return;

m_value = static_cast <quint8> (option("invertCover").toBool() ? 100 - data.at(0) : data.at(0));
map.insert("cover", value ? "open" : "closed");
map.insert("tilt", value);
m_value = map;
}

void Properties::ColorHS::parseAttribte(quint16, quint16 attributeId, const QByteArray &data)
Expand Down
10 changes: 0 additions & 10 deletions properties/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,16 +86,6 @@ namespace Properties

};

class CoverStatus : public PropertyObject
{

public:

CoverStatus(void) : PropertyObject("cover", CLUSTER_WINDOW_COVERING) {}
void parseAttribte(quint16 clusterId, quint16 attributeId, const QByteArray &data) override;

};

class CoverPosition : public PropertyObject
{

Expand Down
3 changes: 1 addition & 2 deletions properties/lumi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -443,12 +443,11 @@ void PropertiesLUMI::Cover::parseAttribte(quint16, quint16 attributeId, const QB
memcpy(&value, data.constData(), data.length());
value = round(qFromLittleEndian(value));

if (option("invertCover").toBool())
if (!option("invertCover").toBool())
value = 100 - value;

map.insert("cover", value ? "open" : "closed");
map.insert("position", value);

m_value = map;
}

Expand Down
2 changes: 1 addition & 1 deletion properties/tuya.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ void PropertiesTUYA::CoverMotor::update(quint8 dataPoint, const QVariant &data)
case 0x02:
case 0x03:
{
quint8 value = static_cast <quint8> (option("invertCover").toBool() ? 100 - data.toInt() : data.toInt());
quint8 value = static_cast <quint8> (option("invertCover").toBool() ? data.toInt() : 100 - data.toInt());

map.insert("cover", value ? "open" : "closed");
map.insert("position", static_cast <quint8> (value));
Expand Down
1 change: 0 additions & 1 deletion property.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ void PropertyObject::registerMetaTypes(void)
qRegisterMetaType <Properties::SwitchType> ("switchTypeProperty");
qRegisterMetaType <Properties::SwitchMode> ("switchModeProperty");
qRegisterMetaType <Properties::Level> ("levelProperty");
qRegisterMetaType <Properties::CoverStatus> ("coverStatusProperty");
qRegisterMetaType <Properties::CoverPosition> ("coverPositionProperty");
qRegisterMetaType <Properties::CoverTilt> ("coverTiltProperty");
qRegisterMetaType <Properties::ColorHS> ("colorHSProperty");
Expand Down

0 comments on commit 97b965f

Please sign in to comment.