moved from qrand to Quuid
This commit is contained in:
parent
837751c06c
commit
f2a401aedf
@ -100,7 +100,7 @@ void IntegrationPluginSma::setupThing(ThingSetupInfo *info)
|
|||||||
connect(sunnyWebBox, &SunnyWebBox::parameterChannelsReceived, this, &IntegrationPluginSma::onParameterChannelsReceived);
|
connect(sunnyWebBox, &SunnyWebBox::parameterChannelsReceived, this, &IntegrationPluginSma::onParameterChannelsReceived);
|
||||||
m_sunnyWebBoxes.insert(thing, sunnyWebBox);
|
m_sunnyWebBoxes.insert(thing, sunnyWebBox);
|
||||||
connect(info, &ThingSetupInfo::aborted, this, [thing, this] { m_sunnyWebBoxes.remove(thing);});
|
connect(info, &ThingSetupInfo::aborted, this, [thing, this] { m_sunnyWebBoxes.remove(thing);});
|
||||||
QUuid requestId = sunnyWebBox->getPlantOverview();
|
QString requestId = sunnyWebBox->getPlantOverview();
|
||||||
m_asyncSetup.insert(requestId, info);
|
m_asyncSetup.insert(requestId, info);
|
||||||
return info->finish(Thing::ThingErrorNoError);
|
return info->finish(Thing::ThingErrorNoError);
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ void IntegrationPluginSma::executeAction(ThingActionInfo *info)
|
|||||||
if (!sunnyWebBox)
|
if (!sunnyWebBox)
|
||||||
return;
|
return;
|
||||||
if (action.actionTypeId() == sunnyWebBoxSearchDevicesActionTypeId) {
|
if (action.actionTypeId() == sunnyWebBoxSearchDevicesActionTypeId) {
|
||||||
QUuid requestId = sunnyWebBox->getDevices();
|
QString requestId = sunnyWebBox->getDevices();
|
||||||
m_asyncActions.insert(requestId, info);
|
m_asyncActions.insert(requestId, info);
|
||||||
connect(info, &ThingActionInfo::aborted, info, [requestId, this] {m_asyncActions.remove(requestId);});
|
connect(info, &ThingActionInfo::aborted, info, [requestId, this] {m_asyncActions.remove(requestId);});
|
||||||
} else {
|
} else {
|
||||||
@ -177,7 +177,7 @@ void IntegrationPluginSma::onRefreshTimer()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntegrationPluginSma::onPlantOverviewReceived(const QUuid &messageId, SunnyWebBox::Overview overview)
|
void IntegrationPluginSma::onPlantOverviewReceived(const QString &messageId, SunnyWebBox::Overview overview)
|
||||||
{
|
{
|
||||||
if (m_asyncSetup.contains(messageId)) {
|
if (m_asyncSetup.contains(messageId)) {
|
||||||
ThingSetupInfo *info = m_asyncSetup.value(messageId);
|
ThingSetupInfo *info = m_asyncSetup.value(messageId);
|
||||||
@ -200,7 +200,7 @@ void IntegrationPluginSma::onPlantOverviewReceived(const QUuid &messageId, Sunny
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntegrationPluginSma::onDevicesReceived(const QUuid &messageId, QList<SunnyWebBox::Device> devices)
|
void IntegrationPluginSma::onDevicesReceived(const QString &messageId, QList<SunnyWebBox::Device> devices)
|
||||||
{
|
{
|
||||||
if (m_asyncActions.contains(messageId)) {
|
if (m_asyncActions.contains(messageId)) {
|
||||||
ThingActionInfo *info = m_asyncActions.value(messageId);
|
ThingActionInfo *info = m_asyncActions.value(messageId);
|
||||||
@ -221,7 +221,7 @@ void IntegrationPluginSma::onDevicesReceived(const QUuid &messageId, QList<Sunny
|
|||||||
emit autoThingsAppeared(descriptors);
|
emit autoThingsAppeared(descriptors);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntegrationPluginSma::onProcessDataReceived(const QUuid &messageId, const QString &deviceKey, const QHash<QString, QVariant> &channels)
|
void IntegrationPluginSma::onProcessDataReceived(const QString &messageId, const QString &deviceKey, const QHash<QString, QVariant> &channels)
|
||||||
{
|
{
|
||||||
Q_UNUSED(messageId)
|
Q_UNUSED(messageId)
|
||||||
Thing *thing = m_sunnyWebBoxes.key(static_cast<SunnyWebBox *>(sender()));
|
Thing *thing = m_sunnyWebBoxes.key(static_cast<SunnyWebBox *>(sender()));
|
||||||
@ -240,7 +240,7 @@ void IntegrationPluginSma::onProcessDataReceived(const QUuid &messageId, const Q
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntegrationPluginSma::onParameterChannelsReceived(const QUuid &messageId, const QString &deviceKey, QStringList parameterChannels)
|
void IntegrationPluginSma::onParameterChannelsReceived(const QString &messageId, const QString &deviceKey, QStringList parameterChannels)
|
||||||
{
|
{
|
||||||
Q_UNUSED(messageId)
|
Q_UNUSED(messageId)
|
||||||
|
|
||||||
|
|||||||
@ -59,16 +59,16 @@ public:
|
|||||||
private slots:
|
private slots:
|
||||||
void onRefreshTimer();
|
void onRefreshTimer();
|
||||||
|
|
||||||
void onPlantOverviewReceived(const QUuid &messageId, SunnyWebBox::Overview overview);
|
void onPlantOverviewReceived(const QString &messageId, SunnyWebBox::Overview overview);
|
||||||
void onDevicesReceived(const QUuid &messageId, QList<SunnyWebBox::Device> devices);
|
void onDevicesReceived(const QString &messageId, QList<SunnyWebBox::Device> devices);
|
||||||
void onProcessDataReceived(const QUuid &messageId, const QString &deviceKey, const QHash<QString, QVariant> &channels);
|
void onProcessDataReceived(const QString &messageId, const QString &deviceKey, const QHash<QString, QVariant> &channels);
|
||||||
void onParameterChannelsReceived(const QUuid &messageId, const QString &deviceKey, QStringList parameterChannels);
|
void onParameterChannelsReceived(const QString &messageId, const QString &deviceKey, QStringList parameterChannels);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PluginTimer *m_refreshTimer = nullptr;
|
PluginTimer *m_refreshTimer = nullptr;
|
||||||
QHash<Thing *, SunnyWebBox *> m_sunnyWebBoxes;
|
QHash<Thing *, SunnyWebBox *> m_sunnyWebBoxes;
|
||||||
QHash<QUuid, ThingSetupInfo *> m_asyncSetup;
|
QHash<QString, ThingSetupInfo *> m_asyncSetup;
|
||||||
QHash<QUuid, ThingActionInfo *> m_asyncActions;
|
QHash<QString, ThingActionInfo *> m_asyncActions;
|
||||||
SunnyWebBoxCommunication *m_sunnyWebBoxCommunication = nullptr;
|
SunnyWebBoxCommunication *m_sunnyWebBoxCommunication = nullptr;
|
||||||
|
|
||||||
SunnyWebBox *createSunnyWebBoxConnection(Thing *thing);
|
SunnyWebBox *createSunnyWebBoxConnection(Thing *thing);
|
||||||
|
|||||||
@ -44,31 +44,31 @@ SunnyWebBox::SunnyWebBox(SunnyWebBoxCommunication *communication, const QHostAdd
|
|||||||
connect(m_communication, &SunnyWebBoxCommunication::messageReceived, this, &SunnyWebBox::onMessageReceived);
|
connect(m_communication, &SunnyWebBoxCommunication::messageReceived, this, &SunnyWebBox::onMessageReceived);
|
||||||
}
|
}
|
||||||
|
|
||||||
QUuid SunnyWebBox::getPlantOverview()
|
QString SunnyWebBox::getPlantOverview()
|
||||||
{
|
{
|
||||||
return m_communication->sendMessage(m_hostAddresss, "GetPlantOverview");
|
return m_communication->sendMessage(m_hostAddresss, "GetPlantOverview");
|
||||||
}
|
}
|
||||||
|
|
||||||
QUuid SunnyWebBox::getDevices()
|
QString SunnyWebBox::getDevices()
|
||||||
{
|
{
|
||||||
return m_communication->sendMessage(m_hostAddresss, "GetDevices");
|
return m_communication->sendMessage(m_hostAddresss, "GetDevices");
|
||||||
}
|
}
|
||||||
|
|
||||||
QUuid SunnyWebBox::getProcessDataChannels(const QString &deviceId)
|
QString SunnyWebBox::getProcessDataChannels(const QString &deviceId)
|
||||||
{
|
{
|
||||||
QJsonObject params;
|
QJsonObject params;
|
||||||
params["device"] = deviceId;
|
params["device"] = deviceId;
|
||||||
return m_communication->sendMessage(m_hostAddresss, "GetProcessDataChannels", params);
|
return m_communication->sendMessage(m_hostAddresss, "GetProcessDataChannels", params);
|
||||||
}
|
}
|
||||||
|
|
||||||
QUuid SunnyWebBox::getProcessData(const QStringList &deviceKeys)
|
QString SunnyWebBox::getProcessData(const QStringList &deviceKeys)
|
||||||
{
|
{
|
||||||
QJsonObject params;
|
QJsonObject params;
|
||||||
params["device"] = deviceKeys.first();
|
params["device"] = deviceKeys.first();
|
||||||
return m_communication->sendMessage(m_hostAddresss, "GetProcessData", params);
|
return m_communication->sendMessage(m_hostAddresss, "GetProcessData", params);
|
||||||
}
|
}
|
||||||
|
|
||||||
QUuid SunnyWebBox::getParameterChannels(const QString &deviceKey)
|
QString SunnyWebBox::getParameterChannels(const QString &deviceKey)
|
||||||
{
|
{
|
||||||
QJsonObject paramsObj;
|
QJsonObject paramsObj;
|
||||||
QJsonArray devicesArray;
|
QJsonArray devicesArray;
|
||||||
@ -79,7 +79,7 @@ QUuid SunnyWebBox::getParameterChannels(const QString &deviceKey)
|
|||||||
return m_communication->sendMessage(m_hostAddresss, "GetParameterChannels", paramsObj);
|
return m_communication->sendMessage(m_hostAddresss, "GetParameterChannels", paramsObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
QUuid SunnyWebBox::getParameters(const QStringList &deviceKeys)
|
QString SunnyWebBox::getParameters(const QStringList &deviceKeys)
|
||||||
{
|
{
|
||||||
QJsonObject paramsObj;
|
QJsonObject paramsObj;
|
||||||
QJsonArray devicesArray;
|
QJsonArray devicesArray;
|
||||||
@ -90,7 +90,7 @@ QUuid SunnyWebBox::getParameters(const QStringList &deviceKeys)
|
|||||||
return m_communication->sendMessage(m_hostAddresss, "GetParameter", paramsObj);
|
return m_communication->sendMessage(m_hostAddresss, "GetParameter", paramsObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
QUuid SunnyWebBox::setParameters(const QString &deviceKey, const QHash<QString, QVariant> &channels)
|
QString SunnyWebBox::setParameters(const QString &deviceKey, const QHash<QString, QVariant> &channels)
|
||||||
{
|
{
|
||||||
QJsonObject paramsObj;
|
QJsonObject paramsObj;
|
||||||
QJsonArray devicesArray;
|
QJsonArray devicesArray;
|
||||||
@ -119,7 +119,7 @@ QHostAddress SunnyWebBox::hostAddress()
|
|||||||
return m_hostAddresss;
|
return m_hostAddresss;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SunnyWebBox::onMessageReceived(const QHostAddress &address, const QUuid &messageId, const QString &messageType, const QVariantMap &result)
|
void SunnyWebBox::onMessageReceived(const QHostAddress &address, const QString &messageId, const QString &messageType, const QVariantMap &result)
|
||||||
{
|
{
|
||||||
if (address != m_hostAddresss) {
|
if (address != m_hostAddresss) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -75,13 +75,13 @@ public:
|
|||||||
|
|
||||||
explicit SunnyWebBox(SunnyWebBoxCommunication *communication, const QHostAddress &hostAddress, QObject *parrent = 0);
|
explicit SunnyWebBox(SunnyWebBoxCommunication *communication, const QHostAddress &hostAddress, QObject *parrent = 0);
|
||||||
|
|
||||||
QUuid getPlantOverview(); // Returns an object with the following plant data: PAC, E-TODAY, E-TOTAL, MODE, ERROR
|
QString getPlantOverview(); // Returns an object with the following plant data: PAC, E-TODAY, E-TOTAL, MODE, ERROR
|
||||||
QUuid getDevices(); //Returns a hierarchical list of all detected plant devices.
|
QString getDevices(); //Returns a hierarchical list of all detected plant devices.
|
||||||
QUuid getProcessDataChannels(const QString &deviceKey); //Returns a list with the meta names of the available process data channels for a particular device type.
|
QString getProcessDataChannels(const QString &deviceKey); //Returns a list with the meta names of the available process data channels for a particular device type.
|
||||||
QUuid getProcessData(const QStringList &deviceKeys); //Returns process data for up to 5 devices per request.
|
QString getProcessData(const QStringList &deviceKeys); //Returns process data for up to 5 devices per request.
|
||||||
QUuid getParameterChannels(const QString &deviceKey); //Returns a list with the meta names of the available parameter channels for a particular device type
|
QString getParameterChannels(const QString &deviceKey); //Returns a list with the meta names of the available parameter channels for a particular device type
|
||||||
QUuid getParameters(const QStringList &deviceKeys); //Returns the parameter values of up to 5 devices
|
QString getParameters(const QStringList &deviceKeys); //Returns the parameter values of up to 5 devices
|
||||||
QUuid setParameters(const QString &deviceKeys, const QHash<QString, QVariant> &channels); //Sets parameter values
|
QString setParameters(const QString &deviceKeys, const QHash<QString, QVariant> &channels); //Sets parameter values
|
||||||
|
|
||||||
void setHostAddress(const QHostAddress &address);
|
void setHostAddress(const QHostAddress &address);
|
||||||
QHostAddress hostAddress();
|
QHostAddress hostAddress();
|
||||||
@ -92,17 +92,17 @@ private:
|
|||||||
SunnyWebBoxCommunication *m_communication = nullptr;
|
SunnyWebBoxCommunication *m_communication = nullptr;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void onMessageReceived(const QHostAddress &address, const QUuid &messageId, const QString &messageType, const QVariantMap &result);
|
void onMessageReceived(const QHostAddress &address, const QString &messageId, const QString &messageType, const QVariantMap &result);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void connectedChanged(bool connected);
|
void connectedChanged(bool connected);
|
||||||
|
|
||||||
void plantOverviewReceived(const QUuid &messageId, Overview overview);
|
void plantOverviewReceived(const QString &messageId, Overview overview);
|
||||||
void devicesReceived(const QUuid &messageId, QList<Device> devices);
|
void devicesReceived(const QString &messageId, QList<Device> devices);
|
||||||
void processDataChannelsReceived(const QUuid &messageId, const QString &deviceKey, QStringList processDataChanels);
|
void processDataChannelsReceived(const QString &messageId, const QString &deviceKey, QStringList processDataChanels);
|
||||||
void processDataReceived(const QUuid &messageId, const QString &deviceKey, const QHash<QString, QVariant> &channels);
|
void processDataReceived(const QString &messageId, const QString &deviceKey, const QHash<QString, QVariant> &channels);
|
||||||
void parameterChannelsReceived(const QUuid &messageId, const QString &deviceKey, QStringList parameterChannels);
|
void parameterChannelsReceived(const QString &messageId, const QString &deviceKey, QStringList parameterChannels);
|
||||||
void parametersReceived(const QUuid &messageId, const QString &deviceKey, const QList<Parameter> ¶meters);
|
void parametersReceived(const QString &messageId, const QString &deviceKey, const QList<Parameter> ¶meters);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SUNNYWEBBOX_H
|
#endif // SUNNYWEBBOX_H
|
||||||
|
|||||||
@ -33,6 +33,7 @@
|
|||||||
|
|
||||||
#include "QJsonDocument"
|
#include "QJsonDocument"
|
||||||
#include "QJsonObject"
|
#include "QJsonObject"
|
||||||
|
#include <QUuid>
|
||||||
|
|
||||||
SunnyWebBoxCommunication::SunnyWebBoxCommunication(QObject *parent) : QObject(parent)
|
SunnyWebBoxCommunication::SunnyWebBoxCommunication(QObject *parent) : QObject(parent)
|
||||||
{
|
{
|
||||||
@ -57,14 +58,14 @@ SunnyWebBoxCommunication::SunnyWebBoxCommunication(QObject *parent) : QObject(pa
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QUuid SunnyWebBoxCommunication::sendMessage(const QHostAddress &address, const QString &procedure)
|
QString SunnyWebBoxCommunication::sendMessage(const QHostAddress &address, const QString &procedure)
|
||||||
{
|
{
|
||||||
QUuid requestId = QUuid::createUuid();
|
QString requestId = QUuid::createUuid().toString().remove('{').left(14);
|
||||||
|
|
||||||
QJsonDocument doc;
|
QJsonDocument doc;
|
||||||
QJsonObject obj;
|
QJsonObject obj;
|
||||||
obj["format"] = "JSON";
|
obj["format"] = "JSON";
|
||||||
obj["id"] = requestId.toString().remove('{').remove('}');
|
obj["id"] = requestId;
|
||||||
obj["proc"] = procedure;
|
obj["proc"] = procedure;
|
||||||
obj["version"] = "1.0";
|
obj["version"] = "1.0";
|
||||||
doc.setObject(obj);
|
doc.setObject(obj);
|
||||||
@ -74,9 +75,9 @@ QUuid SunnyWebBoxCommunication::sendMessage(const QHostAddress &address, const Q
|
|||||||
return requestId;
|
return requestId;
|
||||||
}
|
}
|
||||||
|
|
||||||
QUuid SunnyWebBoxCommunication::sendMessage(const QHostAddress &address, const QString &procedure, const QJsonObject ¶ms)
|
QString SunnyWebBoxCommunication::sendMessage(const QHostAddress &address, const QString &procedure, const QJsonObject ¶ms)
|
||||||
{
|
{
|
||||||
QUuid requestId = QUuid::createUuid();
|
QString requestId = QUuid::createUuid().toString().remove('{').left(14);
|
||||||
|
|
||||||
QJsonDocument doc;
|
QJsonDocument doc;
|
||||||
QJsonObject obj;
|
QJsonObject obj;
|
||||||
@ -85,7 +86,7 @@ QUuid SunnyWebBoxCommunication::sendMessage(const QHostAddress &address, const Q
|
|||||||
obj.insert("params", params);
|
obj.insert("params", params);
|
||||||
}
|
}
|
||||||
obj["format"] = "JSON";
|
obj["format"] = "JSON";
|
||||||
obj["id"] = requestId.toString().remove('{').remove('}');
|
obj["id"] = requestId;
|
||||||
obj["proc"] = procedure;
|
obj["proc"] = procedure;
|
||||||
obj["version"] = "1.0";
|
obj["version"] = "1.0";
|
||||||
doc.setObject(obj);
|
doc.setObject(obj);
|
||||||
@ -122,7 +123,7 @@ void SunnyWebBoxCommunication::datagramReceived(const QHostAddress &address, con
|
|||||||
|
|
||||||
if (map.contains("proc") && map.contains("result")) {
|
if (map.contains("proc") && map.contains("result")) {
|
||||||
QString requestType = map["proc"].toString();
|
QString requestType = map["proc"].toString();
|
||||||
QUuid requestId = QUuid(map["id"].toString());
|
QString requestId = map["id"].toString();
|
||||||
QVariantMap result = map.value("result").toMap();
|
QVariantMap result = map.value("result").toMap();
|
||||||
emit messageReceived(address, requestId, requestType, result);
|
emit messageReceived(address, requestId, requestType, result);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -33,7 +33,6 @@
|
|||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QUdpSocket>
|
#include <QUdpSocket>
|
||||||
#include <QUuid>
|
|
||||||
|
|
||||||
class SunnyWebBoxCommunication : public QObject
|
class SunnyWebBoxCommunication : public QObject
|
||||||
{
|
{
|
||||||
@ -41,8 +40,8 @@ class SunnyWebBoxCommunication : public QObject
|
|||||||
public:
|
public:
|
||||||
explicit SunnyWebBoxCommunication(QObject *parent = nullptr);
|
explicit SunnyWebBoxCommunication(QObject *parent = nullptr);
|
||||||
|
|
||||||
QUuid sendMessage(const QHostAddress &address, const QString &procedure);
|
QString sendMessage(const QHostAddress &address, const QString &procedure);
|
||||||
QUuid sendMessage(const QHostAddress &address, const QString &procedure, const QJsonObject ¶ms);
|
QString sendMessage(const QHostAddress &address, const QString &procedure, const QJsonObject ¶ms);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_port = 34268;
|
int m_port = 34268;
|
||||||
@ -52,7 +51,7 @@ private:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void socketConnected(bool connected);
|
void socketConnected(bool connected);
|
||||||
void messageReceived(const QHostAddress &address, QUuid messageId, const QString &messageType, const QVariantMap &result);
|
void messageReceived(const QHostAddress &address, const QString &messageId, const QString &messageType, const QVariantMap &result);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user