From 3744ce040b3c38f9c8b265dae74f178d8e902d76 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Thu, 16 Mar 2023 17:09:25 +0100 Subject: [PATCH 1/2] EQ-3, Tado: Update thermostats windowOpenDetected states The interface now distinguishes between states that are informative (read only) and ones that can be set. --- eq-3/integrationplugineq-3.cpp | 6 +++--- eq-3/integrationplugineq-3.json | 3 +-- tado/integrationplugintado.cpp | 2 +- tado/integrationplugintado.h | 9 ++++++--- tado/integrationplugintado.json | 5 ++--- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/eq-3/integrationplugineq-3.cpp b/eq-3/integrationplugineq-3.cpp index f8124ac8..7d05b3e2 100644 --- a/eq-3/integrationplugineq-3.cpp +++ b/eq-3/integrationplugineq-3.cpp @@ -66,7 +66,7 @@ void IntegrationPluginEQ3::discoverThings(ThingDiscoveryInfo *info) connect(info, &QObject::destroyed, cubeDiscovery, &MaxCubeDiscovery::deleteLater); - connect(cubeDiscovery, &MaxCubeDiscovery::cubesDetected, info, [this, info, cubeDiscovery](const QList &cubeList){ + connect(cubeDiscovery, &MaxCubeDiscovery::cubesDetected, info, [this, info](const QList &cubeList){ foreach (const MaxCubeDiscovery::CubeInfo &cube, cubeList) { ThingDescriptor descriptor(cubeThingClassId, "Max! Cube LAN Gateway", cube.serialNumber); @@ -200,9 +200,9 @@ void IntegrationPluginEQ3::setupThing(ThingSetupInfo *info) thing->setStateValue(eqivaBluetoothTargetTemperatureStateTypeId, eqivaDevice->targetTemperature()); }); // Window open state - thing->setStateValue(eqivaBluetoothWindowOpenStateTypeId, eqivaDevice->windowOpen()); + thing->setStateValue(eqivaBluetoothWindowOpenDetectedStateTypeId, eqivaDevice->windowOpen()); connect(eqivaDevice, &EqivaBluetooth::windowOpenChanged, thing, [thing, eqivaDevice](){ - thing->setStateValue(eqivaBluetoothWindowOpenStateTypeId, eqivaDevice->windowOpen()); + thing->setStateValue(eqivaBluetoothWindowOpenDetectedStateTypeId, eqivaDevice->windowOpen()); }); // Valve open state thing->setStateValue(eqivaBluetoothValveOpenStateTypeId, eqivaDevice->valveOpen()); diff --git a/eq-3/integrationplugineq-3.json b/eq-3/integrationplugineq-3.json index 36df24ba..e98af5dd 100644 --- a/eq-3/integrationplugineq-3.json +++ b/eq-3/integrationplugineq-3.json @@ -611,9 +611,8 @@ }, { "id": "dcacdacc-ee47-43b0-9fef-1fe423e4f355", - "name": "windowOpen", + "name": "windowOpenDetected", "displayName": "Window open detected", - "displayNameEvent": "Window open changed", "type": "bool", "defaultValue": false }, diff --git a/tado/integrationplugintado.cpp b/tado/integrationplugintado.cpp index 758fe904..550f8a2c 100644 --- a/tado/integrationplugintado.cpp +++ b/tado/integrationplugintado.cpp @@ -432,7 +432,7 @@ void IntegrationPluginTado::onZoneStateReceived(const QString &homeId, const QSt thing->setStateValue(zoneTargetTemperatureStateTypeId, state.settingTemperature); thing->setStateValue(zoneTemperatureStateTypeId, state.temperature); thing->setStateValue(zoneHumidityStateTypeId, state.humidity); - thing->setStateValue(zoneWindowOpenStateTypeId, state.windowOpen); + thing->setStateValue(zoneWindowOpenDetectedStateTypeId, state.windowOpen); thing->setStateValue(zoneTadoModeStateTypeId, state.tadoMode); } diff --git a/tado/integrationplugintado.h b/tado/integrationplugintado.h index 28d344bf..692dfeb2 100644 --- a/tado/integrationplugintado.h +++ b/tado/integrationplugintado.h @@ -31,12 +31,15 @@ #ifndef INTEGRATIONPLUGINTADO_H #define INTEGRATIONPLUGINTADO_H -#include "plugintimer.h" -#include "integrations/integrationplugin.h" -#include "network/oauth2.h" #include "tado.h" +#include "extern-plugininfo.h" + +#include +#include +#include #include + #include class IntegrationPluginTado : public IntegrationPlugin diff --git a/tado/integrationplugintado.json b/tado/integrationplugintado.json index 32bba975..25272c05 100644 --- a/tado/integrationplugintado.json +++ b/tado/integrationplugintado.json @@ -117,9 +117,8 @@ }, { "id": "c7a04e26-bb22-406e-b117-262bdb8b9c0e", - "name": "windowOpen", - "displayName": "Window open", - "displayNameEvent": "Window open changed", + "name": "windowOpenDetected", + "displayName": "Window open detected", "type": "bool", "defaultValue": false }, From e3acb067b9d67a2c01e47ee949636855871baf01 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Mon, 20 Mar 2023 09:37:45 +0100 Subject: [PATCH 2/2] Fix tado windowOpenDetected state --- tado/integrationplugintado.cpp | 2 +- tado/tado.cpp | 4 +++- tado/tado.h | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/tado/integrationplugintado.cpp b/tado/integrationplugintado.cpp index 550f8a2c..fd950f4c 100644 --- a/tado/integrationplugintado.cpp +++ b/tado/integrationplugintado.cpp @@ -432,7 +432,7 @@ void IntegrationPluginTado::onZoneStateReceived(const QString &homeId, const QSt thing->setStateValue(zoneTargetTemperatureStateTypeId, state.settingTemperature); thing->setStateValue(zoneTemperatureStateTypeId, state.temperature); thing->setStateValue(zoneHumidityStateTypeId, state.humidity); - thing->setStateValue(zoneWindowOpenDetectedStateTypeId, state.windowOpen); + thing->setStateValue(zoneWindowOpenDetectedStateTypeId, state.windowOpenDetected); thing->setStateValue(zoneTadoModeStateTypeId, state.tadoMode); } diff --git a/tado/tado.cpp b/tado/tado.cpp index 137f8774..7a96f81e 100644 --- a/tado/tado.cpp +++ b/tado/tado.cpp @@ -356,6 +356,7 @@ void Tado::getZoneState(const QString &homeId, const QString &zoneId) return; } + setConnectionStatus(true); setAuthenticationStatus(true); @@ -365,10 +366,11 @@ void Tado::getZoneState(const QString &homeId, const QString &zoneId) qDebug(dcTado()) << "Get Token: Recieved invalid JSON object"; return; } + qCDebug(dcTado()) << "Zone status received:" << qUtf8Printable(data.toJson(QJsonDocument::Indented)); ZoneState state; QVariantMap map = data.toVariant().toMap(); state.tadoMode = map["tadoMode"].toString(); - state.windowOpen = map["openWindow"].toBool(); + state.windowOpenDetected = map["openWindowDetected"].toBool(); QVariantMap settingsMap = map["setting"].toMap(); state.settingType = settingsMap["type"].toString(); diff --git a/tado/tado.h b/tado/tado.h index 8c9f9e02..e2d8303e 100644 --- a/tado/tado.h +++ b/tado/tado.h @@ -75,7 +75,7 @@ public: bool settingPower = false; double temperature = false; double humidity = false; - bool windowOpen = false; + bool windowOpenDetected = false; double heatingPowerPercentage = false; QString heatingPowerType; bool overlayIsSet = false;