Merge PR #332: Tado: Added dynamic API credential optaining
This commit is contained in:
commit
56d9e4a105
@ -45,15 +45,17 @@ IntegrationPluginTado::IntegrationPluginTado()
|
||||
|
||||
void IntegrationPluginTado::startPairing(ThingPairingInfo *info)
|
||||
{
|
||||
// Checking the internet connection
|
||||
qCDebug(dcTado()) << "Start pairing process, checking the internet connection ...";
|
||||
NetworkAccessManager *network = hardwareManager()->networkManager();
|
||||
QNetworkReply *reply = network->get(QNetworkRequest(QUrl("https://my.tado.com/api/v2")));
|
||||
connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater);
|
||||
connect(reply, &QNetworkReply::finished, info, [reply, info] {
|
||||
|
||||
if (reply->error() == QNetworkReply::NetworkError::HostNotFoundError) {
|
||||
qCWarning(dcTado()) << "Tado server is not reachable, likely because of a missing internet connection.";
|
||||
info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("Tado server is not reachable."));
|
||||
} else {
|
||||
qCDebug(dcTado()) << "Internet connection available";
|
||||
info->finish(Thing::ThingErrorNoError, QT_TR_NOOP("Please enter the login credentials for your Tado account."));
|
||||
}
|
||||
});
|
||||
@ -63,13 +65,6 @@ void IntegrationPluginTado::confirmPairing(ThingPairingInfo *info, const QString
|
||||
{
|
||||
qCDebug(dcTado()) << "Confirm pairing" << username << "Network manager available" << hardwareManager()->networkManager()->available();
|
||||
Tado *tado = new Tado(hardwareManager()->networkManager(), username, this);
|
||||
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);
|
||||
connect(tado, &Tado::zoneStateReceived, this, &IntegrationPluginTado::onZoneStateReceived);
|
||||
connect(tado, &Tado::overlayReceived, this, &IntegrationPluginTado::onOverlayReceived);
|
||||
m_unfinishedTadoAccounts.insert(info->thingId(), tado);
|
||||
|
||||
connect(info, &ThingPairingInfo::aborted, this, [info, tado, this]() {
|
||||
@ -78,13 +73,26 @@ void IntegrationPluginTado::confirmPairing(ThingPairingInfo *info, const QString
|
||||
tado->deleteLater();
|
||||
});
|
||||
|
||||
connect(tado, &Tado::connectionError, info, [this, info] (QNetworkReply::NetworkError error){
|
||||
if (error != QNetworkReply::NetworkError::NoError){
|
||||
info->finish(Thing::ThingErrorSetupFailed);
|
||||
connect(tado, &Tado::connectionError, info, [info] (QNetworkReply::NetworkError error){
|
||||
|
||||
if (error == QNetworkReply::NetworkError::ProtocolInvalidOperationError) {
|
||||
qCWarning(dcTado()) << "Confirm pairing failed, wrong username or password";
|
||||
info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("Wrong username or password."));
|
||||
} else if (error != QNetworkReply::NetworkError::NoError){
|
||||
qCWarning(dcTado()) << "Confirm pairing failed" << error;
|
||||
info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("Connection error"));
|
||||
}
|
||||
// info->finish(success) will be called after the token has been received
|
||||
});
|
||||
|
||||
connect(tado, &Tado::apiCredentialsReceived, info, [info, password, tado] (bool success) {
|
||||
if (success) {
|
||||
tado->getToken(password);
|
||||
} else {
|
||||
info->finish(Thing::ThingErrorAuthenticationFailure, QT_TR_NOOP("Client credentials not found, the plug-in version might be outdated."));
|
||||
}
|
||||
});
|
||||
|
||||
connect(tado, &Tado::tokenReceived, info, [this, info, username, password](Tado::Token token) {
|
||||
Q_UNUSED(token)
|
||||
|
||||
@ -95,21 +103,28 @@ void IntegrationPluginTado::confirmPairing(ThingPairingInfo *info, const QString
|
||||
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
});
|
||||
tado->getToken(password);
|
||||
tado->getApiCredentials();
|
||||
}
|
||||
|
||||
void IntegrationPluginTado::setupThing(ThingSetupInfo *info)
|
||||
{
|
||||
Thing *thing = info->thing();
|
||||
|
||||
if (thing->thingClassId() == tadoConnectionThingClassId) {
|
||||
if (thing->thingClassId() == tadoAccountThingClassId) {
|
||||
|
||||
qCDebug(dcTado) << "Setup tado connection" << thing->name() << thing->params();
|
||||
qCDebug(dcTado) << "Setup Tado account" << thing->name() << thing->params();
|
||||
Tado *tado;
|
||||
|
||||
if (m_tadoAccounts.contains(thing->id())) {
|
||||
qCDebug(dcTado()) << "Setup after reconfigure, cleaning up";
|
||||
m_tadoAccounts.take(thing->id())->deleteLater();
|
||||
}
|
||||
|
||||
if (m_unfinishedTadoAccounts.contains(thing->id())) {
|
||||
qCDebug(dcTado()) << "Using Tado connection from pairing process";
|
||||
tado = m_unfinishedTadoAccounts.take(thing->id());
|
||||
m_tadoAccounts.insert(thing->id(), tado);
|
||||
return info->finish(Thing::ThingErrorNoError);
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
} else {
|
||||
pluginStorage()->beginGroup(thing->id().toString());
|
||||
QString username = pluginStorage()->value("username").toString();
|
||||
@ -117,14 +132,6 @@ void IntegrationPluginTado::setupThing(ThingSetupInfo *info)
|
||||
pluginStorage()->endGroup();
|
||||
|
||||
tado = new Tado(hardwareManager()->networkManager(), username, this);
|
||||
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);
|
||||
connect(tado, &Tado::zoneStateReceived, this, &IntegrationPluginTado::onZoneStateReceived);
|
||||
connect(tado, &Tado::overlayReceived, this, &IntegrationPluginTado::onOverlayReceived);
|
||||
|
||||
m_tadoAccounts.insert(thing->id(), tado);
|
||||
connect(info, &ThingSetupInfo::aborted, [info, this] {
|
||||
if (m_tadoAccounts.contains(info->thing()->id())) {
|
||||
@ -133,48 +140,67 @@ void IntegrationPluginTado::setupThing(ThingSetupInfo *info)
|
||||
}
|
||||
});
|
||||
|
||||
connect(tado, &Tado::tokenReceived, info, [this, info, tado](Tado::Token token) {
|
||||
connect(tado, &Tado::apiCredentialsReceived, info, [password, tado] {
|
||||
tado->getToken(password);
|
||||
});
|
||||
|
||||
connect(tado, &Tado::tokenReceived, info, [ info](Tado::Token token) {
|
||||
Q_UNUSED(token)
|
||||
|
||||
qCDebug(dcTado()) << "Token received, account setup successfull";
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
});
|
||||
|
||||
connect(tado, &Tado::connectionError, info, [this, info] (QNetworkReply::NetworkError error){
|
||||
if (error == QNetworkReply::NetworkError::HostNotFoundError) {
|
||||
QTimer::singleShot(2000, info, [info, this] {
|
||||
connect(tado, &Tado::connectionError, info, [this, info] (QNetworkReply::NetworkError error) {
|
||||
|
||||
if (error != QNetworkReply::NetworkError::NoError){
|
||||
|
||||
pluginStorage()->beginGroup(info->thing()->id().toString());
|
||||
QString password = pluginStorage()->value("password").toString();
|
||||
pluginStorage()->endGroup();
|
||||
if (m_tadoAccounts.contains(info->thing()->id())) {
|
||||
Tado *tado = m_tadoAccounts.take(info->thing()->id());
|
||||
tado->getToken(password);
|
||||
}
|
||||
});
|
||||
} else if (error != QNetworkReply::NetworkError::NoError){
|
||||
if (m_tadoAccounts.contains(info->thing()->id())) {
|
||||
Tado *tado = m_tadoAccounts.take(info->thing()->id());
|
||||
tado->deleteLater();
|
||||
}
|
||||
info->finish(Thing::ThingErrorSetupFailed);
|
||||
if (error == QNetworkReply::NetworkError::ProtocolInvalidOperationError) {
|
||||
qCWarning(dcTado()) << "Confirm pairing failed, wrong username or password";
|
||||
info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("Wrong username or password."));
|
||||
} else {
|
||||
qCWarning(dcTado()) << "Confirm pairing failed" << error;
|
||||
info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("Connection error"));
|
||||
}
|
||||
}
|
||||
});
|
||||
tado->getToken(password);
|
||||
tado->getApiCredentials();
|
||||
}
|
||||
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);
|
||||
connect(tado, &Tado::zoneStateReceived, this, &IntegrationPluginTado::onZoneStateReceived);
|
||||
connect(tado, &Tado::overlayReceived, this, &IntegrationPluginTado::onOverlayReceived);
|
||||
return;
|
||||
|
||||
} else if (thing->thingClassId() == zoneThingClassId) {
|
||||
qCDebug(dcTado) << "Setup tado thermostat" << thing->params();
|
||||
return info->finish(Thing::ThingErrorNoError);
|
||||
qCDebug(dcTado) << "Setup Tado zone" << thing->params();
|
||||
Thing *parentThing = myThings().findById(thing->parentId());
|
||||
if(parentThing->setupComplete()) {
|
||||
return info->finish(Thing::ThingErrorNoError);
|
||||
} else {
|
||||
connect(parentThing, &Thing::setupStatusChanged, info, [parentThing, info]{
|
||||
if (parentThing->setupComplete()) {
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
} else {
|
||||
return info->finish(Thing::ThingErrorThingClassNotFound);
|
||||
qCWarning(dcTado()) << "Unhandled thing class in setupDevice";
|
||||
return info->finish(Thing::ThingErrorThingClassNotFound);
|
||||
}
|
||||
}
|
||||
|
||||
void IntegrationPluginTado::thingRemoved(Thing *thing)
|
||||
{
|
||||
if (thing->thingClassId() == tadoConnectionThingClassId) {
|
||||
if (thing->thingClassId() == tadoAccountThingClassId) {
|
||||
Tado *tado = m_tadoAccounts.take(thing->id());
|
||||
tado->deleteLater();
|
||||
}
|
||||
@ -192,11 +218,11 @@ void IntegrationPluginTado::postSetupThing(Thing *thing)
|
||||
connect(m_pluginTimer, &PluginTimer::timeout, this, &IntegrationPluginTado::onPluginTimer);
|
||||
}
|
||||
|
||||
if (thing->thingClassId() == tadoConnectionThingClassId) {
|
||||
if (thing->thingClassId() == tadoAccountThingClassId) {
|
||||
Tado *tado = m_tadoAccounts.value(thing->id());
|
||||
thing->setStateValue(tadoConnectionUserDisplayNameStateTypeId, tado->username());
|
||||
thing->setStateValue(tadoConnectionLoggedInStateTypeId, true);
|
||||
thing->setStateValue(tadoConnectionConnectedStateTypeId, true);
|
||||
thing->setStateValue(tadoAccountUserDisplayNameStateTypeId, tado->username());
|
||||
thing->setStateValue(tadoAccountLoggedInStateTypeId, true);
|
||||
thing->setStateValue(tadoAccountConnectedStateTypeId, true);
|
||||
tado->getHomes();
|
||||
|
||||
} else if (thing->thingClassId() == zoneThingClassId) {
|
||||
@ -270,16 +296,22 @@ void IntegrationPluginTado::executeAction(ThingActionInfo *info)
|
||||
|
||||
void IntegrationPluginTado::onPluginTimer()
|
||||
{
|
||||
foreach (Thing *thing, myThings().filterByThingClassId(zoneThingClassId)) {
|
||||
Tado *tado = m_tadoAccounts.value(thing->parentId());
|
||||
if (!tado){
|
||||
qCWarning(dcTado()) << "Could not find any Tado connection to Zone" << thing->name();
|
||||
continue;
|
||||
Q_FOREACH(Tado *tado, m_tadoAccounts){
|
||||
ThingId accountThingId = m_tadoAccounts.key(tado);
|
||||
if (!tado->authenticated()) {
|
||||
pluginStorage()->beginGroup(accountThingId.toString());
|
||||
QString password = pluginStorage()->value("password").toString();
|
||||
pluginStorage()->endGroup();
|
||||
tado->getToken(password);
|
||||
} else {
|
||||
Q_FOREACH(Thing *thing, myThings().filterByParentId(accountThingId)) {
|
||||
if (thing->thingClassId() == zoneThingClassId) {
|
||||
QString homeId = thing->paramValue(zoneThingHomeIdParamTypeId).toString();
|
||||
QString zoneId = thing->paramValue(zoneThingZoneIdParamTypeId).toString();
|
||||
tado->getZoneState(homeId, zoneId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString homeId = thing->paramValue(zoneThingHomeIdParamTypeId).toString();
|
||||
QString zoneId = thing->paramValue(zoneThingZoneIdParamTypeId).toString();
|
||||
tado->getZoneState(homeId, zoneId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -291,10 +323,14 @@ void IntegrationPluginTado::onConnectionChanged(bool connected)
|
||||
Thing *thing = myThings().findById(m_tadoAccounts.key(tado));
|
||||
if (!thing)
|
||||
return;
|
||||
thing->setStateValue(tadoConnectionConnectedStateTypeId, connected);
|
||||
thing->setStateValue(tadoAccountConnectedStateTypeId, connected);
|
||||
|
||||
foreach(Thing *zoneThing, myThings().filterByParentId(thing->id())) {
|
||||
zoneThing->setStateValue(zoneConnectedStateTypeId, connected);
|
||||
if (!connected) {
|
||||
Q_FOREACH(Thing *child, myThings().filterByParentId(thing->id())) {
|
||||
if (child->thingClassId() == zoneThingClassId) {
|
||||
child->setStateValue(zoneConnectedStateTypeId, connected);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -309,17 +345,13 @@ void IntegrationPluginTado::onAuthenticationStatusChanged(bool authenticated)
|
||||
qCWarning(dcTado()) << "OnAuthenticationChanged no thing found by ID" << m_tadoAccounts.key(tado);
|
||||
return;
|
||||
}
|
||||
thing->setStateValue(tadoConnectionLoggedInStateTypeId, authenticated);
|
||||
|
||||
thing->setStateValue(tadoAccountLoggedInStateTypeId, 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);
|
||||
Q_FOREACH(Thing *child, myThings().filterByParentId(thing->id())) {
|
||||
if (child->thingClassId() == zoneThingClassId) {
|
||||
child->setStateValue(zoneConnectedStateTypeId, authenticated);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,8 +10,8 @@
|
||||
"thingClasses": [
|
||||
{
|
||||
"id": "69be7d15-5658-4442-872e-42abbd8bff81",
|
||||
"name": "tadoConnection",
|
||||
"displayName": "Tado Connection",
|
||||
"name": "tadoAccount",
|
||||
"displayName": "Tado account",
|
||||
"interfaces": ["account"],
|
||||
"createMethods": ["user"],
|
||||
"setupMethod": "userandpassword",
|
||||
@ -19,8 +19,8 @@
|
||||
{
|
||||
"id": "2f79bc1d-27ed-480a-b583-728363c83ea6",
|
||||
"name": "connected",
|
||||
"displayName": "Available",
|
||||
"displayNameEvent": "Available changed",
|
||||
"displayName": "Connected",
|
||||
"displayNameEvent": "Connected changed",
|
||||
"type": "bool",
|
||||
"defaultValue": false
|
||||
},
|
||||
@ -77,8 +77,8 @@
|
||||
{
|
||||
"id": "9f45a703-6a15-447c-a77a-0df731cda48e",
|
||||
"name": "connected",
|
||||
"displayName": "Available",
|
||||
"displayNameEvent": "Available changed",
|
||||
"displayName": "Connected",
|
||||
"displayNameEvent": "Connected changed",
|
||||
"type": "bool",
|
||||
"defaultValue": false
|
||||
},
|
||||
|
||||
118
tado/tado.cpp
118
tado/tado.cpp
@ -56,6 +56,11 @@ QString Tado::username()
|
||||
return m_username;
|
||||
}
|
||||
|
||||
bool Tado::apiAvailable()
|
||||
{
|
||||
return m_apiAvailable;
|
||||
}
|
||||
|
||||
bool Tado::authenticated()
|
||||
{
|
||||
return m_authenticationStatus;
|
||||
@ -66,8 +71,74 @@ bool Tado::connected()
|
||||
return m_connectionStatus;
|
||||
}
|
||||
|
||||
void Tado::getApiCredentials(const QString &url)
|
||||
{
|
||||
QNetworkRequest request;
|
||||
request.setUrl(url);
|
||||
QNetworkReply *reply = m_networkManager->get(request);
|
||||
qCDebug(dcTado()) << "Sending request" << request.url();
|
||||
connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater);
|
||||
connect(reply, &QNetworkReply::finished, this, [reply, this] {
|
||||
|
||||
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||
// Check HTTP status code
|
||||
if (status != 200 || reply->error() != QNetworkReply::NoError) {
|
||||
qCWarning(dcTado()) << "Request error:" << status << reply->errorString();
|
||||
emit apiCredentialsReceived(false);
|
||||
return;
|
||||
}
|
||||
QRegExp filter;
|
||||
filter.setPatternSyntax(QRegExp::Wildcard);
|
||||
filter.setPattern("*tgaRestApiV2Endpoint:*");
|
||||
|
||||
QStringList list = QString(reply->readAll()).split('\n');
|
||||
int index = list.indexOf(filter);
|
||||
if (index == -1) {
|
||||
qCWarning(dcTado()) << "GetApiCredenitals: Could not find the API url";
|
||||
emit apiCredentialsReceived(false);
|
||||
return;
|
||||
}
|
||||
m_baseControlUrl = list.value(index).split(": ").last().remove(QRegExp("[,']"));;
|
||||
qCDebug(dcTado()) << "Received control url" << m_baseControlUrl;
|
||||
filter.setPattern("*apiEndpoint*");
|
||||
index = list.indexOf(filter);
|
||||
if (index == -1) {
|
||||
qCWarning(dcTado()) << "GetApiCredenitals: Could not find the authorization url";
|
||||
emit apiCredentialsReceived(false);
|
||||
return;
|
||||
}
|
||||
m_baseAuthorizationUrl = list.value(index).split(": ").last().remove(QRegExp("[,']"))+"/token";
|
||||
qCDebug(dcTado()) << "Received auth url" << m_baseAuthorizationUrl;
|
||||
filter.setPattern("*clientId*");
|
||||
index = list.indexOf(filter);
|
||||
if (index == -1) {
|
||||
emit apiCredentialsReceived(false);
|
||||
qCWarning(dcTado()) << "GetApiCredenitals: Could not find the client Id";
|
||||
return;
|
||||
}
|
||||
m_clientId = list.value(index).split(": ").last().remove(QRegExp("[,']"));
|
||||
qCDebug(dcTado()) << "Received client id" << m_clientId.mid(0, 4)+"*****";
|
||||
filter.setPattern("*clientSecret*");
|
||||
index = list.indexOf(filter);
|
||||
if (index == -1) {
|
||||
qCWarning(dcTado()) << "GetApiCredenitals: Could not find the client secret";
|
||||
emit apiCredentialsReceived(false);
|
||||
return;
|
||||
}
|
||||
m_clientSecret = list.value(index).split(": ").last().remove(QRegExp("[,']"));
|
||||
qCDebug(dcTado()) << "Received client secret" << m_clientSecret.mid(0, 4)+"*****";
|
||||
m_apiAvailable = true;
|
||||
emit apiCredentialsReceived(true);
|
||||
});
|
||||
}
|
||||
|
||||
void Tado::getToken(const QString &password)
|
||||
{
|
||||
if (!m_apiAvailable) {
|
||||
qCWarning(dcTado()) << "Not sending request, get API credentials first";
|
||||
return;
|
||||
}
|
||||
|
||||
QNetworkRequest request;
|
||||
request.setUrl(QUrl(m_baseAuthorizationUrl));
|
||||
request.setHeader(QNetworkRequest::KnownHeaders::ContentTypeHeader, "application/x-www-form-urlencoded");
|
||||
@ -102,7 +173,7 @@ void Tado::getToken(const QString &password)
|
||||
QJsonParseError error;
|
||||
QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error);
|
||||
if (error.error != QJsonParseError::NoError) {
|
||||
qDebug(dcTado()) << "Get Token: Received invalide JSON object";
|
||||
qDebug(dcTado()) << "Get Token: Received invalid JSON object:" << data;
|
||||
return;
|
||||
}
|
||||
if (data.isObject()) {
|
||||
@ -137,6 +208,11 @@ void Tado::getToken(const QString &password)
|
||||
|
||||
void Tado::getHomes()
|
||||
{
|
||||
if (!m_apiAvailable) {
|
||||
qCWarning(dcTado()) << "Not sending request, get API credentials first";
|
||||
return;
|
||||
}
|
||||
|
||||
if(m_accessToken.isEmpty()) {
|
||||
qCWarning(dcTado()) << "Not sending request, get the access token first";
|
||||
return;
|
||||
@ -170,7 +246,7 @@ void Tado::getHomes()
|
||||
QJsonParseError error;
|
||||
QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error);
|
||||
if (error.error != QJsonParseError::NoError) {
|
||||
qDebug(dcTado()) << "Get Token: Recieved invalide JSON object";
|
||||
qDebug(dcTado()) << "Get Token: Recieved invalid JSON object";
|
||||
return;
|
||||
}
|
||||
QList<Home> homes;
|
||||
@ -188,6 +264,16 @@ void Tado::getHomes()
|
||||
|
||||
void Tado::getZones(const QString &homeId)
|
||||
{
|
||||
if (!m_apiAvailable) {
|
||||
qCWarning(dcTado()) << "Not sending request, get API credentials first";
|
||||
return;
|
||||
}
|
||||
|
||||
if(m_accessToken.isEmpty()) {
|
||||
qCWarning(dcTado()) << "Not sending request, get the access token first";
|
||||
return;
|
||||
}
|
||||
|
||||
QNetworkRequest request;
|
||||
request.setUrl(QUrl(m_baseControlUrl+"/homes/"+homeId+"/zones"));
|
||||
request.setHeader(QNetworkRequest::KnownHeaders::ContentTypeHeader, "application/x-www-form-urlencoded");
|
||||
@ -216,7 +302,7 @@ void Tado::getZones(const QString &homeId)
|
||||
QJsonParseError error;
|
||||
QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error);
|
||||
if (error.error != QJsonParseError::NoError) {
|
||||
qDebug(dcTado()) << "Get Token: Recieved invalide JSON object";
|
||||
qDebug(dcTado()) << "Get Token: Recieved invalid JSON object";
|
||||
return;
|
||||
}
|
||||
QList<Zone> zones;
|
||||
@ -235,10 +321,16 @@ void Tado::getZones(const QString &homeId)
|
||||
|
||||
void Tado::getZoneState(const QString &homeId, const QString &zoneId)
|
||||
{
|
||||
if (!m_apiAvailable) {
|
||||
qCWarning(dcTado()) << "Not sending request, get API credentials first";
|
||||
return;
|
||||
}
|
||||
|
||||
if(m_accessToken.isEmpty()) {
|
||||
qCWarning(dcTado()) << "Not sending request, get the access token first";
|
||||
return;
|
||||
}
|
||||
|
||||
QNetworkRequest request;
|
||||
request.setUrl(QUrl(m_baseControlUrl+"/homes/"+homeId+"/zones/"+zoneId+"/state"));
|
||||
request.setHeader(QNetworkRequest::KnownHeaders::ContentTypeHeader, "application/x-www-form-urlencoded");
|
||||
@ -270,7 +362,7 @@ void Tado::getZoneState(const QString &homeId, const QString &zoneId)
|
||||
QJsonParseError error;
|
||||
QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error);
|
||||
if (error.error != QJsonParseError::NoError) {
|
||||
qDebug(dcTado()) << "Get Token: Recieved invalide JSON object";
|
||||
qDebug(dcTado()) << "Get Token: Recieved invalid JSON object";
|
||||
return;
|
||||
}
|
||||
ZoneState state;
|
||||
@ -307,10 +399,16 @@ void Tado::getZoneState(const QString &homeId, const QString &zoneId)
|
||||
|
||||
QUuid Tado::setOverlay(const QString &homeId, const QString &zoneId, bool power, double targetTemperature)
|
||||
{
|
||||
if (!m_apiAvailable) {
|
||||
qCWarning(dcTado()) << "Not sending request, get API credentials first";
|
||||
return "";
|
||||
}
|
||||
|
||||
if(m_accessToken.isEmpty()) {
|
||||
qCWarning(dcTado()) << "Not sending request, get the access token first";
|
||||
return "";
|
||||
}
|
||||
|
||||
QUuid requestId = QUuid::createUuid();
|
||||
QNetworkRequest request;
|
||||
request.setUrl(QUrl(m_baseControlUrl+"/homes/"+homeId+"/zones/"+zoneId+"/overlay"));
|
||||
@ -355,7 +453,7 @@ QUuid Tado::setOverlay(const QString &homeId, const QString &zoneId, bool power,
|
||||
QJsonParseError error;
|
||||
QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error);
|
||||
if (error.error != QJsonParseError::NoError) {
|
||||
qDebug(dcTado()) << "Get Token: Recieved invalide JSON object";
|
||||
qDebug(dcTado()) << "Get Token: Recieved invalid JSON object";
|
||||
return;
|
||||
}
|
||||
QVariantMap map = data.toVariant().toMap();
|
||||
@ -376,10 +474,16 @@ QUuid Tado::setOverlay(const QString &homeId, const QString &zoneId, bool power,
|
||||
|
||||
QUuid Tado::deleteOverlay(const QString &homeId, const QString &zoneId)
|
||||
{
|
||||
if (!m_apiAvailable) {
|
||||
qCWarning(dcTado()) << "Not sending request, get API credentials first";
|
||||
return "";
|
||||
}
|
||||
|
||||
if(m_accessToken.isEmpty()) {
|
||||
qCWarning(dcTado()) << "Not sending request, get the access token first";
|
||||
return "";
|
||||
}
|
||||
|
||||
QUuid requestId = QUuid::createUuid();
|
||||
QNetworkRequest request;
|
||||
request.setUrl(QUrl(m_baseControlUrl+"/homes/"+homeId+"/zones/"+zoneId+"/overlay"));
|
||||
@ -414,7 +518,7 @@ QUuid Tado::deleteOverlay(const QString &homeId, const QString &zoneId)
|
||||
QJsonParseError error;
|
||||
QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error);
|
||||
if (error.error != QJsonParseError::NoError) {
|
||||
qDebug(dcTado()) << "Get Token: Recieved invalide JSON object";
|
||||
qDebug(dcTado()) << "Get Token: Recieved invalid JSON object";
|
||||
return;
|
||||
}
|
||||
QVariantMap map = data.toVariant().toMap();
|
||||
@ -494,7 +598,7 @@ void Tado::onRefreshTimer()
|
||||
QJsonParseError error;
|
||||
QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error);
|
||||
if (error.error != QJsonParseError::NoError) {
|
||||
qDebug(dcTado()) << "Get Token: Recieved invalide JSON object";
|
||||
qDebug(dcTado()) << "Get Token: Recieved invalid JSON object";
|
||||
return;
|
||||
}
|
||||
Token token;
|
||||
|
||||
12
tado/tado.h
12
tado/tado.h
@ -93,9 +93,11 @@ public:
|
||||
|
||||
void setUsername(const QString &username);
|
||||
QString username();
|
||||
bool apiAvailable();
|
||||
bool authenticated();
|
||||
bool connected();
|
||||
|
||||
void getApiCredentials(const QString &url = "https://my.tado.com/webapp/env.js");
|
||||
void getToken(const QString &password);
|
||||
void getHomes();
|
||||
void getZones(const QString &homeId);
|
||||
@ -105,10 +107,11 @@ public:
|
||||
QUuid deleteOverlay(const QString &homeId, const QString &zoneId);
|
||||
|
||||
private:
|
||||
QByteArray m_baseAuthorizationUrl = "https://auth.tado.com/oauth/token";
|
||||
QByteArray m_baseControlUrl = "https://my.tado.com/api/v2";
|
||||
QByteArray m_clientSecret = "4HJGRffVR8xb3XdEUQpjgZ1VplJi6Xgw";
|
||||
QByteArray m_clientId = "public-api-preview";
|
||||
bool m_apiAvailable = false;
|
||||
QString m_baseAuthorizationUrl;
|
||||
QString m_baseControlUrl;
|
||||
QString m_clientSecret;
|
||||
QString m_clientId;
|
||||
|
||||
NetworkAccessManager *m_networkManager = nullptr;
|
||||
QString m_username;
|
||||
@ -123,6 +126,7 @@ private:
|
||||
|
||||
signals:
|
||||
void connectionChanged(bool connected);
|
||||
void apiCredentialsReceived(bool success);
|
||||
void authenticationStatusChanged(bool authenticated);
|
||||
void requestExecuted(QUuid requestId, bool success);
|
||||
|
||||
|
||||
@ -4,51 +4,68 @@
|
||||
<context>
|
||||
<name>IntegrationPluginTado</name>
|
||||
<message>
|
||||
<location filename="../integrationplugintado.cpp" line="55"/>
|
||||
<location filename="../integrationplugintado.cpp" line="56"/>
|
||||
<source>Tado server is not reachable.</source>
|
||||
<translation>Tado-Server ist nicht erreichbar.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintado.cpp" line="57"/>
|
||||
<location filename="../integrationplugintado.cpp" line="59"/>
|
||||
<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>
|
||||
<message>
|
||||
<location filename="../integrationplugintado.cpp" line="80"/>
|
||||
<location filename="../integrationplugintado.cpp" line="157"/>
|
||||
<source>Wrong username or password.</source>
|
||||
<translation>Fascher Benutzername oder Passwort.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintado.cpp" line="83"/>
|
||||
<location filename="../integrationplugintado.cpp" line="160"/>
|
||||
<source>Connection error</source>
|
||||
<translation>Verbindungsfehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintado.cpp" line="92"/>
|
||||
<source>Client credentials not found, the plug-in version might be outdated.</source>
|
||||
<translation>Client-Anmeldeinformationen nicht gefunden, die Plug-In-Version ist möglicherweise veraltet.</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>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="71"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="74"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="77"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="80"/>
|
||||
<source>Connected</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 ParamType (ThingClass: tadoAccount, 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>
|
||||
The name of the StateType ({2f79bc1d-27ed-480a-b583-728363c83ea6}) of ThingClass tadoAccount</extracomment>
|
||||
<translation>Verbunden</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>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="83"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="86"/>
|
||||
<source>Connected 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>
|
||||
The name of the EventType ({2f79bc1d-27ed-480a-b583-728363c83ea6}) of ThingClass tadoAccount</extracomment>
|
||||
<translation>Verbunden geändert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="84"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="89"/>
|
||||
<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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="92"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="95"/>
|
||||
<source>Humidity</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: zone, EventType: humidity, ID: {0faaaff1-2a33-44ec-b68d-d8855f584b02})
|
||||
----------
|
||||
@ -56,30 +73,30 @@ The name of the StateType ({0faaaff1-2a33-44ec-b68d-d8855f584b02}) of ThingClass
|
||||
<translation>Luftfeuchte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="93"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="98"/>
|
||||
<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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="101"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="104"/>
|
||||
<source>Logged in</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: tadoConnection, EventType: loggedIn, ID: {2aed240b-8c5c-418b-a9d1-0d75412c1c27})
|
||||
<extracomment>The name of the ParamType (ThingClass: tadoAccount, EventType: loggedIn, ID: {2aed240b-8c5c-418b-a9d1-0d75412c1c27})
|
||||
----------
|
||||
The name of the StateType ({2aed240b-8c5c-418b-a9d1-0d75412c1c27}) of ThingClass tadoConnection</extracomment>
|
||||
The name of the StateType ({2aed240b-8c5c-418b-a9d1-0d75412c1c27}) of ThingClass tadoAccount</extracomment>
|
||||
<translation>Eingelogged</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="102"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="107"/>
|
||||
<source>Logged in changed</source>
|
||||
<extracomment>The name of the EventType ({2aed240b-8c5c-418b-a9d1-0d75412c1c27}) of ThingClass tadoConnection</extracomment>
|
||||
<extracomment>The name of the EventType ({2aed240b-8c5c-418b-a9d1-0d75412c1c27}) of ThingClass tadoAccount</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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="110"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="113"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="116"/>
|
||||
<source>Mode</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: zone, ActionType: mode, ID: {4cecf87c-8a5d-4bc4-a4ba-d2ee6103714b})
|
||||
----------
|
||||
@ -89,15 +106,15 @@ The name of the StateType ({4cecf87c-8a5d-4bc4-a4ba-d2ee6103714b}) of ThingClass
|
||||
<translation>Modus</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="114"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="119"/>
|
||||
<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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="122"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="125"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="128"/>
|
||||
<source>Power</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: zone, ActionType: power, ID: {e886377d-34b7-4908-ad0d-ed463fc6181d})
|
||||
----------
|
||||
@ -107,32 +124,32 @@ The name of the StateType ({e886377d-34b7-4908-ad0d-ed463fc6181d}) of ThingClass
|
||||
<translation>Eingeschalten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="126"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="131"/>
|
||||
<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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="134"/>
|
||||
<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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="137"/>
|
||||
<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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="140"/>
|
||||
<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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="143"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="146"/>
|
||||
<source>Tado</source>
|
||||
<extracomment>The name of the vendor ({23c8a19f-bd6a-4c90-bcc9-2f0c0d9292c5})
|
||||
----------
|
||||
@ -140,14 +157,14 @@ The name of the plugin Tado ({b4f2d2ee-50bb-4786-b7f5-261fed204fa5})</extracomme
|
||||
<translation>Tado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="144"/>
|
||||
<source>Tado Connection</source>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="149"/>
|
||||
<source>Tado account</source>
|
||||
<extracomment>The name of the ThingClass ({69be7d15-5658-4442-872e-42abbd8bff81})</extracomment>
|
||||
<translation>Tado Verbindung</translation>
|
||||
<translation>Tado-Benutzerkonto</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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="152"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="155"/>
|
||||
<source>Tado mode</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: zone, EventType: tadoMode, ID: {8b800998-5c2d-4940-9d0e-036979cf49ca})
|
||||
----------
|
||||
@ -155,15 +172,15 @@ The name of the StateType ({8b800998-5c2d-4940-9d0e-036979cf49ca}) of ThingClass
|
||||
<translation>Tado Modus</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="153"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="158"/>
|
||||
<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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="161"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="164"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="167"/>
|
||||
<source>Target temperature</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: zone, ActionType: targetTemperature, ID: {684fcc62-f12b-4669-988e-4b79f153b0f2})
|
||||
----------
|
||||
@ -173,14 +190,14 @@ The name of the StateType ({684fcc62-f12b-4669-988e-4b79f153b0f2}) of ThingClass
|
||||
<translation>Zieltemperatur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="165"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="170"/>
|
||||
<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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="173"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="176"/>
|
||||
<source>Temperature</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: zone, EventType: temperature, ID: {80098178-7d92-43dd-a216-23704cc0eaa2})
|
||||
----------
|
||||
@ -188,35 +205,35 @@ The name of the StateType ({80098178-7d92-43dd-a216-23704cc0eaa2}) of ThingClass
|
||||
<translation>Temperatur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="174"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="179"/>
|
||||
<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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="182"/>
|
||||
<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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="185"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="188"/>
|
||||
<source>Username</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: tadoConnection, EventType: userDisplayName, ID: {33f55afc-a673-47a4-9fb0-75fdac6a66f4})
|
||||
<extracomment>The name of the ParamType (ThingClass: tadoAccount, EventType: userDisplayName, ID: {33f55afc-a673-47a4-9fb0-75fdac6a66f4})
|
||||
----------
|
||||
The name of the StateType ({33f55afc-a673-47a4-9fb0-75fdac6a66f4}) of ThingClass tadoConnection</extracomment>
|
||||
The name of the StateType ({33f55afc-a673-47a4-9fb0-75fdac6a66f4}) of ThingClass tadoAccount</extracomment>
|
||||
<translation>Benutzername</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="186"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="191"/>
|
||||
<source>Username changed</source>
|
||||
<extracomment>The name of the EventType ({33f55afc-a673-47a4-9fb0-75fdac6a66f4}) of ThingClass tadoConnection</extracomment>
|
||||
<extracomment>The name of the EventType ({33f55afc-a673-47a4-9fb0-75fdac6a66f4}) of ThingClass tadoAccount</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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="194"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="197"/>
|
||||
<source>Window open</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: zone, EventType: windowOpen, ID: {c7a04e26-bb22-406e-b117-262bdb8b9c0e})
|
||||
----------
|
||||
@ -224,19 +241,19 @@ The name of the StateType ({c7a04e26-bb22-406e-b117-262bdb8b9c0e}) of ThingClass
|
||||
<translation>Fenster offen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="195"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="200"/>
|
||||
<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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="203"/>
|
||||
<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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="206"/>
|
||||
<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>
|
||||
|
||||
@ -4,51 +4,68 @@
|
||||
<context>
|
||||
<name>IntegrationPluginTado</name>
|
||||
<message>
|
||||
<location filename="../integrationplugintado.cpp" line="55"/>
|
||||
<location filename="../integrationplugintado.cpp" line="56"/>
|
||||
<source>Tado server is not reachable.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintado.cpp" line="57"/>
|
||||
<location filename="../integrationplugintado.cpp" line="59"/>
|
||||
<source>Please enter the login credentials for your Tado account.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintado.cpp" line="80"/>
|
||||
<location filename="../integrationplugintado.cpp" line="157"/>
|
||||
<source>Wrong username or password.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintado.cpp" line="83"/>
|
||||
<location filename="../integrationplugintado.cpp" line="160"/>
|
||||
<source>Connection error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintado.cpp" line="92"/>
|
||||
<source>Client credentials not found, the plug-in version might be outdated.</source>
|
||||
<translation type="unfinished"></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>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="71"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="74"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="77"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="80"/>
|
||||
<source>Connected</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 ParamType (ThingClass: tadoAccount, EventType: connected, ID: {2f79bc1d-27ed-480a-b583-728363c83ea6})
|
||||
----------
|
||||
The name of the StateType ({2f79bc1d-27ed-480a-b583-728363c83ea6}) of ThingClass tadoConnection</extracomment>
|
||||
The name of the StateType ({2f79bc1d-27ed-480a-b583-728363c83ea6}) of ThingClass tadoAccount</extracomment>
|
||||
<translation type="unfinished"></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>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="83"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="86"/>
|
||||
<source>Connected 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>
|
||||
The name of the EventType ({2f79bc1d-27ed-480a-b583-728363c83ea6}) of ThingClass tadoAccount</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="84"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="89"/>
|
||||
<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="87"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="90"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="92"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="95"/>
|
||||
<source>Humidity</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: zone, EventType: humidity, ID: {0faaaff1-2a33-44ec-b68d-d8855f584b02})
|
||||
----------
|
||||
@ -56,30 +73,30 @@ 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="93"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="98"/>
|
||||
<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="96"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="99"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="101"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="104"/>
|
||||
<source>Logged in</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: tadoConnection, EventType: loggedIn, ID: {2aed240b-8c5c-418b-a9d1-0d75412c1c27})
|
||||
<extracomment>The name of the ParamType (ThingClass: tadoAccount, EventType: loggedIn, ID: {2aed240b-8c5c-418b-a9d1-0d75412c1c27})
|
||||
----------
|
||||
The name of the StateType ({2aed240b-8c5c-418b-a9d1-0d75412c1c27}) of ThingClass tadoConnection</extracomment>
|
||||
The name of the StateType ({2aed240b-8c5c-418b-a9d1-0d75412c1c27}) of ThingClass tadoAccount</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="102"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="107"/>
|
||||
<source>Logged in changed</source>
|
||||
<extracomment>The name of the EventType ({2aed240b-8c5c-418b-a9d1-0d75412c1c27}) of ThingClass tadoConnection</extracomment>
|
||||
<extracomment>The name of the EventType ({2aed240b-8c5c-418b-a9d1-0d75412c1c27}) of ThingClass tadoAccount</extracomment>
|
||||
<translation type="unfinished"></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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="110"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="113"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="116"/>
|
||||
<source>Mode</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: zone, ActionType: mode, ID: {4cecf87c-8a5d-4bc4-a4ba-d2ee6103714b})
|
||||
----------
|
||||
@ -89,15 +106,15 @@ 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="114"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="119"/>
|
||||
<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="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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="122"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="125"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="128"/>
|
||||
<source>Power</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: zone, ActionType: power, ID: {e886377d-34b7-4908-ad0d-ed463fc6181d})
|
||||
----------
|
||||
@ -107,32 +124,32 @@ The name of the StateType ({e886377d-34b7-4908-ad0d-ed463fc6181d}) of ThingClass
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="126"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="131"/>
|
||||
<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="129"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="134"/>
|
||||
<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="132"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="137"/>
|
||||
<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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="140"/>
|
||||
<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="138"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="141"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="143"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="146"/>
|
||||
<source>Tado</source>
|
||||
<extracomment>The name of the vendor ({23c8a19f-bd6a-4c90-bcc9-2f0c0d9292c5})
|
||||
----------
|
||||
@ -140,14 +157,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="144"/>
|
||||
<source>Tado Connection</source>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="149"/>
|
||||
<source>Tado account</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="147"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="150"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="152"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="155"/>
|
||||
<source>Tado mode</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: zone, EventType: tadoMode, ID: {8b800998-5c2d-4940-9d0e-036979cf49ca})
|
||||
----------
|
||||
@ -155,15 +172,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="153"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="158"/>
|
||||
<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="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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="161"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="164"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="167"/>
|
||||
<source>Target temperature</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: zone, ActionType: targetTemperature, ID: {684fcc62-f12b-4669-988e-4b79f153b0f2})
|
||||
----------
|
||||
@ -173,14 +190,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="165"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="170"/>
|
||||
<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="168"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="171"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="173"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="176"/>
|
||||
<source>Temperature</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: zone, EventType: temperature, ID: {80098178-7d92-43dd-a216-23704cc0eaa2})
|
||||
----------
|
||||
@ -188,35 +205,35 @@ 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="174"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="179"/>
|
||||
<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="177"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="182"/>
|
||||
<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="180"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="183"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="185"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="188"/>
|
||||
<source>Username</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: tadoConnection, EventType: userDisplayName, ID: {33f55afc-a673-47a4-9fb0-75fdac6a66f4})
|
||||
<extracomment>The name of the ParamType (ThingClass: tadoAccount, EventType: userDisplayName, ID: {33f55afc-a673-47a4-9fb0-75fdac6a66f4})
|
||||
----------
|
||||
The name of the StateType ({33f55afc-a673-47a4-9fb0-75fdac6a66f4}) of ThingClass tadoConnection</extracomment>
|
||||
The name of the StateType ({33f55afc-a673-47a4-9fb0-75fdac6a66f4}) of ThingClass tadoAccount</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="186"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="191"/>
|
||||
<source>Username changed</source>
|
||||
<extracomment>The name of the EventType ({33f55afc-a673-47a4-9fb0-75fdac6a66f4}) of ThingClass tadoConnection</extracomment>
|
||||
<extracomment>The name of the EventType ({33f55afc-a673-47a4-9fb0-75fdac6a66f4}) of ThingClass tadoAccount</extracomment>
|
||||
<translation type="unfinished"></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"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="194"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="197"/>
|
||||
<source>Window open</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: zone, EventType: windowOpen, ID: {c7a04e26-bb22-406e-b117-262bdb8b9c0e})
|
||||
----------
|
||||
@ -224,19 +241,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="195"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="200"/>
|
||||
<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="198"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="203"/>
|
||||
<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="201"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tado/plugininfo.h" line="206"/>
|
||||
<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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user