diff --git a/yeelight/ssdp.cpp b/yeelight/ssdp.cpp
deleted file mode 100644
index 5e5e8a12..00000000
--- a/yeelight/ssdp.cpp
+++ /dev/null
@@ -1,183 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-*
-* Copyright 2013 - 2020, nymea GmbH
-* Contact: contact@nymea.io
-*
-* This file is part of nymea.
-* This project including source code and documentation is protected by
-* copyright law, and remains the property of nymea GmbH. All rights, including
-* reproduction, publication, editing and translation, are reserved. The use of
-* this project is subject to the terms of a license agreement to be concluded
-* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
-* under https://nymea.io/license
-*
-* GNU Lesser General Public License Usage
-* Alternatively, this project may be redistributed and/or modified under the
-* terms of the GNU Lesser General Public License as published by the Free
-* Software Foundation; version 3. This project is distributed in the hope that
-* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
-* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public License
-* along with this project. If not, see .
-*
-* For any further details and any questions please contact us under
-* contact@nymea.io or see our FAQ/Licensing Information on
-* https://nymea.io/license/faq
-*
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include "ssdp.h"
-#include "extern-plugininfo.h"
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-Ssdp::Ssdp(QObject *parent) : QObject(parent)
-{
-
-}
-
-Ssdp::~Ssdp()
-{
- if (m_socket) {
- m_socket->waitForBytesWritten(1000);
- m_socket->close();
- }
-}
-
-bool Ssdp::enable()
-{
- // Clean up
- if (m_socket) {
- delete m_socket;
- m_socket = nullptr;
- }
-
- // Bind udp socket and join multicast group
- m_socket = new QUdpSocket(this);
- m_socket2 = new QUdpSocket(this);
- m_port = 1982;
- m_host = QHostAddress("239.255.255.250");
-
- m_socket->setSocketOption(QAbstractSocket::MulticastTtlOption,QVariant(1));
- m_socket->setSocketOption(QAbstractSocket::MulticastLoopbackOption,QVariant(1));
-
- if(!m_socket->bind(QHostAddress::AnyIPv4, m_port, QUdpSocket::ShareAddress)){
- qCWarning(dcYeelight()) << "could not bind to port" << m_port;
- m_available = false;
- delete m_socket;
- m_socket = nullptr;
- return false;
- }
-
- if(!m_socket2->bind(QHostAddress::AnyIPv4, 34343, QUdpSocket::ShareAddress)){
- qCWarning(dcYeelight()) << "could not bind to port" << 34343;
- delete m_socket2;
- m_socket2 = nullptr;
- return false;
- }
-
- if(!m_socket->joinMulticastGroup(m_host)){
- qCWarning(dcYeelight()) << "could not join multicast group" << m_host;
- m_available = false;
- delete m_socket;
- m_socket = nullptr;
- return false;
- }
- connect(m_socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(error(QAbstractSocket::SocketError)));
- connect(m_socket, &QUdpSocket::readyRead, this, &Ssdp::readData);
- connect(m_socket2, &QUdpSocket::readyRead, this, &Ssdp::readData2);
- return true;
-}
-
-void Ssdp::discover()
-{
- QByteArray searchMessage = QByteArray("M-SEARCH * HTTP/1.1\r\n"
- "HOST: 239.255.255.250:1982\r\n"
- "MAN: \"ssdp:discover\"\r\n"
- "ST: wifi_bulb\r\n");
- m_socket2->writeDatagram(searchMessage, m_host, m_port);
-}
-
-
-void Ssdp::error(QAbstractSocket::SocketError error)
-{
- qCWarning(dcYeelight()) << "socket error:" << error << m_socket->errorString();
-}
-
-void Ssdp::readData()
-{
- QByteArray data;
- quint16 port;
- QHostAddress hostAddress;
- QUrl location;
- int id;
- QString model;
-
- // read the answere from the multicast
- while (m_socket->hasPendingDatagrams()) {
- data.resize(m_socket->pendingDatagramSize());
- m_socket->readDatagram(data.data(), data.size(), &hostAddress, &port);
- }
- qCDebug(dcYeelight())<< "SSDP message received " << data;
-
- if (data.contains("NOTIFY") && !QNetworkInterface::allAddresses().contains(hostAddress)) {
- return;
- }
-
- // if the data contains the HTTP OK header...
- if (data.contains("HTTP/1.1 200 OK")) {
- const QStringList lines = QString(data).split("\r\n");
- foreach (const QString& line, lines) {
- int separatorIndex = line.indexOf(':');
- QString key = line.left(separatorIndex).toUpper();
- QString value = line.mid(separatorIndex+1).trimmed();
-
- if (key.contains("Location")) {
- location = QUrl(value);
- } else if (key.contains("id")) {
- id = value.toUInt();
- } else if (key.contains("model")) {
-
- }
- }
- emit discovered(location.host(), location.port(), id, model);
- }
-}
-
-void Ssdp::readData2()
-{
- QByteArray data;
- quint16 port;
- QHostAddress hostAddress;
-
- // read the answere from the multicast
- while (m_socket->hasPendingDatagrams()) {
- data.resize(m_socket->pendingDatagramSize());
- m_socket->readDatagram(data.data(), data.size(), &hostAddress, &port);
- }
- qCDebug(dcYeelight())<< "SSDP message received " << data;
-}
-
-
-bool Ssdp::disable()
-{
- if (!m_socket) {
- return false;
- }
-
- m_socket->waitForBytesWritten();
- m_socket->close();
- delete m_socket;
- m_socket = nullptr;
-
- m_notificationTimer->stop();
- return true;
-}
-
diff --git a/yeelight/ssdp.h b/yeelight/ssdp.h
deleted file mode 100644
index 31f1a2cb..00000000
--- a/yeelight/ssdp.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-*
-* Copyright 2013 - 2020, nymea GmbH
-* Contact: contact@nymea.io
-*
-* This file is part of nymea.
-* This project including source code and documentation is protected by
-* copyright law, and remains the property of nymea GmbH. All rights, including
-* reproduction, publication, editing and translation, are reserved. The use of
-* this project is subject to the terms of a license agreement to be concluded
-* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
-* under https://nymea.io/license
-*
-* GNU Lesser General Public License Usage
-* Alternatively, this project may be redistributed and/or modified under the
-* terms of the GNU Lesser General Public License as published by the Free
-* Software Foundation; version 3. This project is distributed in the hope that
-* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
-* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public License
-* along with this project. If not, see .
-*
-* For any further details and any questions please contact us under
-* contact@nymea.io or see our FAQ/Licensing Information on
-* https://nymea.io/license/faq
-*
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#ifndef SSDP_H
-#define SSDP_H
-
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-class Ssdp : public QObject
-{
- Q_OBJECT
-public:
- explicit Ssdp(QObject *parent = nullptr);
- ~Ssdp();
- bool enable();
- void discover();
- bool disable();
-private:
- QUdpSocket *m_socket = nullptr;
- QUdpSocket *m_socket2 = nullptr;
- QHostAddress m_host;
- quint16 m_port;
-
- QTimer *m_notificationTimer = nullptr;
-
- QNetworkAccessManager *m_networkAccessManager = nullptr;
-
- //QList m_discoverRequests;
- // QHash m_informationRequestList;
-
- bool m_available = false;
- bool m_enabled = false;
-
-signals:
- void discovered(const QString &address, int port, int id, const QString &model);
-
-private slots:
- void error(QAbstractSocket::SocketError error);
- void readData();
- void readData2();
-};
-
-#endif // SSDP_H
diff --git a/yeelight/yeelight.cpp b/yeelight/yeelight.cpp
deleted file mode 100644
index d09ae55d..00000000
--- a/yeelight/yeelight.cpp
+++ /dev/null
@@ -1,460 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-*
-* Copyright 2013 - 2020, nymea GmbH
-* Contact: contact@nymea.io
-*
-* This file is part of nymea.
-* This project including source code and documentation is protected by
-* copyright law, and remains the property of nymea GmbH. All rights, including
-* reproduction, publication, editing and translation, are reserved. The use of
-* this project is subject to the terms of a license agreement to be concluded
-* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
-* under https://nymea.io/license
-*
-* GNU Lesser General Public License Usage
-* Alternatively, this project may be redistributed and/or modified under the
-* terms of the GNU Lesser General Public License as published by the Free
-* Software Foundation; version 3. This project is distributed in the hope that
-* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
-* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public License
-* along with this project. If not, see .
-*
-* For any further details and any questions please contact us under
-* contact@nymea.io or see our FAQ/Licensing Information on
-* https://nymea.io/license/faq
-*
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include "yeelight.h"
-#include "extern-plugininfo.h"
-
-#include
-#include
-#include
-
-#include
-#include
-
-Yeelight::Yeelight(NetworkAccessManager *networkManager, const QHostAddress &address, quint16 port, QObject *parent) :
- QObject(parent),
- m_address(address),
- m_port(port),
- m_networkManager(networkManager)
-{
- m_socket = new QTcpSocket(this);
- connect(m_socket, &QTcpSocket::stateChanged, this, &Yeelight::onStateChanged);
- connect(m_socket, &QTcpSocket::readyRead, this, &Yeelight::onReadyRead);
- m_socket->connectToHost(address, port);
-
- m_reconnectTimer = new QTimer(this);
- m_reconnectTimer->setSingleShot(true);
- connect(m_reconnectTimer, &QTimer::timeout, this, &Yeelight::onReconnectTimer);
-}
-
-bool Yeelight::isConnected()
-{
- return m_socket->isOpen();
-}
-
-void Yeelight::connectDevice()
-{
- m_socket->connectToHost(m_address, m_port);
-}
-
-
-int Yeelight::getParam(QList properties)
-{
- int requestId = static_cast(QRandomGenerator::global()->generate());
- QJsonDocument doc;
- QJsonObject obj;
- obj["id"] = requestId;
- obj["method"] = "get_prop";
- QJsonArray params;
- m_propertyRequests.insert(requestId, properties);
-
- foreach (YeelightProperty property, properties) {
- switch (property) {
- case YeelightProperty::Ct:
- params.append("ct");
- break;
- case YeelightProperty::Power:
- params.append("power");
- break;
- case YeelightProperty::Bright:
- params.append("bright");
- break;
- case YeelightProperty::Hue:
- params.append("hue");
- break;
- case YeelightProperty::Rgb:
- params.append("rgb");
- break;
- case YeelightProperty::Sat:
- params.append("sat");
- break;
- case YeelightProperty::Name:
- params.append("name");
- break;
- case YeelightProperty::BgCt:
- params.append("bg_ct");
- break;
- case YeelightProperty::NlBr:
- params.append("nl_br");
- break;
- case YeelightProperty::BgHue:
- params.append("bg_hue");
- break;
- case YeelightProperty::BgRgb:
- params.append("bg_rgb");
- break;
- case YeelightProperty::BgSat:
- params.append("bg_sat");
- break;
- case YeelightProperty::BgLmode:
- params.append("bg_lmode");
- break;
- case YeelightProperty::BgPower:
- params.append("bg_power");
- break;
- case YeelightProperty::Flowing:
- params.append("flowing");
- break;
- case YeelightProperty::MusicOn:
- params.append("music_on");
- break;
- case YeelightProperty::BgBright:
- params.append("bg_bright");
- break;
- case YeelightProperty::DelayOff:
- params.append("delay_off");
- break;
- case YeelightProperty::BgFlowing:
- params.append("bg_flowing");
- break;
- case YeelightProperty::ColorMode:
- params.append("color_mode");
- break;
- case YeelightProperty::ActiveMode:
- params.append("active_mode");
- break;
- case YeelightProperty::FlowParams:
- params.append("flow_params");
- break;
- case YeelightProperty::BgFlowParams:
- params.append("bg_flow_params");
- break;
- }
- }
-
- QTimer::singleShot(10000, this, [requestId, this]{m_propertyRequests.remove(requestId);});
- obj["params"] = params;
- doc.setObject(obj);
- //qCDebug(dcYeelight()) << "Sending request" << doc.toJson();
- m_socket->write(doc.toJson() + "\r\n");
- return requestId;
-}
-
-int Yeelight::setName(const QString &name)
-{
- int requestId = static_cast(QRandomGenerator::global()->generate());
- QJsonDocument doc;
- QJsonObject obj;
- obj["id"] = requestId;
- obj["method"] = "set_name";
- QJsonArray params;
- params.append(name);
- obj["params"] = params;
- doc.setObject(obj);
- //qCDebug(dcYeelight()) << "Sending request" << doc.toJson();
- m_socket->write(doc.toJson() + "\r\n");
- return requestId;
-}
-
-int Yeelight::setColorTemperature(int mirad, int msFadeTime)
-{
- int requestId = static_cast(QRandomGenerator::global()->generate());
- QJsonDocument doc;
- QJsonObject obj;
- obj["id"] = requestId;
- obj["method"] = "set_ct_abx";
- QJsonArray params;
- params.append(mirad);
- params.append("smooth");
- params.append(msFadeTime);
- obj["params"] = params;
- doc.setObject(obj);
- //qCDebug(dcYeelight()) << "Sending request" << doc.toJson();
- m_socket->write(doc.toJson() + "\r\n");
- return requestId;
-}
-
-int Yeelight::setRgb(QRgb color, int msFadeTime)
-{
- int requestId = static_cast(QRandomGenerator::global()->generate());
- QJsonDocument doc;
- QJsonObject obj;
- obj["id"] = requestId;
- obj["method"] = "set_rgb";
- QJsonArray params;
- params.append(static_cast(color & 0x00ffffff));
- params.append("smooth");
- params.append(msFadeTime);
- obj["params"] = params;
- doc.setObject(obj);
- //qCDebug(dcYeelight()) << "Sending request" << doc.toJson();
- m_socket->write(doc.toJson() + "\r\n");
- return requestId;
-}
-
-int Yeelight::setBrightness(int percentage, int msFadeTime)
-{
- int requestId = static_cast(QRandomGenerator::global()->generate());
- QJsonDocument doc;
- QJsonObject obj;
- obj["id"] = requestId;
- obj["method"] = "set_bright";
- QJsonArray params;
- params.append(percentage);
- params.append("smooth");
- params.append(msFadeTime);
- obj["params"] = params;
- doc.setObject(obj);
- //qCDebug(dcYeelight()) << "Sending request" << doc.toJson();
- m_socket->write(doc.toJson() + "\r\n");
- return requestId;
-}
-
-int Yeelight::setPower(bool power, int msFadeTime)
-{
- int requestId = static_cast(QRandomGenerator::global()->generate());
- QJsonDocument doc;
- QJsonObject obj;
- obj["id"] = requestId;
- obj["method"] = "set_power";
- QJsonArray params;
- if(power) {
- params.append("on");
- } else {
- params.append("off");
- }
- params.append("smooth");
- params.append(msFadeTime);
- obj["params"] = params;
- doc.setObject(obj);
- //qCDebug(dcYeelight()) << "Sending request" << doc.toJson();
- m_socket->write(doc.toJson() + "\r\n");
- return requestId;
-}
-
-int Yeelight::setDefault()
-{
- int requestId = static_cast(QRandomGenerator::global()->generate());
- QJsonDocument doc;
- QJsonObject obj;
- obj["id"] = requestId;
- obj["method"] = "set_default";
- QJsonArray params;
- obj["params"] = params;
- doc.setObject(obj);
- //qCDebug(dcYeelight()) << "Sending request" << doc.toJson();
- m_socket->write(doc.toJson() + "\r\n");
- return requestId;
-}
-
-int Yeelight::startColorFlow()
-{
- int requestId = static_cast(QRandomGenerator::global()->generate());
- QJsonDocument doc;
- QJsonObject obj;
- obj["id"] = requestId;
- obj["method"] = "start_cf";
- QJsonArray params;
- params.append(0); //0 means infinite loop on the state changing
- params.append(0); //LED recover to the state before the color flow started
- params.append("2000, 1, 255, 50, 2000, 1, 5000, 50, 2000, 1, 6000, 50"); //Colors
- obj["params"] = params;
- doc.setObject(obj);
- qCDebug(dcYeelight()) << "Sending request" << doc.toJson();
- m_socket->write(doc.toJson() + "\r\n");
- return requestId;
-}
-
-int Yeelight::stopColorFlow()
-{
- int requestId = static_cast(QRandomGenerator::global()->generate());
- QJsonDocument doc;
- QJsonObject obj;
- obj["id"] = requestId;
- obj["method"] = "stop_cf";
- QJsonArray params;
- obj["params"] = params;
- doc.setObject(obj);
- qCDebug(dcYeelight()) << "Sending request" << doc.toJson();
- m_socket->write(doc.toJson() + "\r\n");
- return requestId;
-}
-
-int Yeelight::flash()
-{
- int requestId = static_cast(QRandomGenerator::global()->generate());
- QJsonDocument doc;
- QJsonObject obj;
- obj["id"] = requestId;
- obj["method"] = "start_cf";
- QJsonArray params;
- params.append(4 * 3);
- params.append(0); //LED recover to the state before the color flow started
- params.append("50, 2, 6500, 100, 500, 7, 6500, 1, 50, 2, 6500, 1, 500, 7, 6500, 1");
- obj["params"] = params;
- doc.setObject(obj);
- qCDebug(dcYeelight()) << "Sending request" << doc.toJson();
- m_socket->write(doc.toJson() + "\r\n");
- return requestId;
-}
-
-int Yeelight::flash15s()
-{
- int requestId = static_cast(QRandomGenerator::global()->generate());
- QJsonDocument doc;
- QJsonObject obj;
- obj["id"] = requestId;
- obj["method"] = "start_cf";
- QJsonArray params;
- params.append(4 * 15);
- params.append(0); //LED recover to the state before the color flow started
- params.append("50, 2, 6500, 100, 500, 7, 6500, 1, 50, 2, 6500, 1, 500, 7, 6500, 1");
- obj["params"] = params;
- doc.setObject(obj);
- qCDebug(dcYeelight()) << "Sending request" << doc.toJson();
- m_socket->write(doc.toJson() + "\r\n");
- return requestId;
-}
-
-void Yeelight::onStateChanged(QAbstractSocket::SocketState state)
-{
- switch (state) {
- case QAbstractSocket::SocketState::ConnectedState:
- emit connectionChanged(true);
- break;
- case QAbstractSocket::SocketState::UnconnectedState:
- m_reconnectTimer->start(10 * 1000);
- emit connectionChanged(false);
- break;
- default:
- emit connectionChanged(false);
- break;
- }
-}
-
-void Yeelight::onReadyRead()
-{
- QByteArray data = m_socket->readAll();
- //qCDebug(dcYeelight()) << "Message received" << data;
-
- QJsonParseError error;
- QJsonDocument doc = QJsonDocument::fromJson(data, &error);
- if (error.error != QJsonParseError::NoError) {
- qDebug(dcYeelight()) << "Recieved invalide JSON object";
- return;
- }
- QVariantMap map = doc.toVariant().toMap();
- if (map.contains("error")) {
- if(map.contains("id")) {
- emit requestExecuted(map["id"].toInt(), false);
- }
- QVariantMap error = map["error"].toMap();
- int code = error["code"].toInt();
- QString message = error["message"].toString();
- qCWarning(dcYeelight()) << "Error received: Code" << code << message;
- emit errorReceived(code, message);
-
- }else if (map.contains("method")) {
- if (map["method"] == "props") {
- QVariantMap params = map["params"].toMap();
- if (params.contains("power")) {
- emit powerNotificationReceived((params["power"].toString() == "on"));
- }
- if (params.contains("bright")) {
- emit brightnessNotificationReceived(params["bright"].toInt());
- }
- if (params.contains("ct")) {
- emit colorTemperatureNotificationReceived(params["ct"].toInt());
- }
- if (params.contains("rgb")) {
- emit rgbNotificationReceived(QRgb(params["rgb"].toInt()));
- }
- if (params.contains("hue")) {
- emit hueNotificationReceived(params["hue"].toInt());
- }
- if (params.contains("name")) {
- emit nameNotificationReceived(params["name"].toString());
- }
- if (params.contains("color_mode")) {
- emit colorModeNotificationReceived(YeelightColorMode(params["color_mode"].toInt()));
- }
- if (params.contains("sat")) {
- emit saturationNotificationReceived(params["sat"].toInt());
- }
- }
- } else {
- int id = map["id"].toInt();
- QVariantList result = map["result"].toList();
- if ((result.length() == 1)) {
- if (result.first().toString() == "ok") {
- emit requestExecuted(id, true);
- }
- } else {
- if (m_propertyRequests.contains(id)) {
- QList properties = m_propertyRequests.take(id);
- foreach (YeelightProperty property, properties) {
- if (result.isEmpty()){
- qCWarning(dcYeelight()) << "Value count does not match properties" << properties.count();
- break;
- }
- QVariant value = result.takeFirst();
- switch (property) {
- case YeelightProperty::Name:
- emit nameNotificationReceived(value.toString());
- break;
- case YeelightProperty::Ct:
- emit colorTemperatureNotificationReceived(value.toInt());
- break;
- case YeelightProperty::Rgb:
- emit rgbNotificationReceived(QRgb(value.toInt()));
- break;
- case YeelightProperty::Hue:
- emit hueNotificationReceived(value.toInt());
- break;
- case YeelightProperty::Bright:
- emit brightnessNotificationReceived(value.toInt());
- break;
- case YeelightProperty::Power:
- emit powerNotificationReceived((value.toString() == "on"));
- break;
- case YeelightProperty::ColorMode:
- emit colorModeNotificationReceived(YeelightColorMode(value.toInt()));
- break;
- case YeelightProperty::Sat:
- emit saturationNotificationReceived(value.toInt());
- break;
- default:
- qCWarning(dcYeelight()) << "Unhandled Yeelight property";
- }
- }
- }
- }
- }
-}
-
-void Yeelight::onReconnectTimer()
-{
- if(!m_socket->isOpen()) {
- m_socket->connectToHost(m_address, m_port);
- m_reconnectTimer->start(10 * 1000);
- }
-}
-
-
diff --git a/yeelight/yeelight.h b/yeelight/yeelight.h
deleted file mode 100644
index 91290c84..00000000
--- a/yeelight/yeelight.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-*
-* Copyright 2013 - 2020, nymea GmbH
-* Contact: contact@nymea.io
-*
-* This file is part of nymea.
-* This project including source code and documentation is protected by
-* copyright law, and remains the property of nymea GmbH. All rights, including
-* reproduction, publication, editing and translation, are reserved. The use of
-* this project is subject to the terms of a license agreement to be concluded
-* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
-* under https://nymea.io/license
-*
-* GNU Lesser General Public License Usage
-* Alternatively, this project may be redistributed and/or modified under the
-* terms of the GNU Lesser General Public License as published by the Free
-* Software Foundation; version 3. This project is distributed in the hope that
-* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
-* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public License
-* along with this project. If not, see .
-*
-* For any further details and any questions please contact us under
-* contact@nymea.io or see our FAQ/Licensing Information on
-* https://nymea.io/license/faq
-*
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#ifndef YEELIGHT_H
-#define YEELIGHT_H
-
-#include
-#include
-#include
-#include
-
-#include "network/networkaccessmanager.h"
-#include
-
-class Yeelight : public QObject
-{
- Q_OBJECT
-public:
- enum YeelightColorMode {
- RGB = 1,
- ColorTemperature,
- HSV
- };
-
- enum YeelightProperty {
- Power, //on: smart LED is turned on / off: smart LED is turned off
- Bright, //Brightness percentage. Range 1 ~ 100
- Ct, //Color temperature. Range 1700 ~ 6500(k)
- Rgb, //Color. Range 1 ~ 16777215
- Hue, //Hue. Range 0 ~ 359
- Sat, //Saturation. Range 0 ~ 100
- ColorMode, //1: rgb mode / 2: color temperature mode / 3: hsv mode
- Flowing, //0: no flow is running / 1:color flow is running
- DelayOff, //The remaining time of a sleep timer. Range 1 ~ 60 (minutes)
- FlowParams, //Current flow parameters (only meaningful when 'flowing' is 1)
- MusicOn, //1: Music mode is on / 0: Music mode is off
- Name, //The name of the device set by “set_name” command
- BgPower, //Background light power status
- BgFlowing, //Background light is flowing
- BgFlowParams, //Current flow parameters of background light
- BgCt, //Color temperature of background light
- BgLmode, //1: rgb mode / 2: color temperature mode / 3: hsv mode
- BgBright, //Brightness percentage of background light
- BgRgb, //Color of background light
- BgHue, //Hue of background light
- BgSat, //Saturation of background light
- NlBr, //Brightness of night mode light
- ActiveMode //0: daylight mode / 1: moonlight mode (ceiling light only)
- };
-
- explicit Yeelight(NetworkAccessManager *networkManager, const QHostAddress &address, quint16 port = 55443, QObject *parent = nullptr);
- bool isConnected();
- void connectDevice();
-
- int getParam(QList properties);
- int setName(const QString &name);
- int setColorTemperature(int mirad, int msFadeTime=500);
- int setRgb(QRgb color, int msFadeTime = 500);
- int setBrightness(int percentage, int msFadeTime = 500);
- int setPower(bool power, int msFadeTime = 500);
- int setDefault();
- int startColorFlow();
- int stopColorFlow();
- int flash();
- int flash15s();
-
-private:
- QTimer *m_reconnectTimer = nullptr;
- QTcpSocket *m_socket = nullptr;
- QHostAddress m_address;
- quint16 m_port;
- NetworkAccessManager *m_networkManager = nullptr;
- QHash> m_propertyRequests;
-
-private slots:
- void onStateChanged(QAbstractSocket::SocketState state);
- void onReadyRead();
- void onReconnectTimer();
-
-signals:
- void connectionChanged(bool connected);
- void requestExecuted(int requestId, bool success);
- void errorReceived(int code, const QString &message);
-
- /*
- * Whenever there is state change of smart LED, it will send a notification message
- * to all connected 3rd party devices. This is to make sure all 3rd party devices
- * will get the latest state of the smart LED in time without having to poll the status
- * from time to time.
- */
- void notificationReceived(YeelightProperty property, QVariant value);
- void powerNotificationReceived(bool status);
- void brightnessNotificationReceived(int percentage);
- void colorTemperatureNotificationReceived(int kelvin);
- void rgbNotificationReceived(QRgb rgbColor);
- void hueNotificationReceived(int hueColor);
- void nameNotificationReceived(const QString &name);
- void saturationNotificationReceived(int percentage);
- void colorModeNotificationReceived(YeelightColorMode colorMode);
-};
-#endif // YEELIGHT_H
diff --git a/yeelight/yeelight.png b/yeelight/yeelight.png
deleted file mode 100644
index ad4270a5..00000000
Binary files a/yeelight/yeelight.png and /dev/null differ
diff --git a/yeelight/yeelight.pro b/yeelight/yeelight.pro
deleted file mode 100644
index ecd12541..00000000
--- a/yeelight/yeelight.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-TEMPLATE = aux
-
-OTHER_FILES = integrationpluginyeelight.py \
- integrationpluginyeelight.json