Skip to content

Commit 494bd13

Browse files
authored
Implement zigbee2mqtt protocol (#1024)
* Option to disable lamps in HA wizard * Fix CodeQL * Option to disable API for MQTT * Add global MQTT communication signals * Zigbee2mqtt driver is implemented * Zigbee2mqtt: more accurate synchronization * Zigbee2mqtt: remove unnecessary subscription * Zigbee2mqtt: improved synchronization * Zigbee2mqtt: fix power off lights on exit * Zigbee2mqtt: fix false 200ms communication timeout * Zigbee2mqtt: remove synchronization, FOLLOW OUR WIKI because we switched to our zigbee2mqtt fork for better performance * Zigbee2mqtt: remove dynamic brightness to reduce communication load * HomeAssistant: remove dynamic brightness to reduce communication load * Zigbee2mqtt: reset lamp last set brightness when user changes settings * Zigbee2mqtt: alternative reimplementation of dynamic brightness * Update license
1 parent 1ce4c3a commit 494bd13

File tree

206 files changed

+890
-215
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

206 files changed

+890
-215
lines changed

Diff for: LICENSE

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2020-2024 awawa-dev
3+
Copyright (c) 2020-2025 awawa-dev
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

Diff for: cmake/installers.cmake

+1-2
Original file line numberDiff line numberDiff line change
@@ -347,8 +347,7 @@ macro(DeployUnix TARGET)
347347
"libdl"
348348
"libexpat"
349349
"libfontconfig"
350-
"libgcc_s"
351-
"libgpg-error"
350+
"libgcc_s"
352351
"libm"
353352
"libpthread"
354353
"librt"

Diff for: include/base/AutomaticToneMapping.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
*
33
* MIT License
44
*
5-
* Copyright (c) 2020-2024 awawa-dev
5+
* Copyright (c) 2020-2025 awawa-dev
66
*
77
* Project homesite: https://github.com/awawa-dev/HyperHDR
88
*

Diff for: include/base/RawUdpServer.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/bonjour/DiscoveryRecord.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/bonjour/DiscoveryWrapper.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/db/SQLite.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/effects/EffectManufactory.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/flatbuffers/parser/FlatBuffersParser.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
*
33
* MIT License
44
*
5-
* Copyright (c) 2020-2024 awawa-dev
5+
* Copyright (c) 2020-2025 awawa-dev
66
*
77
* Project homesite: https://github.com/awawa-dev/HyperHDR
88
*

Diff for: include/flatbuffers/server/FlatBuffersServerConnection.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
*
33
* MIT License
44
*
5-
* Copyright (c) 2020-2024 awawa-dev
5+
* Copyright (c) 2020-2025 awawa-dev
66
*
77
* Project homesite: https://github.com/awawa-dev/HyperHDR
88
*

Diff for: include/grabber/windows/DX/PixelShaderHyperHDR.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
*
33
* MIT License
44
*
5-
* Copyright (c) 2020-2024 awawa-dev
5+
* Copyright (c) 2020-2025 awawa-dev
66
*
77
* Project homesite: https://github.com/awawa-dev/HyperHDR
88
*

Diff for: include/grabber/windows/DX/VertexShaderHyperHDR.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
*
33
* MIT License
44
*
5-
* Copyright (c) 2020-2024 awawa-dev
5+
* Copyright (c) 2020-2025 awawa-dev
66
*
77
* Project homesite: https://github.com/awawa-dev/HyperHDR
88
*

Diff for: include/image/MemoryBuffer.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/led-drivers/LedDeviceManufactory.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/led-drivers/net/DriverNetHomeAssistant.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class DriverNetHomeAssistant : public LedDevice
2222
QString homeAssistantHost;
2323
QString longLivedAccessToken;
2424
int transition;
25-
int constantBrightness;
25+
int constantBrightness = 255;
2626
bool restoreOriginalState;
2727

2828
std::list<HomeAssistantLamp> lamps;
@@ -34,6 +34,7 @@ class DriverNetHomeAssistant : public LedDevice
3434

3535
QString name;
3636
Mode colorModel;
37+
int currentBrightness = 255;
3738

3839
struct
3940
{
@@ -63,6 +64,7 @@ class DriverNetHomeAssistant : public LedDevice
6364
HomeAssistantInstance _haInstance;
6465

6566
std::unique_ptr<ProviderRestApi> _restApi;
67+
long long _lastUpdate;
6668

6769
static bool isRegistered;
6870
};

Diff for: include/led-drivers/net/DriverNetZigbee2mqtt.h

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#pragma once
2+
3+
#ifndef PCH_ENABLED
4+
#include <QJsonObject>
5+
#include <QJsonArray>
6+
#include <memory>
7+
#include <list>
8+
#include <atomic>
9+
#include <chrono>
10+
#endif
11+
12+
#include <led-drivers/LedDevice.h>
13+
#include <linalg.h>
14+
15+
class DriverNetZigbee2mqtt : public LedDevice
16+
{
17+
Q_OBJECT
18+
19+
struct Zigbee2mqttLamp;
20+
21+
struct Zigbee2mqttInstance
22+
{
23+
int transition;
24+
int constantBrightness = 255;
25+
26+
std::list<Zigbee2mqttLamp> lamps;
27+
};
28+
29+
struct Zigbee2mqttLamp
30+
{
31+
enum Mode { RGB = 0, HSV };
32+
33+
QString name;
34+
Mode colorModel;
35+
int currentBrightness = 255;
36+
};
37+
38+
public:
39+
explicit DriverNetZigbee2mqtt(const QJsonObject& deviceConfig);
40+
static LedDevice* construct(const QJsonObject& deviceConfig);
41+
42+
QJsonObject discover(const QJsonObject& params) override;
43+
44+
void identify(const QJsonObject& params) override;
45+
46+
public slots:
47+
void handlerSignalMqttReceived(QString topic, QString payload);
48+
49+
protected:
50+
bool powerOn() override;
51+
bool powerOff() override;
52+
53+
private:
54+
bool init(const QJsonObject& deviceConfig) override;
55+
int write(const std::vector<ColorRgb>& ledValues) override;
56+
bool powerOnOff(bool isOn);
57+
58+
Zigbee2mqttInstance _zigInstance;
59+
std::atomic<bool> _discoveryFinished;
60+
int _timeLogger;
61+
QString _discoveryMessage;
62+
int _mqttId;
63+
long long _lastUpdate;
64+
65+
static int mqttId;
66+
static bool isRegistered;
67+
};

Diff for: include/led-drivers/serial/EspTools.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/led-drivers/spi/DriverSpiHD108.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/led-strip/ChannelCalibration.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/led-strip/ColorCalibration.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/led-strip/LedCalibration.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/lut-calibrator/BestResult.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/lut-calibrator/BoardUtils.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/lut-calibrator/CalibrationWorker.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/lut-calibrator/CapturedColor.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/lut-calibrator/ColorSpace.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/lut-calibrator/LutCalibrator.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/lut-calibrator/YuvConverter.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/mqtt/mqtt.h

+9
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
#include <QSet>
55
#include <QJsonDocument>
66
#include <QTimer>
7+
#include <QStringList>
8+
#include <map>
79
#endif
810

911
#include <utils/Logger.h>
@@ -28,6 +30,10 @@ public slots:
2830

2931
void handleSettingsUpdate(settings::type type, const QJsonDocument& config);
3032

33+
void handleSignalMqttSubscribe(bool subscribe, QString topic);
34+
void handleSignalMqttPublish(QString topic, QString payload);
35+
void handleSignalMqttLastWill(QString id, QStringList pairs);
36+
3137
private slots:
3238
void connected();
3339
void error(const QMQTT::ClientError error);
@@ -56,6 +62,9 @@ private slots:
5662
QTimer* _retryTimer;
5763
bool _initialized;
5864
QJsonArray _resultArray;
65+
bool _disableApiAccess;
66+
67+
std::map<QString, QStringList> _lastWill;
5968

6069
Logger* _log;
6170
QMQTT::Client* _clientInstance;

Diff for: include/proto-nano-server/ProtoNanoClientConnection.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
*
33
* MIT License
44
*
5-
* Copyright (c) 2020-2024 awawa-dev
5+
* Copyright (c) 2020-2025 awawa-dev
66
*
77
* Project homesite: https://github.com/awawa-dev/HyperHDR
88
*

Diff for: include/suspend-handler/SuspendHandlerDummy.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/suspend-handler/SuspendHandlerLinux.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

Diff for: include/suspend-handler/SuspendHandlerMacOS.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* MIT License
66
*
7-
* Copyright (c) 2020-2024 awawa-dev
7+
* Copyright (c) 2020-2025 awawa-dev
88
*
99
* Project homesite: https://github.com/awawa-dev/HyperHDR
1010
*

0 commit comments

Comments
 (0)