diff --git a/aqi/airqualityindex.cpp b/aqi/airqualityindex.cpp index 9373a2c8..de4481f2 100644 --- a/aqi/airqualityindex.cpp +++ b/aqi/airqualityindex.cpp @@ -52,9 +52,10 @@ void AirQualityIndex::setApiKey(const QString &apiKey) QUuid AirQualityIndex::searchByName(const QString &name) { - if (m_apiKey.isEmpty()) - qCWarning(dcAirQualityIndex()) << "API key is not set"; - + if (m_apiKey.isEmpty()) { + qCWarning(dcAirQualityIndex()) << "API key is not set, not sending request"; + return ""; + } QUuid requestId = QUuid::createUuid();; QUrl url; url.setUrl(m_baseUrl); @@ -116,10 +117,11 @@ QUuid AirQualityIndex::searchByName(const QString &name) QUuid AirQualityIndex::getDataByIp() { - if (m_apiKey.isEmpty()) - qCWarning(dcAirQualityIndex()) << "API key is not set"; - - QUuid requestId = QUuid::createUuid();; + if (m_apiKey.isEmpty()) { + qCWarning(dcAirQualityIndex()) << "API key is not set, not sending request"; + return ""; + } + QUuid requestId = QUuid::createUuid(); QUrl url; url.setUrl(m_baseUrl); url.setPath("/feed/here/"); @@ -151,15 +153,17 @@ QUuid AirQualityIndex::getDataByIp() return requestId; } -QUuid AirQualityIndex::getDataByGeolocation(const QString &lat, const QString &lng) +QUuid AirQualityIndex::getDataByGeolocation(double lat, double lng) { - if (m_apiKey.isEmpty()) - qCWarning(dcAirQualityIndex()) << "API key is not set"; + if (m_apiKey.isEmpty()) { + qCWarning(dcAirQualityIndex()) << "API key is not set, not sending request"; + return ""; + } QUuid requestId = QUuid::createUuid(); QUrl url; url.setUrl(m_baseUrl); - url.setPath("/feed/geo:"+lat+";"+lng+"/"); + url.setPath(QString("/feed/geo:%1;%2/").arg(lat).arg(lng)); QUrlQuery query; query.addQueryItem("token", m_apiKey); url.setQuery(query); diff --git a/aqi/airqualityindex.h b/aqi/airqualityindex.h index fd332c42..79cd1393 100644 --- a/aqi/airqualityindex.h +++ b/aqi/airqualityindex.h @@ -73,7 +73,7 @@ public: void setApiKey(const QString &apiKey); QUuid searchByName(const QString &name); QUuid getDataByIp(); - QUuid getDataByGeolocation(const QString &lat, const QString &lng); + QUuid getDataByGeolocation(double lat, double lng); private: NetworkAccessManager *m_networkAccessManager; diff --git a/aqi/integrationpluginaqi.cpp b/aqi/integrationpluginaqi.cpp index a4283a3e..5c0c836d 100644 --- a/aqi/integrationpluginaqi.cpp +++ b/aqi/integrationpluginaqi.cpp @@ -36,20 +36,21 @@ IntegrationPluginAqi::IntegrationPluginAqi() { + connect(this, &IntegrationPluginAqi::configValueChanged, this, [this] (const ParamTypeId ¶mTypeId, const QVariant &value) { + if (paramTypeId == airQualityIndexPluginApiKeyParamTypeId && m_aqiConnection) { + if (!value.toString().isEmpty()) + m_aqiConnection->setApiKey(value.toString()); + } + }); } void IntegrationPluginAqi::discoverThings(ThingDiscoveryInfo *info) { if (!m_aqiConnection) { - QString apiKey = getApiKey(); - if (apiKey.isEmpty()) + if(createAqiConnection()) { return info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("API key is not available.")); - m_aqiConnection = new AirQualityIndex(hardwareManager()->networkManager(), apiKey, this); - connect(m_aqiConnection, &AirQualityIndex::requestExecuted, this, &IntegrationPluginAqi::onRequestExecuted); - connect(m_aqiConnection, &AirQualityIndex::dataReceived, this, &IntegrationPluginAqi::onAirQualityDataReceived); - connect(m_aqiConnection, &AirQualityIndex::stationsReceived, this, &IntegrationPluginAqi::onAirQualityStationsReceived); - + } connect(info, &ThingDiscoveryInfo::aborted, [this] { if (myThings().filterByThingClassId(airQualityIndexThingClassId).isEmpty()) { m_aqiConnection->deleteLater(); @@ -68,16 +69,11 @@ void IntegrationPluginAqi::setupThing(ThingSetupInfo *info) { if (info->thing()->thingClassId() == airQualityIndexThingClassId) { if (!m_aqiConnection) { - QString apiKey = getApiKey(); - if (apiKey.isEmpty()) + if(createAqiConnection()) { return info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("API key is not available.")); - m_aqiConnection = new AirQualityIndex(hardwareManager()->networkManager(), apiKey, this); - connect(m_aqiConnection, &AirQualityIndex::requestExecuted, this, &IntegrationPluginAqi::onRequestExecuted); - connect(m_aqiConnection, &AirQualityIndex::dataReceived, this, &IntegrationPluginAqi::onAirQualityDataReceived); - connect(m_aqiConnection, &AirQualityIndex::stationsReceived, this, &IntegrationPluginAqi::onAirQualityStationsReceived); - - QString longitude = info->thing()->paramValue(airQualityIndexThingLongitudeParamTypeId).toString(); - QString latitude = info->thing()->paramValue(airQualityIndexThingLatitudeParamTypeId).toString(); + } + double longitude = info->thing()->paramValue(airQualityIndexThingLongitudeParamTypeId).toDouble(); + double latitude = info->thing()->paramValue(airQualityIndexThingLatitudeParamTypeId).toDouble(); QUuid requestId = m_aqiConnection->getDataByGeolocation(latitude, longitude); m_asyncSetups.insert(requestId, info); @@ -108,8 +104,8 @@ void IntegrationPluginAqi::postSetupThing(Thing *thing) return; } - QString longitude = thing->paramValue(airQualityIndexThingLongitudeParamTypeId).toString(); - QString latitude = thing->paramValue(airQualityIndexThingLatitudeParamTypeId).toString(); + double longitude = thing->paramValue(airQualityIndexThingLongitudeParamTypeId).toDouble(); + double latitude = thing->paramValue(airQualityIndexThingLatitudeParamTypeId).toDouble(); QUuid requestId = m_aqiConnection->getDataByGeolocation(latitude, longitude); m_asyncRequests.insert(requestId, thing->id()); } @@ -120,25 +116,22 @@ void IntegrationPluginAqi::postSetupThing(Thing *thing) } } -QString IntegrationPluginAqi::getApiKey() +bool IntegrationPluginAqi::createAqiConnection() { - QString apiKey; - QSettings settings(NymeaSettings::settingsPath() + "/nymead.conf", QSettings::IniFormat); - settings.beginGroup("aqi"); - if (settings.contains("apiKey")) { - apiKey = settings.value("apiKey").toString(); - QString printedCopy = apiKey; - qCDebug(dcAirQualityIndex()) << "Using custom API key:" << printedCopy.replace(printedCopy.length() - 10, 10, "**********"); - } - settings.endGroup(); + QString apiKey = configValue(airQualityIndexPluginApiKeyParamTypeId).toString(); if (apiKey.isEmpty()) { apiKey = apiKeyStorage()->requestKey("aqi").data("apiKey"); } if (apiKey.isEmpty()) { qCWarning(dcAirQualityIndex()) << "Could not find any API key for AQI"; + return false; } - return apiKey; + m_aqiConnection = new AirQualityIndex(hardwareManager()->networkManager(), apiKey, this); + connect(m_aqiConnection, &AirQualityIndex::requestExecuted, this, &IntegrationPluginAqi::onRequestExecuted); + connect(m_aqiConnection, &AirQualityIndex::dataReceived, this, &IntegrationPluginAqi::onAirQualityDataReceived); + connect(m_aqiConnection, &AirQualityIndex::stationsReceived, this, &IntegrationPluginAqi::onAirQualityStationsReceived); + return true; } void IntegrationPluginAqi::thingRemoved(Thing *thing) @@ -239,8 +232,8 @@ void IntegrationPluginAqi::onPluginTimer() foreach (Thing *thing, myThings().filterByThingClassId(airQualityIndexThingClassId)) { - QString longitude = thing->paramValue(airQualityIndexThingLongitudeParamTypeId).toString(); - QString latitude = thing->paramValue(airQualityIndexThingLatitudeParamTypeId).toString(); + double longitude = thing->paramValue(airQualityIndexThingLongitudeParamTypeId).toDouble(); + double latitude = thing->paramValue(airQualityIndexThingLatitudeParamTypeId).toDouble(); QUuid requestId = m_aqiConnection->getDataByGeolocation(latitude, longitude); m_asyncRequests.insert(requestId, thing->id()); } diff --git a/aqi/integrationpluginaqi.h b/aqi/integrationpluginaqi.h index dbda5269..8ca2c2c9 100644 --- a/aqi/integrationpluginaqi.h +++ b/aqi/integrationpluginaqi.h @@ -63,6 +63,7 @@ private: QHash m_asyncSetups; QHash m_asyncRequests; QString getApiKey(); + bool createAqiConnection(); private slots: void onPluginTimer(); diff --git a/aqi/integrationpluginaqi.json b/aqi/integrationpluginaqi.json index 7f8dc6b3..d2f9c138 100644 --- a/aqi/integrationpluginaqi.json +++ b/aqi/integrationpluginaqi.json @@ -2,6 +2,15 @@ "name": "AirQualityIndex", "displayName": "Air quality index", "id": "57d69b76-4d2d-41ec-bef6-949a79ffbe6b", + "paramTypes": [ + { + "id": "b6861adb-7ed5-445f-b500-4df9eab866ef", + "name": "apiKey", + "displayName": "API key", + "type": "QString", + "defaultValue": "" + } + ], "apiKeys": ["aqi"], "vendors": [ { @@ -16,20 +25,20 @@ "interfaces": ["windspeedsensor", "humiditysensor", "pressuresensor", "temperaturesensor", "connectable"], "createMethods": ["discovery", "user"], "paramTypes": [ - { - "id": "afd5803b-6c98-44d7-9f4a-45e91cfb062e", - "name": "latitude", - "displayName": "Latitude", - "type": "QString", - "inputType": "TextLine" - }, - { - "id": "4800d78e-a367-41f7-9bf6-7c81d40ce19a", - "name": "longitude", - "displayName": "Longitude", - "type": "QString", - "inputType": "TextLine" - } + { + "id": "afd5803b-6c98-44d7-9f4a-45e91cfb062e", + "name": "latitude", + "displayName": "Latitude", + "type": "double", + "defaultValue": 0.00 + }, + { + "id": "4800d78e-a367-41f7-9bf6-7c81d40ce19a", + "name": "longitude", + "displayName": "Longitude", + "type": "double", + "defaultValue": 0.00 + } ], "stateTypes": [ { diff --git a/aqi/translations/57d69b76-4d2d-41ec-bef6-949a79ffbe6b-de.ts b/aqi/translations/57d69b76-4d2d-41ec-bef6-949a79ffbe6b-de.ts index 52781677..b9c20e05 100644 --- a/aqi/translations/57d69b76-4d2d-41ec-bef6-949a79ffbe6b-de.ts +++ b/aqi/translations/57d69b76-4d2d-41ec-bef6-949a79ffbe6b-de.ts @@ -4,8 +4,14 @@ AirQualityIndex - - + + API key + The name of the ParamType (ThingClass: airQualityIndex, Type: plugin, ID: {b6861adb-7ed5-445f-b500-4df9eab866ef}) + API-Key + + + + Air quality The name of the ParamType (ThingClass: airQualityIndex, EventType: airQuality, ID: {33a3329a-4117-4488-aa18-91c76056ed6e}) ---------- @@ -13,15 +19,15 @@ The name of the StateType ({33a3329a-4117-4488-aa18-91c76056ed6e}) of ThingClass Luftqualität - + Air quality changed The name of the EventType ({33a3329a-4117-4488-aa18-91c76056ed6e}) of ThingClass airQualityIndex Luftqualität geändert - - - + + + Air quality index The name of the ThingClass ({23ea32c9-38b0-4155-bacc-3afa8c09f6ee}) ---------- @@ -31,8 +37,8 @@ The name of the plugin AirQualityIndex ({57d69b76-4d2d-41ec-bef6-949a79ffbe6b})< Air quality index - - + + Carbon monoxide level (CO) The name of the ParamType (ThingClass: airQualityIndex, EventType: co, ID: {54ac72f3-6444-46a8-a43d-210c2a6fbfb5}) ---------- @@ -40,14 +46,14 @@ The name of the StateType ({54ac72f3-6444-46a8-a43d-210c2a6fbfb5}) of ThingClass Kohlenmonoxidgehalt (CO) - + Carbon monoxide level (CO) changed The name of the EventType ({54ac72f3-6444-46a8-a43d-210c2a6fbfb5}) of ThingClass airQualityIndex Kohlenmonoxidgehalt (CO) geändert - - + + Cautionary statement The name of the ParamType (ThingClass: airQualityIndex, EventType: cautionaryStatement, ID: {cfece671-4e88-4c49-9456-e3f8f7c79ab3}) ---------- @@ -55,14 +61,14 @@ The name of the StateType ({cfece671-4e88-4c49-9456-e3f8f7c79ab3}) of ThingClass Warnhinweis - + Cautionary statement changed The name of the EventType ({cfece671-4e88-4c49-9456-e3f8f7c79ab3}) of ThingClass airQualityIndex Warnhinweis geändert - - + + Coarse dust particles pollution level (PM10) The name of the ParamType (ThingClass: airQualityIndex, EventType: pm10, ID: {24b41ec4-e26b-4dfb-b52c-8e2b1bbdafc6}) ---------- @@ -70,14 +76,14 @@ The name of the StateType ({24b41ec4-e26b-4dfb-b52c-8e2b1bbdafc6}) of ThingClass Verschmutzungsgrad der groben Staubpartikel (PM10) - + Coarse dust particles pollution level (PM10) changed The name of the EventType ({24b41ec4-e26b-4dfb-b52c-8e2b1bbdafc6}) of ThingClass airQualityIndex Verschmutzungsgrad der groben Staubpartikel (PM10) geändert - - + + Connected The name of the ParamType (ThingClass: airQualityIndex, EventType: connected, ID: {7b9135cd-2461-4d33-b2b3-3dc600983895}) ---------- @@ -85,14 +91,14 @@ The name of the StateType ({7b9135cd-2461-4d33-b2b3-3dc600983895}) of ThingClass Verbunden - + Connected changed The name of the EventType ({7b9135cd-2461-4d33-b2b3-3dc600983895}) of ThingClass airQualityIndex Verbunden geändert - - + + Fine particles pollution level (PM2.5) The name of the ParamType (ThingClass: airQualityIndex, EventType: pm25, ID: {bc8c4c83-d229-4be4-8732-bc4f2390f399}) ---------- @@ -100,14 +106,14 @@ The name of the StateType ({bc8c4c83-d229-4be4-8732-bc4f2390f399}) of ThingClass Verschmutzungsgrad der Feinstaubpartikel (PM2,5) - + Fine particles pollution level (PM2.5) changed The name of the EventType ({bc8c4c83-d229-4be4-8732-bc4f2390f399}) of ThingClass airQualityIndex Verschmutzungsgrad der Feinstaubpartikel (PM2,5) geändert - - + + Humidity The name of the ParamType (ThingClass: airQualityIndex, EventType: humidity, ID: {4fc45fca-25ab-45a0-b862-817eea1f51e3}) ---------- @@ -115,26 +121,26 @@ The name of the StateType ({4fc45fca-25ab-45a0-b862-817eea1f51e3}) of ThingClass Luftfeuchtigkeit - + Humidity changed The name of the EventType ({4fc45fca-25ab-45a0-b862-817eea1f51e3}) of ThingClass airQualityIndex Luftfeuchtigkeit geändert - + Latitude The name of the ParamType (ThingClass: airQualityIndex, Type: thing, ID: {afd5803b-6c98-44d7-9f4a-45e91cfb062e}) Breitengrad - + Longitude The name of the ParamType (ThingClass: airQualityIndex, Type: thing, ID: {4800d78e-a367-41f7-9bf6-7c81d40ce19a}) Längengrad - - + + Nitrogen Dioxide level (NO2) The name of the ParamType (ThingClass: airQualityIndex, EventType: no2, ID: {6ed6c505-f36e-44c4-a982-f395b04e539b}) ---------- @@ -142,14 +148,14 @@ The name of the StateType ({6ed6c505-f36e-44c4-a982-f395b04e539b}) of ThingClass Stickstoffdioxidgehalt (NO2) - + Nitrogen Dioxide level (NO2) changed The name of the EventType ({6ed6c505-f36e-44c4-a982-f395b04e539b}) of ThingClass airQualityIndex Stickstoffdioxidgehalt (NO2) geändert - - + + Ozone level (O3) The name of the ParamType (ThingClass: airQualityIndex, EventType: o3, ID: {4e88526d-009f-4820-9a84-09b3646d23c9}) ---------- @@ -157,14 +163,14 @@ The name of the StateType ({4e88526d-009f-4820-9a84-09b3646d23c9}) of ThingClass Ozongehalt (O3) - + Ozone level (O3) changed The name of the EventType ({4e88526d-009f-4820-9a84-09b3646d23c9}) of ThingClass airQualityIndex Ozongehalt (O3) geändert - - + + Pressure The name of the ParamType (ThingClass: airQualityIndex, EventType: pressure, ID: {5f799040-08f8-44d1-aa0a-4cab7caad839}) ---------- @@ -172,14 +178,14 @@ The name of the StateType ({5f799040-08f8-44d1-aa0a-4cab7caad839}) of ThingClass Luftdruck - + Pressure changed The name of the EventType ({5f799040-08f8-44d1-aa0a-4cab7caad839}) of ThingClass airQualityIndex Luftdruck - - + + Station name The name of the ParamType (ThingClass: airQualityIndex, EventType: stationName, ID: {8385f3d5-62f7-482e-927c-b5d61a70d607}) ---------- @@ -187,14 +193,14 @@ The name of the StateType ({8385f3d5-62f7-482e-927c-b5d61a70d607}) of ThingClass Stationsname - + Station name changed The name of the EventType ({8385f3d5-62f7-482e-927c-b5d61a70d607}) of ThingClass airQualityIndex Stationsname geändert - - + + Sulfur dioxide level (SO2) The name of the ParamType (ThingClass: airQualityIndex, EventType: so2, ID: {f3a05e65-a9b3-48fd-be43-688d4c293cc9}) ---------- @@ -202,14 +208,14 @@ The name of the StateType ({f3a05e65-a9b3-48fd-be43-688d4c293cc9}) of ThingClass Schwefeldioxidgehalt (SO2) - + Sulfur dioxide level (SO2) changed The name of the EventType ({f3a05e65-a9b3-48fd-be43-688d4c293cc9}) of ThingClass airQualityIndex Schwefeldioxidgehalt (SO2) geändert - - + + Temperature The name of the ParamType (ThingClass: airQualityIndex, EventType: temperature, ID: {94219802-0a82-4761-99b3-c6b6dfc096db}) ---------- @@ -217,14 +223,14 @@ The name of the StateType ({94219802-0a82-4761-99b3-c6b6dfc096db}) of ThingClass Temperatur - + Temperature changed The name of the EventType ({94219802-0a82-4761-99b3-c6b6dfc096db}) of ThingClass airQualityIndex Temperatur geändert - - + + Wind speed The name of the ParamType (ThingClass: airQualityIndex, EventType: windSpeed, ID: {c4366608-2511-428b-964e-2ad9e37f8f3c}) ---------- @@ -232,7 +238,7 @@ The name of the StateType ({c4366608-2511-428b-964e-2ad9e37f8f3c}) of ThingClass Windgeschwindigkeit - + Wind speed changed The name of the EventType ({c4366608-2511-428b-964e-2ad9e37f8f3c}) of ThingClass airQualityIndex Windgeschwindigkeit geändert @@ -241,39 +247,39 @@ The name of the StateType ({c4366608-2511-428b-964e-2ad9e37f8f3c}) of ThingClass IntegrationPluginAqi - + API key is not available. API-Key ist nicht verfügbar. - + None Keine - - + + Active children and adults, and people with respiratory disease, such as asthma, should limit prolonged outdoor exertion. Aktive Kinder und Erwachsene sowie Menschen mit Atemwegserkrankungen wie Asthma sollten eine längere Belastung im Freien begrenzen. - + Active children and adults, and people with respiratory disease, such as asthma, should avoid prolonged outdoor exertion; everyone else, especially children, should limit prolonged outdoor exertion Aktive Kinder und Erwachsene sowie Menschen mit Atemwegserkrankungen wie Asthma sollten eine längere Anstrengung im Freien vermeiden. Alle anderen, insbesondere Kinder, sollten längere Belastungen im Freien begrenzen - + Active children and adults, and people with respiratory disease, such as asthma, should avoid all outdoor exertion; everyone else, especially children, should limit outdoor exertion. Aktive Kinder und Erwachsene sowie Menschen mit Atemwegserkrankungen wie Asthma sollten jede Anstrengung im Freien vermeiden. Alle anderen, insbesondere Kinder, sollten die Anstrengung im Freien einschränken. - + Everyone should avoid all outdoor exertion Jeder sollte jede Anstrengung im Freien vermeiden. - + Air quality index server not available, please check your internet connection. Air quality index Server nicht verfügbar, bitte überprüfe die Internetverbindung. diff --git a/aqi/translations/57d69b76-4d2d-41ec-bef6-949a79ffbe6b-en_US.ts b/aqi/translations/57d69b76-4d2d-41ec-bef6-949a79ffbe6b-en_US.ts index 97117c6f..5676866d 100644 --- a/aqi/translations/57d69b76-4d2d-41ec-bef6-949a79ffbe6b-en_US.ts +++ b/aqi/translations/57d69b76-4d2d-41ec-bef6-949a79ffbe6b-en_US.ts @@ -4,8 +4,14 @@ AirQualityIndex - - + + API key + The name of the ParamType (ThingClass: airQualityIndex, Type: plugin, ID: {b6861adb-7ed5-445f-b500-4df9eab866ef}) + + + + + Air quality The name of the ParamType (ThingClass: airQualityIndex, EventType: airQuality, ID: {33a3329a-4117-4488-aa18-91c76056ed6e}) ---------- @@ -13,15 +19,15 @@ The name of the StateType ({33a3329a-4117-4488-aa18-91c76056ed6e}) of ThingClass - + Air quality changed The name of the EventType ({33a3329a-4117-4488-aa18-91c76056ed6e}) of ThingClass airQualityIndex - - - + + + Air quality index The name of the ThingClass ({23ea32c9-38b0-4155-bacc-3afa8c09f6ee}) ---------- @@ -31,8 +37,8 @@ The name of the plugin AirQualityIndex ({57d69b76-4d2d-41ec-bef6-949a79ffbe6b})< - - + + Carbon monoxide level (CO) The name of the ParamType (ThingClass: airQualityIndex, EventType: co, ID: {54ac72f3-6444-46a8-a43d-210c2a6fbfb5}) ---------- @@ -40,14 +46,14 @@ The name of the StateType ({54ac72f3-6444-46a8-a43d-210c2a6fbfb5}) of ThingClass - + Carbon monoxide level (CO) changed The name of the EventType ({54ac72f3-6444-46a8-a43d-210c2a6fbfb5}) of ThingClass airQualityIndex - - + + Cautionary statement The name of the ParamType (ThingClass: airQualityIndex, EventType: cautionaryStatement, ID: {cfece671-4e88-4c49-9456-e3f8f7c79ab3}) ---------- @@ -55,14 +61,14 @@ The name of the StateType ({cfece671-4e88-4c49-9456-e3f8f7c79ab3}) of ThingClass - + Cautionary statement changed The name of the EventType ({cfece671-4e88-4c49-9456-e3f8f7c79ab3}) of ThingClass airQualityIndex - - + + Coarse dust particles pollution level (PM10) The name of the ParamType (ThingClass: airQualityIndex, EventType: pm10, ID: {24b41ec4-e26b-4dfb-b52c-8e2b1bbdafc6}) ---------- @@ -70,14 +76,14 @@ The name of the StateType ({24b41ec4-e26b-4dfb-b52c-8e2b1bbdafc6}) of ThingClass - + Coarse dust particles pollution level (PM10) changed The name of the EventType ({24b41ec4-e26b-4dfb-b52c-8e2b1bbdafc6}) of ThingClass airQualityIndex - - + + Connected The name of the ParamType (ThingClass: airQualityIndex, EventType: connected, ID: {7b9135cd-2461-4d33-b2b3-3dc600983895}) ---------- @@ -85,14 +91,14 @@ The name of the StateType ({7b9135cd-2461-4d33-b2b3-3dc600983895}) of ThingClass - + Connected changed The name of the EventType ({7b9135cd-2461-4d33-b2b3-3dc600983895}) of ThingClass airQualityIndex - - + + Fine particles pollution level (PM2.5) The name of the ParamType (ThingClass: airQualityIndex, EventType: pm25, ID: {bc8c4c83-d229-4be4-8732-bc4f2390f399}) ---------- @@ -100,14 +106,14 @@ The name of the StateType ({bc8c4c83-d229-4be4-8732-bc4f2390f399}) of ThingClass - + Fine particles pollution level (PM2.5) changed The name of the EventType ({bc8c4c83-d229-4be4-8732-bc4f2390f399}) of ThingClass airQualityIndex - - + + Humidity The name of the ParamType (ThingClass: airQualityIndex, EventType: humidity, ID: {4fc45fca-25ab-45a0-b862-817eea1f51e3}) ---------- @@ -115,26 +121,26 @@ The name of the StateType ({4fc45fca-25ab-45a0-b862-817eea1f51e3}) of ThingClass - + Humidity changed The name of the EventType ({4fc45fca-25ab-45a0-b862-817eea1f51e3}) of ThingClass airQualityIndex - + Latitude The name of the ParamType (ThingClass: airQualityIndex, Type: thing, ID: {afd5803b-6c98-44d7-9f4a-45e91cfb062e}) - + Longitude The name of the ParamType (ThingClass: airQualityIndex, Type: thing, ID: {4800d78e-a367-41f7-9bf6-7c81d40ce19a}) - - + + Nitrogen Dioxide level (NO2) The name of the ParamType (ThingClass: airQualityIndex, EventType: no2, ID: {6ed6c505-f36e-44c4-a982-f395b04e539b}) ---------- @@ -142,14 +148,14 @@ The name of the StateType ({6ed6c505-f36e-44c4-a982-f395b04e539b}) of ThingClass - + Nitrogen Dioxide level (NO2) changed The name of the EventType ({6ed6c505-f36e-44c4-a982-f395b04e539b}) of ThingClass airQualityIndex - - + + Ozone level (O3) The name of the ParamType (ThingClass: airQualityIndex, EventType: o3, ID: {4e88526d-009f-4820-9a84-09b3646d23c9}) ---------- @@ -157,14 +163,14 @@ The name of the StateType ({4e88526d-009f-4820-9a84-09b3646d23c9}) of ThingClass - + Ozone level (O3) changed The name of the EventType ({4e88526d-009f-4820-9a84-09b3646d23c9}) of ThingClass airQualityIndex - - + + Pressure The name of the ParamType (ThingClass: airQualityIndex, EventType: pressure, ID: {5f799040-08f8-44d1-aa0a-4cab7caad839}) ---------- @@ -172,14 +178,14 @@ The name of the StateType ({5f799040-08f8-44d1-aa0a-4cab7caad839}) of ThingClass - + Pressure changed The name of the EventType ({5f799040-08f8-44d1-aa0a-4cab7caad839}) of ThingClass airQualityIndex - - + + Station name The name of the ParamType (ThingClass: airQualityIndex, EventType: stationName, ID: {8385f3d5-62f7-482e-927c-b5d61a70d607}) ---------- @@ -187,14 +193,14 @@ The name of the StateType ({8385f3d5-62f7-482e-927c-b5d61a70d607}) of ThingClass - + Station name changed The name of the EventType ({8385f3d5-62f7-482e-927c-b5d61a70d607}) of ThingClass airQualityIndex - - + + Sulfur dioxide level (SO2) The name of the ParamType (ThingClass: airQualityIndex, EventType: so2, ID: {f3a05e65-a9b3-48fd-be43-688d4c293cc9}) ---------- @@ -202,14 +208,14 @@ The name of the StateType ({f3a05e65-a9b3-48fd-be43-688d4c293cc9}) of ThingClass - + Sulfur dioxide level (SO2) changed The name of the EventType ({f3a05e65-a9b3-48fd-be43-688d4c293cc9}) of ThingClass airQualityIndex - - + + Temperature The name of the ParamType (ThingClass: airQualityIndex, EventType: temperature, ID: {94219802-0a82-4761-99b3-c6b6dfc096db}) ---------- @@ -217,14 +223,14 @@ The name of the StateType ({94219802-0a82-4761-99b3-c6b6dfc096db}) of ThingClass - + Temperature changed The name of the EventType ({94219802-0a82-4761-99b3-c6b6dfc096db}) of ThingClass airQualityIndex - - + + Wind speed The name of the ParamType (ThingClass: airQualityIndex, EventType: windSpeed, ID: {c4366608-2511-428b-964e-2ad9e37f8f3c}) ---------- @@ -232,7 +238,7 @@ The name of the StateType ({c4366608-2511-428b-964e-2ad9e37f8f3c}) of ThingClass - + Wind speed changed The name of the EventType ({c4366608-2511-428b-964e-2ad9e37f8f3c}) of ThingClass airQualityIndex @@ -241,39 +247,39 @@ The name of the StateType ({c4366608-2511-428b-964e-2ad9e37f8f3c}) of ThingClass IntegrationPluginAqi - + API key is not available. - + None - - + + Active children and adults, and people with respiratory disease, such as asthma, should limit prolonged outdoor exertion. - + Active children and adults, and people with respiratory disease, such as asthma, should avoid prolonged outdoor exertion; everyone else, especially children, should limit prolonged outdoor exertion - + Active children and adults, and people with respiratory disease, such as asthma, should avoid all outdoor exertion; everyone else, especially children, should limit outdoor exertion. - + Everyone should avoid all outdoor exertion - + Air quality index server not available, please check your internet connection.