diff --git a/fronius/froniuslogger.cpp b/fronius/froniuslogger.cpp index e15651d5..c03bd0d8 100644 --- a/fronius/froniuslogger.cpp +++ b/fronius/froniuslogger.cpp @@ -65,8 +65,7 @@ void FroniusLogger::updateThingInfo(const QByteArray &data) QVariantMap headMap = jsonDoc.toVariant().toMap().value("Head").toMap(); QVariantMap bodyMap = jsonDoc.toVariant().toMap().value("Body").toMap(); - // print the fetched data in dataMap format to stdout - //qCDebug(dcFroniusSolar()) << dataMap; + //qCDebug(dcFronius()) << qUtf8Printable(jsonDoc.toJson(QJsonDocument::Indented)); // create LoggerInfo list Map QVariantMap LoggerInfoMap = bodyMap.value("LoggerInfo").toMap(); diff --git a/fronius/integrationpluginfronius.cpp b/fronius/integrationpluginfronius.cpp index a8538f49..38ca08cd 100644 --- a/fronius/integrationpluginfronius.cpp +++ b/fronius/integrationpluginfronius.cpp @@ -32,6 +32,7 @@ #include "integrationpluginfronius.h" #include "plugintimer.h" #include "network/networkaccessmanager.h" +#include "network/networkdevicediscovery.h" #include #include @@ -46,6 +47,61 @@ IntegrationPluginFronius::IntegrationPluginFronius(QObject *parent): Integration } +void IntegrationPluginFronius::discoverThings(ThingDiscoveryInfo *info) +{ + if (!hardwareManager()->networkDeviceDiscovery()->available()) { + qCWarning(dcFronius()) << "Failed to discover network devices. The network device discovery is not available."; + info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("Unable to discovery devices in your network.")); + return; + } + + qCDebug(dcFronius()) << "Starting network discovery..."; + NetworkDeviceDiscoveryReply *discoveryReply = hardwareManager()->networkDeviceDiscovery()->discover(); + connect(discoveryReply, &NetworkDeviceDiscoveryReply::finished, this, [=](){ + ThingDescriptors descriptors; + qCDebug(dcFronius()) << "Discovery finished. Found" << discoveryReply->networkDeviceInfos().count() << "devices"; + foreach (const NetworkDeviceInfo &networkDeviceInfo, discoveryReply->networkDeviceInfos()) { + qCDebug(dcFronius()) << networkDeviceInfo; + if (networkDeviceInfo.macAddress().isNull()) + continue; + + // Hostname or MAC manufacturer must include Fronius + if (!(networkDeviceInfo.macAddressManufacturer().toLower().contains("fronius") || networkDeviceInfo.hostName().toLower().contains("fronius"))) + continue; + + QString title; + if (networkDeviceInfo.hostName().isEmpty()) { + title += networkDeviceInfo.address().toString(); + } else { + title += networkDeviceInfo.address().toString() + " (" + networkDeviceInfo.hostName() + ")"; + } + + QString description; + if (networkDeviceInfo.macAddressManufacturer().isEmpty()) { + description = networkDeviceInfo.macAddress(); + } else { + description = networkDeviceInfo.macAddress() + " (" + networkDeviceInfo.macAddressManufacturer() + ")"; + } + + ThingDescriptor descriptor(dataloggerThingClassId, title, description); + + // Check if we already have set up this device + Things existingThings = myThings().filterByParam(dataloggerThingLoggerMacParamTypeId, networkDeviceInfo.macAddress()); + if (existingThings.count() == 1) { + qCDebug(dcFronius()) << "This thing already exists in the system." << existingThings.first() << networkDeviceInfo; + descriptor.setThingId(existingThings.first()->id()); + } + + ParamList params; + params << Param(dataloggerThingLoggerHostParamTypeId, networkDeviceInfo.address().toString()); + params << Param(dataloggerThingLoggerMacParamTypeId, networkDeviceInfo.macAddress()); + descriptor.setParams(params); + info->addThingDescriptor(descriptor); + } + info->finish(Thing::ThingErrorNoError); + }); +} + void IntegrationPluginFronius::setupThing(ThingSetupInfo *info) { qCDebug(dcFronius()) << "Setting up a new thing:" << info->thing()->name(); @@ -74,11 +130,9 @@ void IntegrationPluginFronius::setupThing(ThingSetupInfo *info) QNetworkReply *reply = hardwareManager()->networkManager()->get(QNetworkRequest(requestUrl)); connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater); connect(reply, &QNetworkReply::finished, info, [this, info, thing, reply] { - QByteArray data = reply->readAll(); - if (reply->error() != QNetworkReply::NoError) { - qCWarning(dcFronius()) << "Fronius: Network request error:" << reply->error() << reply->errorString() << reply->url(); + qCWarning(dcFronius()) << "Network request error:" << reply->error() << reply->errorString() << reply->url(); info->finish(Thing::ThingErrorHardwareNotAvailable, tr("Device not reachable")); return; } @@ -87,13 +141,22 @@ void IntegrationPluginFronius::setupThing(ThingSetupInfo *info) QJsonParseError error; QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error); if (error.error != QJsonParseError::NoError) { - qCWarning(dcFronius()) << "Fronius: Failed to parse JSON data" << data << ":" << error.errorString() << data; + qCWarning(dcFronius()) << "Failed to parse JSON data" << data << ":" << error.errorString() << data; info->finish(Thing::ThingErrorHardwareFailure, tr("Please try again")); return; } + QVariantMap versionResponseMap = jsonDoc.toVariant().toMap(); + + // Knwon version with broken JSON API + if (versionResponseMap.value("CompatibilityRange").toString() == "1.6-2") { + qCWarning(dcFronius()) << "The Fronius data logger has a version which is known to have a broken JSON API firmware."; + info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("The firmware version 1.6-2 of this Fronius data logger has a broken API. Please update your Fronius device.")); + return; + } + FroniusLogger *newLogger = new FroniusLogger(thing, this); - newLogger->setBaseUrl(jsonDoc.toVariant().toMap().value("BaseURL").toString()); + newLogger->setBaseUrl(versionResponseMap.value("BaseURL").toString()); newLogger->setHostAddress(thing->paramValue(dataloggerThingLoggerHostParamTypeId).toString()); m_froniusLoggers.insert(newLogger, thing); @@ -211,6 +274,7 @@ void IntegrationPluginFronius::updateThingStates(Thing *thing) qCDebug(dcFronius()) << "Update thing values for" << thing->name(); if (thing->thingClassId() == inverterThingClassId) { + qCDebug(dcFronius()) << "Update inverter" << m_froniusInverters.key(thing)->updateUrl(); QNetworkReply *reply = hardwareManager()->networkManager()->get(QNetworkRequest(m_froniusInverters.key(thing)->updateUrl())); connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater); connect(reply, &QNetworkReply::finished, thing, [this, thing, reply]() { @@ -237,6 +301,7 @@ void IntegrationPluginFronius::updateThingStates(Thing *thing) } }); } else if (thing->thingClassId() == dataloggerThingClassId) { + qCDebug(dcFronius()) << "Update logger" << m_froniusLoggers.key(thing)->updateUrl(); QNetworkReply *reply = hardwareManager()->networkManager()->get(QNetworkRequest(m_froniusLoggers.key(thing)->updateUrl())); connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater); connect(reply, &QNetworkReply::finished, thing, [this, thing, reply]() { @@ -252,6 +317,7 @@ void IntegrationPluginFronius::updateThingStates(Thing *thing) }); } else if (thing->thingClassId() == meterThingClassId) { + qCDebug(dcFronius()) << "Update meter" << m_froniusMeters.key(thing)->updateUrl(); QNetworkReply *reply = hardwareManager()->networkManager()->get(QNetworkRequest(m_froniusMeters.key(thing)->updateUrl())); connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater); connect(reply, &QNetworkReply::finished, thing, [this, thing, reply]() { @@ -266,6 +332,7 @@ void IntegrationPluginFronius::updateThingStates(Thing *thing) }); } else if (thing->thingClassId() == storageThingClassId) { + qCDebug(dcFronius()) << "Update storage" << m_froniusStorages.key(thing)->updateUrl(); QNetworkReply *reply = hardwareManager()->networkManager()->get(QNetworkRequest(m_froniusStorages.key(thing)->updateUrl())); connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater); connect(reply, &QNetworkReply::finished, thing, [this, thing, reply]() { @@ -306,7 +373,7 @@ void IntegrationPluginFronius::searchNewThings(FroniusLogger *logger) url.setPath(logger->baseUrl() + "GetActiveDeviceInfo.cgi"); url.setQuery(query); - qCDebug(dcFronius()) << "Search Things at address" << url.toString(); + qCDebug(dcFronius()) << "Searching new things at address" << url.toString(); QNetworkRequest request = QNetworkRequest(url); request.setHeader(QNetworkRequest::KnownHeaders::ContentTypeHeader, "application/json"); @@ -443,7 +510,7 @@ void IntegrationPluginFronius::setupChild(ThingSetupInfo *info, Thing *loggerThi QByteArray data = reply->readAll(); if (reply->error() != QNetworkReply::NoError) { - qCWarning(dcFronius()) << "Fronius: Network request error:" << reply->error() << reply->errorString(); + qCWarning(dcFronius()) << "Network request error:" << reply->error() << reply->errorString(); info->finish(Thing::ThingErrorNoError); return; } @@ -452,7 +519,7 @@ void IntegrationPluginFronius::setupChild(ThingSetupInfo *info, Thing *loggerThi QJsonParseError error; QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error); if (error.error != QJsonParseError::NoError) { - qCWarning(dcFronius()) << "Fronius: Failed to parse JSON data" << data << ":" << error.errorString(); + qCWarning(dcFronius()) << "Failed to parse JSON data" << data << ":" << error.errorString(); info->finish(Thing::ThingErrorHardwareFailure, tr("Please try again")); return; } @@ -484,7 +551,7 @@ void IntegrationPluginFronius::setupChild(ThingSetupInfo *info, Thing *loggerThi QByteArray data = reply->readAll(); if (reply->error() != QNetworkReply::NoError) { - qCWarning(dcFronius()) << "Fronius: Network request error:" << reply->error() << reply->errorString(); + qCWarning(dcFronius()) << "Network request error:" << reply->error() << reply->errorString(); info->finish(Thing::ThingErrorHardwareNotAvailable, "Device not reachable"); return; } @@ -493,7 +560,7 @@ void IntegrationPluginFronius::setupChild(ThingSetupInfo *info, Thing *loggerThi QJsonParseError error; QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error); if (error.error != QJsonParseError::NoError) { - qCWarning(dcFronius()) << "Fronius: Failed to parse JSON data" << data << ":" << error.errorString(); + qCWarning(dcFronius()) << "Failed to parse JSON data" << data << ":" << error.errorString(); info->finish(Thing::ThingErrorHardwareNotAvailable, "Please try again"); return; } diff --git a/fronius/integrationpluginfronius.h b/fronius/integrationpluginfronius.h index a82f6c35..4662b8fd 100644 --- a/fronius/integrationpluginfronius.h +++ b/fronius/integrationpluginfronius.h @@ -50,6 +50,7 @@ class IntegrationPluginFronius : public IntegrationPlugin public: explicit IntegrationPluginFronius(QObject *parent = nullptr); + void discoverThings(ThingDiscoveryInfo *info) override; void setupThing(ThingSetupInfo *thing) override; void postSetupThing(Thing* thing) override; void executeAction(ThingActionInfo *info) override; diff --git a/fronius/integrationpluginfronius.json b/fronius/integrationpluginfronius.json index 917ab66f..3e04c715 100644 --- a/fronius/integrationpluginfronius.json +++ b/fronius/integrationpluginfronius.json @@ -12,7 +12,7 @@ "id": "4fd79fed-42f1-4df9-be64-3df7b2e0bda2", "name": "datalogger", "displayName": "Fronius Solar Connection", - "createMethods": ["user"], + "createMethods": ["discovery", "user"], "interfaces": ["gateway"], "paramTypes": [ { @@ -22,6 +22,13 @@ "type": "QString", "inputType": "IPv4Address", "defaultValue": "88.117.152.99" + }, + { + "id": "2237972e-385b-4458-b5d3-1d1fb4ae8756", + "name": "loggerMac", + "displayName": "MAC address", + "type": "QString", + "defaultValue": "00:00:00:00:00:00" } ], "stateTypes": [ @@ -151,7 +158,7 @@ "name": "inverter", "displayName": "Fronius Solar Inverter", "createMethods": ["auto"], - "interfaces" : ["smartmeterproducer", "connectable"], + "interfaces" : ["solarinverter", "connectable"], "paramTypes": [ { "id": "f2f8c2f5-dd6a-4786-b336-82fc84e5bb98", @@ -210,8 +217,8 @@ { "id": "d6dbb879-4cbc-4db3-830e-b92ba91a13e5", "name": "totalEnergyProduced", - "displayName": "Energy total", - "displayNameEvent": "Energy total changed", + "displayName": "Total produced energy", + "displayNameEvent": "Total produced energy changed", "type": "double", "unit": "KiloWattHour", "defaultValue": "0" diff --git a/fronius/translations/02319cfc-8b55-49ba-99bc-0588bbfab063-de.ts b/fronius/translations/02319cfc-8b55-49ba-99bc-0588bbfab063-de.ts index a9cadbb6..9805d321 100644 --- a/fronius/translations/02319cfc-8b55-49ba-99bc-0588bbfab063-de.ts +++ b/fronius/translations/02319cfc-8b55-49ba-99bc-0588bbfab063-de.ts @@ -4,22 +4,32 @@ IntegrationPluginFronius - + + Unable to discovery devices in your network. + + + + Device not reachable Gerät nicht erreichbar - - + + Please try again Bitte versuchen Sie es erneut + + + The firmware version 1.6-2 of this Fronius data logger has a broken API. Please update your Fronius device. + + fronius - - + + Battery level The name of the ParamType (ThingClass: storage, EventType: batteryLevel, ID: {5c6da672-9662-41bc-8c8c-aa0f32481251}) ---------- @@ -27,14 +37,14 @@ The name of the StateType ({5c6da672-9662-41bc-8c8c-aa0f32481251}) of ThingClass Batteriestand - + Battery level changed The name of the EventType ({5c6da672-9662-41bc-8c8c-aa0f32481251}) of ThingClass storage Batteriestand geändert - - + + Battery level critical The name of the ParamType (ThingClass: storage, EventType: batteryCritical, ID: {e5396312-b50e-4d6f-b628-5b51448971d3}) ---------- @@ -42,14 +52,14 @@ The name of the StateType ({e5396312-b50e-4d6f-b628-5b51448971d3}) of ThingClass Batteriestand kritisch - + Battery level critical changed The name of the EventType ({e5396312-b50e-4d6f-b628-5b51448971d3}) of ThingClass storage Batteriestand kritisch geändert - - + + CO2 factor The name of the ParamType (ThingClass: datalogger, EventType: co2factor, ID: {8ab01225-7be5-4482-a99b-314108ae0e2b}) ---------- @@ -57,14 +67,14 @@ The name of the StateType ({8ab01225-7be5-4482-a99b-314108ae0e2b}) of ThingClass CO2 Faktor - + CO2 factor changed The name of the EventType ({8ab01225-7be5-4482-a99b-314108ae0e2b}) of ThingClass datalogger CO2 Faktor geändert - - + + CO2 unit The name of the ParamType (ThingClass: datalogger, EventType: co2unit, ID: {b0e655f8-27d0-4add-918b-461cadc8efcc}) ---------- @@ -72,20 +82,20 @@ The name of the StateType ({b0e655f8-27d0-4add-918b-461cadc8efcc}) of ThingClass CO2-Einheit - + CO2 unit changed The name of the EventType ({b0e655f8-27d0-4add-918b-461cadc8efcc}) of ThingClass datalogger CO2-Einheit geändert - + Cash Currency changed The name of the EventType ({84da30c8-a7fb-49c6-884c-9521f9f62bbc}) of ThingClass datalogger Bargeldwährung geändert - - + + Cash currency The name of the ParamType (ThingClass: datalogger, EventType: cashcurrency, ID: {84da30c8-a7fb-49c6-884c-9521f9f62bbc}) ---------- @@ -93,8 +103,8 @@ The name of the StateType ({84da30c8-a7fb-49c6-884c-9521f9f62bbc}) of ThingClass Bargeldwährung - - + + Cash factor The name of the ParamType (ThingClass: datalogger, EventType: cashfactor, ID: {bc18595b-17c7-4a1f-8002-b908a3d9239d}) ---------- @@ -102,14 +112,14 @@ The name of the StateType ({bc18595b-17c7-4a1f-8002-b908a3d9239d}) of ThingClass Cash-Faktor - + Cash factor changed The name of the EventType ({bc18595b-17c7-4a1f-8002-b908a3d9239d}) of ThingClass datalogger Cash-Faktor geändert - - + + Cell temperature The name of the ParamType (ThingClass: storage, EventType: cellTemperature, ID: {4417499c-1757-4309-868a-be5cf3455c4a}) ---------- @@ -117,38 +127,26 @@ The name of the StateType ({4417499c-1757-4309-868a-be5cf3455c4a}) of ThingClass Zellentemperatur - + Cell temperature changed The name of the EventType ({4417499c-1757-4309-868a-be5cf3455c4a}) of ThingClass storage Zellentemperatur geändert - - Charge state changed - The name of the EventType ({2de34a1f-de2e-43ad-8998-8a5460dff9ae}) of ThingClass storage - Ladezustand geändert - - - + Fronius smart meter The name of the ThingClass ({c3cb53a4-32dd-434d-9d9c-aada41f8129c}) - + Fronius solar storage The name of the ThingClass ({b00139fa-7386-48b1-8697-2fdd21a57ced}) - - Current Power changed - The name of the EventType ({788accbc-b86e-471b-b37f-14c9c6411526}) of ThingClass inverter - Aktuelle Leistung geändert - - - - + + Current power The name of the ParamType (ThingClass: inverter, EventType: currentPower, ID: {788accbc-b86e-471b-b37f-14c9c6411526}) ---------- @@ -156,8 +154,8 @@ The name of the StateType ({788accbc-b86e-471b-b37f-14c9c6411526}) of ThingClass Aktuelle Leistung - - + + Default language The name of the ParamType (ThingClass: datalogger, EventType: defaultlang, ID: {18b250e2-080a-4991-b368-177c4da83eca}) ---------- @@ -165,15 +163,15 @@ The name of the StateType ({18b250e2-080a-4991-b368-177c4da83eca}) of ThingClass Standardsprache - + Default language changed The name of the EventType ({18b250e2-080a-4991-b368-177c4da83eca}) of ThingClass datalogger Standardsprache geändert - - - + + + Device ID The name of the ParamType (ThingClass: storage, Type: thing, ID: {49087f31-abf5-4bb8-946b-a3626ee80566}) ---------- @@ -183,8 +181,8 @@ The name of the ParamType (ThingClass: inverter, Type: thing, ID: {f2f8c2f5-dd6a Geräte ID - - + + Energy Consumed The name of the ParamType (ThingClass: meter, EventType: totalEnergyConsumed, ID: {f3451818-48d2-42a5-94fd-ad094c06967f}) ---------- @@ -192,14 +190,14 @@ The name of the StateType ({f3451818-48d2-42a5-94fd-ad094c06967f}) of ThingClass Energie verbraucht - + Energy consumption changed The name of the EventType ({f3451818-48d2-42a5-94fd-ad094c06967f}) of ThingClass meter Energieverbrauch geändert - - + + Energy of current day The name of the ParamType (ThingClass: inverter, EventType: eday, ID: {b6af1bf5-753d-47b6-a151-e4d801fe6ff8}) ---------- @@ -207,8 +205,8 @@ The name of the StateType ({b6af1bf5-753d-47b6-a151-e4d801fe6ff8}) of ThingClass Energie dieses Tages - - + + Energy of current year The name of the ParamType (ThingClass: inverter, EventType: eyear, ID: {7fd2fa28-9bcc-4f01-a823-459437d185f6}) ---------- @@ -216,20 +214,20 @@ The name of the StateType ({7fd2fa28-9bcc-4f01-a823-459437d185f6}) of ThingClass Energie dieses Jahres - + Energy of day changed The name of the EventType ({b6af1bf5-753d-47b6-a151-e4d801fe6ff8}) of ThingClass inverter Energie dieses Tages geändert - + Energy of year changed The name of the EventType ({7fd2fa28-9bcc-4f01-a823-459437d185f6}) of ThingClass inverter Energie dieses Jahres geändert - - + + Energy produced The name of the ParamType (ThingClass: meter, EventType: totalEnergyProduced, ID: {ca14cca5-d9f0-49c5-a8f7-907d4c0825f0}) ---------- @@ -237,53 +235,89 @@ The name of the StateType ({ca14cca5-d9f0-49c5-a8f7-907d4c0825f0}) of ThingClass - + Energy production changed The name of the EventType ({ca14cca5-d9f0-49c5-a8f7-907d4c0825f0}) of ThingClass meter Energieproduktion geändert - - - Energy total - The name of the ParamType (ThingClass: inverter, EventType: totalEnergyProduced, ID: {d6dbb879-4cbc-4db3-830e-b92ba91a13e5}) + + + Charging + The name of the ParamType (ThingClass: storage, EventType: charging, ID: {2de34a1f-de2e-43ad-8998-8a5460dff9ae}) ---------- -The name of the StateType ({d6dbb879-4cbc-4db3-830e-b92ba91a13e5}) of ThingClass inverter - Energie gesamt +The name of the StateType ({2de34a1f-de2e-43ad-8998-8a5460dff9ae}) of ThingClass storage + - - Energy total changed - The name of the EventType ({d6dbb879-4cbc-4db3-830e-b92ba91a13e5}) of ThingClass inverter - Energie gesamt geändert + + Charging changed + The name of the EventType ({2de34a1f-de2e-43ad-8998-8a5460dff9ae}) of ThingClass storage + - + + Current power changed + The name of the EventType ({788accbc-b86e-471b-b37f-14c9c6411526}) of ThingClass inverter + + + + + + Current power usage + The name of the ParamType (ThingClass: meter, EventType: currentPower, ID: {e5056ea1-88a2-410b-9c5e-6322aca4cb17}) +---------- +The name of the StateType ({e5056ea1-88a2-410b-9c5e-6322aca4cb17}) of ThingClass meter + + + + + Current power usage changed + The name of the EventType ({e5056ea1-88a2-410b-9c5e-6322aca4cb17}) of ThingClass meter + + + + + + Discharging + The name of the ParamType (ThingClass: storage, EventType: discharging, ID: {be90d35c-081c-485b-b4cc-8271e7da5796}) +---------- +The name of the StateType ({be90d35c-081c-485b-b4cc-8271e7da5796}) of ThingClass storage + + + + + Discharging changed + The name of the EventType ({be90d35c-081c-485b-b4cc-8271e7da5796}) of ThingClass storage + + + + Fronius The name of the vendor ({2286fc38-afd9-4128-ab7e-0fba527d53ba}) Fronius - + Fronius Solar The name of the plugin fronius ({02319cfc-8b55-49ba-99bc-0588bbfab063}) Fronius Solar - + Fronius Solar Connection The name of the ThingClass ({4fd79fed-42f1-4df9-be64-3df7b2e0bda2}) Fronius Solar Verbindung - + Fronius Solar Inverter The name of the ThingClass ({540aa956-8b8f-4982-9f58-343a76cea846}) Fronius Solar Inverter - - + + Hardware version The name of the ParamType (ThingClass: datalogger, EventType: hwversion, ID: {3b4206e5-74c7-4708-96b8-2abfab0c41d6}) ---------- @@ -291,20 +325,20 @@ The name of the StateType ({3b4206e5-74c7-4708-96b8-2abfab0c41d6}) of ThingClass Hardwareversion - + Hardware version changed The name of the EventType ({3b4206e5-74c7-4708-96b8-2abfab0c41d6}) of ThingClass datalogger Hardwareversion geändert - + Host address The name of the ParamType (ThingClass: datalogger, Type: thing, ID: {52da0197-4b78-4fec-aa72-70f949e26edc}) Adresse - - + + Inverter active The name of the ParamType (ThingClass: inverter, EventType: active, ID: {e763baa7-5eaf-438c-83f0-4fa6c0f7eeb0}) ---------- @@ -312,26 +346,32 @@ The name of the StateType ({e763baa7-5eaf-438c-83f0-4fa6c0f7eeb0}) of ThingClass Inverter aktiv - + Inverter active changed The name of the EventType ({e763baa7-5eaf-438c-83f0-4fa6c0f7eeb0}) of ThingClass inverter Inverter aktiv geändert - + + MAC address + The name of the ParamType (ThingClass: datalogger, Type: thing, ID: {2237972e-385b-4458-b5d3-1d1fb4ae8756}) + + + + Manufacturer The name of the ParamType (ThingClass: storage, Type: thing, ID: {9665c38b-c13a-428f-b741-1470239c63dc}) Hersteller - + Maxmimum capacity The name of the ParamType (ThingClass: storage, Type: thing, ID: {59a68e91-1aad-46b7-b351-03b7b2216366}) Maximale Kapazität - - + + Platform ID The name of the ParamType (ThingClass: datalogger, EventType: platformid, ID: {65c068e6-4a0b-4672-9724-ae95216c4c9c}) ---------- @@ -339,14 +379,14 @@ The name of the StateType ({65c068e6-4a0b-4672-9724-ae95216c4c9c}) of ThingClass Plattform ID - + Platform ID changed The name of the EventType ({65c068e6-4a0b-4672-9724-ae95216c4c9c}) of ThingClass datalogger Plattform-ID geändert - - + + Power management relay The name of the ParamType (ThingClass: datalogger, EventType: powerManagmentRelay, ID: {b217acf6-0c5e-4a3e-a50c-4c0133c871c2}) ---------- @@ -354,8 +394,8 @@ The name of the StateType ({b217acf6-0c5e-4a3e-a50c-4c0133c871c2}) of ThingClass Leistungsmanagement Relais - - + + Power management relay reason The name of the ParamType (ThingClass: datalogger, EventType: powerManagmentRelayReason, ID: {5650ce9b-0d7d-4c52-b410-ea618889b4bb}) ---------- @@ -363,20 +403,20 @@ The name of the StateType ({5650ce9b-0d7d-4c52-b410-ea618889b4bb}) of ThingClass Leistungsmanagement Relais Grund - + Power management relay reason changed The name of the EventType ({5650ce9b-0d7d-4c52-b410-ea618889b4bb}) of ThingClass datalogger Leistungsmanagement Relais Grund geändert - + Power management relay status changed The name of the EventType ({b217acf6-0c5e-4a3e-a50c-4c0133c871c2}) of ThingClass datalogger Leistungsmanagement Relais Status geändert - - + + Product ID The name of the ParamType (ThingClass: datalogger, EventType: productid, ID: {b22052ef-14da-43d2-982b-f2c2d8c03206}) ---------- @@ -384,20 +424,20 @@ The name of the StateType ({b22052ef-14da-43d2-982b-f2c2d8c03206}) of ThingClass Produkt-ID - + Product ID changed The name of the EventType ({b22052ef-14da-43d2-982b-f2c2d8c03206}) of ThingClass datalogger Produkt-ID geändert - - - - - - - - + + + + + + + + Reachable The name of the ParamType (ThingClass: storage, EventType: connected, ID: {2f7e1267-b0be-4b78-9aa3-832b86c4efad}) ---------- @@ -417,9 +457,9 @@ The name of the StateType ({98e4476f-e745-4a7f-b795-19269cb70c40}) of ThingClass Erreichbar - - - + + + Reachable changed The name of the EventType ({2f7e1267-b0be-4b78-9aa3-832b86c4efad}) of ThingClass storage ---------- @@ -429,14 +469,14 @@ The name of the EventType ({eda29c50-73ac-40e0-9c92-26fee352e688}) of ThingClass Erreichbar geändert - + Search new devices The name of the ActionType ({c217fdc1-de18-41dc-b5d8-8072f84e7b6c}) of ThingClass datalogger Suche neue Geräte - - + + Software version The name of the ParamType (ThingClass: datalogger, EventType: swversion, ID: {31743ca5-4353-4f26-b2ad-5da43e5b9d86}) ---------- @@ -444,23 +484,29 @@ The name of the StateType ({31743ca5-4353-4f26-b2ad-5da43e5b9d86}) of ThingClass Softwareversion - + Software version changed The name of the EventType ({31743ca5-4353-4f26-b2ad-5da43e5b9d86}) of ThingClass datalogger Softwareversion geändert - - - State of charge - The name of the ParamType (ThingClass: storage, EventType: charging, ID: {2de34a1f-de2e-43ad-8998-8a5460dff9ae}) + + + Total produced energy + The name of the ParamType (ThingClass: inverter, EventType: totalEnergyProduced, ID: {d6dbb879-4cbc-4db3-830e-b92ba91a13e5}) ---------- -The name of the StateType ({2de34a1f-de2e-43ad-8998-8a5460dff9ae}) of ThingClass storage - Ladezustand +The name of the StateType ({d6dbb879-4cbc-4db3-830e-b92ba91a13e5}) of ThingClass inverter + - - + + Total produced energy changed + The name of the EventType ({d6dbb879-4cbc-4db3-830e-b92ba91a13e5}) of ThingClass inverter + + + + + Time zone The name of the ParamType (ThingClass: datalogger, EventType: tzone, ID: {6bdfeeda-7a47-4043-a011-5eb96308a7d6}) ---------- @@ -468,14 +514,14 @@ The name of the StateType ({6bdfeeda-7a47-4043-a011-5eb96308a7d6}) of ThingClass Zeitzone - + Time zone changed The name of the EventType ({6bdfeeda-7a47-4043-a011-5eb96308a7d6}) of ThingClass datalogger Zeitzone geändert - - + + Timezone location The name of the ParamType (ThingClass: datalogger, EventType: tzoneloc, ID: {d034f59d-dc34-450a-a6f3-68264767a3e4}) ---------- @@ -483,28 +529,13 @@ The name of the StateType ({d034f59d-dc34-450a-a6f3-68264767a3e4}) of ThingClass Zeitzone Ort - + Timezone location changed The name of the EventType ({d034f59d-dc34-450a-a6f3-68264767a3e4}) of ThingClass datalogger Zeitzone Ort geändert - - - Total current power - The name of the ParamType (ThingClass: meter, EventType: currentPower, ID: {e5056ea1-88a2-410b-9c5e-6322aca4cb17}) ----------- -The name of the StateType ({e5056ea1-88a2-410b-9c5e-6322aca4cb17}) of ThingClass meter - Gesamte Momentanleistung - - - - Total current power changed - The name of the EventType ({e5056ea1-88a2-410b-9c5e-6322aca4cb17}) of ThingClass meter - Gesamte Momentanleistung geändert - - - + logger reachable changed The name of the EventType ({98e4476f-e745-4a7f-b795-19269cb70c40}) of ThingClass datalogger Logger erriechbar geändert diff --git a/fronius/translations/02319cfc-8b55-49ba-99bc-0588bbfab063-en_US.ts b/fronius/translations/02319cfc-8b55-49ba-99bc-0588bbfab063-en_US.ts index 60d75967..7ad1be7b 100644 --- a/fronius/translations/02319cfc-8b55-49ba-99bc-0588bbfab063-en_US.ts +++ b/fronius/translations/02319cfc-8b55-49ba-99bc-0588bbfab063-en_US.ts @@ -4,22 +4,32 @@ IntegrationPluginFronius - + + Unable to discovery devices in your network. + + + + Device not reachable - - + + Please try again + + + The firmware version 1.6-2 of this Fronius data logger has a broken API. Please update your Fronius device. + + fronius - - + + Battery level The name of the ParamType (ThingClass: storage, EventType: batteryLevel, ID: {5c6da672-9662-41bc-8c8c-aa0f32481251}) ---------- @@ -27,14 +37,14 @@ The name of the StateType ({5c6da672-9662-41bc-8c8c-aa0f32481251}) of ThingClass - + Battery level changed The name of the EventType ({5c6da672-9662-41bc-8c8c-aa0f32481251}) of ThingClass storage - - + + Battery level critical The name of the ParamType (ThingClass: storage, EventType: batteryCritical, ID: {e5396312-b50e-4d6f-b628-5b51448971d3}) ---------- @@ -42,14 +52,14 @@ The name of the StateType ({e5396312-b50e-4d6f-b628-5b51448971d3}) of ThingClass - + Battery level critical changed The name of the EventType ({e5396312-b50e-4d6f-b628-5b51448971d3}) of ThingClass storage - - + + CO2 factor The name of the ParamType (ThingClass: datalogger, EventType: co2factor, ID: {8ab01225-7be5-4482-a99b-314108ae0e2b}) ---------- @@ -57,14 +67,14 @@ The name of the StateType ({8ab01225-7be5-4482-a99b-314108ae0e2b}) of ThingClass - + CO2 factor changed The name of the EventType ({8ab01225-7be5-4482-a99b-314108ae0e2b}) of ThingClass datalogger - - + + CO2 unit The name of the ParamType (ThingClass: datalogger, EventType: co2unit, ID: {b0e655f8-27d0-4add-918b-461cadc8efcc}) ---------- @@ -72,20 +82,20 @@ The name of the StateType ({b0e655f8-27d0-4add-918b-461cadc8efcc}) of ThingClass - + CO2 unit changed The name of the EventType ({b0e655f8-27d0-4add-918b-461cadc8efcc}) of ThingClass datalogger - + Cash Currency changed The name of the EventType ({84da30c8-a7fb-49c6-884c-9521f9f62bbc}) of ThingClass datalogger - - + + Cash currency The name of the ParamType (ThingClass: datalogger, EventType: cashcurrency, ID: {84da30c8-a7fb-49c6-884c-9521f9f62bbc}) ---------- @@ -93,8 +103,8 @@ The name of the StateType ({84da30c8-a7fb-49c6-884c-9521f9f62bbc}) of ThingClass - - + + Cash factor The name of the ParamType (ThingClass: datalogger, EventType: cashfactor, ID: {bc18595b-17c7-4a1f-8002-b908a3d9239d}) ---------- @@ -102,14 +112,14 @@ The name of the StateType ({bc18595b-17c7-4a1f-8002-b908a3d9239d}) of ThingClass - + Cash factor changed The name of the EventType ({bc18595b-17c7-4a1f-8002-b908a3d9239d}) of ThingClass datalogger - - + + Cell temperature The name of the ParamType (ThingClass: storage, EventType: cellTemperature, ID: {4417499c-1757-4309-868a-be5cf3455c4a}) ---------- @@ -117,38 +127,26 @@ The name of the StateType ({4417499c-1757-4309-868a-be5cf3455c4a}) of ThingClass - + Cell temperature changed The name of the EventType ({4417499c-1757-4309-868a-be5cf3455c4a}) of ThingClass storage - - Charge state changed - The name of the EventType ({2de34a1f-de2e-43ad-8998-8a5460dff9ae}) of ThingClass storage - - - - + Fronius smart meter The name of the ThingClass ({c3cb53a4-32dd-434d-9d9c-aada41f8129c}) - + Fronius solar storage The name of the ThingClass ({b00139fa-7386-48b1-8697-2fdd21a57ced}) - - Current Power changed - The name of the EventType ({788accbc-b86e-471b-b37f-14c9c6411526}) of ThingClass inverter - - - - - + + Current power The name of the ParamType (ThingClass: inverter, EventType: currentPower, ID: {788accbc-b86e-471b-b37f-14c9c6411526}) ---------- @@ -156,8 +154,8 @@ The name of the StateType ({788accbc-b86e-471b-b37f-14c9c6411526}) of ThingClass - - + + Default language The name of the ParamType (ThingClass: datalogger, EventType: defaultlang, ID: {18b250e2-080a-4991-b368-177c4da83eca}) ---------- @@ -165,15 +163,15 @@ The name of the StateType ({18b250e2-080a-4991-b368-177c4da83eca}) of ThingClass - + Default language changed The name of the EventType ({18b250e2-080a-4991-b368-177c4da83eca}) of ThingClass datalogger - - - + + + Device ID The name of the ParamType (ThingClass: storage, Type: thing, ID: {49087f31-abf5-4bb8-946b-a3626ee80566}) ---------- @@ -183,8 +181,8 @@ The name of the ParamType (ThingClass: inverter, Type: thing, ID: {f2f8c2f5-dd6a - - + + Energy Consumed The name of the ParamType (ThingClass: meter, EventType: totalEnergyConsumed, ID: {f3451818-48d2-42a5-94fd-ad094c06967f}) ---------- @@ -192,14 +190,14 @@ The name of the StateType ({f3451818-48d2-42a5-94fd-ad094c06967f}) of ThingClass - + Energy consumption changed The name of the EventType ({f3451818-48d2-42a5-94fd-ad094c06967f}) of ThingClass meter - - + + Energy of current day The name of the ParamType (ThingClass: inverter, EventType: eday, ID: {b6af1bf5-753d-47b6-a151-e4d801fe6ff8}) ---------- @@ -207,8 +205,8 @@ The name of the StateType ({b6af1bf5-753d-47b6-a151-e4d801fe6ff8}) of ThingClass - - + + Energy of current year The name of the ParamType (ThingClass: inverter, EventType: eyear, ID: {7fd2fa28-9bcc-4f01-a823-459437d185f6}) ---------- @@ -216,20 +214,20 @@ The name of the StateType ({7fd2fa28-9bcc-4f01-a823-459437d185f6}) of ThingClass - + Energy of day changed The name of the EventType ({b6af1bf5-753d-47b6-a151-e4d801fe6ff8}) of ThingClass inverter - + Energy of year changed The name of the EventType ({7fd2fa28-9bcc-4f01-a823-459437d185f6}) of ThingClass inverter - - + + Energy produced The name of the ParamType (ThingClass: meter, EventType: totalEnergyProduced, ID: {ca14cca5-d9f0-49c5-a8f7-907d4c0825f0}) ---------- @@ -237,53 +235,89 @@ The name of the StateType ({ca14cca5-d9f0-49c5-a8f7-907d4c0825f0}) of ThingClass - + Energy production changed The name of the EventType ({ca14cca5-d9f0-49c5-a8f7-907d4c0825f0}) of ThingClass meter - - - Energy total - The name of the ParamType (ThingClass: inverter, EventType: totalEnergyProduced, ID: {d6dbb879-4cbc-4db3-830e-b92ba91a13e5}) + + + Charging + The name of the ParamType (ThingClass: storage, EventType: charging, ID: {2de34a1f-de2e-43ad-8998-8a5460dff9ae}) ---------- -The name of the StateType ({d6dbb879-4cbc-4db3-830e-b92ba91a13e5}) of ThingClass inverter +The name of the StateType ({2de34a1f-de2e-43ad-8998-8a5460dff9ae}) of ThingClass storage - - Energy total changed - The name of the EventType ({d6dbb879-4cbc-4db3-830e-b92ba91a13e5}) of ThingClass inverter + + Charging changed + The name of the EventType ({2de34a1f-de2e-43ad-8998-8a5460dff9ae}) of ThingClass storage - + + Current power changed + The name of the EventType ({788accbc-b86e-471b-b37f-14c9c6411526}) of ThingClass inverter + + + + + + Current power usage + The name of the ParamType (ThingClass: meter, EventType: currentPower, ID: {e5056ea1-88a2-410b-9c5e-6322aca4cb17}) +---------- +The name of the StateType ({e5056ea1-88a2-410b-9c5e-6322aca4cb17}) of ThingClass meter + + + + + Current power usage changed + The name of the EventType ({e5056ea1-88a2-410b-9c5e-6322aca4cb17}) of ThingClass meter + + + + + + Discharging + The name of the ParamType (ThingClass: storage, EventType: discharging, ID: {be90d35c-081c-485b-b4cc-8271e7da5796}) +---------- +The name of the StateType ({be90d35c-081c-485b-b4cc-8271e7da5796}) of ThingClass storage + + + + + Discharging changed + The name of the EventType ({be90d35c-081c-485b-b4cc-8271e7da5796}) of ThingClass storage + + + + Fronius The name of the vendor ({2286fc38-afd9-4128-ab7e-0fba527d53ba}) - + Fronius Solar The name of the plugin fronius ({02319cfc-8b55-49ba-99bc-0588bbfab063}) - + Fronius Solar Connection The name of the ThingClass ({4fd79fed-42f1-4df9-be64-3df7b2e0bda2}) - + Fronius Solar Inverter The name of the ThingClass ({540aa956-8b8f-4982-9f58-343a76cea846}) - - + + Hardware version The name of the ParamType (ThingClass: datalogger, EventType: hwversion, ID: {3b4206e5-74c7-4708-96b8-2abfab0c41d6}) ---------- @@ -291,20 +325,20 @@ The name of the StateType ({3b4206e5-74c7-4708-96b8-2abfab0c41d6}) of ThingClass - + Hardware version changed The name of the EventType ({3b4206e5-74c7-4708-96b8-2abfab0c41d6}) of ThingClass datalogger - + Host address The name of the ParamType (ThingClass: datalogger, Type: thing, ID: {52da0197-4b78-4fec-aa72-70f949e26edc}) - - + + Inverter active The name of the ParamType (ThingClass: inverter, EventType: active, ID: {e763baa7-5eaf-438c-83f0-4fa6c0f7eeb0}) ---------- @@ -312,26 +346,32 @@ The name of the StateType ({e763baa7-5eaf-438c-83f0-4fa6c0f7eeb0}) of ThingClass - + Inverter active changed The name of the EventType ({e763baa7-5eaf-438c-83f0-4fa6c0f7eeb0}) of ThingClass inverter - + + MAC address + The name of the ParamType (ThingClass: datalogger, Type: thing, ID: {2237972e-385b-4458-b5d3-1d1fb4ae8756}) + + + + Manufacturer The name of the ParamType (ThingClass: storage, Type: thing, ID: {9665c38b-c13a-428f-b741-1470239c63dc}) - + Maxmimum capacity The name of the ParamType (ThingClass: storage, Type: thing, ID: {59a68e91-1aad-46b7-b351-03b7b2216366}) - - + + Platform ID The name of the ParamType (ThingClass: datalogger, EventType: platformid, ID: {65c068e6-4a0b-4672-9724-ae95216c4c9c}) ---------- @@ -339,14 +379,14 @@ The name of the StateType ({65c068e6-4a0b-4672-9724-ae95216c4c9c}) of ThingClass - + Platform ID changed The name of the EventType ({65c068e6-4a0b-4672-9724-ae95216c4c9c}) of ThingClass datalogger - - + + Power management relay The name of the ParamType (ThingClass: datalogger, EventType: powerManagmentRelay, ID: {b217acf6-0c5e-4a3e-a50c-4c0133c871c2}) ---------- @@ -354,8 +394,8 @@ The name of the StateType ({b217acf6-0c5e-4a3e-a50c-4c0133c871c2}) of ThingClass - - + + Power management relay reason The name of the ParamType (ThingClass: datalogger, EventType: powerManagmentRelayReason, ID: {5650ce9b-0d7d-4c52-b410-ea618889b4bb}) ---------- @@ -363,20 +403,20 @@ The name of the StateType ({5650ce9b-0d7d-4c52-b410-ea618889b4bb}) of ThingClass - + Power management relay reason changed The name of the EventType ({5650ce9b-0d7d-4c52-b410-ea618889b4bb}) of ThingClass datalogger - + Power management relay status changed The name of the EventType ({b217acf6-0c5e-4a3e-a50c-4c0133c871c2}) of ThingClass datalogger - - + + Product ID The name of the ParamType (ThingClass: datalogger, EventType: productid, ID: {b22052ef-14da-43d2-982b-f2c2d8c03206}) ---------- @@ -384,20 +424,20 @@ The name of the StateType ({b22052ef-14da-43d2-982b-f2c2d8c03206}) of ThingClass - + Product ID changed The name of the EventType ({b22052ef-14da-43d2-982b-f2c2d8c03206}) of ThingClass datalogger - - - - - - - - + + + + + + + + Reachable The name of the ParamType (ThingClass: storage, EventType: connected, ID: {2f7e1267-b0be-4b78-9aa3-832b86c4efad}) ---------- @@ -417,9 +457,9 @@ The name of the StateType ({98e4476f-e745-4a7f-b795-19269cb70c40}) of ThingClass - - - + + + Reachable changed The name of the EventType ({2f7e1267-b0be-4b78-9aa3-832b86c4efad}) of ThingClass storage ---------- @@ -429,14 +469,14 @@ The name of the EventType ({eda29c50-73ac-40e0-9c92-26fee352e688}) of ThingClass - + Search new devices The name of the ActionType ({c217fdc1-de18-41dc-b5d8-8072f84e7b6c}) of ThingClass datalogger - - + + Software version The name of the ParamType (ThingClass: datalogger, EventType: swversion, ID: {31743ca5-4353-4f26-b2ad-5da43e5b9d86}) ---------- @@ -444,23 +484,29 @@ The name of the StateType ({31743ca5-4353-4f26-b2ad-5da43e5b9d86}) of ThingClass - + Software version changed The name of the EventType ({31743ca5-4353-4f26-b2ad-5da43e5b9d86}) of ThingClass datalogger - - - State of charge - The name of the ParamType (ThingClass: storage, EventType: charging, ID: {2de34a1f-de2e-43ad-8998-8a5460dff9ae}) + + + Total produced energy + The name of the ParamType (ThingClass: inverter, EventType: totalEnergyProduced, ID: {d6dbb879-4cbc-4db3-830e-b92ba91a13e5}) ---------- -The name of the StateType ({2de34a1f-de2e-43ad-8998-8a5460dff9ae}) of ThingClass storage +The name of the StateType ({d6dbb879-4cbc-4db3-830e-b92ba91a13e5}) of ThingClass inverter - - + + Total produced energy changed + The name of the EventType ({d6dbb879-4cbc-4db3-830e-b92ba91a13e5}) of ThingClass inverter + + + + + Time zone The name of the ParamType (ThingClass: datalogger, EventType: tzone, ID: {6bdfeeda-7a47-4043-a011-5eb96308a7d6}) ---------- @@ -468,14 +514,14 @@ The name of the StateType ({6bdfeeda-7a47-4043-a011-5eb96308a7d6}) of ThingClass - + Time zone changed The name of the EventType ({6bdfeeda-7a47-4043-a011-5eb96308a7d6}) of ThingClass datalogger - - + + Timezone location The name of the ParamType (ThingClass: datalogger, EventType: tzoneloc, ID: {d034f59d-dc34-450a-a6f3-68264767a3e4}) ---------- @@ -483,28 +529,13 @@ The name of the StateType ({d034f59d-dc34-450a-a6f3-68264767a3e4}) of ThingClass - + Timezone location changed The name of the EventType ({d034f59d-dc34-450a-a6f3-68264767a3e4}) of ThingClass datalogger - - - Total current power - The name of the ParamType (ThingClass: meter, EventType: currentPower, ID: {e5056ea1-88a2-410b-9c5e-6322aca4cb17}) ----------- -The name of the StateType ({e5056ea1-88a2-410b-9c5e-6322aca4cb17}) of ThingClass meter - - - - - Total current power changed - The name of the EventType ({e5056ea1-88a2-410b-9c5e-6322aca4cb17}) of ThingClass meter - - - - + logger reachable changed The name of the EventType ({98e4476f-e745-4a7f-b795-19269cb70c40}) of ThingClass datalogger