diff --git a/libnymea-app/connection/awsclient.cpp b/libnymea-app/connection/awsclient.cpp index 7085bda3..dd2076f5 100644 --- a/libnymea-app/connection/awsclient.cpp +++ b/libnymea-app/connection/awsclient.cpp @@ -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; diff --git a/libnymea-app/connection/discovery/nymeadiscovery.cpp b/libnymea-app/connection/discovery/nymeadiscovery.cpp index 2e66a651..893f189f 100644 --- a/libnymea-app/connection/discovery/nymeadiscovery.cpp +++ b/libnymea-app/connection/discovery/nymeadiscovery.cpp @@ -42,6 +42,9 @@ #include #include +#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 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(); }