diff --git a/awattar/README.md b/awattar/README.md index d6ee857e..151fb498 100644 --- a/awattar/README.md +++ b/awattar/README.md @@ -1,8 +1,14 @@ # aWATTar -This plugin allows to receive the current energy market price from the [aWATTar GmbH](https://www.awattar.com/). -In order to use this plugin you need to enter the access token from your energy provider. You can find more -information about you accesstoken [here](https://www.awattar.com/api-unser-datenfeed). +This plugin allows to receive the current energy market price from the aWATTar GmbH. + +* [aWATTar Austria](https://www.awattar.com) +* [aWATTar Germany](https://www.awattar.de) + +The Austrian edition of aWATTar requires to enter the access token from your energy provider. +You can find more information about you accesstoken [here](https://www.awattar.com/api-unser-datenfeed). + +The German servers do not require a token at this point. ## Available data @@ -17,11 +23,3 @@ price is above the average, if the deviation is negative, the current price is b ![aWATTar graph](https://raw.githubusercontent.com/guh/nymea-plugins/master/awattar/docs/images/awattar-graph.png "aWATTar graph") -# Heat pump - -Information about the smart grid modes can be found [here](https://www.waermepumpe.de/sg-ready/). - -In order to interact with the heat pump (SG-ready), this plugin creates a CoAP connection to the server running on the -6LoWPAN bridge. The server IPv6 can be configured in the plugin configuration. Once the connection is established, the -plugin searches for 6LoWPAN neighbors in the network. - diff --git a/awattar/awattar.pro b/awattar/awattar.pro index 1f9cf86d..567b07c8 100644 --- a/awattar/awattar.pro +++ b/awattar/awattar.pro @@ -5,11 +5,9 @@ QT += network TARGET = $$qtLibraryTarget(nymea_integrationpluginawattar) SOURCES += \ - integrationpluginawattar.cpp \ - heatpump.cpp + integrationpluginawattar.cpp HEADERS += \ - integrationpluginawattar.h \ - heatpump.h + integrationpluginawattar.h diff --git a/awattar/heatpump.cpp b/awattar/heatpump.cpp deleted file mode 100644 index 18aabcc2..00000000 --- a/awattar/heatpump.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* -* Copyright 2013 - 2020, nymea GmbH -* Contact: contact@nymea.io -* -* This file is part of nymea. -* This project including source code and documentation is protected by -* copyright law, and remains the property of nymea GmbH. All rights, including -* reproduction, publication, editing and translation, are reserved. The use of -* this project is subject to the terms of a license agreement to be concluded -* with nymea GmbH in accordance with the terms of use of nymea GmbH, available -* under https://nymea.io/license -* -* GNU Lesser General Public License Usage -* Alternatively, this project may be redistributed and/or modified under the -* terms of the GNU Lesser General Public License as published by the Free -* Software Foundation; version 3. This project is distributed in the hope that -* it will be useful, but WITHOUT ANY WARRANTY; without even the implied -* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public License -* along with this project. If not, see . -* -* For any further details and any questions please contact us under -* contact@nymea.io or see our FAQ/Licensing Information on -* https://nymea.io/license/faq -* -* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include "heatpump.h" -#include "coap/corelinkparser.h" - -#include "extern-plugininfo.h" - -HeatPump::HeatPump(QHostAddress address, QObject *parent) : - QObject(parent), - m_address(address), - m_reachable(false), - m_sgMode(0) -{ - m_coap = new Coap(this); - connect(m_coap, SIGNAL(replyFinished(CoapReply*)), this, SLOT(onReplyFinished(CoapReply*))); - - QUrl url; - url.setScheme("coap"); - url.setHost(m_address.toString()); - url.setPath("/.well-known/core"); - - qCDebug(dcAwattar) << "Discover pump resources on" << url.toString(); - CoapReply *reply = m_coap->get(CoapRequest(url)); - if (reply->error() != CoapReply::NoError) { - qCWarning(dcAwattar()) << "Could not discover pump resources" << reply->errorString(); - reply->deleteLater(); - return; - } - m_discoverReplies.append(reply); -} - -QHostAddress HeatPump::address() const -{ - return m_address; -} - -bool HeatPump::reachable() const -{ - return m_reachable; -} - -void HeatPump::setSgMode(const int &sgMode) -{ - // Note: always try to set sg-mode, to make sure the pump is still reachable (like a ping) - if (m_sgMode != sgMode) { - m_sgMode = sgMode; - qCDebug(dcAwattar) << "Setting sg-mode to" << sgMode; - } - - QUrl url; - url.setScheme("coap"); - url.setHost(m_address.toString()); - url.setPath("/a/sg_mode"); - - QByteArray payload = QString("mode=%1").arg(QString::number(m_sgMode)).toUtf8(); - - CoapReply *reply = m_coap->post(CoapRequest(url), payload); - if (reply->error() != CoapReply::NoError) { - qCWarning(dcAwattar()) << "Could not set sg mode" << reply->errorString(); - setReachable(false); - reply->deleteLater(); - return; - } - - m_sgModeReplies.append(reply); -} - -void HeatPump::setReachable(const bool &reachable) -{ - if (m_reachable != reachable) { - m_reachable = reachable; - emit reachableChanged(); - } -} - -void HeatPump::onReplyFinished(CoapReply *reply) -{ - if (m_discoverReplies.contains(reply)) { - m_discoverReplies.removeAll(reply); - - if (reply->error() != CoapReply::NoError) { - qCWarning(dcAwattar()) << "CoAP resource discovery reply error" << reply->errorString(); - setReachable(false); - reply->deleteLater(); - return; - } - - if (reply->statusCode() != CoapPdu::Content) { - qCWarning(dcAwattar()) << "Resource discovery status code:" << reply; - setReachable(false); - reply->deleteLater(); - return; - } - - qCDebug(dcAwattar) << "Discovered successfully the resources"; - CoreLinkParser parser(reply->payload()); - foreach (const CoreLink &link, parser.links()) { - qCDebug(dcAwattar) << link << endl; - } - - } else if (m_sgModeReplies.contains(reply)) { - m_sgModeReplies.removeAll(reply); - - if (reply->error() != CoapReply::NoError) { - if (reachable()) - qCWarning(dcAwattar()) << "CoAP sg-mode reply error" << reply->errorString(); - - setReachable(false); - reply->deleteLater(); - return; - } - - if (reply->statusCode() != CoapPdu::Content) { - qCWarning(dcAwattar()) << "Set sg-mode status code error:" << reply; - setReachable(false); - reply->deleteLater(); - return; - } - - if (!reachable()) - qCDebug(dcAwattar) << "Set sg-mode successfully."; - - } - - // the reply had no error until now, so make sure the resource is reachable - setReachable(true); - reply->deleteLater(); -} diff --git a/awattar/heatpump.h b/awattar/heatpump.h deleted file mode 100644 index 03484f52..00000000 --- a/awattar/heatpump.h +++ /dev/null @@ -1,73 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* -* Copyright 2013 - 2020, nymea GmbH -* Contact: contact@nymea.io -* -* This file is part of nymea. -* This project including source code and documentation is protected by -* copyright law, and remains the property of nymea GmbH. All rights, including -* reproduction, publication, editing and translation, are reserved. The use of -* this project is subject to the terms of a license agreement to be concluded -* with nymea GmbH in accordance with the terms of use of nymea GmbH, available -* under https://nymea.io/license -* -* GNU Lesser General Public License Usage -* Alternatively, this project may be redistributed and/or modified under the -* terms of the GNU Lesser General Public License as published by the Free -* Software Foundation; version 3. This project is distributed in the hope that -* it will be useful, but WITHOUT ANY WARRANTY; without even the implied -* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public License -* along with this project. If not, see . -* -* For any further details and any questions please contact us under -* contact@nymea.io or see our FAQ/Licensing Information on -* https://nymea.io/license/faq -* -* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#ifndef HEATPUMP_H -#define HEATPUMP_H - -#include -#include - - -#include "coap/coap.h" -#include "coap/coapreply.h" -#include "coap/coaprequest.h" - -class HeatPump : public QObject -{ - Q_OBJECT -public: - explicit HeatPump(QHostAddress address, QObject *parent = 0); - - QHostAddress address() const; - bool reachable() const; - void setSgMode(const int &sgMode); - -private: - QHostAddress m_address; - bool m_reachable; - int m_sgMode; - - Coap *m_coap; - - QList m_discoverReplies; - QList m_sgModeReplies; - - void setReachable(const bool &reachable); - -private slots: - void onReplyFinished(CoapReply *reply); - -signals: - void reachableChanged(); - - -}; - -#endif // HEATPUMP_H diff --git a/awattar/integrationpluginawattar.cpp b/awattar/integrationpluginawattar.cpp index 1476f4d3..11b60400 100644 --- a/awattar/integrationpluginawattar.cpp +++ b/awattar/integrationpluginawattar.cpp @@ -40,6 +40,29 @@ IntegrationPluginAwattar::IntegrationPluginAwattar() { + m_serverUrls[awattarATThingClassId] = "https://api.awattar.com/v1/marketdata"; + m_serverUrls[awattarDEThingClassId] = "https://api.awattar.de/v1/marketdata"; + + m_connectedStateTypeIds[awattarATThingClassId] = awattarATConnectedStateTypeId; + m_connectedStateTypeIds[awattarDEThingClassId] = awattarDEConnectedStateTypeId; + + m_currentMarketPriceStateTypeIds[awattarATThingClassId] = awattarATCurrentMarketPriceStateTypeId; + m_currentMarketPriceStateTypeIds[awattarDEThingClassId] = awattarDECurrentMarketPriceStateTypeId; + + m_validUntilStateTypeIds[awattarATThingClassId] = awattarATValidUntilStateTypeId; + m_validUntilStateTypeIds[awattarDEThingClassId] = awattarDEValidUntilStateTypeId; + + m_averagePriceStateTypeIds[awattarATThingClassId] = awattarATAveragePriceStateTypeId; + m_averagePriceStateTypeIds[awattarDEThingClassId] = awattarDEAveragePriceStateTypeId; + + m_lowestPriceStateTypeIds[awattarATThingClassId] = awattarATLowestPriceStateTypeId; + m_lowestPriceStateTypeIds[awattarDEThingClassId] = awattarDELowestPriceStateTypeId; + + m_highestPriceStateTypeIds[awattarATThingClassId] = awattarATHighestPriceStateTypeId; + m_highestPriceStateTypeIds[awattarDEThingClassId] = awattarDEHighestPriceStateTypeId; + + m_averageDeviationStateTypeIds[awattarATThingClassId] = awattarATAverageDeviationStateTypeId; + m_averageDeviationStateTypeIds[awattarDEThingClassId] = awattarDEAverageDeviationStateTypeId; } IntegrationPluginAwattar::~IntegrationPluginAwattar() @@ -98,6 +121,7 @@ void IntegrationPluginAwattar::thingRemoved(Thing *thing) Q_UNUSED(thing) if (m_pluginTimer && myThings().isEmpty()) { hardwareManager()->pluginTimerManager()->unregisterTimer(m_pluginTimer); + m_pluginTimer = nullptr; } } @@ -116,7 +140,7 @@ void IntegrationPluginAwattar::requestPriceData(Thing* thing, ThingSetupInfo *se QByteArray data = QString(token + ":").toUtf8().toBase64(); QString header = "Basic " + data; - QNetworkRequest request(QUrl("https://api.awattar.com/v1/marketdata")); + QNetworkRequest request(QUrl(m_serverUrls.value(thing->thingClassId()))); request.setRawHeader("Authorization", header.toLocal8Bit()); request.setSslConfiguration(QSslConfiguration::defaultConfiguration()); QNetworkReply *reply = hardwareManager()->networkManager()->get(request); @@ -130,7 +154,7 @@ void IntegrationPluginAwattar::requestPriceData(Thing* thing, ThingSetupInfo *se if (setup) { setup->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("Error getting data from server.")); } else { - thing->setStateValue(awattarConnectedStateTypeId, false); + thing->setStateValue(m_connectedStateTypeIds.value(thing->thingClassId()), false); } return; } @@ -142,7 +166,7 @@ void IntegrationPluginAwattar::requestPriceData(Thing* thing, ThingSetupInfo *se if (setup) { setup->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("The server returned unexpected data.")); } else { - thing->setStateValue(awattarConnectedStateTypeId, false); + thing->setStateValue(m_connectedStateTypeIds.value(thing->thingClassId()), false); } return; } @@ -151,7 +175,7 @@ void IntegrationPluginAwattar::requestPriceData(Thing* thing, ThingSetupInfo *se setup->finish(Thing::ThingErrorNoError); } - thing->setStateValue(awattarConnectedStateTypeId, true); + thing->setStateValue(m_connectedStateTypeIds.value(thing->thingClassId()), true); processPriceData(thing, jsonDoc.toVariant().toMap()); }); @@ -200,8 +224,8 @@ void IntegrationPluginAwattar::processPriceData(Thing *thing, const QVariantMap if (price < minPrice) minPrice = price; - thing->setStateValue(awattarCurrentMarketPriceStateTypeId, currentPrice / 10.0); - thing->setStateValue(awattarValidUntilStateTypeId, endTime.toLocalTime().toTime_t()); + thing->setStateValue(m_currentMarketPriceStateTypeIds.value(thing->thingClassId()), currentPrice / 10.0); + thing->setStateValue(m_validUntilStateTypeIds.value(thing->thingClassId()), endTime.toLocalTime().toTime_t()); } } @@ -214,9 +238,9 @@ void IntegrationPluginAwattar::processPriceData(Thing *thing, const QVariantMap deviation = qRound(-100 * (averagePrice - currentPrice) / (maxPrice - averagePrice)); } - thing->setStateValue(awattarAveragePriceStateTypeId, averagePrice / 10.0); - thing->setStateValue(awattarLowestPriceStateTypeId, minPrice / 10.0); - thing->setStateValue(awattarHighestPriceStateTypeId, maxPrice / 10.0); - thing->setStateValue(awattarAverageDeviationStateTypeId, deviation); + thing->setStateValue(m_averagePriceStateTypeIds.value(thing->thingClassId()), averagePrice / 10.0); + thing->setStateValue(m_lowestPriceStateTypeIds.value(thing->thingClassId()), minPrice / 10.0); + thing->setStateValue(m_highestPriceStateTypeIds.value(thing->thingClassId()), maxPrice / 10.0); + thing->setStateValue(m_averageDeviationStateTypeIds.value(thing->thingClassId()), deviation); } diff --git a/awattar/integrationpluginawattar.h b/awattar/integrationpluginawattar.h index a1fb4dc8..042b7dbc 100644 --- a/awattar/integrationpluginawattar.h +++ b/awattar/integrationpluginawattar.h @@ -34,8 +34,6 @@ #include "integrations/integrationplugin.h" #include "plugintimer.h" -#include "heatpump.h" - #include #include #include @@ -57,13 +55,22 @@ public: void setupThing(ThingSetupInfo *info) override; void thingRemoved(Thing *thing) override; -private: - PluginTimer *m_pluginTimer = nullptr; - private slots: void onPluginTimer(); void requestPriceData(Thing* thing, ThingSetupInfo *setup = nullptr); void processPriceData(Thing *thing, const QVariantMap &data); + +private: + PluginTimer *m_pluginTimer = nullptr; + + QHash m_serverUrls; + QHash m_connectedStateTypeIds; + QHash m_currentMarketPriceStateTypeIds; + QHash m_validUntilStateTypeIds; + QHash m_averagePriceStateTypeIds; + QHash m_lowestPriceStateTypeIds; + QHash m_highestPriceStateTypeIds; + QHash m_averageDeviationStateTypeIds; }; #endif // INTEGRATIONPLUGINAWATTAR_H diff --git a/awattar/integrationpluginawattar.json b/awattar/integrationpluginawattar.json index 4e197aa3..366e58f8 100644 --- a/awattar/integrationpluginawattar.json +++ b/awattar/integrationpluginawattar.json @@ -2,16 +2,6 @@ "displayName": "aWATTar", "name": "awattar", "id": "9c261c33-d44e-461e-8ec1-68803cb73f12", - "paramTypes": [ - { - "id": "cf13eebf-f188-447a-afcb-bbd330983060", - "name": "rpl", - "displayName": "RPL address", - "type": "QString", - "inputType": "TextLine", - "defaultValue": "fdaa:e9b8:d03a::ff:fe00:1" - } - ], "vendors": [ { "displayName": "aWATTar", @@ -20,8 +10,8 @@ "thingClasses": [ { "id": "29cd8265-d8bb-4cf9-9080-bfc2cf9787bc", - "displayName": "aWATTar", - "name": "awattar", + "displayName": "aWATTar AT", + "name": "awattarAT", "createMethods": ["user"], "setupMethod": "displaypin", "interfaces": ["connectable"], @@ -32,13 +22,14 @@ "displayName": "Online", "displayNameEvent": "Online changed", "type": "bool", - "defaultValue": false + "defaultValue": false, + "cached": false }, { "id": "eab37309-3dd8-46a0-94d4-bd05b5bb0430", "name": "currentMarketPrice", - "displayName": "current market price", - "displayNameEvent": "current market price changed", + "displayName": "Current market price", + "displayNameEvent": "Current market price changed", "type": "double", "unit": "EuroCentPerKiloWattHour", "defaultValue": 0 @@ -46,8 +37,8 @@ { "id": "38b86cee-9588-4269-a585-128907929dc2", "name": "averageDeviation", - "displayName": "average deviation", - "displayNameEvent": "average deviation changed", + "displayName": "Average deviation", + "displayNameEvent": "Average deviation changed", "type": "int", "unit": "Percentage", "defaultValue": 0 @@ -55,8 +46,8 @@ { "id": "d5a8a176-aca0-45b1-b043-95c43750f383", "name": "validUntil", - "displayName": "valid until", - "displayNameEvent": "valid until changed", + "displayName": "Valid until", + "displayNameEvent": "Valid until changed", "unit": "UnixTime", "type": "int", "defaultValue": 0 @@ -64,8 +55,8 @@ { "id": "55d6d7a8-446f-48ae-8014-1225810d03ee", "name": "averagePrice", - "displayName": "average market price [+/- 12 h]", - "displayNameEvent": "average market price [+/- 12 h] changed", + "displayName": "Average market price [+/- 12 h]", + "displayNameEvent": "Average market price [+/- 12 h] changed", "type": "double", "unit": "EuroCentPerKiloWattHour", "defaultValue": 0 @@ -73,8 +64,8 @@ { "id": "e7af5bdc-48d7-4e96-b877-331da4dcfae5", "name": "lowestPrice", - "displayName": "lowest market price [+/- 12 h]", - "displayNameEvent": "lowest market price [+/- 12 h] changed", + "displayName": "Lowest market price [+/- 12 h]", + "displayNameEvent": "Lowest market price [+/- 12 h] changed", "type": "double", "unit": "EuroCentPerKiloWattHour", "defaultValue": 0 @@ -82,8 +73,81 @@ { "id": "0c171c42-b070-453e-8a63-df9aebfa8533", "name": "highestPrice", - "displayName": "highest market price [+/- 12 h]", - "displayNameEvent": "highest market price [+/- 12 h] changed", + "displayName": "Highest market price [+/- 12 h]", + "displayNameEvent": "Highest market price [+/- 12 h] changed", + "type": "double", + "unit": "EuroCentPerKiloWattHour", + "defaultValue": 0 + } + ] + }, + { + "id": "61973ead-98a4-4064-8fc3-532b4ecb9f78", + "displayName": "aWATTar DE", + "name": "awattarDE", + "createMethods": ["user"], + "setupMethod": "justAdd", + "interfaces": ["connectable"], + "stateTypes": [ + { + "id": "2646b541-1ce0-4656-b253-2f98608072b3", + "name": "connected", + "displayName": "Online", + "displayNameEvent": "Online changed", + "type": "bool", + "defaultValue": false, + "cached": false + }, + { + "id": "048566fe-d49d-4cc7-b93b-520f727f600a", + "name": "currentMarketPrice", + "displayName": "Current market price", + "displayNameEvent": "Current market price changed", + "type": "double", + "unit": "EuroCentPerKiloWattHour", + "defaultValue": 0 + }, + { + "id": "f5ffd03d-e21f-4a27-bc69-f1aed426281c", + "name": "averageDeviation", + "displayName": "Average deviation", + "displayNameEvent": "Average deviation changed", + "type": "int", + "unit": "Percentage", + "defaultValue": 0 + }, + { + "id": "a1d9fb61-4907-4c2d-9bd8-b8cbcfe7f3e3", + "name": "validUntil", + "displayName": "Valid until", + "displayNameEvent": "Valid until changed", + "unit": "UnixTime", + "type": "int", + "defaultValue": 0 + }, + { + "id": "90571d1e-42c1-4a55-b70d-4781fab02313", + "name": "averagePrice", + "displayName": "Average market price [+/- 12 h]", + "displayNameEvent": "Average market price [+/- 12 h] changed", + "type": "double", + "unit": "EuroCentPerKiloWattHour", + "defaultValue": 0 + }, + { + "id": "9e4dd133-ecfc-4239-9536-b5ec502cb194", + "name": "lowestPrice", + "displayName": "Lowest market price [+/- 12 h]", + "displayNameEvent": "Lowest market price [+/- 12 h] changed", + "type": "double", + "unit": "EuroCentPerKiloWattHour", + "defaultValue": 0 + }, + { + "id": "c97662ed-0e61-4c0e-acca-6792a1c27213", + "name": "highestPrice", + "displayName": "Highest market price [+/- 12 h]", + "displayNameEvent": "Highest market price [+/- 12 h] changed", "type": "double", "unit": "EuroCentPerKiloWattHour", "defaultValue": 0 diff --git a/awattar/translations/9c261c33-d44e-461e-8ec1-68803cb73f12-de_DE.ts b/awattar/translations/9c261c33-d44e-461e-8ec1-68803cb73f12-de_DE.ts index bc35467e..d8e2757d 100644 --- a/awattar/translations/9c261c33-d44e-461e-8ec1-68803cb73f12-de_DE.ts +++ b/awattar/translations/9c261c33-d44e-461e-8ec1-68803cb73f12-de_DE.ts @@ -4,151 +4,217 @@ IntegrationPluginAwattar - + Please enter your token for awattar.com - + Bitte gib Dein aWATTar.com Token ein - + This token is not valid. Error setting up thing with invalid token - + Dieses Token ist ungültig. - + Error getting data from server. - + Fehler beim Laden der Daten vom Server. - + The server returned unexpected data. - + Der Server liefert unerwartete Daten. awattar - - RPL address - The name of the ParamType (ThingClass: awattar, Type: plugin, ID: {cf13eebf-f188-447a-afcb-bbd330983060}) - - - - - - + + aWATTar - The name of the ThingClass ({29cd8265-d8bb-4cf9-9080-bfc2cf9787bc}) ----------- -The name of the vendor ({acd47238-bbbc-4eaf-b484-38c52cfa4866}) + The name of the vendor ({acd47238-bbbc-4eaf-b484-38c52cfa4866}) ---------- The name of the plugin awattar ({9c261c33-d44e-461e-8ec1-68803cb73f12}) - + aWATTar - + + Online changed - The name of the EventType ({470b9b88-17f3-42e3-9250-cc181984eafe}) of ThingClass awattar - - - - - - Online - The name of the ParamType (ThingClass: awattar, EventType: connected, ID: {470b9b88-17f3-42e3-9250-cc181984eafe}) + The name of the EventType ({2646b541-1ce0-4656-b253-2f98608072b3}) of ThingClass awattarDE ---------- -The name of the StateType ({470b9b88-17f3-42e3-9250-cc181984eafe}) of ThingClass awattar - - - - - current market price changed - The name of the EventType ({eab37309-3dd8-46a0-94d4-bd05b5bb0430}) of ThingClass awattar - - - - - - current market price - The name of the ParamType (ThingClass: awattar, EventType: currentMarketPrice, ID: {eab37309-3dd8-46a0-94d4-bd05b5bb0430}) ----------- -The name of the StateType ({eab37309-3dd8-46a0-94d4-bd05b5bb0430}) of ThingClass awattar - +The name of the EventType ({470b9b88-17f3-42e3-9250-cc181984eafe}) of ThingClass awattarAT + Onlinestatus geändert - average deviation - The name of the ParamType (ThingClass: awattar, EventType: averageDeviation, ID: {38b86cee-9588-4269-a585-128907929dc2}) ----------- -The name of the StateType ({38b86cee-9588-4269-a585-128907929dc2}) of ThingClass awattar - - - - - - valid until - The name of the ParamType (ThingClass: awattar, EventType: validUntil, ID: {d5a8a176-aca0-45b1-b043-95c43750f383}) ----------- -The name of the StateType ({d5a8a176-aca0-45b1-b043-95c43750f383}) of ThingClass awattar - - - + - - average market price [+/- 12 h] - The name of the ParamType (ThingClass: awattar, EventType: averagePrice, ID: {55d6d7a8-446f-48ae-8014-1225810d03ee}) + Average deviation + The name of the ParamType (ThingClass: awattarDE, EventType: averageDeviation, ID: {f5ffd03d-e21f-4a27-bc69-f1aed426281c}) ---------- -The name of the StateType ({55d6d7a8-446f-48ae-8014-1225810d03ee}) of ThingClass awattar - +The name of the StateType ({f5ffd03d-e21f-4a27-bc69-f1aed426281c}) of ThingClass awattarDE +---------- +The name of the ParamType (ThingClass: awattarAT, EventType: averageDeviation, ID: {38b86cee-9588-4269-a585-128907929dc2}) +---------- +The name of the StateType ({38b86cee-9588-4269-a585-128907929dc2}) of ThingClass awattarAT + Mittlere Abweichung + + + + + Average deviation changed + The name of the EventType ({f5ffd03d-e21f-4a27-bc69-f1aed426281c}) of ThingClass awattarDE +---------- +The name of the EventType ({38b86cee-9588-4269-a585-128907929dc2}) of ThingClass awattarAT + Mittlere Abweichung geändert + + + + + + + Average market price [+/- 12 h] + The name of the ParamType (ThingClass: awattarDE, EventType: averagePrice, ID: {90571d1e-42c1-4a55-b70d-4781fab02313}) +---------- +The name of the StateType ({90571d1e-42c1-4a55-b70d-4781fab02313}) of ThingClass awattarDE +---------- +The name of the ParamType (ThingClass: awattarAT, EventType: averagePrice, ID: {55d6d7a8-446f-48ae-8014-1225810d03ee}) +---------- +The name of the StateType ({55d6d7a8-446f-48ae-8014-1225810d03ee}) of ThingClass awattarAT + Durchschnittlicher Marktpreis [±12h ] + + + + + Average market price [+/- 12 h] changed + The name of the EventType ({90571d1e-42c1-4a55-b70d-4781fab02313}) of ThingClass awattarDE +---------- +The name of the EventType ({55d6d7a8-446f-48ae-8014-1225810d03ee}) of ThingClass awattarAT + Durchschnittlicher Marktpreis [± 12h] geändert - lowest market price [+/- 12 h] - The name of the ParamType (ThingClass: awattar, EventType: lowestPrice, ID: {e7af5bdc-48d7-4e96-b877-331da4dcfae5}) ----------- -The name of the StateType ({e7af5bdc-48d7-4e96-b877-331da4dcfae5}) of ThingClass awattar - - - - - - highest market price [+/- 12 h] - The name of the ParamType (ThingClass: awattar, EventType: highestPrice, ID: {0c171c42-b070-453e-8a63-df9aebfa8533}) ----------- -The name of the StateType ({0c171c42-b070-453e-8a63-df9aebfa8533}) of ThingClass awattar - - - - - average deviation changed - The name of the EventType ({38b86cee-9588-4269-a585-128907929dc2}) of ThingClass awattar - - - - - valid until changed - The name of the EventType ({d5a8a176-aca0-45b1-b043-95c43750f383}) of ThingClass awattar - - - - - average market price [+/- 12 h] changed - The name of the EventType ({55d6d7a8-446f-48ae-8014-1225810d03ee}) of ThingClass awattar - - - - lowest market price [+/- 12 h] changed - The name of the EventType ({e7af5bdc-48d7-4e96-b877-331da4dcfae5}) of ThingClass awattar - + + Current market price + The name of the ParamType (ThingClass: awattarDE, EventType: currentMarketPrice, ID: {048566fe-d49d-4cc7-b93b-520f727f600a}) +---------- +The name of the StateType ({048566fe-d49d-4cc7-b93b-520f727f600a}) of ThingClass awattarDE +---------- +The name of the ParamType (ThingClass: awattarAT, EventType: currentMarketPrice, ID: {eab37309-3dd8-46a0-94d4-bd05b5bb0430}) +---------- +The name of the StateType ({eab37309-3dd8-46a0-94d4-bd05b5bb0430}) of ThingClass awattarAT + Aktueller Marktpreis - - highest market price [+/- 12 h] changed - The name of the EventType ({0c171c42-b070-453e-8a63-df9aebfa8533}) of ThingClass awattar - + + + Current market price changed + The name of the EventType ({048566fe-d49d-4cc7-b93b-520f727f600a}) of ThingClass awattarDE +---------- +The name of the EventType ({eab37309-3dd8-46a0-94d4-bd05b5bb0430}) of ThingClass awattarAT + Aktueller Marktpreis geändert + + + + + + + Highest market price [+/- 12 h] + The name of the ParamType (ThingClass: awattarDE, EventType: highestPrice, ID: {c97662ed-0e61-4c0e-acca-6792a1c27213}) +---------- +The name of the StateType ({c97662ed-0e61-4c0e-acca-6792a1c27213}) of ThingClass awattarDE +---------- +The name of the ParamType (ThingClass: awattarAT, EventType: highestPrice, ID: {0c171c42-b070-453e-8a63-df9aebfa8533}) +---------- +The name of the StateType ({0c171c42-b070-453e-8a63-df9aebfa8533}) of ThingClass awattarAT + Höchster Marktpreis [± 12h] + + + + + Highest market price [+/- 12 h] changed + The name of the EventType ({c97662ed-0e61-4c0e-acca-6792a1c27213}) of ThingClass awattarDE +---------- +The name of the EventType ({0c171c42-b070-453e-8a63-df9aebfa8533}) of ThingClass awattarAT + Höchster Marktpreis [± 12h] geändert + + + + + + + Lowest market price [+/- 12 h] + The name of the ParamType (ThingClass: awattarDE, EventType: lowestPrice, ID: {9e4dd133-ecfc-4239-9536-b5ec502cb194}) +---------- +The name of the StateType ({9e4dd133-ecfc-4239-9536-b5ec502cb194}) of ThingClass awattarDE +---------- +The name of the ParamType (ThingClass: awattarAT, EventType: lowestPrice, ID: {e7af5bdc-48d7-4e96-b877-331da4dcfae5}) +---------- +The name of the StateType ({e7af5bdc-48d7-4e96-b877-331da4dcfae5}) of ThingClass awattarAT + Tiefster Marktpreis [± 12h] + + + + + Lowest market price [+/- 12 h] changed + The name of the EventType ({9e4dd133-ecfc-4239-9536-b5ec502cb194}) of ThingClass awattarDE +---------- +The name of the EventType ({e7af5bdc-48d7-4e96-b877-331da4dcfae5}) of ThingClass awattarAT + Tiefster Marktpreis [± 12h] geändert + + + + + + + Online + The name of the ParamType (ThingClass: awattarDE, EventType: connected, ID: {2646b541-1ce0-4656-b253-2f98608072b3}) +---------- +The name of the StateType ({2646b541-1ce0-4656-b253-2f98608072b3}) of ThingClass awattarDE +---------- +The name of the ParamType (ThingClass: awattarAT, EventType: connected, ID: {470b9b88-17f3-42e3-9250-cc181984eafe}) +---------- +The name of the StateType ({470b9b88-17f3-42e3-9250-cc181984eafe}) of ThingClass awattarAT + Online + + + + + + + Valid until + The name of the ParamType (ThingClass: awattarDE, EventType: validUntil, ID: {a1d9fb61-4907-4c2d-9bd8-b8cbcfe7f3e3}) +---------- +The name of the StateType ({a1d9fb61-4907-4c2d-9bd8-b8cbcfe7f3e3}) of ThingClass awattarDE +---------- +The name of the ParamType (ThingClass: awattarAT, EventType: validUntil, ID: {d5a8a176-aca0-45b1-b043-95c43750f383}) +---------- +The name of the StateType ({d5a8a176-aca0-45b1-b043-95c43750f383}) of ThingClass awattarAT + Gültig bis + + + + + Valid until changed + The name of the EventType ({a1d9fb61-4907-4c2d-9bd8-b8cbcfe7f3e3}) of ThingClass awattarDE +---------- +The name of the EventType ({d5a8a176-aca0-45b1-b043-95c43750f383}) of ThingClass awattarAT + Gültigkeit geändert + + + + aWATTar AT + The name of the ThingClass ({29cd8265-d8bb-4cf9-9080-bfc2cf9787bc}) + aWATTar AT + + + + aWATTar DE + The name of the ThingClass ({61973ead-98a4-4064-8fc3-532b4ecb9f78}) + aWATTar DE diff --git a/awattar/translations/9c261c33-d44e-461e-8ec1-68803cb73f12-en_US.ts b/awattar/translations/9c261c33-d44e-461e-8ec1-68803cb73f12-en_US.ts index a5166a58..3ebd1e9d 100644 --- a/awattar/translations/9c261c33-d44e-461e-8ec1-68803cb73f12-en_US.ts +++ b/awattar/translations/9c261c33-d44e-461e-8ec1-68803cb73f12-en_US.ts @@ -4,23 +4,23 @@ IntegrationPluginAwattar - + Please enter your token for awattar.com - + This token is not valid. Error setting up thing with invalid token - + Error getting data from server. - + The server returned unexpected data. @@ -28,126 +28,192 @@ awattar - - RPL address - The name of the ParamType (ThingClass: awattar, Type: plugin, ID: {cf13eebf-f188-447a-afcb-bbd330983060}) - - - - - - + + aWATTar - The name of the ThingClass ({29cd8265-d8bb-4cf9-9080-bfc2cf9787bc}) ----------- -The name of the vendor ({acd47238-bbbc-4eaf-b484-38c52cfa4866}) + The name of the vendor ({acd47238-bbbc-4eaf-b484-38c52cfa4866}) ---------- The name of the plugin awattar ({9c261c33-d44e-461e-8ec1-68803cb73f12}) - + + Online changed - The name of the EventType ({470b9b88-17f3-42e3-9250-cc181984eafe}) of ThingClass awattar - - - - - - Online - The name of the ParamType (ThingClass: awattar, EventType: connected, ID: {470b9b88-17f3-42e3-9250-cc181984eafe}) + The name of the EventType ({2646b541-1ce0-4656-b253-2f98608072b3}) of ThingClass awattarDE ---------- -The name of the StateType ({470b9b88-17f3-42e3-9250-cc181984eafe}) of ThingClass awattar - - - - - current market price changed - The name of the EventType ({eab37309-3dd8-46a0-94d4-bd05b5bb0430}) of ThingClass awattar - - - - - - current market price - The name of the ParamType (ThingClass: awattar, EventType: currentMarketPrice, ID: {eab37309-3dd8-46a0-94d4-bd05b5bb0430}) ----------- -The name of the StateType ({eab37309-3dd8-46a0-94d4-bd05b5bb0430}) of ThingClass awattar +The name of the EventType ({470b9b88-17f3-42e3-9250-cc181984eafe}) of ThingClass awattarAT - average deviation - The name of the ParamType (ThingClass: awattar, EventType: averageDeviation, ID: {38b86cee-9588-4269-a585-128907929dc2}) ----------- -The name of the StateType ({38b86cee-9588-4269-a585-128907929dc2}) of ThingClass awattar - - - - - - valid until - The name of the ParamType (ThingClass: awattar, EventType: validUntil, ID: {d5a8a176-aca0-45b1-b043-95c43750f383}) ----------- -The name of the StateType ({d5a8a176-aca0-45b1-b043-95c43750f383}) of ThingClass awattar - - - + - - average market price [+/- 12 h] - The name of the ParamType (ThingClass: awattar, EventType: averagePrice, ID: {55d6d7a8-446f-48ae-8014-1225810d03ee}) + Average deviation + The name of the ParamType (ThingClass: awattarDE, EventType: averageDeviation, ID: {f5ffd03d-e21f-4a27-bc69-f1aed426281c}) ---------- -The name of the StateType ({55d6d7a8-446f-48ae-8014-1225810d03ee}) of ThingClass awattar +The name of the StateType ({f5ffd03d-e21f-4a27-bc69-f1aed426281c}) of ThingClass awattarDE +---------- +The name of the ParamType (ThingClass: awattarAT, EventType: averageDeviation, ID: {38b86cee-9588-4269-a585-128907929dc2}) +---------- +The name of the StateType ({38b86cee-9588-4269-a585-128907929dc2}) of ThingClass awattarAT + + + + + + Average deviation changed + The name of the EventType ({f5ffd03d-e21f-4a27-bc69-f1aed426281c}) of ThingClass awattarDE +---------- +The name of the EventType ({38b86cee-9588-4269-a585-128907929dc2}) of ThingClass awattarAT + + + + + + + + Average market price [+/- 12 h] + The name of the ParamType (ThingClass: awattarDE, EventType: averagePrice, ID: {90571d1e-42c1-4a55-b70d-4781fab02313}) +---------- +The name of the StateType ({90571d1e-42c1-4a55-b70d-4781fab02313}) of ThingClass awattarDE +---------- +The name of the ParamType (ThingClass: awattarAT, EventType: averagePrice, ID: {55d6d7a8-446f-48ae-8014-1225810d03ee}) +---------- +The name of the StateType ({55d6d7a8-446f-48ae-8014-1225810d03ee}) of ThingClass awattarAT + + + + + + Average market price [+/- 12 h] changed + The name of the EventType ({90571d1e-42c1-4a55-b70d-4781fab02313}) of ThingClass awattarDE +---------- +The name of the EventType ({55d6d7a8-446f-48ae-8014-1225810d03ee}) of ThingClass awattarAT - lowest market price [+/- 12 h] - The name of the ParamType (ThingClass: awattar, EventType: lowestPrice, ID: {e7af5bdc-48d7-4e96-b877-331da4dcfae5}) ----------- -The name of the StateType ({e7af5bdc-48d7-4e96-b877-331da4dcfae5}) of ThingClass awattar - - - - - - highest market price [+/- 12 h] - The name of the ParamType (ThingClass: awattar, EventType: highestPrice, ID: {0c171c42-b070-453e-8a63-df9aebfa8533}) ----------- -The name of the StateType ({0c171c42-b070-453e-8a63-df9aebfa8533}) of ThingClass awattar - - - - - average deviation changed - The name of the EventType ({38b86cee-9588-4269-a585-128907929dc2}) of ThingClass awattar - - - - - valid until changed - The name of the EventType ({d5a8a176-aca0-45b1-b043-95c43750f383}) of ThingClass awattar - - - - - average market price [+/- 12 h] changed - The name of the EventType ({55d6d7a8-446f-48ae-8014-1225810d03ee}) of ThingClass awattar - - - - lowest market price [+/- 12 h] changed - The name of the EventType ({e7af5bdc-48d7-4e96-b877-331da4dcfae5}) of ThingClass awattar + + Current market price + The name of the ParamType (ThingClass: awattarDE, EventType: currentMarketPrice, ID: {048566fe-d49d-4cc7-b93b-520f727f600a}) +---------- +The name of the StateType ({048566fe-d49d-4cc7-b93b-520f727f600a}) of ThingClass awattarDE +---------- +The name of the ParamType (ThingClass: awattarAT, EventType: currentMarketPrice, ID: {eab37309-3dd8-46a0-94d4-bd05b5bb0430}) +---------- +The name of the StateType ({eab37309-3dd8-46a0-94d4-bd05b5bb0430}) of ThingClass awattarAT - - highest market price [+/- 12 h] changed - The name of the EventType ({0c171c42-b070-453e-8a63-df9aebfa8533}) of ThingClass awattar + + + Current market price changed + The name of the EventType ({048566fe-d49d-4cc7-b93b-520f727f600a}) of ThingClass awattarDE +---------- +The name of the EventType ({eab37309-3dd8-46a0-94d4-bd05b5bb0430}) of ThingClass awattarAT + + + + + + + + Highest market price [+/- 12 h] + The name of the ParamType (ThingClass: awattarDE, EventType: highestPrice, ID: {c97662ed-0e61-4c0e-acca-6792a1c27213}) +---------- +The name of the StateType ({c97662ed-0e61-4c0e-acca-6792a1c27213}) of ThingClass awattarDE +---------- +The name of the ParamType (ThingClass: awattarAT, EventType: highestPrice, ID: {0c171c42-b070-453e-8a63-df9aebfa8533}) +---------- +The name of the StateType ({0c171c42-b070-453e-8a63-df9aebfa8533}) of ThingClass awattarAT + + + + + + Highest market price [+/- 12 h] changed + The name of the EventType ({c97662ed-0e61-4c0e-acca-6792a1c27213}) of ThingClass awattarDE +---------- +The name of the EventType ({0c171c42-b070-453e-8a63-df9aebfa8533}) of ThingClass awattarAT + + + + + + + + Lowest market price [+/- 12 h] + The name of the ParamType (ThingClass: awattarDE, EventType: lowestPrice, ID: {9e4dd133-ecfc-4239-9536-b5ec502cb194}) +---------- +The name of the StateType ({9e4dd133-ecfc-4239-9536-b5ec502cb194}) of ThingClass awattarDE +---------- +The name of the ParamType (ThingClass: awattarAT, EventType: lowestPrice, ID: {e7af5bdc-48d7-4e96-b877-331da4dcfae5}) +---------- +The name of the StateType ({e7af5bdc-48d7-4e96-b877-331da4dcfae5}) of ThingClass awattarAT + + + + + + Lowest market price [+/- 12 h] changed + The name of the EventType ({9e4dd133-ecfc-4239-9536-b5ec502cb194}) of ThingClass awattarDE +---------- +The name of the EventType ({e7af5bdc-48d7-4e96-b877-331da4dcfae5}) of ThingClass awattarAT + + + + + + + + Online + The name of the ParamType (ThingClass: awattarDE, EventType: connected, ID: {2646b541-1ce0-4656-b253-2f98608072b3}) +---------- +The name of the StateType ({2646b541-1ce0-4656-b253-2f98608072b3}) of ThingClass awattarDE +---------- +The name of the ParamType (ThingClass: awattarAT, EventType: connected, ID: {470b9b88-17f3-42e3-9250-cc181984eafe}) +---------- +The name of the StateType ({470b9b88-17f3-42e3-9250-cc181984eafe}) of ThingClass awattarAT + + + + + + + + Valid until + The name of the ParamType (ThingClass: awattarDE, EventType: validUntil, ID: {a1d9fb61-4907-4c2d-9bd8-b8cbcfe7f3e3}) +---------- +The name of the StateType ({a1d9fb61-4907-4c2d-9bd8-b8cbcfe7f3e3}) of ThingClass awattarDE +---------- +The name of the ParamType (ThingClass: awattarAT, EventType: validUntil, ID: {d5a8a176-aca0-45b1-b043-95c43750f383}) +---------- +The name of the StateType ({d5a8a176-aca0-45b1-b043-95c43750f383}) of ThingClass awattarAT + + + + + + Valid until changed + The name of the EventType ({a1d9fb61-4907-4c2d-9bd8-b8cbcfe7f3e3}) of ThingClass awattarDE +---------- +The name of the EventType ({d5a8a176-aca0-45b1-b043-95c43750f383}) of ThingClass awattarAT + + + + + aWATTar AT + The name of the ThingClass ({29cd8265-d8bb-4cf9-9080-bfc2cf9787bc}) + + + + + aWATTar DE + The name of the ThingClass ({61973ead-98a4-4064-8fc3-532b4ecb9f78})