Merge PR #207: New Plug-In: OpenUV
commit
a47a48b49f
|
|
@ -484,6 +484,21 @@ Description: nymea.io plugin for one wire devices
|
|||
This package will install the nymea.io plugin for one wire devices
|
||||
|
||||
|
||||
Package: nymea-plugin-openuv
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
nymea-plugins-translations,
|
||||
Description: nymea.io plugin for OpenUV
|
||||
The nymea daemon is a plugin based IoT (Internet of Things) server. The
|
||||
server works like a translator for devices, things and services and
|
||||
allows them to interact.
|
||||
With the powerful rule engine you are able to connect any device available
|
||||
in the system and create individual scenes and behaviors for your environment.
|
||||
.
|
||||
This package will install the nymea.io plugin for OpenUV
|
||||
|
||||
|
||||
Package: nymea-plugin-openweathermap
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends},
|
||||
|
|
@ -908,6 +923,7 @@ Depends: nymea-plugin-anel,
|
|||
nymea-plugin-nanoleaf,
|
||||
nymea-plugin-netatmo,
|
||||
nymea-plugin-networkdetector,
|
||||
nymea-plugin-openuv,
|
||||
nymea-plugin-openweathermap,
|
||||
nymea-plugin-philipshue,
|
||||
nymea-plugin-pushbullet,
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
usr/lib/@DEB_HOST_MULTIARCH@/nymea/plugins/libnymea_devicepluginopenuv.so
|
||||
|
|
@ -32,6 +32,7 @@ PLUGIN_DIRS = \
|
|||
netatmo \
|
||||
networkdetector \
|
||||
onewire \
|
||||
openuv \
|
||||
openweathermap \
|
||||
osdomotics \
|
||||
philipshue \
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
# OpenUV
|
||||
|
||||
Get the current UV index for your location.
|
||||
|
||||
|
||||
The save exposure time is not available for all regions. If all save exposure times are zero it due to unavailability of this information
|
||||
|
|
@ -0,0 +1,173 @@
|
|||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* *
|
||||
* Copyright (C) 2020 Berhard Trinnes <bernhard.trinnes@nymea.io> *
|
||||
* *
|
||||
* This file is part of nymea. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Lesser General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2.1 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; If not, see *
|
||||
* <http://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include "devicepluginopenuv.h"
|
||||
#include "devices/device.h"
|
||||
#include "plugininfo.h"
|
||||
|
||||
#include <QDebug>
|
||||
#include <QJsonDocument>
|
||||
#include <QVariantMap>
|
||||
#include <QUrl>
|
||||
#include <QUrlQuery>
|
||||
#include <QDateTime>
|
||||
#include <QTimeZone>
|
||||
|
||||
DevicePluginOpenUv::DevicePluginOpenUv()
|
||||
{
|
||||
}
|
||||
|
||||
void DevicePluginOpenUv::init()
|
||||
{
|
||||
m_apiKey = configValue(openUvPluginApiKeyParamTypeId).toByteArray();
|
||||
|
||||
connect(this, &DevicePluginOpenUv::configValueChanged, this, [this]{
|
||||
m_apiKey = configValue(openUvPluginApiKeyParamTypeId).toByteArray();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
void DevicePluginOpenUv::discoverDevices(DeviceDiscoveryInfo *info)
|
||||
{
|
||||
QNetworkRequest request(QUrl("http://ip-api.com/json"));
|
||||
QNetworkReply* reply = hardwareManager()->networkManager()->get(request);
|
||||
connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater);
|
||||
connect(reply, &QNetworkReply::finished, info, [this, reply, info]() {
|
||||
if (reply->error() != QNetworkReply::NoError) {
|
||||
qCWarning(dcOpenUv()) << "Error fetching geolocation from ip-api:" << reply->error() << reply->errorString();
|
||||
info->finish(Device::DeviceErrorHardwareFailure, QT_TR_NOOP("Failed to fetch data from the internet."));
|
||||
return;
|
||||
}
|
||||
QJsonParseError error;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll(), &error);
|
||||
if (error.error != QJsonParseError::NoError) {
|
||||
qCWarning(dcOpenUv()) << "Failed to parse json from ip-api:" << error.error << error.errorString();
|
||||
info->finish(Device::DeviceErrorHardwareFailure, QT_TR_NOOP("The server returned unexpected data."));
|
||||
return;
|
||||
}
|
||||
if (!jsonDoc.toVariant().toMap().contains("lat") || !jsonDoc.toVariant().toMap().contains("lon")) {
|
||||
qCWarning(dcOpenUv()) << "Reply missing geolocation info" << qUtf8Printable(jsonDoc.toJson(QJsonDocument::Indented));
|
||||
info->finish(Device::DeviceErrorHardwareFailure, QT_TR_NOOP("The server returned unexpected data."));
|
||||
return;
|
||||
}
|
||||
qreal lat = jsonDoc.toVariant().toMap().value("lat").toDouble();
|
||||
qreal lon = jsonDoc.toVariant().toMap().value("lon").toDouble();
|
||||
|
||||
DeviceDescriptor descriptor(info->deviceClassId(), tr("OpenUV location"), jsonDoc.toVariant().toMap().value("city").toString());
|
||||
ParamList params;
|
||||
params.append(Param(openUvDeviceLatitudeParamTypeId, lat));
|
||||
params.append(Param(openUvDeviceLongitudeParamTypeId, lon));
|
||||
descriptor.setParams(params);
|
||||
info->addDeviceDescriptor(descriptor);
|
||||
info->finish(Device::DeviceErrorNoError);
|
||||
});
|
||||
}
|
||||
|
||||
void DevicePluginOpenUv::setupDevice(DeviceSetupInfo *info)
|
||||
{
|
||||
if (m_apiKey.isEmpty() || m_apiKey == "-") {
|
||||
info->finish(Device::DeviceErrorSetupFailed, tr("API key is missing, add your OpenUV API key in the plug-in configs"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!m_pluginTimer) {
|
||||
m_pluginTimer = hardwareManager()->pluginTimerManager()->registerTimer(60 * 60);
|
||||
connect(m_pluginTimer, &PluginTimer::timeout, this, &DevicePluginOpenUv::onPluginTimer);
|
||||
}
|
||||
info->finish(Device::DeviceErrorNoError);
|
||||
}
|
||||
|
||||
void DevicePluginOpenUv::postSetupDevice(Device *device)
|
||||
{
|
||||
getUvIndex(device);
|
||||
}
|
||||
|
||||
|
||||
void DevicePluginOpenUv::deviceRemoved(Device *device)
|
||||
{
|
||||
Q_UNUSED(device);
|
||||
|
||||
if (myDevices().isEmpty()) {
|
||||
hardwareManager()->pluginTimerManager()->unregisterTimer(m_pluginTimer);
|
||||
m_pluginTimer = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void DevicePluginOpenUv::getUvIndex(Device *device)
|
||||
{
|
||||
qCDebug(dcOpenUv()) << "Refresh data for" << device->name();
|
||||
QUrl url("https://api.openuv.io/api/v1/uv");
|
||||
QUrlQuery query;
|
||||
query.addQueryItem("lat", device->paramValue(openUvDeviceLatitudeParamTypeId).toString());
|
||||
query.addQueryItem("lng", device->paramValue(openUvDeviceLongitudeParamTypeId).toString());
|
||||
url.setQuery(query);
|
||||
QNetworkRequest request;
|
||||
request.setUrl(url);
|
||||
request.setRawHeader("x-access-token", m_apiKey);
|
||||
|
||||
QNetworkReply *reply = hardwareManager()->networkManager()->get(request);
|
||||
connect(reply, &QNetworkReply::finished, this, [reply, device, this] {
|
||||
reply->deleteLater();
|
||||
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||
|
||||
// Check HTTP status code
|
||||
if (status != 200 || reply->error() != QNetworkReply::NoError) {
|
||||
if (reply->error() == QNetworkReply::HostNotFoundError) {
|
||||
device->setStateValue(openUvConnectedStateTypeId, false);
|
||||
}
|
||||
qCWarning(dcOpenUv()) << "Request error:" << status << reply->errorString();
|
||||
return;
|
||||
}
|
||||
device->setStateValue(openUvConnectedStateTypeId, true);
|
||||
|
||||
QJsonParseError error;
|
||||
QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error);
|
||||
if (error.error != QJsonParseError::NoError) {
|
||||
qDebug(dcOpenUv()) << "Recieved invalide JSON object";
|
||||
return;
|
||||
}
|
||||
QVariantMap result = data.toVariant().toMap().value("result").toMap();
|
||||
device->setStateValue(openUvUvStateTypeId, result["uv"].toDouble());
|
||||
device->setStateValue(openUvUvMaxStateTypeId, result["uv_max"].toDouble());
|
||||
device->setStateValue(openUvOzoneStateTypeId, result["ozone"].toDouble());
|
||||
|
||||
device->setStateValue(openUvUvTimeStateTypeId, QDateTime::fromString(result["uv_time"].toString(),Qt::DateFormat::ISODate).toMSecsSinceEpoch() / 1000);
|
||||
device->setStateValue(openUvOzoneTimeStateTypeId, QDateTime::fromString(result["ozone_time"].toString(),Qt::DateFormat::ISODate).toMSecsSinceEpoch() / 1000);
|
||||
device->setStateValue(openUvUvMaxTimeStateTypeId, QDateTime::fromString(result["uv_max_time"].toString(),Qt::DateFormat::ISODate).toMSecsSinceEpoch() / 100);
|
||||
|
||||
QVariantMap safeExposureTimes = result["safe_exposure_time"].toMap();
|
||||
device->setStateValue(openUvSafeExposureTimeSt1StateTypeId, safeExposureTimes["st1"].toInt());
|
||||
device->setStateValue(openUvSafeExposureTimeSt2StateTypeId, safeExposureTimes["st2"].toInt());
|
||||
device->setStateValue(openUvSafeExposureTimeSt3StateTypeId, safeExposureTimes["st3"].toInt());
|
||||
device->setStateValue(openUvSafeExposureTimeSt4StateTypeId, safeExposureTimes["st4"].toInt());
|
||||
device->setStateValue(openUvSafeExposureTimeSt5StateTypeId, safeExposureTimes["st5"].toInt());
|
||||
device->setStateValue(openUvSafeExposureTimeSt6StateTypeId, safeExposureTimes["st6"].toInt());
|
||||
});
|
||||
}
|
||||
|
||||
void DevicePluginOpenUv::onPluginTimer()
|
||||
{
|
||||
foreach (Device *device, myDevices()) {
|
||||
getUvIndex(device);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* *
|
||||
* Copyright (C) 2020 Bernhard Trinnes <bernhard.trinnes@nymea.io> *
|
||||
* *
|
||||
* This file is part of nymea. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Lesser General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2.1 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; If not, see *
|
||||
* <http://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#ifndef DEVICEPLUGINOPENUV_H
|
||||
#define DEVICEPLUGINOPENUV_H
|
||||
|
||||
#include "plugintimer.h"
|
||||
#include "devices/deviceplugin.h"
|
||||
#include "network/networkaccessmanager.h"
|
||||
|
||||
#include <QTimer>
|
||||
#include <QHostAddress>
|
||||
|
||||
class DevicePluginOpenUv : public DevicePlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_PLUGIN_METADATA(IID "io.nymea.DevicePlugin" FILE "devicepluginopenuv.json")
|
||||
Q_INTERFACES(DevicePlugin)
|
||||
|
||||
public:
|
||||
explicit DevicePluginOpenUv();
|
||||
|
||||
void init() override;
|
||||
void discoverDevices(DeviceDiscoveryInfo *info) override;
|
||||
void setupDevice(DeviceSetupInfo *info) override;
|
||||
void postSetupDevice(Device *device)override;
|
||||
void deviceRemoved(Device *device) override;
|
||||
|
||||
void getUvIndex(Device *device);
|
||||
private:
|
||||
PluginTimer *m_pluginTimer = nullptr;
|
||||
QByteArray m_apiKey;
|
||||
|
||||
void searchGeoLocation(double lat, double lon, const QString &country, DeviceDiscoveryInfo *info);
|
||||
|
||||
private slots:
|
||||
void onPluginTimer();
|
||||
};
|
||||
|
||||
#endif // DEVICEPLUGINOPENUV_H
|
||||
|
|
@ -0,0 +1,162 @@
|
|||
{
|
||||
"name": "OpenUv",
|
||||
"displayName": "OpenUV",
|
||||
"id": "9b7d9cc8-77df-4197-a6fc-8a365747a3b1",
|
||||
"paramTypes": [
|
||||
{
|
||||
"id": "cbb8e9d1-22b6-40ab-bbff-26abb2ed416f",
|
||||
"name": "apiKey",
|
||||
"displayName": "API key",
|
||||
"type": "QString",
|
||||
"inputType": "TextLine",
|
||||
"defaultValue": "-"
|
||||
}
|
||||
],
|
||||
"vendors": [
|
||||
{
|
||||
"name": "openUv",
|
||||
"displayName": "OpenUV",
|
||||
"id": "73560db6-af79-41f0-85a8-e9c9907647c8",
|
||||
"deviceClasses": [
|
||||
{
|
||||
"id": "37e17c00-91e1-4276-a1e3-12283d2cae4c",
|
||||
"name": "openUv",
|
||||
"displayName": "UV Index",
|
||||
"interfaces": ["connectable"],
|
||||
"createMethods": ["discovery", "user"],
|
||||
"paramTypes": [
|
||||
{
|
||||
"id": "35869967-20f2-4106-ba2e-90293bd460db",
|
||||
"name": "latitude",
|
||||
"displayName": "Latitude",
|
||||
"type": "QString",
|
||||
"inputType": "TextLine"
|
||||
},
|
||||
{
|
||||
"id": "b97dfec9-f9e7-489d-b3db-7e70938def1a",
|
||||
"name": "longitude",
|
||||
"displayName": "Longitude",
|
||||
"type": "QString",
|
||||
"inputType": "TextLine"
|
||||
}
|
||||
],
|
||||
"stateTypes": [
|
||||
{
|
||||
"id": "47c7dd57-3592-4d05-af4c-1034268223e1",
|
||||
"name": "connected",
|
||||
"displayName": "Connected",
|
||||
"displayNameEvent": "Connected changed",
|
||||
"type": "bool",
|
||||
"defaultValue": false
|
||||
},
|
||||
{
|
||||
"id": "1d63cee1-3e28-4e90-ad4f-acbc2081ea8c",
|
||||
"name": "uv",
|
||||
"displayName": "UV index",
|
||||
"displayNameEvent": "UV index changed",
|
||||
"type": "int",
|
||||
"defaultValue": 0
|
||||
},
|
||||
{
|
||||
"id": "35c799a1-d4b5-4d26-8b63-d884cf96ff2c",
|
||||
"name": "uvTime",
|
||||
"displayName": "UV time",
|
||||
"displayNameEvent": "UV time changed",
|
||||
"unit": "UnixTime",
|
||||
"type": "int",
|
||||
"defaultValue": 0
|
||||
},
|
||||
{
|
||||
"id": "59fe2255-3b61-44f0-84eb-afa6eea838c2",
|
||||
"name": "uvMax",
|
||||
"displayName": "UV day max index",
|
||||
"displayNameEvent": "UV day max index changed",
|
||||
"type": "int",
|
||||
"defaultValue": 0
|
||||
},
|
||||
{
|
||||
"id": "4abd1745-c290-4685-bed4-108d31721b67",
|
||||
"name": "uvMaxTime",
|
||||
"displayName": "UV maximum time",
|
||||
"displayNameEvent": "UV maximum time changed",
|
||||
"unit": "UnixTime",
|
||||
"type": "int",
|
||||
"defaultValue": 0
|
||||
},
|
||||
{
|
||||
"id": "48e51a7c-edbb-499e-95a0-6789bf51437c",
|
||||
"name": "ozone",
|
||||
"displayName": "Ozone",
|
||||
"displayNameEvent": "Ozone changed",
|
||||
"type": "int",
|
||||
"defaultValue": 0
|
||||
},
|
||||
{
|
||||
"id": "27a48154-218f-4a27-aefb-41d943ecf7e8",
|
||||
"name": "ozoneTime",
|
||||
"displayName": "Ozone time",
|
||||
"displayNameEvent": "Ozone time changed",
|
||||
"unit": "UnixTime",
|
||||
"type": "int",
|
||||
"defaultValue": 0
|
||||
},
|
||||
{
|
||||
"id": "13bc0387-acfe-4461-85c8-46f5e93ee0aa",
|
||||
"name": "safeExposureTimeSt1",
|
||||
"displayName": "Safe exposure time skin type 1",
|
||||
"displayNameEvent": "Safe exposure time skin type 1 changed",
|
||||
"unit": "Minutes",
|
||||
"type": "int",
|
||||
"defaultValue": 0
|
||||
},
|
||||
{
|
||||
"id": "0a60b028-97c9-4231-90a4-95ace8c6cf28",
|
||||
"name": "safeExposureTimeSt2",
|
||||
"displayName": "Safe exposure time skin type 2",
|
||||
"displayNameEvent": "Safe exposure time skin type 2 changed",
|
||||
"unit": "Minutes",
|
||||
"type": "int",
|
||||
"defaultValue": 0
|
||||
},
|
||||
{
|
||||
"id": "fb9c63aa-8ec6-479d-bd87-75865b8fcd77",
|
||||
"name": "safeExposureTimeSt3",
|
||||
"displayName": "Safe exposure time skin type 3",
|
||||
"displayNameEvent": "Safe exposure time skin type 3 changed",
|
||||
"unit": "Minutes",
|
||||
"type": "int",
|
||||
"defaultValue": 0
|
||||
},
|
||||
{
|
||||
"id": "31fc498f-1f17-4443-b0f8-65aff70bbf1c",
|
||||
"name": "safeExposureTimeSt4",
|
||||
"displayName": "Safe exposure time skin type 4",
|
||||
"displayNameEvent": "Safe exposure time skin type 4 changed",
|
||||
"unit": "Minutes",
|
||||
"type": "int",
|
||||
"defaultValue": 0
|
||||
},
|
||||
{
|
||||
"id": "268637f0-73a9-4945-ace9-fc2bfc250675",
|
||||
"name": "safeExposureTimeSt5",
|
||||
"displayName": "Safe exposure time skin type 5",
|
||||
"displayNameEvent": "Safe exposure time skin type 5 changed",
|
||||
"unit": "Minutes",
|
||||
"type": "int",
|
||||
"defaultValue": 0
|
||||
},
|
||||
{
|
||||
"id": "fd98313c-a6fb-4cff-8478-7399d33e7794",
|
||||
"name": "safeExposureTimeSt6",
|
||||
"displayName": "Safe exposure time skin type 6",
|
||||
"displayNameEvent": "Safe exposure time skin type 6 changed",
|
||||
"unit": "Minutes",
|
||||
"type": "int",
|
||||
"defaultValue": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
include(../plugins.pri)
|
||||
|
||||
TARGET = $$qtLibraryTarget(nymea_devicepluginopenuv)
|
||||
|
||||
QT+= network
|
||||
|
||||
SOURCES += \
|
||||
devicepluginopenuv.cpp \
|
||||
|
||||
HEADERS += \
|
||||
devicepluginopenuv.h \
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,259 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1">
|
||||
<context>
|
||||
<name>DevicePluginOpenUv</name>
|
||||
<message>
|
||||
<location filename="../devicepluginopenuv.cpp" line="57"/>
|
||||
<source>Failed to fetch data from the internet.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../devicepluginopenuv.cpp" line="64"/>
|
||||
<location filename="../devicepluginopenuv.cpp" line="69"/>
|
||||
<source>The server returned unexpected data.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../devicepluginopenuv.cpp" line="75"/>
|
||||
<source>OpenUV location</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../devicepluginopenuv.cpp" line="88"/>
|
||||
<source>API key is missing, add your OpenUV API key in the plug-in configs</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OpenUv</name>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="65"/>
|
||||
<source>API key</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, Type: plugin, ID: {cbb8e9d1-22b6-40ab-bbff-26abb2ed416f})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="68"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="71"/>
|
||||
<source>Connected</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, EventType: connected, ID: {47c7dd57-3592-4d05-af4c-1034268223e1})
|
||||
----------
|
||||
The name of the StateType ({47c7dd57-3592-4d05-af4c-1034268223e1}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="74"/>
|
||||
<source>Connected changed</source>
|
||||
<extracomment>The name of the EventType ({47c7dd57-3592-4d05-af4c-1034268223e1}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="77"/>
|
||||
<source>Latitude</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, Type: device, ID: {35869967-20f2-4106-ba2e-90293bd460db})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="80"/>
|
||||
<source>Longitude</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, Type: device, ID: {b97dfec9-f9e7-489d-b3db-7e70938def1a})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="83"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="86"/>
|
||||
<source>OpenUV</source>
|
||||
<extracomment>The name of the vendor ({73560db6-af79-41f0-85a8-e9c9907647c8})
|
||||
----------
|
||||
The name of the plugin OpenUv ({9b7d9cc8-77df-4197-a6fc-8a365747a3b1})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="89"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="92"/>
|
||||
<source>Ozone</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, EventType: ozone, ID: {48e51a7c-edbb-499e-95a0-6789bf51437c})
|
||||
----------
|
||||
The name of the StateType ({48e51a7c-edbb-499e-95a0-6789bf51437c}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="95"/>
|
||||
<source>Ozone changed</source>
|
||||
<extracomment>The name of the EventType ({48e51a7c-edbb-499e-95a0-6789bf51437c}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="98"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="101"/>
|
||||
<source>Ozone time</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, EventType: ozoneTime, ID: {27a48154-218f-4a27-aefb-41d943ecf7e8})
|
||||
----------
|
||||
The name of the StateType ({27a48154-218f-4a27-aefb-41d943ecf7e8}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="104"/>
|
||||
<source>Ozone time changed</source>
|
||||
<extracomment>The name of the EventType ({27a48154-218f-4a27-aefb-41d943ecf7e8}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="107"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="110"/>
|
||||
<source>Safe exposure time skin type 1</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, EventType: safeExposureTimeSt1, ID: {13bc0387-acfe-4461-85c8-46f5e93ee0aa})
|
||||
----------
|
||||
The name of the StateType ({13bc0387-acfe-4461-85c8-46f5e93ee0aa}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="113"/>
|
||||
<source>Safe exposure time skin type 1 changed</source>
|
||||
<extracomment>The name of the EventType ({13bc0387-acfe-4461-85c8-46f5e93ee0aa}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="116"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="119"/>
|
||||
<source>Safe exposure time skin type 2</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, EventType: safeExposureTimeSt2, ID: {0a60b028-97c9-4231-90a4-95ace8c6cf28})
|
||||
----------
|
||||
The name of the StateType ({0a60b028-97c9-4231-90a4-95ace8c6cf28}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="122"/>
|
||||
<source>Safe exposure time skin type 2 changed</source>
|
||||
<extracomment>The name of the EventType ({0a60b028-97c9-4231-90a4-95ace8c6cf28}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="125"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="128"/>
|
||||
<source>Safe exposure time skin type 3</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, EventType: safeExposureTimeSt3, ID: {fb9c63aa-8ec6-479d-bd87-75865b8fcd77})
|
||||
----------
|
||||
The name of the StateType ({fb9c63aa-8ec6-479d-bd87-75865b8fcd77}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="131"/>
|
||||
<source>Safe exposure time skin type 3 changed</source>
|
||||
<extracomment>The name of the EventType ({fb9c63aa-8ec6-479d-bd87-75865b8fcd77}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="134"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="137"/>
|
||||
<source>Safe exposure time skin type 4</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, EventType: safeExposureTimeSt4, ID: {31fc498f-1f17-4443-b0f8-65aff70bbf1c})
|
||||
----------
|
||||
The name of the StateType ({31fc498f-1f17-4443-b0f8-65aff70bbf1c}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="140"/>
|
||||
<source>Safe exposure time skin type 4 changed</source>
|
||||
<extracomment>The name of the EventType ({31fc498f-1f17-4443-b0f8-65aff70bbf1c}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="143"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="146"/>
|
||||
<source>Safe exposure time skin type 5</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, EventType: safeExposureTimeSt5, ID: {268637f0-73a9-4945-ace9-fc2bfc250675})
|
||||
----------
|
||||
The name of the StateType ({268637f0-73a9-4945-ace9-fc2bfc250675}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="149"/>
|
||||
<source>Safe exposure time skin type 5 changed</source>
|
||||
<extracomment>The name of the EventType ({268637f0-73a9-4945-ace9-fc2bfc250675}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="152"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="155"/>
|
||||
<source>Safe exposure time skin type 6</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, EventType: safeExposureTimeSt6, ID: {fd98313c-a6fb-4cff-8478-7399d33e7794})
|
||||
----------
|
||||
The name of the StateType ({fd98313c-a6fb-4cff-8478-7399d33e7794}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="158"/>
|
||||
<source>Safe exposure time skin type 6 changed</source>
|
||||
<extracomment>The name of the EventType ({fd98313c-a6fb-4cff-8478-7399d33e7794}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="161"/>
|
||||
<source>UV Index</source>
|
||||
<extracomment>The name of the DeviceClass ({37e17c00-91e1-4276-a1e3-12283d2cae4c})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="164"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="167"/>
|
||||
<source>UV day max index</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, EventType: uvMax, ID: {59fe2255-3b61-44f0-84eb-afa6eea838c2})
|
||||
----------
|
||||
The name of the StateType ({59fe2255-3b61-44f0-84eb-afa6eea838c2}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="170"/>
|
||||
<source>UV day max index changed</source>
|
||||
<extracomment>The name of the EventType ({59fe2255-3b61-44f0-84eb-afa6eea838c2}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="173"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="176"/>
|
||||
<source>UV index</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, EventType: uv, ID: {1d63cee1-3e28-4e90-ad4f-acbc2081ea8c})
|
||||
----------
|
||||
The name of the StateType ({1d63cee1-3e28-4e90-ad4f-acbc2081ea8c}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="179"/>
|
||||
<source>UV index changed</source>
|
||||
<extracomment>The name of the EventType ({1d63cee1-3e28-4e90-ad4f-acbc2081ea8c}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="182"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="185"/>
|
||||
<source>UV maximum time</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, EventType: uvMaxTime, ID: {4abd1745-c290-4685-bed4-108d31721b67})
|
||||
----------
|
||||
The name of the StateType ({4abd1745-c290-4685-bed4-108d31721b67}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="188"/>
|
||||
<source>UV maximum time changed</source>
|
||||
<extracomment>The name of the EventType ({4abd1745-c290-4685-bed4-108d31721b67}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="191"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="194"/>
|
||||
<source>UV time</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: openUv, EventType: uvTime, ID: {35c799a1-d4b5-4d26-8b63-d884cf96ff2c})
|
||||
----------
|
||||
The name of the StateType ({35c799a1-d4b5-4d26-8b63-d884cf96ff2c}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/openuv/plugininfo.h" line="197"/>
|
||||
<source>UV time changed</source>
|
||||
<extracomment>The name of the EventType ({35c799a1-d4b5-4d26-8b63-d884cf96ff2c}) of DeviceClass openUv</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
Loading…
Reference in New Issue