From 3f13275722432709b252cdfe1f77863ba7a63f18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Mon, 4 Mar 2019 16:25:43 +0100 Subject: [PATCH] Fix netatmo plugin timer interval and initialization --- netatmo/devicepluginnetatmo.cpp | 14 ++++++++++++-- netatmo/devicepluginnetatmo.h | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/netatmo/devicepluginnetatmo.cpp b/netatmo/devicepluginnetatmo.cpp index 9300a70f..6f20a476 100644 --- a/netatmo/devicepluginnetatmo.cpp +++ b/netatmo/devicepluginnetatmo.cpp @@ -60,8 +60,7 @@ DevicePluginNetatmo::~DevicePluginNetatmo() void DevicePluginNetatmo::init() { - m_pluginTimer = hardwareManager()->pluginTimerManager()->registerTimer(30); - connect(m_pluginTimer, &PluginTimer::timeout, this, &DevicePluginNetatmo::onPluginTimer); + } DeviceManager::DeviceSetupStatus DevicePluginNetatmo::setupDevice(Device *device) @@ -69,6 +68,11 @@ DeviceManager::DeviceSetupStatus DevicePluginNetatmo::setupDevice(Device *device if (device->deviceClassId() == netatmoConnectionDeviceClassId) { qCDebug(dcNetatmo) << "Setup netatmo connection" << device->name() << device->params(); + if (!m_pluginTimer) { + m_pluginTimer = hardwareManager()->pluginTimerManager()->registerTimer(300); + connect(m_pluginTimer, &PluginTimer::timeout, this, &DevicePluginNetatmo::onPluginTimer); + } + OAuth2 *authentication = new OAuth2("561c015d49c75f0d1cce6e13", "GuvKkdtu7JQlPD47qTTepRR9hQ0CUPAj4Tae3Ohcq", this); authentication->setUrl(QUrl("https://api.netatmo.net/oauth2/token")); authentication->setUsername(device->paramValue(netatmoConnectionDeviceUsernameParamTypeId).toString()); @@ -113,6 +117,12 @@ void DevicePluginNetatmo::deviceRemoved(Device *device) OAuth2 * authentication = m_authentications.key(device); m_authentications.remove(authentication); authentication->deleteLater(); + + if (m_pluginTimer) { + m_pluginTimer->deleteLater(); + m_pluginTimer = nullptr; + } + } else if (device->deviceClassId() == indoorDeviceClassId) { NetatmoBaseStation *indoor = m_indoorDevices.key(device); m_indoorDevices.remove(indoor); diff --git a/netatmo/devicepluginnetatmo.h b/netatmo/devicepluginnetatmo.h index e7236071..3cd1763d 100644 --- a/netatmo/devicepluginnetatmo.h +++ b/netatmo/devicepluginnetatmo.h @@ -50,7 +50,7 @@ public slots: DeviceManager::DeviceError executeAction(Device *device, const Action &action) override; private: - PluginTimer *m_pluginTimer; + PluginTimer *m_pluginTimer = nullptr; QList m_asyncSetups; QHash m_authentications;