Merge PR #242: Tado: Add heating interface

pull/273/head
Jenkins nymea 2020-06-09 18:19:22 +02:00
commit b3d0a23114
7 changed files with 483 additions and 101 deletions

View File

@ -36,6 +36,7 @@
#include <QDebug>
#include <QUrlQuery>
#include <QJsonDocument>
#include <QTimer>
IntegrationPluginTado::IntegrationPluginTado()
{
@ -44,7 +45,18 @@ IntegrationPluginTado::IntegrationPluginTado()
void IntegrationPluginTado::startPairing(ThingPairingInfo *info)
{
info->finish(Thing::ThingErrorNoError, QT_TR_NOOP("Please enter the login credentials."));
// Checking the internet connection
NetworkAccessManager *network = hardwareManager()->networkManager();
QNetworkReply *reply = network->get(QNetworkRequest(QUrl("https://my.tado.com/api/v2")));
connect(reply, &QNetworkReply::finished, info, [reply, info] {
if (reply->error() == QNetworkReply::NetworkError::HostNotFoundError) {
info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("Tado server is not reachable."));
} else {
info->finish(Thing::ThingErrorNoError, QT_TR_NOOP("Please enter the login credentials for your Tado account."));
}
});
connect(reply, &QNetworkReply::finished, this, &QNetworkReply::deleteLater);
}
void IntegrationPluginTado::confirmPairing(ThingPairingInfo *info, const QString &username, const QString &password)
@ -52,6 +64,7 @@ void IntegrationPluginTado::confirmPairing(ThingPairingInfo *info, const QString
Tado *tado = new Tado(hardwareManager()->networkManager(), username, this);
connect(tado, &Tado::tokenReceived, this, &IntegrationPluginTado::onTokenReceived);
connect(tado, &Tado::authenticationStatusChanged, this, &IntegrationPluginTado::onAuthenticationStatusChanged);
connect(tado, &Tado::requestExecuted, this, &IntegrationPluginTado::onRequestExecuted);
connect(tado, &Tado::connectionChanged, this, &IntegrationPluginTado::onConnectionChanged);
connect(tado, &Tado::homesReceived, this, &IntegrationPluginTado::onHomesReceived);
connect(tado, &Tado::zonesReceived, this, &IntegrationPluginTado::onZonesReceived);
@ -88,6 +101,7 @@ void IntegrationPluginTado::setupThing(ThingSetupInfo *info)
tado = new Tado(hardwareManager()->networkManager(), username, this);
connect(tado, &Tado::tokenReceived, this, &IntegrationPluginTado::onTokenReceived);
connect(tado, &Tado::authenticationStatusChanged, this, &IntegrationPluginTado::onAuthenticationStatusChanged);
connect(tado, &Tado::requestExecuted, this, &IntegrationPluginTado::onRequestExecuted);
connect(tado, &Tado::connectionChanged, this, &IntegrationPluginTado::onConnectionChanged);
connect(tado, &Tado::homesReceived, this, &IntegrationPluginTado::onHomesReceived);
connect(tado, &Tado::zonesReceived, this, &IntegrationPluginTado::onZonesReceived);
@ -96,14 +110,20 @@ void IntegrationPluginTado::setupThing(ThingSetupInfo *info)
tado->getToken(password);
m_tadoAccounts.insert(thing->id(), tado);
m_asyncDeviceSetup.insert(tado, info);
return;
connect(info, &ThingSetupInfo::aborted, [info, this] {
Tado *tado = m_tadoAccounts.take(info->thing()->id());
m_asyncDeviceSetup.remove(tado);
tado->deleteLater();
});
}
} else if (thing->thingClassId() == zoneThingClassId) {
qCDebug(dcTado) << "Setup tado thermostat" << thing->params();
return info->finish(Thing::ThingErrorNoError);
} else {
return info->finish(Thing::ThingErrorThingClassNotFound);
qCWarning(dcTado()) << "Unhandled thing class in setupDevice";
}
qCWarning(dcTado()) << "Unhandled thing class in setupDevice";
}
void IntegrationPluginTado::thingRemoved(Thing *thing)
@ -148,35 +168,57 @@ void IntegrationPluginTado::executeAction(ThingActionInfo *info)
if (thing->thingClassId() == zoneThingClassId) {
Tado *tado = m_tadoAccounts.value(thing->parentId());
if (!tado)
if (!tado) {
info->finish(Thing::ThingErrorThingNotFound);
return;
}
QString homeId = thing->paramValue(zoneThingHomeIdParamTypeId).toString();
QString zoneId = thing->paramValue(zoneThingZoneIdParamTypeId).toString();
if (action.actionTypeId() == zoneModeActionTypeId) {
QUuid requestId;
if (action.param(zoneModeActionModeParamTypeId).value().toString() == "Tado") {
tado->deleteOverlay(homeId, zoneId);
requestId = tado->deleteOverlay(homeId, zoneId);
} else if (action.param(zoneModeActionModeParamTypeId).value().toString() == "Off") {
tado->setOverlay(homeId, zoneId, false, thing->stateValue(zoneTargetTemperatureStateTypeId).toDouble());
requestId = tado->setOverlay(homeId, zoneId, false, thing->stateValue(zoneTargetTemperatureStateTypeId).toDouble());
} else {
if(thing->stateValue(zoneTargetTemperatureStateTypeId).toDouble() <= 5.0) {
tado->setOverlay(homeId, zoneId, true, 5);
requestId = tado->setOverlay(homeId, zoneId, true, 5);
} else {
tado->setOverlay(homeId, zoneId, true, thing->stateValue(zoneTargetTemperatureStateTypeId).toDouble());
requestId = tado->setOverlay(homeId, zoneId, true, thing->stateValue(zoneTargetTemperatureStateTypeId).toDouble());
}
}
info->finish(Thing::ThingErrorNoError);
m_asyncActions.insert(requestId, info);
connect(info, &ThingActionInfo::aborted, [requestId, this] {m_asyncActions.remove(requestId);});
} else if (action.actionTypeId() == zoneTargetTemperatureActionTypeId) {
double temperature = action.param(zoneTargetTemperatureActionTargetTemperatureParamTypeId).value().toDouble();
QUuid requestId;
if (temperature <= 0) {
QUuid requestId = tado->setOverlay(homeId, zoneId, false, 0);
m_asyncActions.insert(requestId, info);
requestId = tado->setOverlay(homeId, zoneId, false, 0);
} else {
tado->setOverlay(homeId, zoneId, true, temperature);
requestId = tado->setOverlay(homeId, zoneId, true, temperature);
}
info->finish(Thing::ThingErrorNoError);
m_asyncActions.insert(requestId, info);
connect(info, &ThingActionInfo::aborted, [requestId, this] {m_asyncActions.remove(requestId);});
} else if (action.actionTypeId() == zonePowerActionTypeId) {
bool power = action.param(zonePowerActionPowerParamTypeId).value().toBool();
thing->setStateValue(zonePowerStateTypeId, power); // the actual power set response might be slow
QUuid requestId;
double temperature = thing->stateValue(zoneTargetTemperatureStateTypeId).toDouble();
if (!power) {
requestId = tado->setOverlay(homeId, zoneId, false, 0);
} else {
requestId = tado->setOverlay(homeId, zoneId, true, temperature);
}
m_asyncActions.insert(requestId, info);
connect(info, &ThingActionInfo::aborted, [requestId, this] {m_asyncActions.remove(requestId);});
} else {
qCWarning(dcTado()) << "Execute action, unhandled actionTypeId" << action.actionTypeId();
info->finish(Thing::ThingErrorActionTypeNotFound);
}
} else {
qCWarning(dcTado()) << "Execute action, unhandled thingClassId" << thing->thingClassId();
info->finish(Thing::ThingErrorThingClassNotFound);
}
}
@ -197,8 +239,24 @@ void IntegrationPluginTado::onConnectionChanged(bool connected)
{
Tado *tado = static_cast<Tado*>(sender());
if (m_asyncDeviceSetup.contains(tado)) {
//Thing setup failed, try as long as ThingSetupInfo is valid.
if (!connected) {
QTimer::singleShot(2000, tado, [tado, this]{
if(m_asyncDeviceSetup.contains(tado)){
//Check once more if the ThingSetupInfo is still valid
pluginStorage()->beginGroup(m_asyncDeviceSetup.value(tado)->thing()->id().toString());
QString password = pluginStorage()->value("password").toString();
pluginStorage()->endGroup();
tado->getToken(password);
}
});
}
}
if (m_tadoAccounts.values().contains(tado)){
Thing *thing = myThings().findById(m_tadoAccounts.key(tado));
if (!thing)
return;
thing->setStateValue(tadoConnectionConnectedStateTypeId, connected);
foreach(Thing *zoneThing, myThings().filterByParentId(thing->id())) {
@ -220,13 +278,38 @@ void IntegrationPluginTado::onAuthenticationStatusChanged(bool authenticated)
if (m_tadoAccounts.values().contains(tado)){
Thing *thing = myThings().findById(m_tadoAccounts.key(tado));
if (!thing)
return;
thing->setStateValue(tadoConnectionLoggedInStateTypeId, authenticated);
if (!authenticated) {
QTimer::singleShot(5000, tado, [this, tado, thing] {
if (!tado->connected()) {
pluginStorage()->beginGroup(thing->id().toString());
QString password = pluginStorage()->value("password").toString();
pluginStorage()->endGroup();
tado->getToken(password);
}
});
}
}
}
void IntegrationPluginTado::onRequestExecuted(QUuid requestId, bool success)
{
if (m_asyncActions.contains(requestId)) {
ThingActionInfo *info = m_asyncActions.take(requestId);
if (success) {
info->finish(Thing::ThingErrorNoError);
} else {
info->finish(Thing::ThingErrorHardwareNotAvailable);
}
}
}
void IntegrationPluginTado::onTokenReceived(Tado::Token token)
{
Q_UNUSED(token);
Q_UNUSED(token)
qCDebug(dcTado()) << "Token received";
Tado *tado = static_cast<Tado*>(sender());

View File

@ -68,6 +68,7 @@ private slots:
void onConnectionChanged(bool connected);
void onAuthenticationStatusChanged(bool authenticated);
void onRequestExecuted(QUuid requestId, bool success);
void onTokenReceived(Tado::Token token);
void onHomesReceived(QList<Tado::Home> homes);
void onZonesReceived(const QString &homeId, QList<Tado::Zone> zones);

View File

@ -46,7 +46,7 @@
"id": "1a7bb944-fb9c-490a-8a4c-794b27282292",
"name": "zone",
"displayName": "Zone",
"interfaces": ["thermostat", "temperaturesensor", "connectable"],
"interfaces": ["heating", "temperaturesensor", "humiditysensor", "connectable"],
"createMethods": ["auto"],
"paramTypes": [
{
@ -110,7 +110,9 @@
"name": "power",
"displayName": "Power",
"displayNameEvent": "Power changed",
"displayNameAction": "Set power",
"type": "bool",
"writable": true,
"defaultValue": false
},
{

View File

@ -56,6 +56,16 @@ QString Tado::username()
return m_username;
}
bool Tado::authenticated()
{
return m_authenticationStatus;
}
bool Tado::connected()
{
return m_connectionStatus;
}
void Tado::getToken(const QString &password)
{
QNetworkRequest request;
@ -78,15 +88,15 @@ void Tado::getToken(const QString &password)
// Check HTTP status code
if (status != 200 || reply->error() != QNetworkReply::NoError) {
if (reply->error() == QNetworkReply::HostNotFoundError) {
emit connectionChanged(false);
setConnectionStatus(false);
}
if (status == 401) {
emit authenticationStatusChanged(false);
if (status == 401 || status == 400) {
setAuthenticationStatus(false);
}
qCWarning(dcTado()) << "Request error:" << status << reply->errorString();
return;
}
emit connectionChanged(true);
setConnectionStatus(true);
QJsonParseError error;
QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error);
@ -111,15 +121,15 @@ void Tado::getToken(const QString &password)
token.expires = obj["expires_in"].toInt();
m_refreshTimer->start((token.expires - 10)*1000);
} else {
qCWarning(dcTado()) << "Received response doesn't contain an expire time";
qCWarning(dcTado()) << "Received response doesn't contain an expire time";
}
token.scope = obj["scope"].toString();
token.jti = obj["jti"].toString();
emit authenticationStatusChanged(true);
setAuthenticationStatus(true);
emit tokenReceived(token);
} else {
qCWarning(dcTado()) << "Received response isn't an object" << data.toJson();
emit authenticationStatusChanged(false);
setAuthenticationStatus(false);
}
});
}
@ -139,16 +149,16 @@ void Tado::getHomes()
// Check HTTP status code
if (status != 200 || reply->error() != QNetworkReply::NoError) {
if (reply->error() == QNetworkReply::HostNotFoundError) {
emit connectionChanged(false);
setConnectionStatus(false);
}
if (status == 401) {
emit authenticationStatusChanged(false);
if (status == 401 || status == 400) {
setAuthenticationStatus(false);
}
qCWarning(dcTado()) << "Request error:" << status << reply->errorString();
return;
}
emit connectionChanged(true);
emit authenticationStatusChanged(true);
setConnectionStatus(true);
setAuthenticationStatus(true);
QJsonParseError error;
QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error);
@ -184,16 +194,16 @@ void Tado::getZones(const QString &homeId)
// Check HTTP status code
if (status != 200 || reply->error() != QNetworkReply::NoError) {
if (reply->error() == QNetworkReply::HostNotFoundError) {
emit connectionChanged(false);
setConnectionStatus(false);
}
if (status == 401) {
emit authenticationStatusChanged(false);
if (status == 401 || status == 400) {
setAuthenticationStatus(false);
}
qCWarning(dcTado()) << "Request error:" << status << reply->errorString();
return;
}
emit connectionChanged(true);
emit authenticationStatusChanged(true);
setConnectionStatus(true);
setAuthenticationStatus(true);
QJsonParseError error;
QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error);
@ -230,17 +240,17 @@ void Tado::getZoneState(const QString &homeId, const QString &zoneId)
// Check HTTP status code
if (status != 200 || reply->error() != QNetworkReply::NoError) {
if (reply->error() == QNetworkReply::HostNotFoundError) {
emit connectionChanged(false);
setConnectionStatus(false);
}
if (status == 401) {
emit authenticationStatusChanged(false);
if (status == 401 || status == 400) {
setAuthenticationStatus(false);
}
qCWarning(dcTado()) << "Request error:" << status << reply->errorString();
return;
}
emit connectionChanged(true);
emit authenticationStatusChanged(true);
setConnectionStatus(true);
setAuthenticationStatus(true);
QJsonParseError error;
QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error);
@ -291,9 +301,9 @@ QUuid Tado::setOverlay(const QString &homeId, const QString &zoneId, bool power,
QByteArray body;
QByteArray powerString;
if (power)
powerString = "ON";
powerString = "ON";
else
powerString = "OFF";
powerString = "OFF";
body.append("{\"setting\":{\"type\":\"HEATING\",\"power\":\""+ powerString + "\",\"temperature\":{\"celsius\":" + QVariant(targetTemperature).toByteArray() + "}},\"termination\":{\"type\":\"MANUAL\"}}");
//qCDebug(dcTado()) << "Sending request" << body;
@ -306,10 +316,10 @@ QUuid Tado::setOverlay(const QString &homeId, const QString &zoneId, bool power,
if (status != 200 || reply->error() != QNetworkReply::NoError) {
emit requestExecuted(requestId, false);
if (reply->error() == QNetworkReply::HostNotFoundError) {
emit connectionChanged(false);
setConnectionStatus(false);
}
if (status == 401) { //Unauthorized
emit authenticationStatusChanged(false);
if (status == 401 || status == 400) { //Unauthorized
setAuthenticationStatus(false);
} else if (status == 422) { //Unprocessable Entity
qCWarning(dcTado()) << "Unprocessable Entity, probably a value out of range";
} else {
@ -317,8 +327,8 @@ QUuid Tado::setOverlay(const QString &homeId, const QString &zoneId, bool power,
}
return;
}
emit authenticationStatusChanged(true);
emit connectionChanged(true);
setAuthenticationStatus(true);
setConnectionStatus(true);
emit requestExecuted(requestId, true);
QJsonParseError error;
@ -358,10 +368,10 @@ QUuid Tado::deleteOverlay(const QString &homeId, const QString &zoneId)
if (status < 200 || status > 210 || reply->error() != QNetworkReply::NoError) {
emit requestExecuted(requestId ,false);
if (reply->error() == QNetworkReply::HostNotFoundError) {
emit connectionChanged(false);
setConnectionStatus(false);
}
if (status == 401) { //Unauthorized
emit authenticationStatusChanged(false);
if (status == 401 || status == 400) { //Unauthorized
setAuthenticationStatus(false);
} else if (status == 422) { //Unprocessable Entity
qCWarning(dcTado()) << "Unprocessable Entity, probably a value out of range";
} else {
@ -370,8 +380,8 @@ QUuid Tado::deleteOverlay(const QString &homeId, const QString &zoneId)
qCWarning(dcTado()) << "Request error:" << status << reply->errorString();
return;
}
emit authenticationStatusChanged(true);
emit connectionChanged(true);
setAuthenticationStatus(true);
setConnectionStatus(true);
emit requestExecuted(requestId, true);
QJsonParseError error;
@ -396,6 +406,26 @@ QUuid Tado::deleteOverlay(const QString &homeId, const QString &zoneId)
return requestId;
}
void Tado::setAuthenticationStatus(bool status)
{
if (m_authenticationStatus != status) {
m_authenticationStatus = status;
emit authenticationStatusChanged(status);
}
if (!status) {
m_refreshTimer->stop();
}
}
void Tado::setConnectionStatus(bool status)
{
if (m_connectionStatus != status) {
m_connectionStatus = status;
emit connectionChanged(status);
}
}
void Tado::onRefreshTimer()
{
QNetworkRequest request;
@ -416,16 +446,16 @@ void Tado::onRefreshTimer()
// Check HTTP status code
if (status != 200 || reply->error() != QNetworkReply::NoError) {
if (reply->error() == QNetworkReply::HostNotFoundError) {
emit connectionChanged(false);
setConnectionStatus(false);
}
if (status == 400 || status == 401) {
emit authenticationStatusChanged(false);
setAuthenticationStatus(false);
}
qCWarning(dcTado()) << "Request error:" << status << reply->errorString();
return;
}
emit connectionChanged(true);
emit authenticationStatusChanged(true);
setConnectionStatus(true);
setAuthenticationStatus(true);
QJsonParseError error;
QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error);

View File

@ -93,6 +93,8 @@ public:
void setUsername(const QString &username);
QString username();
bool authenticated();
bool connected();
void getToken(const QString &password);
void getHomes();
@ -114,6 +116,11 @@ private:
QString m_refreshToken;
QTimer *m_refreshTimer = nullptr;
bool m_authenticationStatus = false;
bool m_connectionStatus = false;
void setAuthenticationStatus(bool status);
void setConnectionStatus(bool status);
signals:
void connectionChanged(bool connected);
void authenticationStatusChanged(bool authenticated);

View File

@ -0,0 +1,245 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de">
<context>
<name>IntegrationPluginTado</name>
<message>
<location filename="../integrationplugintado.cpp" line="55"/>
<source>Tado server is not reachable.</source>
<translation>Tado-Server ist nicht erreichbar.</translation>
</message>
<message>
<location filename="../integrationplugintado.cpp" line="57"/>
<source>Please enter the login credentials for your Tado account.</source>
<translation>Bitte geben Sie die Anmeldeinformationen für Ihr Tado-Konto ein.</translation>
</message>
</context>
<context>
<name>Tado</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="66"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="69"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="72"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="75"/>
<source>Available</source>
<extracomment>The name of the ParamType (ThingClass: zone, EventType: connected, ID: {9f45a703-6a15-447c-a77a-0df731cda48e})
----------
The name of the StateType ({9f45a703-6a15-447c-a77a-0df731cda48e}) of ThingClass zone
----------
The name of the ParamType (ThingClass: tadoConnection, EventType: connected, ID: {2f79bc1d-27ed-480a-b583-728363c83ea6})
----------
The name of the StateType ({2f79bc1d-27ed-480a-b583-728363c83ea6}) of ThingClass tadoConnection</extracomment>
<translation>Verfügbar</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="78"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="81"/>
<source>Available changed</source>
<extracomment>The name of the EventType ({9f45a703-6a15-447c-a77a-0df731cda48e}) of ThingClass zone
----------
The name of the EventType ({2f79bc1d-27ed-480a-b583-728363c83ea6}) of ThingClass tadoConnection</extracomment>
<translation>Verfügbar geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="84"/>
<source>Home id</source>
<extracomment>The name of the ParamType (ThingClass: zone, Type: thing, ID: {330cad74-6f07-42ad-b226-299927c3c4f0})</extracomment>
<translation>Home id</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="87"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="90"/>
<source>Humidity</source>
<extracomment>The name of the ParamType (ThingClass: zone, EventType: humidity, ID: {0faaaff1-2a33-44ec-b68d-d8855f584b02})
----------
The name of the StateType ({0faaaff1-2a33-44ec-b68d-d8855f584b02}) of ThingClass zone</extracomment>
<translation>Luftfeuchte</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="93"/>
<source>Humidity changed</source>
<extracomment>The name of the EventType ({0faaaff1-2a33-44ec-b68d-d8855f584b02}) of ThingClass zone</extracomment>
<translation>Luftfeuchte geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="96"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="99"/>
<source>Logged in</source>
<extracomment>The name of the ParamType (ThingClass: tadoConnection, EventType: loggedIn, ID: {2aed240b-8c5c-418b-a9d1-0d75412c1c27})
----------
The name of the StateType ({2aed240b-8c5c-418b-a9d1-0d75412c1c27}) of ThingClass tadoConnection</extracomment>
<translation>Eingelogged</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="102"/>
<source>Logged in changed</source>
<extracomment>The name of the EventType ({2aed240b-8c5c-418b-a9d1-0d75412c1c27}) of ThingClass tadoConnection</extracomment>
<translation>Eingelogged geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="105"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="108"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="111"/>
<source>Mode</source>
<extracomment>The name of the ParamType (ThingClass: zone, ActionType: mode, ID: {4cecf87c-8a5d-4bc4-a4ba-d2ee6103714b})
----------
The name of the ParamType (ThingClass: zone, EventType: mode, ID: {4cecf87c-8a5d-4bc4-a4ba-d2ee6103714b})
----------
The name of the StateType ({4cecf87c-8a5d-4bc4-a4ba-d2ee6103714b}) of ThingClass zone</extracomment>
<translation>Modus</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="114"/>
<source>Mode changed</source>
<extracomment>The name of the EventType ({4cecf87c-8a5d-4bc4-a4ba-d2ee6103714b}) of ThingClass zone</extracomment>
<translation>Modus geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="117"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="120"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="123"/>
<source>Power</source>
<extracomment>The name of the ParamType (ThingClass: zone, ActionType: power, ID: {e886377d-34b7-4908-ad0d-ed463fc6181d})
----------
The name of the ParamType (ThingClass: zone, EventType: power, ID: {e886377d-34b7-4908-ad0d-ed463fc6181d})
----------
The name of the StateType ({e886377d-34b7-4908-ad0d-ed463fc6181d}) of ThingClass zone</extracomment>
<translation>Eingeschalten</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="126"/>
<source>Power changed</source>
<extracomment>The name of the EventType ({e886377d-34b7-4908-ad0d-ed463fc6181d}) of ThingClass zone</extracomment>
<translation>Eingeschalten geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="129"/>
<source>Set mode</source>
<extracomment>The name of the ActionType ({4cecf87c-8a5d-4bc4-a4ba-d2ee6103714b}) of ThingClass zone</extracomment>
<translation>Setze Modus</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="132"/>
<source>Set power</source>
<extracomment>The name of the ActionType ({e886377d-34b7-4908-ad0d-ed463fc6181d}) of ThingClass zone</extracomment>
<translation>Setze Eingeschalten</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="135"/>
<source>Set target temperature</source>
<extracomment>The name of the ActionType ({684fcc62-f12b-4669-988e-4b79f153b0f2}) of ThingClass zone</extracomment>
<translation>Setze Zieltemperatur</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="138"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="141"/>
<source>Tado</source>
<extracomment>The name of the vendor ({23c8a19f-bd6a-4c90-bcc9-2f0c0d9292c5})
----------
The name of the plugin Tado ({b4f2d2ee-50bb-4786-b7f5-261fed204fa5})</extracomment>
<translation>Tado</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="144"/>
<source>Tado Connection</source>
<extracomment>The name of the ThingClass ({69be7d15-5658-4442-872e-42abbd8bff81})</extracomment>
<translation>Tado Verbindung</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="147"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="150"/>
<source>Tado mode</source>
<extracomment>The name of the ParamType (ThingClass: zone, EventType: tadoMode, ID: {8b800998-5c2d-4940-9d0e-036979cf49ca})
----------
The name of the StateType ({8b800998-5c2d-4940-9d0e-036979cf49ca}) of ThingClass zone</extracomment>
<translation>Tado Modus</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="153"/>
<source>Tado mode changed</source>
<extracomment>The name of the EventType ({8b800998-5c2d-4940-9d0e-036979cf49ca}) of ThingClass zone</extracomment>
<translation>Tado Modus geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="156"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="159"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="162"/>
<source>Target temperature</source>
<extracomment>The name of the ParamType (ThingClass: zone, ActionType: targetTemperature, ID: {684fcc62-f12b-4669-988e-4b79f153b0f2})
----------
The name of the ParamType (ThingClass: zone, EventType: targetTemperature, ID: {684fcc62-f12b-4669-988e-4b79f153b0f2})
----------
The name of the StateType ({684fcc62-f12b-4669-988e-4b79f153b0f2}) of ThingClass zone</extracomment>
<translation>Zieltemperatur</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="165"/>
<source>Target temperature changed</source>
<extracomment>The name of the EventType ({684fcc62-f12b-4669-988e-4b79f153b0f2}) of ThingClass zone</extracomment>
<translation>Zieltemperatur geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="168"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="171"/>
<source>Temperature</source>
<extracomment>The name of the ParamType (ThingClass: zone, EventType: temperature, ID: {80098178-7d92-43dd-a216-23704cc0eaa2})
----------
The name of the StateType ({80098178-7d92-43dd-a216-23704cc0eaa2}) of ThingClass zone</extracomment>
<translation>Temperatur</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="174"/>
<source>Temperature changed</source>
<extracomment>The name of the EventType ({80098178-7d92-43dd-a216-23704cc0eaa2}) of ThingClass zone</extracomment>
<translation>Temperatur geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="177"/>
<source>Type</source>
<extracomment>The name of the ParamType (ThingClass: zone, Type: thing, ID: {8e86797e-5333-4428-9dba-9ed5ac243b44})</extracomment>
<translation>Typ</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="180"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="183"/>
<source>Username</source>
<extracomment>The name of the ParamType (ThingClass: tadoConnection, EventType: userDisplayName, ID: {33f55afc-a673-47a4-9fb0-75fdac6a66f4})
----------
The name of the StateType ({33f55afc-a673-47a4-9fb0-75fdac6a66f4}) of ThingClass tadoConnection</extracomment>
<translation>Benutzername</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="186"/>
<source>Username changed</source>
<extracomment>The name of the EventType ({33f55afc-a673-47a4-9fb0-75fdac6a66f4}) of ThingClass tadoConnection</extracomment>
<translation>Passwort</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="189"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="192"/>
<source>Window open</source>
<extracomment>The name of the ParamType (ThingClass: zone, EventType: windowOpen, ID: {c7a04e26-bb22-406e-b117-262bdb8b9c0e})
----------
The name of the StateType ({c7a04e26-bb22-406e-b117-262bdb8b9c0e}) of ThingClass zone</extracomment>
<translation>Fenster offen</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="195"/>
<source>Window open changed</source>
<extracomment>The name of the EventType ({c7a04e26-bb22-406e-b117-262bdb8b9c0e}) of ThingClass zone</extracomment>
<translation>Fenster offen geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="198"/>
<source>Zone</source>
<extracomment>The name of the ThingClass ({1a7bb944-fb9c-490a-8a4c-794b27282292})</extracomment>
<translation>Zone</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="201"/>
<source>Zone id</source>
<extracomment>The name of the ParamType (ThingClass: zone, Type: thing, ID: {cd67476b-978d-4a22-a40e-50cbc941e09e})</extracomment>
<translation>Zonen-ID</translation>
</message>
</context>
</TS>

View File

@ -4,18 +4,23 @@
<context>
<name>IntegrationPluginTado</name>
<message>
<location filename="../integrationplugintado.cpp" line="47"/>
<source>Please enter the login credentials.</source>
<location filename="../integrationplugintado.cpp" line="55"/>
<source>Tado server is not reachable.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationplugintado.cpp" line="57"/>
<source>Please enter the login credentials for your Tado account.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Tado</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="64"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="67"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="70"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="73"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="66"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="69"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="72"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="75"/>
<source>Available</source>
<extracomment>The name of the ParamType (ThingClass: zone, EventType: connected, ID: {9f45a703-6a15-447c-a77a-0df731cda48e})
----------
@ -27,8 +32,8 @@ The name of the StateType ({2f79bc1d-27ed-480a-b583-728363c83ea6}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="76"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="79"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="78"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="81"/>
<source>Available changed</source>
<extracomment>The name of the EventType ({9f45a703-6a15-447c-a77a-0df731cda48e}) of ThingClass zone
----------
@ -36,14 +41,14 @@ The name of the EventType ({2f79bc1d-27ed-480a-b583-728363c83ea6}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="82"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="84"/>
<source>Home id</source>
<extracomment>The name of the ParamType (ThingClass: zone, Type: thing, ID: {330cad74-6f07-42ad-b226-299927c3c4f0})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="85"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="88"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="87"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="90"/>
<source>Humidity</source>
<extracomment>The name of the ParamType (ThingClass: zone, EventType: humidity, ID: {0faaaff1-2a33-44ec-b68d-d8855f584b02})
----------
@ -51,14 +56,14 @@ The name of the StateType ({0faaaff1-2a33-44ec-b68d-d8855f584b02}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="91"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="93"/>
<source>Humidity changed</source>
<extracomment>The name of the EventType ({0faaaff1-2a33-44ec-b68d-d8855f584b02}) of ThingClass zone</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="94"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="97"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="96"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="99"/>
<source>Logged in</source>
<extracomment>The name of the ParamType (ThingClass: tadoConnection, EventType: loggedIn, ID: {2aed240b-8c5c-418b-a9d1-0d75412c1c27})
----------
@ -66,15 +71,15 @@ The name of the StateType ({2aed240b-8c5c-418b-a9d1-0d75412c1c27}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="100"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="102"/>
<source>Logged in changed</source>
<extracomment>The name of the EventType ({2aed240b-8c5c-418b-a9d1-0d75412c1c27}) of ThingClass tadoConnection</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="103"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="106"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="109"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="105"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="108"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="111"/>
<source>Mode</source>
<extracomment>The name of the ParamType (ThingClass: zone, ActionType: mode, ID: {4cecf87c-8a5d-4bc4-a4ba-d2ee6103714b})
----------
@ -84,41 +89,50 @@ The name of the StateType ({4cecf87c-8a5d-4bc4-a4ba-d2ee6103714b}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="112"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="114"/>
<source>Mode changed</source>
<extracomment>The name of the EventType ({4cecf87c-8a5d-4bc4-a4ba-d2ee6103714b}) of ThingClass zone</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="115"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="118"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="117"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="120"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="123"/>
<source>Power</source>
<extracomment>The name of the ParamType (ThingClass: zone, EventType: power, ID: {e886377d-34b7-4908-ad0d-ed463fc6181d})
<extracomment>The name of the ParamType (ThingClass: zone, ActionType: power, ID: {e886377d-34b7-4908-ad0d-ed463fc6181d})
----------
The name of the ParamType (ThingClass: zone, EventType: power, ID: {e886377d-34b7-4908-ad0d-ed463fc6181d})
----------
The name of the StateType ({e886377d-34b7-4908-ad0d-ed463fc6181d}) of ThingClass zone</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="121"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="126"/>
<source>Power changed</source>
<extracomment>The name of the EventType ({e886377d-34b7-4908-ad0d-ed463fc6181d}) of ThingClass zone</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="124"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="129"/>
<source>Set mode</source>
<extracomment>The name of the ActionType ({4cecf87c-8a5d-4bc4-a4ba-d2ee6103714b}) of ThingClass zone</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="127"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="132"/>
<source>Set power</source>
<extracomment>The name of the ActionType ({e886377d-34b7-4908-ad0d-ed463fc6181d}) of ThingClass zone</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="135"/>
<source>Set target temperature</source>
<extracomment>The name of the ActionType ({684fcc62-f12b-4669-988e-4b79f153b0f2}) of ThingClass zone</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="130"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="133"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="138"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="141"/>
<source>Tado</source>
<extracomment>The name of the vendor ({23c8a19f-bd6a-4c90-bcc9-2f0c0d9292c5})
----------
@ -126,14 +140,14 @@ The name of the plugin Tado ({b4f2d2ee-50bb-4786-b7f5-261fed204fa5})</extracomme
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="136"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="144"/>
<source>Tado Connection</source>
<extracomment>The name of the ThingClass ({69be7d15-5658-4442-872e-42abbd8bff81})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="139"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="142"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="147"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="150"/>
<source>Tado mode</source>
<extracomment>The name of the ParamType (ThingClass: zone, EventType: tadoMode, ID: {8b800998-5c2d-4940-9d0e-036979cf49ca})
----------
@ -141,15 +155,15 @@ The name of the StateType ({8b800998-5c2d-4940-9d0e-036979cf49ca}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="145"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="153"/>
<source>Tado mode changed</source>
<extracomment>The name of the EventType ({8b800998-5c2d-4940-9d0e-036979cf49ca}) of ThingClass zone</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="148"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="151"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="154"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="156"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="159"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="162"/>
<source>Target temperature</source>
<extracomment>The name of the ParamType (ThingClass: zone, ActionType: targetTemperature, ID: {684fcc62-f12b-4669-988e-4b79f153b0f2})
----------
@ -159,14 +173,14 @@ The name of the StateType ({684fcc62-f12b-4669-988e-4b79f153b0f2}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="157"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="165"/>
<source>Target temperature changed</source>
<extracomment>The name of the EventType ({684fcc62-f12b-4669-988e-4b79f153b0f2}) of ThingClass zone</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="160"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="163"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="168"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="171"/>
<source>Temperature</source>
<extracomment>The name of the ParamType (ThingClass: zone, EventType: temperature, ID: {80098178-7d92-43dd-a216-23704cc0eaa2})
----------
@ -174,20 +188,20 @@ The name of the StateType ({80098178-7d92-43dd-a216-23704cc0eaa2}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="166"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="174"/>
<source>Temperature changed</source>
<extracomment>The name of the EventType ({80098178-7d92-43dd-a216-23704cc0eaa2}) of ThingClass zone</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="169"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="177"/>
<source>Type</source>
<extracomment>The name of the ParamType (ThingClass: zone, Type: thing, ID: {8e86797e-5333-4428-9dba-9ed5ac243b44})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="172"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="175"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="180"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="183"/>
<source>Username</source>
<extracomment>The name of the ParamType (ThingClass: tadoConnection, EventType: userDisplayName, ID: {33f55afc-a673-47a4-9fb0-75fdac6a66f4})
----------
@ -195,14 +209,14 @@ The name of the StateType ({33f55afc-a673-47a4-9fb0-75fdac6a66f4}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="178"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="186"/>
<source>Username changed</source>
<extracomment>The name of the EventType ({33f55afc-a673-47a4-9fb0-75fdac6a66f4}) of ThingClass tadoConnection</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="181"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="184"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="189"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="192"/>
<source>Window open</source>
<extracomment>The name of the ParamType (ThingClass: zone, EventType: windowOpen, ID: {c7a04e26-bb22-406e-b117-262bdb8b9c0e})
----------
@ -210,19 +224,19 @@ The name of the StateType ({c7a04e26-bb22-406e-b117-262bdb8b9c0e}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="187"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="195"/>
<source>Window open changed</source>
<extracomment>The name of the EventType ({c7a04e26-bb22-406e-b117-262bdb8b9c0e}) of ThingClass zone</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="190"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="198"/>
<source>Zone</source>
<extracomment>The name of the ThingClass ({1a7bb944-fb9c-490a-8a4c-794b27282292})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="193"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="201"/>
<source>Zone id</source>
<extracomment>The name of the ParamType (ThingClass: zone, Type: thing, ID: {cd67476b-978d-4a22-a40e-50cbc941e09e})</extracomment>
<translation type="unfinished"></translation>