Make the cloud discovery a bit easier to work with
This commit is contained in:
parent
608c02799c
commit
91ef2dc656
@ -930,16 +930,16 @@ bool AWSClient::postToMQTT(const QString &coreId, const QString &nonce, QObject*
|
||||
// Workaround MQTT broker url weirdness as described above
|
||||
request.setUrl("https://" + m_configs.value(m_usedConfig).mqttEndpoint + path1);
|
||||
|
||||
qCDebug(dcCloud()) << "Posting to MQTT:" << request.url().toString();
|
||||
// qDebug() << "HEADERS:";
|
||||
qCInfo(dcCloud) << "Posting to MQTT:" << request.url().toString();
|
||||
// qCDebug(dcCloud) << "HEADERS:";
|
||||
// foreach (const QByteArray &headerName, request.rawHeaderList()) {
|
||||
// qDebug() << headerName << ":" << request.rawHeader(headerName);
|
||||
// qCDebug(dcCloud) << headerName << ":" << request.rawHeader(headerName);
|
||||
// }
|
||||
// qDebug() << "Payload:" << payload;
|
||||
qCDebug(dcCloud) << "Payload:" << payload;
|
||||
QNetworkReply *reply = m_nam->post(request, payload);
|
||||
QTimer::singleShot(5000, reply, [reply, senderWatcher, callback](){
|
||||
reply->deleteLater();
|
||||
qWarning() << "Timeout posting to MQTT";
|
||||
qCWarning(dcCloud) << "Timeout posting to MQTT";
|
||||
if (senderWatcher) {
|
||||
callback(false);
|
||||
}
|
||||
@ -953,14 +953,14 @@ bool AWSClient::postToMQTT(const QString &coreId, const QString &nonce, QObject*
|
||||
return;
|
||||
}
|
||||
if (reply->error() != QNetworkReply::NoError) {
|
||||
qCWarning(dcCloud()) << "MQTT Network reply error" << reply->error() << reply->errorString();
|
||||
qCWarning(dcCloud()) << "MQTT Network reply error" << reply->error() << reply->errorString() << qUtf8Printable(data);
|
||||
callback(false);
|
||||
return;
|
||||
}
|
||||
QJsonParseError error;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error);
|
||||
if (error.error != QJsonParseError::NoError) {
|
||||
qCWarning(dcCloud()) << "Failed to parse MQTT reply" << error.error << error.errorString() << data;
|
||||
qCWarning(dcCloud()) << "Failed to parse MQTT reply" << error.error << error.errorString() << qUtf8Printable(data);
|
||||
callback(false);
|
||||
return;
|
||||
}
|
||||
@ -1005,6 +1005,11 @@ void AWSClient::fetchDevices()
|
||||
QByteArray data = reply->readAll();
|
||||
if (reply->error() != QNetworkReply::NoError) {
|
||||
qCWarning(dcCloud()) << "Error fetching cloud devices:" << reply->error() << reply->errorString() << qUtf8Printable(data);
|
||||
if (reply->error() == QNetworkReply::AuthenticationRequiredError) {
|
||||
qCInfo(dcCloud()) << "Trying to refresh access token";
|
||||
refreshAccessToken();
|
||||
QueuedCall::enqueue(m_callQueue, QueuedCall("fetchDevices"));
|
||||
}
|
||||
return;
|
||||
}
|
||||
QJsonParseError error;
|
||||
|
||||
@ -42,6 +42,9 @@
|
||||
#include <QNetworkConfigurationManager>
|
||||
#include <QNetworkSession>
|
||||
|
||||
#include "logging.h"
|
||||
NYMEA_LOGGING_CATEGORY(dcDiscovery, "Discovery")
|
||||
|
||||
NymeaDiscovery::NymeaDiscovery(QObject *parent) : QObject(parent)
|
||||
{
|
||||
m_nymeaHosts = new NymeaHosts(this);
|
||||
@ -231,11 +234,10 @@ void NymeaDiscovery::syncCloudDevices()
|
||||
for (int i = 0; i < m_awsClient->awsDevices()->rowCount(); i++) {
|
||||
AWSDevice *d = m_awsClient->awsDevices()->get(i);
|
||||
NymeaHost *host = m_nymeaHosts->find(d->id());
|
||||
if (!host) {
|
||||
bool alreayAdded = host != nullptr;
|
||||
if (!alreayAdded) {
|
||||
host = new NymeaHost();
|
||||
host->setUuid(d->id());
|
||||
qDebug() << "CloudDiscovery: Adding new host:" << host->name() << host->uuid().toString();
|
||||
m_nymeaHosts->addHost(host);
|
||||
}
|
||||
host->setName(d->name());
|
||||
QUrl url;
|
||||
@ -244,10 +246,14 @@ void NymeaDiscovery::syncCloudDevices()
|
||||
Connection *conn = host->connections()->find(url);
|
||||
if (!conn) {
|
||||
conn = new Connection(url, Connection::BearerTypeCloud, true, d->id());
|
||||
qDebug() << "CloudDiscovery: Adding new connection to host:" << host->name() << conn->url().toString();
|
||||
qCDebug(dcDiscovery) << "Adding new connection to host:" << host->name() << conn->url().toString();
|
||||
host->connections()->addConnection(conn);
|
||||
}
|
||||
conn->setOnline(d->online());
|
||||
if (!alreayAdded) {
|
||||
qCDebug(dcDiscovery) << "Adding new host:" << d->name() << d->id();
|
||||
m_nymeaHosts->addHost(host);
|
||||
}
|
||||
}
|
||||
|
||||
QList<NymeaHost*> hostsToRemove;
|
||||
@ -283,7 +289,7 @@ void NymeaDiscovery::loadFromDisk()
|
||||
host->setUuid(QUuid(serverUuid));
|
||||
m_nymeaHosts->addHost(host);
|
||||
}
|
||||
qDebug() << "Loaded Host from cache" << host->name() << host->uuid();
|
||||
qCDebug(dcDiscovery()) << "Loaded Host from cache" << host->name() << host->uuid();
|
||||
foreach (const QString &group, settings.childGroups()) {
|
||||
settings.beginGroup(group);
|
||||
QString url = settings.value("url").toString();
|
||||
@ -294,7 +300,7 @@ void NymeaDiscovery::loadFromDisk()
|
||||
QString displayName = settings.value("displayName").toString();
|
||||
connection = new Connection(url, bearerType, secure, displayName, host);
|
||||
host->connections()->addConnection(connection);
|
||||
qDebug() << "|- Connection:" << group << connection->url() << connection->bearerType() << "secure:" << connection->secure();
|
||||
qCDebug(dcDiscovery()) << "|- Connection:" << group << connection->url() << connection->bearerType() << "secure:" << connection->secure();
|
||||
}
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user