Skip to content

Commit 27643cb

Browse files
committed
Zigbee2mqtt driver is implemented
1 parent 32e85af commit 27643cb

File tree

11 files changed

+555
-10
lines changed

11 files changed

+555
-10
lines changed

cmake/installers.cmake

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,8 +344,7 @@ macro(DeployUnix TARGET)
344344
"libdl"
345345
"libexpat"
346346
"libfontconfig"
347-
"libgcc_s"
348-
"libgpg-error"
347+
"libgcc_s"
349348
"libm"
350349
"libpthread"
351350
"librt"
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#pragma once
2+
3+
#ifndef PCH_ENABLED
4+
#include <QJsonObject>
5+
#include <QJsonArray>
6+
#include <memory>
7+
#include <list>
8+
#include <atomic>
9+
#endif
10+
11+
#include <led-drivers/LedDevice.h>
12+
#include <linalg.h>
13+
14+
class DriverNetZigbee2mqtt : public LedDevice
15+
{
16+
Q_OBJECT
17+
18+
struct Zigbee2mqttLamp;
19+
20+
struct Zigbee2mqttInstance
21+
{
22+
int transition;
23+
int constantBrightness;
24+
25+
std::list<Zigbee2mqttLamp> lamps;
26+
};
27+
28+
struct Zigbee2mqttLamp
29+
{
30+
enum Mode { RGB = 0, HSV };
31+
32+
QString name;
33+
Mode colorModel;
34+
};
35+
36+
public:
37+
explicit DriverNetZigbee2mqtt(const QJsonObject& deviceConfig);
38+
static LedDevice* construct(const QJsonObject& deviceConfig);
39+
40+
QJsonObject discover(const QJsonObject& params) override;
41+
42+
void identify(const QJsonObject& params) override;
43+
44+
public slots:
45+
void handlerSignalMqttReceived(QString topic, QString payload);
46+
47+
protected:
48+
bool powerOn() override;
49+
bool powerOff() override;
50+
51+
private:
52+
bool init(const QJsonObject& deviceConfig) override;
53+
int write(const std::vector<ColorRgb>& ledValues) override;
54+
bool powerOnOff(bool isOn);
55+
56+
Zigbee2mqttInstance _zigInstance;
57+
std::atomic<bool> _discoveryFinished, _colorsFinished;
58+
int _timeLogger;
59+
QString _discoveryMessage;
60+
61+
static bool isRegistered;
62+
};

include/mqtt/mqtt.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public slots:
2929
void handleSettingsUpdate(settings::type type, const QJsonDocument& config);
3030

3131
void handleSignalMqttSubscribe(bool subscribe, QString topic);
32+
void handleSignalMqttPublish(QString topic, QString payload);
3233

3334
private slots:
3435
void connected();

include/utils/GlobalSignals.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,6 @@ class GlobalSignals : public QObject
103103
void SignalMqttSubscribe(bool subscribe, QString topic);
104104

105105
void SignalMqttReceived(QString topic, QString payload);
106+
107+
void SignalMqttPublish(QString topic, QString payload);
106108
};

sources/led-drivers/LedDeviceSchemas.qrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,6 @@
3939
<file alias="schema-cololight">schemas/schema-cololight.json</file>
4040
<file alias="schema-hyperspi">schemas/schema-hyperspi.json</file>
4141
<file alias="schema-home_assistant">schemas/schema-home_assistant.json</file>
42+
<file alias="schema-zigbee2mqtt">schemas/schema-zigbee2mqtt.json</file>
4243
</qresource>
4344
</RCC>

0 commit comments

Comments
 (0)