diff --git a/bundles/org.openhab.binding.airparif/README.md b/bundles/org.openhab.binding.airparif/README.md
index 9c48616959..014269958d 100755
--- a/bundles/org.openhab.binding.airparif/README.md
+++ b/bundles/org.openhab.binding.airparif/README.md
@@ -7,9 +7,9 @@ You'll receive your API Key by mail.
## Supported Things
- `api`: bridge used to connect to the AirParif service. Provides some general information for the whole area.
-- `location`: Presents the pollen and air quality information for a given location.
+- `location`: Presents the air quality information for a given location.
-Of course, you can add multiple `location`s, e.g. for gathering pollen or air quality data for different locations.
+Of course, you can add multiple `location`s, e.g. for gathering air quality data for different locations.
## Discovery
@@ -40,9 +40,6 @@ Please check that proposed value is correct according to the place.
| Group | Channel | Type | Read/Write | Description |
|----------------------|----------------|----------------|------------|----------------------------------------------|
-| pollens | comment | String | R | Current pollens situation |
-| pollens | begin-validity | DateTime | R | Bulletin validity start |
-| pollens | end-validity | DateTime | R | Bulletin validity end |
| aq-bulletin | comment | String | R | General message for the air quality bulletin |
| aq-bulletin | no2-min | Number:Density | R | Minimum level of NO2 concentration |
| aq-bulletin | no2-max | Number:Density | R | Maximum level of NO2 concentration |
@@ -68,25 +65,6 @@ Please check that proposed value is correct according to the place.
| Group | Channel | Type | Read/Write | Description |
|---------|------------|----------------|------------|----------------------------------------------------------|
-| pollens | cypress | Number | R | Alert level associated to this taxon (*) |
-| pollens | hazel | Number | R | Alert level associated to this taxon (*) |
-| pollens | alder | Number | R | Alert level associated to this taxon (*) |
-| pollens | poplar | Number | R | Alert level associated to this taxon (*) |
-| pollens | willow | Number | R | Alert level associated to this taxon (*) |
-| pollens | ash | Number | R | Alert level associated to this taxon (*) |
-| pollens | hornbeam | Number | R | Alert level associated to this taxon (*) |
-| pollens | birch | Number | R | Alert level associated to this taxon (*) |
-| pollens | plane | Number | R | Alert level associated to this taxon (*) |
-| pollens | oak | Number | R | Alert level associated to this taxon (*) |
-| pollens | olive | Number | R | Alert level associated to this taxon (*) |
-| pollens | linden | Number | R | Alert level associated to this taxon (*) |
-| pollens | chestnut | Number | R | Alert level associated to this taxon (*) |
-| pollens | rumex | Number | R | Alert level associated to this taxon (*) |
-| pollens | grasses | Number | R | Alert level associated to this taxon (*) |
-| pollens | plantain | Number | R | Alert level associated to this taxon (*) |
-| pollens | urticaceae | Number | R | Alert level associated to this taxon (*) |
-| pollens | wormwood | Number | R | Alert level associated to this taxon (*) |
-| pollens | ragweed | Number | R | Alert level associated to this taxon (*) |
| indice | message | String | R | Alert message associated to the value of the index |
| indice | timestamp | DateTime | R | Timestamp of the evaluation |
| indice | alert | Number | R | ATMO Index associated to highest pollutant concentration |
@@ -103,15 +81,6 @@ Please check that proposed value is correct according to the place.
| pm10 | value | Number:Density | R | Concentration of the given pollutant |
| pm10 | alert | Number | R | Alert Level associated to pollutant concentration (**) |
-(*) Each pollen alert level has an associated color and description:
-
-| Code | Color | Description |
-|------|--------|-----------------------|
-| 0 | Green | No allergic risk |
-| 1 | Yellow | Low allergic risk |
-| 2 | Orange | Average allergic risk |
-| 3 | Red | High allergic risk |
-
(*) Each pollutant concentration is associated to an alert level (and an icon) :
| Code | Description |
@@ -130,26 +99,6 @@ This binding has its own IconProvider and makes available the following list of
| Icon Name | Dynamic | Illustration |
|------------------------|---------|------------------------------------------|
| oh:airparif:aq | Yes |  |
-| oh:airparif:pollen | Yes |  |
-| oh:airparif:alder | Yes |  |
-| oh:airparif:ash | Yes |  |
-| oh:airparif:birch | Yes |  |
-| oh:airparif:chestnut | Yes |  |
-| oh:airparif:cypress | Yes |  |
-| oh:airparif:grasses | Yes |  |
-| oh:airparif:hazel | Yes |  |
-| oh:airparif:hornbeam | Yes |  |
-| oh:airparif:linden | Yes |  |
-| oh:airparif:oak | Yes |  |
-| oh:airparif:olive | Yes |  |
-| oh:airparif:plane | Yes |  |
-| oh:airparif:plantain | Yes |  |
-| oh:airparif:poplar | Yes |  |
-| oh:airparif:ragweed | Yes |  |
-| oh:airparif:rumex | Yes |  |
-| oh:airparif:urticaceae | Yes |  |
-| oh:airparif:willow | Yes |  |
-| oh:airparif:wormwood | Yes |  |
## Full Example
@@ -164,9 +113,6 @@ Bridge airparif:api:local "AirParif" [ apikey="xxxxx-dddd-cccc-4321-zzzzzzzzzzzz
### Item Configurationn
```java
-String AirParifPollensComment "Situation" {channel="airparif:api:local:pollens#comment"}
-DateTime AirParifPollensBeginValidity "Begin validity" {channel="airparif:api:local:pollens#begin-validity"}
-DateTime AirParifPollensEndValidity "End validity" {channel="airparif:api:local:pollens#end-validity"}
String AirParifAqBulletinComment "Message" {channel="airparif:api:local:aq-bulletin#comment"}
Number:Density AirParifAqBulletinNo2Min "No2 min" {channel="airparif:api:local:aq-bulletin#no2-min"}
Number:Density AirParifAqBulletinNo2Max "No2 max" {channel="airparif:api:local:aq-bulletin#no2-max"}
@@ -188,25 +134,6 @@ Number:Density AirParifAqBulletinTomorrowPm25Max "Pm 2.5 max" {channel
String AirParifDailyMessage "Message" {channel="airparif:api:local:daily#message"}
String AirParifDailyTomorrow "Tomorrow" {channel="airparif:api:local:daily#tomorrow"}
-Number Yvelines_Pollens_Cypress "Cypress" {channel="airparif:location:local:78:pollens#cypress"}
-Number Yvelines_Pollens_Hazel "Hazel level" {channel="airparif:location:local:78:pollens#hazel"}
-Number Yvelines_Pollens_Alder "Alder" {channel="airparif:location:local:78:pollens#alder"}
-Number Yvelines_Pollens_Poplar "Poplar" {channel="airparif:location:local:78:pollens#poplar"}
-Number Yvelines_Pollens_Willow "Willow" {channel="airparif:location:local:78:pollens#willow"}
-Number Yvelines_Pollens_Ash "Ash" {channel="airparif:location:local:78:pollens#ash"}
-Number Yvelines_Pollens_Hornbeam "Hornbeam" {channel="airparif:location:local:78:pollens#hornbeam"}
-Number Yvelines_Pollens_Birch "Birch level" {channel="airparif:location:local:78:pollens#birch"}
-Number Yvelines_Pollens_Plane "Plane" {channel="airparif:location:local:78:pollens#plane"}
-Number Yvelines_Pollens_Oak "Oak" {channel="airparif:location:local:78:pollens#oak"}
-Number Yvelines_Pollens_Olive "Olive" {channel="airparif:location:local:78:pollens#olive"}
-Number Yvelines_Pollens_Linden "Linden" {channel="airparif:location:local:78:pollens#linden"}
-Number Yvelines_Pollens_Chestnut "Chestnut" {channel="airparif:location:local:78:pollens#chestnut"}
-Number Yvelines_Pollens_Rumex "Rumex" {channel="airparif:location:local:78:pollens#rumex"}
-Number Yvelines_Pollens_Grasses "Grasses" {channel="airparif:location:local:78:pollens#grasses"}
-Number Yvelines_Pollens_Plantain "Plantain" {channel="airparif:location:local:78:pollens#plantain"}
-Number Yvelines_Pollens_Urticaceae "Urticacea" {channel="airparif:location:local:78:pollens#urticaceae"}
-Number Yvelines_Pollens_Wormwood "Wormwood" {channel="airparif:location:local:78:pollens#wormwood"}
-Number Yvelines_Pollens_Ragweed "Ragweed" {channel="airparif:location:local:78:pollens#ragweed"}
String Yvelines_Indice_Message "Message" {channel="airparif:location:local:78:indice#message"}
DateTime Yvelines_Indice_Timestamp "Timestamp" {channel="airparif:location:local:78:indice#timestamp"}
Number Yvelines_Indice_Alert "Index" {channel="airparif:location:local:78:indice#alert"}
diff --git a/bundles/org.openhab.binding.airparif/doc/images/alder.svg b/bundles/org.openhab.binding.airparif/doc/images/alder.svg
deleted file mode 100755
index 30cc5e33a0..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/alder.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/ash.svg b/bundles/org.openhab.binding.airparif/doc/images/ash.svg
deleted file mode 100755
index 618f3c0b11..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/ash.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/birch.svg b/bundles/org.openhab.binding.airparif/doc/images/birch.svg
deleted file mode 100755
index 54604c9793..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/birch.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/chestnut.svg b/bundles/org.openhab.binding.airparif/doc/images/chestnut.svg
deleted file mode 100755
index 57f5188ffc..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/chestnut.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/cypress.svg b/bundles/org.openhab.binding.airparif/doc/images/cypress.svg
deleted file mode 100755
index 5311089b19..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/cypress.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/grasses.svg b/bundles/org.openhab.binding.airparif/doc/images/grasses.svg
deleted file mode 100755
index 74ddca07b0..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/grasses.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/hazel.svg b/bundles/org.openhab.binding.airparif/doc/images/hazel.svg
deleted file mode 100755
index acfba4a13e..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/hazel.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/hornbeam.svg b/bundles/org.openhab.binding.airparif/doc/images/hornbeam.svg
deleted file mode 100755
index 501877ee77..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/hornbeam.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/linden.svg b/bundles/org.openhab.binding.airparif/doc/images/linden.svg
deleted file mode 100755
index 7dc5db9eab..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/linden.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/oak.svg b/bundles/org.openhab.binding.airparif/doc/images/oak.svg
deleted file mode 100755
index a7ee6cfd42..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/oak.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/olive.svg b/bundles/org.openhab.binding.airparif/doc/images/olive.svg
deleted file mode 100755
index 820ef168ce..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/olive.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/plane.svg b/bundles/org.openhab.binding.airparif/doc/images/plane.svg
deleted file mode 100755
index ef1bddb7e9..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/plane.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/plantain.svg b/bundles/org.openhab.binding.airparif/doc/images/plantain.svg
deleted file mode 100755
index 8907a5f429..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/plantain.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/pollen.svg b/bundles/org.openhab.binding.airparif/doc/images/pollen.svg
deleted file mode 100644
index f03f3420d2..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/pollen.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/poplar.svg b/bundles/org.openhab.binding.airparif/doc/images/poplar.svg
deleted file mode 100755
index d582efa92d..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/poplar.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/ragweed.svg b/bundles/org.openhab.binding.airparif/doc/images/ragweed.svg
deleted file mode 100755
index 9da22d6825..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/ragweed.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/rumex.svg b/bundles/org.openhab.binding.airparif/doc/images/rumex.svg
deleted file mode 100755
index 73194f0e80..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/rumex.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/urticaceae.svg b/bundles/org.openhab.binding.airparif/doc/images/urticaceae.svg
deleted file mode 100755
index c1b8b69052..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/urticaceae.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/willow.svg b/bundles/org.openhab.binding.airparif/doc/images/willow.svg
deleted file mode 100755
index 52e6631136..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/willow.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/doc/images/wormwood.svg b/bundles/org.openhab.binding.airparif/doc/images/wormwood.svg
deleted file mode 100755
index c8c8c90f6d..0000000000
--- a/bundles/org.openhab.binding.airparif/doc/images/wormwood.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/AirParifBindingConstants.java b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/AirParifBindingConstants.java
index 881795dd22..52539a2080 100755
--- a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/AirParifBindingConstants.java
+++ b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/AirParifBindingConstants.java
@@ -34,7 +34,6 @@ public class AirParifBindingConstants {
public static final ThingTypeUID LOCATION_THING_TYPE = new ThingTypeUID(BINDING_ID, "location");
// Channel group ids
- public static final String GROUP_POLLENS = "pollens";
public static final String GROUP_DAILY = "daily";
public static final String GROUP_AQ_BULLETIN = "aq-bulletin";
public static final String GROUP_AQ_BULLETIN_TOMORROW = GROUP_AQ_BULLETIN + "-tomorrow";
diff --git a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/AirParifIconProvider.java b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/AirParifIconProvider.java
index f5b0efa57d..1d6402e834 100755
--- a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/AirParifIconProvider.java
+++ b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/AirParifIconProvider.java
@@ -19,15 +19,12 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.charset.StandardCharsets;
-import java.util.List;
import java.util.Locale;
import java.util.Set;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.binding.airparif.internal.api.AirParifApi.Appreciation;
-import org.openhab.binding.airparif.internal.api.AirParifApi.Pollen;
-import org.openhab.binding.airparif.internal.api.PollenAlertLevel;
import org.openhab.core.i18n.TranslationProvider;
import org.openhab.core.ui.icon.IconProvider;
import org.openhab.core.ui.icon.IconSet;
@@ -48,13 +45,9 @@ import org.slf4j.LoggerFactory;
@Component(service = { IconProvider.class, AirParifIconProvider.class })
@NonNullByDefault
public class AirParifIconProvider implements IconProvider {
- private static final String NEUTRAL_COLOR = "#3d3c3c";
private static final String DEFAULT_LABEL = "AirParif Icons";
private static final String AQ_ICON = "aq";
- private static final String POLLEN_ICON = "pollen";
private static final String DEFAULT_DESCRIPTION = "Icons illustrating air quality levels provided by AirParif";
- private static final List POLLEN_ICONS = Pollen.AS_SET.stream().map(Pollen::name).map(String::toLowerCase)
- .toList();
private final Logger logger = LoggerFactory.getLogger(AirParifIconProvider.class);
private final TranslationProvider i18nProvider;
@@ -74,7 +67,7 @@ public class AirParifIconProvider implements IconProvider {
@Override
public Set getIconSets(@Nullable Locale locale) {
String label = getText("label", DEFAULT_LABEL, locale);
- String description = getText("decription", DEFAULT_DESCRIPTION, locale);
+ String description = getText("description", DEFAULT_DESCRIPTION, locale);
return Set.of(new IconSet(BINDING_ID, label, description, Set.of(Format.SVG)));
}
@@ -86,9 +79,7 @@ public class AirParifIconProvider implements IconProvider {
@Override
public @Nullable Integer hasIcon(String category, String iconSetId, Format format) {
- return Format.SVG.equals(format) && iconSetId.equals(BINDING_ID)
- && (category.equals(AQ_ICON) || category.equals(POLLEN_ICON) || POLLEN_ICONS.contains(category)) ? 0
- : null;
+ return Format.SVG.equals(format) && iconSetId.equals(BINDING_ID) && category.equals(AQ_ICON) ? 0 : null;
}
@Override
@@ -102,8 +93,6 @@ public class AirParifIconProvider implements IconProvider {
String iconName = "icon/%s.svg".formatted(category);
if (category.equals(AQ_ICON) && ordinal != -1 && ordinal < Appreciation.values().length - 2) {
iconName = iconName.replace(".", "-%d.".formatted(ordinal));
- } else if (category.equals(POLLEN_ICON) && ordinal != -1) {
- iconName = iconName.replace(".", "-%d.".formatted(ordinal));
}
String result = "";
@@ -111,15 +100,10 @@ public class AirParifIconProvider implements IconProvider {
if (iconResource != null) {
try (InputStream stream = iconResource.openStream()) {
result = new String(stream.readAllBytes(), StandardCharsets.UTF_8);
-
- if (POLLEN_ICONS.contains(category)) {
- PollenAlertLevel alertLevel = PollenAlertLevel.valueOf(ordinal);
- result = result.replaceAll(NEUTRAL_COLOR, alertLevel.color);
- }
} catch (IOException e) {
logger.warn("Unable to load ressource '{}': {}", iconResource.getPath(), e.getMessage());
}
}
- return result.isEmpty() ? null : new ByteArrayInputStream(result.getBytes());
+ return result.isEmpty() ? null : new ByteArrayInputStream(result.getBytes(StandardCharsets.UTF_8));
}
}
diff --git a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/api/AirParifApi.java b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/api/AirParifApi.java
index 6d90006d2d..0b9609e9e1 100644
--- a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/api/AirParifApi.java
+++ b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/api/AirParifApi.java
@@ -38,16 +38,11 @@ public class AirParifApi {
private static final UriBuilder INDICES_BUILDER = AIRPARIF_BUILDER.clone().path("indices").path("prevision");
public static final URI PREV_BULLETIN_URI = INDICES_BUILDER.clone().path("bulletin").build();
- private static final UriBuilder POLLENS_BUILDER = AIRPARIF_BUILDER.clone().path("pollens");
- public static final URI POLLENS_URI = POLLENS_BUILDER.clone().path("bulletin").build();
-
public static final String INTINERAIRES_REQUEST = "{\"itineraires\": [{\"date\": \"%s\",\"longlats\": [[%s,%s]]}],\"polluants\": [\"indice\",\"no2\",\"o3\",\"pm25\",\"pm10\"]}";
public enum Scope {
@SerializedName("Cartes et résultats Hor'Air")
MAPS,
- @SerializedName("Pollens")
- POLLENS,
@SerializedName("Épisodes")
EVENTS,
@SerializedName("Indices")
@@ -72,53 +67,4 @@ public class AirParifApi {
public static final EnumSet AS_SET = EnumSet.allOf(Appreciation.class);
}
-
- public enum Pollen {
- @SerializedName("cypres")
- CYPRESS("cypres"),
- @SerializedName("noisetier")
- HAZEL("noisetier"),
- @SerializedName("aulne")
- ALDER("aulne"),
- @SerializedName("peuplier")
- POPLAR("peuplier"),
- @SerializedName("saule")
- WILLOW("saule"),
- @SerializedName("frene")
- ASH("frene"),
- @SerializedName("charme")
- HORNBEAM("charme"),
- @SerializedName("bouleau")
- BIRCH("bouleau"),
- @SerializedName("platane")
- PLANE("platane"),
- @SerializedName("chene")
- OAK("chene"),
- @SerializedName("olivier")
- OLIVE("olivier"),
- @SerializedName("tilleul")
- LINDEN("tilleul"),
- @SerializedName("chataignier")
- CHESTNUT("chataignier"),
- @SerializedName("rumex")
- RUMEX("rumex"),
- @SerializedName("graminees")
- GRASSES("graminees"),
- @SerializedName("plantain")
- PLANTAIN("plantain"),
- @SerializedName("urticacees")
- URTICACEAE("urticacees"),
- @SerializedName("armoises")
- WORMWOOD("armoises"),
- @SerializedName("ambroisies")
- RAGWEED("ambroisies");
-
- public final String apiName;
-
- Pollen(String apiName) {
- this.apiName = apiName;
- }
-
- public static final EnumSet AS_SET = EnumSet.allOf(Pollen.class);
- }
}
diff --git a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/api/AirParifDto.java b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/api/AirParifDto.java
index abbebe9ed8..51c9fb6232 100644
--- a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/api/AirParifDto.java
+++ b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/api/AirParifDto.java
@@ -12,26 +12,16 @@
*/
package org.openhab.binding.airparif.internal.api;
-import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
import java.util.Set;
-import java.util.TreeSet;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import javax.measure.Unit;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
-import org.openhab.binding.airparif.internal.api.AirParifApi.Pollen;
import org.openhab.binding.airparif.internal.api.AirParifApi.Scope;
import org.openhab.core.library.types.DateTimeType;
import org.openhab.core.library.types.QuantityType;
@@ -49,6 +39,8 @@ import com.google.gson.annotations.SerializedName;
*/
@NonNullByDefault
public class AirParifDto {
+ public static final ZoneId DEFAULT_TZ = ZoneId.of("Europe/Paris");
+
public record Version(//
String version) {
}
@@ -101,7 +93,7 @@ public class AirParifDto {
}
public boolean isToday() {
- return previsionDate.equals(LocalDate.now());
+ return previsionDate.equals(LocalDate.now(DEFAULT_TZ));
}
}
@@ -122,80 +114,6 @@ public class AirParifDto {
@SerializedName("demain") DailyEpisode tomorrow) {
}
- public record Pollens(//
- Pollen[] taxons, //
- Map valeurs, //
- String commentaire, //
- String periode) {
- }
-
- public class PollensResponse {
- private final static DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yy");
- private final static Pattern PATTERN = Pattern.compile("\\d{2}.\\d{2}.\\d{2}");
- private final static ZoneId DEFAULT_ZONE = ZoneId.of("Europe/Paris");
-
- private @Nullable List data;
- private @Nullable Instant beginValidity;
- private @Nullable Instant endValidity;
-
- public Optional getData() {
- List localData = data;
- return Optional.ofNullable(localData == null || localData.isEmpty() ? null : localData.get(0));
- }
-
- private Set getValidities() {
- Set validities = new TreeSet<>();
- getData().ifPresent(pollens -> {
- Matcher matcher = PATTERN.matcher(pollens.periode);
- while (matcher.find()) {
- validities.add(LocalDate.parse(matcher.group(), FORMATTER).atStartOfDay(DEFAULT_ZONE).toInstant());
- }
- });
-
- return validities;
- }
-
- public Optional getBeginValidity() {
- if (beginValidity == null) {
- beginValidity = getValidities().stream().reduce((prev, next) -> prev).orElse(null);
- }
- return Optional.ofNullable(beginValidity);
- }
-
- public Optional getEndValidity() {
- if (endValidity == null) {
- endValidity = getValidities().stream().reduce((prev, next) -> next).orElse(null);
- }
- return Optional.ofNullable(endValidity);
- }
-
- public Duration getValidityDuration() {
- return Objects.requireNonNull(getEndValidity().map(end -> {
- Duration duration = Duration.between(Instant.now(), end);
- return duration.isNegative() ? Duration.ZERO : duration;
- }).orElse(Duration.ZERO));
- }
-
- public Optional getComment() {
- return getData().map(pollens -> pollens.commentaire);
- }
-
- public Map getDepartment(String id) {
- Map result = new HashMap<>();
- Optional donnees = getData();
- if (donnees.isPresent()) {
- Pollens depts = donnees.get();
- PollenAlertLevel[] valeurs = depts.valeurs.get(id);
- if (valeurs != null) {
- for (int i = 0; i < valeurs.length; i++) {
- result.put(depts.taxons[i], valeurs[i]);
- }
- }
- }
- return result;
- }
- }
-
public record Concentration(//
@SerializedName("polluant") Pollutant pollutant, //
Instant date, //
diff --git a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/api/PollenAlertLevel.java b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/api/PollenAlertLevel.java
deleted file mode 100644
index fe50254956..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/api/PollenAlertLevel.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2010-2026 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.airparif.internal.api;
-
-import java.util.EnumSet;
-import java.util.Objects;
-
-import org.eclipse.jdt.annotation.NonNullByDefault;
-
-import com.google.gson.annotations.SerializedName;
-
-/**
- * @author Gaël L'hopital - Initial contribution
- */
-@NonNullByDefault
-public enum PollenAlertLevel {
- @SerializedName("0")
- NONE(0, "#3a8b2f"),
- @SerializedName("1")
- LOW(1, "#f9a825"),
- @SerializedName("2")
- AVERAGE(2, "#ef6c00"),
- @SerializedName("3")
- HIGH(3, "#b71c1c"),
- UNKNOWN(-1, "#b3b3b3");
-
- public static final EnumSet AS_SET = EnumSet.allOf(PollenAlertLevel.class);
-
- public final int riskLevel;
- public final String color;
-
- PollenAlertLevel(int riskLevel, String color) {
- this.riskLevel = riskLevel;
- this.color = color;
- }
-
- public static PollenAlertLevel valueOf(int ordinal) {
- return Objects
- .requireNonNull(AS_SET.stream().filter(pal -> pal.riskLevel == ordinal).findFirst().orElse(UNKNOWN));
- }
-}
diff --git a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/deserialization/AirParifDeserializer.java b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/deserialization/AirParifDeserializer.java
index f9d3f58efe..d587aa4fb2 100755
--- a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/deserialization/AirParifDeserializer.java
+++ b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/deserialization/AirParifDeserializer.java
@@ -19,7 +19,6 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.binding.airparif.internal.AirParifException;
import org.openhab.binding.airparif.internal.api.AirParifDto.PollutantConcentration;
-import org.openhab.binding.airparif.internal.api.PollenAlertLevel;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
@@ -42,7 +41,6 @@ public class AirParifDeserializer {
@Activate
public AirParifDeserializer() {
gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.IDENTITY)
- .registerTypeAdapter(PollenAlertLevel.class, new PollenAlertLevelDeserializer())
.registerTypeAdapterFactory(new StrictEnumTypeAdapterFactory())
.registerTypeAdapter(PollutantConcentration.class, new PollutantConcentrationDeserializer())
.registerTypeAdapter(LocalDate.class,
diff --git a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/deserialization/PollenAlertLevelDeserializer.java b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/deserialization/PollenAlertLevelDeserializer.java
deleted file mode 100644
index 64d511d90a..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/deserialization/PollenAlertLevelDeserializer.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2010-2026 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.airparif.internal.deserialization;
-
-import java.lang.reflect.Type;
-
-import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.eclipse.jdt.annotation.Nullable;
-import org.openhab.binding.airparif.internal.api.PollenAlertLevel;
-
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonSyntaxException;
-
-/**
- * Specialized deserializer for ColorMap class
- *
- * @author Gaël L'hopital - Initial contribution
- */
-@NonNullByDefault
-class PollenAlertLevelDeserializer implements JsonDeserializer {
-
- @Override
- public @Nullable PollenAlertLevel deserialize(JsonElement json, Type clazz, JsonDeserializationContext context) {
- int level;
- try {
- level = json.getAsInt();
- } catch (JsonSyntaxException ignore) {
- return PollenAlertLevel.UNKNOWN;
- }
-
- return PollenAlertLevel.AS_SET.stream().filter(s -> s.riskLevel == level).findFirst()
- .orElse(PollenAlertLevel.UNKNOWN);
- }
-}
diff --git a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/handler/AirParifBridgeHandler.java b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/handler/AirParifBridgeHandler.java
index c3637e2083..c75531caa7 100755
--- a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/handler/AirParifBridgeHandler.java
+++ b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/handler/AirParifBridgeHandler.java
@@ -26,8 +26,8 @@ import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Collection;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
-import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ScheduledExecutorService;
@@ -49,32 +49,27 @@ import org.eclipse.jetty.http.HttpMethod;
import org.eclipse.jetty.http.HttpStatus;
import org.eclipse.jetty.http.HttpStatus.Code;
import org.openhab.binding.airparif.internal.AirParifException;
-import org.openhab.binding.airparif.internal.api.AirParifApi.Pollen;
+import org.openhab.binding.airparif.internal.api.AirParifDto;
import org.openhab.binding.airparif.internal.api.AirParifDto.Bulletin;
import org.openhab.binding.airparif.internal.api.AirParifDto.Episode;
import org.openhab.binding.airparif.internal.api.AirParifDto.ItineraireResponse;
import org.openhab.binding.airparif.internal.api.AirParifDto.KeyInfo;
-import org.openhab.binding.airparif.internal.api.AirParifDto.PollensResponse;
import org.openhab.binding.airparif.internal.api.AirParifDto.Route;
import org.openhab.binding.airparif.internal.api.AirParifDto.Version;
-import org.openhab.binding.airparif.internal.api.PollenAlertLevel;
import org.openhab.binding.airparif.internal.api.Pollutant;
import org.openhab.binding.airparif.internal.config.BridgeConfiguration;
import org.openhab.binding.airparif.internal.deserialization.AirParifDeserializer;
import org.openhab.binding.airparif.internal.discovery.AirParifDiscoveryService;
-import org.openhab.core.library.types.DateTimeType;
import org.openhab.core.library.types.StringType;
import org.openhab.core.thing.Bridge;
import org.openhab.core.thing.ChannelGroupUID;
import org.openhab.core.thing.ChannelUID;
-import org.openhab.core.thing.Thing;
import org.openhab.core.thing.ThingStatus;
import org.openhab.core.thing.ThingStatusDetail;
import org.openhab.core.thing.ThingUID;
import org.openhab.core.thing.binding.BaseBridgeHandler;
import org.openhab.core.thing.binding.ThingHandlerService;
import org.openhab.core.types.Command;
-import org.openhab.core.types.State;
import org.openhab.core.types.UnDefType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -91,7 +86,6 @@ public class AirParifBridgeHandler extends BaseBridgeHandler implements HandlerU
private static final int REQUEST_TIMEOUT_MS = (int) TimeUnit.SECONDS.toMillis(30);
private static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
private static final String AQ_JOB = "Air Quality Bulletin";
- private static final String POLLENS_JOB = "Pollens Update";
private static final String EPISODE_JOB = "Episode";
private final Logger logger = LoggerFactory.getLogger(AirParifBridgeHandler.class);
@@ -100,7 +94,6 @@ public class AirParifBridgeHandler extends BaseBridgeHandler implements HandlerU
private final HttpClient httpClient;
private BridgeConfiguration config = new BridgeConfiguration();
- private @Nullable PollensResponse pollens;
public AirParifBridgeHandler(Bridge bridge, HttpClient httpClient, AirParifDeserializer deserializer) {
super(bridge);
@@ -205,39 +198,11 @@ public class AirParifBridgeHandler extends BaseBridgeHandler implements HandlerU
ThingUID thingUID = thing.getUID();
- schedule(POLLENS_JOB, () -> updatePollens(new ChannelGroupUID(thingUID, GROUP_POLLENS)), Duration.ofSeconds(1));
schedule(AQ_JOB, () -> updateDailyAQBulletin(new ChannelGroupUID(thingUID, GROUP_AQ_BULLETIN),
new ChannelGroupUID(thingUID, GROUP_AQ_BULLETIN_TOMORROW)), Duration.ofSeconds(2));
schedule(EPISODE_JOB, () -> updateEpisode(new ChannelGroupUID(thingUID, GROUP_DAILY)), Duration.ofSeconds(3));
}
- private void updatePollens(ChannelGroupUID pollensGroupUID) {
- PollensResponse localPollens;
- try {
- localPollens = executeUri(POLLENS_URI, PollensResponse.class);
- } catch (AirParifException e) {
- logger.warn("Error updating pollens data: {}", e.getMessage());
- return;
- }
-
- updateState(new ChannelUID(pollensGroupUID, CHANNEL_COMMENT), Objects.requireNonNull(
- localPollens.getComment().map(comment -> (State) new StringType(comment)).orElse(UnDefType.NULL)));
- updateState(new ChannelUID(pollensGroupUID, CHANNEL_BEGIN_VALIDITY), Objects.requireNonNull(
- localPollens.getBeginValidity().map(begin -> (State) new DateTimeType(begin)).orElse(UnDefType.NULL)));
- updateState(new ChannelUID(pollensGroupUID, CHANNEL_END_VALIDITY), Objects.requireNonNull(
- localPollens.getEndValidity().map(end -> (State) new DateTimeType(end)).orElse(UnDefType.NULL)));
-
- long delay = localPollens.getValidityDuration().getSeconds();
- // if delay is null, update in 3600 seconds
- delay += delay == 0 ? 3600 : 60;
- schedule(POLLENS_JOB, () -> updatePollens(pollensGroupUID), Duration.ofSeconds(delay));
-
- // Send pollens information to childs
- getThing().getThings().stream().map(Thing::getHandler).filter(LocationHandler.class::isInstance)
- .map(LocationHandler.class::cast).forEach(locHand -> locHand.setPollens(localPollens));
- pollens = localPollens;
- }
-
private void updateDailyAQBulletin(ChannelGroupUID todayGroupUID, ChannelGroupUID tomorrowGroupUID) {
Bulletin bulletin;
try {
@@ -254,7 +219,7 @@ public class AirParifBridgeHandler extends BaseBridgeHandler implements HandlerU
aq.concentrations().forEach(measure -> {
Pollutant pollutant = measure.pollutant();
- String cName = pollutant.name().toLowerCase() + "-";
+ String cName = pollutant.name().toLowerCase(Locale.ROOT) + "-";
updateState(new ChannelUID(groupUID, cName + "min"),
aq.available() ? measure.getMin() : UnDefType.NULL);
updateState(new ChannelUID(groupUID, cName + "max"),
@@ -284,15 +249,15 @@ public class AirParifBridgeHandler extends BaseBridgeHandler implements HandlerU
}
private Duration untilTomorrowMorning() {
- return Duration.between(ZonedDateTime.now(),
- ZonedDateTime.now().plusDays(1).truncatedTo(ChronoUnit.DAYS).plusMinutes(1));
+ ZonedDateTime now = ZonedDateTime.now(AirParifDto.DEFAULT_TZ);
+ return Duration.between(now, now.plusDays(1).truncatedTo(ChronoUnit.DAYS).plusMinutes(1));
}
public @Nullable Route getConcentrations(String location) {
String[] elements = location.split(",");
if (elements.length >= 2) {
- String req = INTINERAIRES_REQUEST.formatted(LocalDateTime.now().truncatedTo(ChronoUnit.HOURS), elements[1],
- elements[0]);
+ String req = INTINERAIRES_REQUEST.formatted(
+ LocalDateTime.now(AirParifDto.DEFAULT_TZ).truncatedTo(ChronoUnit.HOURS), elements[1], elements[0]);
try {
ItineraireResponse result = executeUri(HORAIR_URI, ItineraireResponse.class, req);
return result.routes()[0];
@@ -305,11 +270,6 @@ public class AirParifBridgeHandler extends BaseBridgeHandler implements HandlerU
return null;
}
- public Map requestPollens(String department) {
- PollensResponse localPollens = pollens;
- return localPollens != null ? localPollens.getDepartment(department) : Map.of();
- }
-
@Override
public @Nullable Bridge getBridge() {
return super.getBridge();
diff --git a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/handler/LocationHandler.java b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/handler/LocationHandler.java
index f0ee14cd99..cd00c8bf4c 100755
--- a/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/handler/LocationHandler.java
+++ b/bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/handler/LocationHandler.java
@@ -17,17 +17,15 @@ import static org.openhab.binding.airparif.internal.AirParifBindingConstants.*;
import java.time.Duration;
import java.util.Comparator;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
-import org.openhab.binding.airparif.internal.api.AirParifApi.Pollen;
import org.openhab.binding.airparif.internal.api.AirParifDto.Concentration;
-import org.openhab.binding.airparif.internal.api.AirParifDto.PollensResponse;
import org.openhab.binding.airparif.internal.api.AirParifDto.Route;
-import org.openhab.binding.airparif.internal.api.PollenAlertLevel;
import org.openhab.binding.airparif.internal.api.Pollutant;
import org.openhab.binding.airparif.internal.config.LocationConfiguration;
import org.openhab.core.library.types.DecimalType;
@@ -55,7 +53,6 @@ public class LocationHandler extends BaseThingHandler implements HandlerUtils {
private final Logger logger = LoggerFactory.getLogger(LocationHandler.class);
private final Map> jobs = new HashMap<>();
- private Map myPollens = Map.of();
private @Nullable LocationConfiguration config;
public LocationHandler(Thing thing) {
@@ -71,34 +68,15 @@ public class LocationHandler extends BaseThingHandler implements HandlerUtils {
@Override
public void dispose() {
- logger.debug("Disposing the AirParif bridge handler.");
+ logger.debug("Disposing the AirParif Location handler.");
cleanJobs();
}
- public void setPollens(PollensResponse pollens) {
- LocationConfiguration local = config;
- if (local != null) {
- updatePollenChannels(pollens.getDepartment(local.department));
- updateStatus(ThingStatus.ONLINE);
- }
- }
-
- private void updatePollenChannels(Map pollens) {
- ChannelGroupUID pollensUID = new ChannelGroupUID(thing.getUID(), GROUP_POLLENS);
- myPollens = pollens;
- pollens.forEach((pollen, level) -> updateState(new ChannelUID(pollensUID, pollen.name().toLowerCase()),
- new DecimalType(level.ordinal())));
- }
-
private void getConcentrations() {
AirParifBridgeHandler apiHandler = getBridgeHandler(AirParifBridgeHandler.class);
LocationConfiguration local = config;
long delay = 3600;
if (apiHandler != null && local != null) {
- if (myPollens.isEmpty()) {
- updatePollenChannels(apiHandler.requestPollens(local.department));
- }
-
Route route = apiHandler.getConcentrations(local.location);
if (route != null) {
int maxAlert = route.concentrations().stream().filter(conc -> conc.pollutant().hasUnit())
@@ -106,7 +84,8 @@ public class LocationHandler extends BaseThingHandler implements HandlerUtils {
route.concentrations().stream().forEach(concentration -> {
Pollutant pollutant = concentration.pollutant();
- ChannelGroupUID groupUID = new ChannelGroupUID(thing.getUID(), pollutant.name().toLowerCase());
+ ChannelGroupUID groupUID = new ChannelGroupUID(thing.getUID(),
+ pollutant.name().toLowerCase(Locale.ROOT));
updateState(new ChannelUID(groupUID, CHANNEL_MESSAGE), concentration.getMessage());
if (!pollutant.hasUnit()) {
updateState(new ChannelUID(groupUID, CHANNEL_TIMESTAMP), concentration.getDate());
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/i18n/airparif.properties b/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/i18n/airparif.properties
index ef0d892ad5..7dcfb24f6f 100755
--- a/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/i18n/airparif.properties
+++ b/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/i18n/airparif.properties
@@ -53,19 +53,11 @@ channel-group-type.airparif.air-quality-bulletin.channel.pm25-max.label = PM 2.5
channel-group-type.airparif.air-quality-bulletin.channel.pm25-max.description = Maximum level of PM 2.5 concentration
channel-group-type.airparif.air-quality-bulletin.channel.pm25-min.label = PM 2.5 Min
channel-group-type.airparif.air-quality-bulletin.channel.pm25-min.description = Minimum level of PM 2.5 concentration
-channel-group-type.airparif.bridge-pollens.label = Pollen information for the region
-channel-group-type.airparif.bridge-pollens.channel.begin-validity.label = Begin Validity
-channel-group-type.airparif.bridge-pollens.channel.begin-validity.description = Bulletin validity start
-channel-group-type.airparif.bridge-pollens.channel.comment.label = Situation
-channel-group-type.airparif.bridge-pollens.channel.comment.description = Current pollens situation
-channel-group-type.airparif.bridge-pollens.channel.end-validity.label = End Validity
-channel-group-type.airparif.bridge-pollens.channel.end-validity.description = Bulletin validity end
channel-group-type.airparif.daily.label = Daily Region Information
channel-group-type.airparif.daily.channel.message.label = Message
channel-group-type.airparif.daily.channel.message.description = Today's daily general information
channel-group-type.airparif.daily.channel.tomorrow.label = Tomorrow
channel-group-type.airparif.daily.channel.tomorrow.description = Tomorrow's daily general information
-channel-group-type.airparif.dept-pollens.label = Department Pollen Information
channel-group-type.airparif.pollutant-mpc.label = Pollutant Concentration Information
channel-group-type.airparif.pollutant-mpc.channel.alert.label = Alert Level
channel-group-type.airparif.pollutant-mpc.channel.alert.description = Alert Level associated to pollutant concentration
@@ -83,11 +75,6 @@ channel-group-type.airparif.pollutant-ndx.channel.timestamp.description = Timest
# channel types
-channel-type.airparif.alder-level.label = Alder
-channel-type.airparif.alder-level.state.option.0 = None
-channel-type.airparif.alder-level.state.option.1 = Low
-channel-type.airparif.alder-level.state.option.2 = Average
-channel-type.airparif.alder-level.state.option.3 = High
channel-type.airparif.appreciation.label = Air Quality
channel-type.airparif.appreciation.state.option.0 = Good
channel-type.airparif.appreciation.state.option.1 = Average
@@ -95,100 +82,10 @@ channel-type.airparif.appreciation.state.option.2 = Degrated
channel-type.airparif.appreciation.state.option.3 = Bad
channel-type.airparif.appreciation.state.option.4 = Very Bad
channel-type.airparif.appreciation.state.option.5 = Extremely Bad
-channel-type.airparif.ash-level.label = Ash
-channel-type.airparif.ash-level.state.option.0 = None
-channel-type.airparif.ash-level.state.option.1 = Low
-channel-type.airparif.ash-level.state.option.2 = Average
-channel-type.airparif.ash-level.state.option.3 = High
-channel-type.airparif.birch-level.label = Birch Level
-channel-type.airparif.birch-level.state.option.0 = None
-channel-type.airparif.birch-level.state.option.1 = Low
-channel-type.airparif.birch-level.state.option.2 = Average
-channel-type.airparif.birch-level.state.option.3 = High
-channel-type.airparif.chestnut-level.label = Chestnut
-channel-type.airparif.chestnut-level.state.option.0 = None
-channel-type.airparif.chestnut-level.state.option.1 = Low
-channel-type.airparif.chestnut-level.state.option.2 = Average
-channel-type.airparif.chestnut-level.state.option.3 = High
channel-type.airparif.comment.label = Comment
-channel-type.airparif.cypress-level.label = Cypress
-channel-type.airparif.cypress-level.state.option.0 = None
-channel-type.airparif.cypress-level.state.option.1 = Low
-channel-type.airparif.cypress-level.state.option.2 = Average
-channel-type.airparif.cypress-level.state.option.3 = High
-channel-type.airparif.grasses-level.label = Grasses
-channel-type.airparif.grasses-level.state.option.0 = None
-channel-type.airparif.grasses-level.state.option.1 = Low
-channel-type.airparif.grasses-level.state.option.2 = Average
-channel-type.airparif.grasses-level.state.option.3 = High
-channel-type.airparif.hazel-level.label = Hazel Level
-channel-type.airparif.hazel-level.state.option.0 = None
-channel-type.airparif.hazel-level.state.option.1 = Low
-channel-type.airparif.hazel-level.state.option.2 = Average
-channel-type.airparif.hazel-level.state.option.3 = High
-channel-type.airparif.hornbeam-level.label = Hornbeam
-channel-type.airparif.hornbeam-level.state.option.0 = None
-channel-type.airparif.hornbeam-level.state.option.1 = Low
-channel-type.airparif.hornbeam-level.state.option.2 = Average
-channel-type.airparif.hornbeam-level.state.option.3 = High
-channel-type.airparif.linden-level.label = Linden
-channel-type.airparif.linden-level.state.option.0 = None
-channel-type.airparif.linden-level.state.option.1 = Low
-channel-type.airparif.linden-level.state.option.2 = Average
-channel-type.airparif.linden-level.state.option.3 = High
channel-type.airparif.mpc-value.label = Measure
channel-type.airparif.ndx-value.label = Measure
-channel-type.airparif.oak-level.label = Oak
-channel-type.airparif.oak-level.state.option.0 = None
-channel-type.airparif.oak-level.state.option.1 = Low
-channel-type.airparif.oak-level.state.option.2 = Average
-channel-type.airparif.oak-level.state.option.3 = High
-channel-type.airparif.olive-level.label = Olive
-channel-type.airparif.olive-level.state.option.0 = None
-channel-type.airparif.olive-level.state.option.1 = Low
-channel-type.airparif.olive-level.state.option.2 = Average
-channel-type.airparif.olive-level.state.option.3 = High
-channel-type.airparif.plane-level.label = Plane
-channel-type.airparif.plane-level.state.option.0 = None
-channel-type.airparif.plane-level.state.option.1 = Low
-channel-type.airparif.plane-level.state.option.2 = Average
-channel-type.airparif.plane-level.state.option.3 = High
-channel-type.airparif.plantain-level.label = Plantain
-channel-type.airparif.plantain-level.state.option.0 = None
-channel-type.airparif.plantain-level.state.option.1 = Low
-channel-type.airparif.plantain-level.state.option.2 = Average
-channel-type.airparif.plantain-level.state.option.3 = High
-channel-type.airparif.poplar-level.label = Poplar
-channel-type.airparif.poplar-level.state.option.0 = None
-channel-type.airparif.poplar-level.state.option.1 = Low
-channel-type.airparif.poplar-level.state.option.2 = Average
-channel-type.airparif.poplar-level.state.option.3 = High
-channel-type.airparif.ragweed-level.label = Ragweed
-channel-type.airparif.ragweed-level.state.option.0 = None
-channel-type.airparif.ragweed-level.state.option.1 = Low
-channel-type.airparif.ragweed-level.state.option.2 = Average
-channel-type.airparif.ragweed-level.state.option.3 = High
-channel-type.airparif.rumex-level.label = Rumex
-channel-type.airparif.rumex-level.state.option.0 = None
-channel-type.airparif.rumex-level.state.option.1 = Low
-channel-type.airparif.rumex-level.state.option.2 = Average
-channel-type.airparif.rumex-level.state.option.3 = High
channel-type.airparif.timestamp.label = Timestamp
-channel-type.airparif.urticaceae-level.label = Urticacea
-channel-type.airparif.urticaceae-level.state.option.0 = None
-channel-type.airparif.urticaceae-level.state.option.1 = Low
-channel-type.airparif.urticaceae-level.state.option.2 = Average
-channel-type.airparif.urticaceae-level.state.option.3 = High
-channel-type.airparif.willow-level.label = Willow
-channel-type.airparif.willow-level.state.option.0 = None
-channel-type.airparif.willow-level.state.option.1 = Low
-channel-type.airparif.willow-level.state.option.2 = Average
-channel-type.airparif.willow-level.state.option.3 = High
-channel-type.airparif.wormwood-level.label = Wormwood
-channel-type.airparif.wormwood-level.state.option.0 = None
-channel-type.airparif.wormwood-level.state.option.1 = Low
-channel-type.airparif.wormwood-level.state.option.2 = Average
-channel-type.airparif.wormwood-level.state.option.3 = High
# channel group types
@@ -213,16 +110,6 @@ channel-type.airparif.ppb-value.label = Measure
thing-type.airparif.location.channel.end-validity.label = End Of Validity
thing-type.airparif.location.channel.end-validity.description = Current bulletin validity ending
-# channel group types
-
-channel-group-type.airparif.pollens-group.label = Pollen information for the region
-channel-group-type.airparif.pollens-group.channel.begin-validity.label = Begin Validity
-channel-group-type.airparif.pollens-group.channel.begin-validity.description = Current bulletin validity start
-channel-group-type.airparif.pollens-group.channel.comment.label = Begin Validity
-channel-group-type.airparif.pollens-group.channel.comment.description = Current bulletin validity start
-channel-group-type.airparif.pollens-group.channel.end-validity.label = End Validity
-channel-group-type.airparif.pollens-group.channel.end-validity.description = Current bulletin validity ending
-
# discovery result
discovery.airparif.location.local.label = Air Quality Report
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/api.xml b/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/api.xml
index 85b54d20a1..ca9806e823 100755
--- a/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/api.xml
+++ b/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/api.xml
@@ -13,7 +13,6 @@
WebService
-
@@ -23,6 +22,10 @@
+
+ 1
+
+
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/channel-groups.xml b/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/channel-groups.xml
index fb2bf70230..7449187014 100644
--- a/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/channel-groups.xml
+++ b/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/channel-groups.xml
@@ -4,24 +4,6 @@
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
-
-
-
-
-
-
- Bulletin validity start
-
-
-
- Bulletin validity end
-
-
-
-
@@ -114,29 +96,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/channels.xml b/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/channels.xml
index 1e8e02e435..559287da1e 100755
--- a/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/channels.xml
+++ b/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/channels.xml
@@ -22,346 +22,6 @@
-
- Number
-
- oh:airparif:hazel
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:birch
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:cypress
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:alder
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:poplar
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:ash
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:olive
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:urticaceae
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:wormwood
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:rumex
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:ragweed
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:grasses
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:plantain
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:chestnut
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:oak
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:linden
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:plane
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:hornbeam
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
-
- Number
-
- oh:airparif:willow
-
- Measurement
- Level
-
-
-
-
-
-
-
-
-
-
-
Number
@@ -398,5 +58,4 @@
-
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/location.xml b/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/location.xml
index 267b05bf5b..10abaaabab 100755
--- a/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/location.xml
+++ b/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/thing/location.xml
@@ -14,7 +14,6 @@
WebService
-
@@ -30,6 +29,10 @@
+
+ 1
+
+
department
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/update/instructions.xml b/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/update/instructions.xml
new file mode 100644
index 0000000000..cbbb773158
--- /dev/null
+++ b/bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/update/instructions.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/alder.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/alder.svg
deleted file mode 100755
index 30cc5e33a0..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/alder.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/ash.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/ash.svg
deleted file mode 100755
index 618f3c0b11..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/ash.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/birch.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/birch.svg
deleted file mode 100755
index 54604c9793..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/birch.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/chestnut.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/chestnut.svg
deleted file mode 100755
index 57f5188ffc..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/chestnut.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/cypress.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/cypress.svg
deleted file mode 100755
index 5311089b19..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/cypress.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/grasses.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/grasses.svg
deleted file mode 100755
index 74ddca07b0..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/grasses.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/hazel.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/hazel.svg
deleted file mode 100755
index acfba4a13e..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/hazel.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/hornbeam.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/hornbeam.svg
deleted file mode 100755
index 501877ee77..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/hornbeam.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/linden.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/linden.svg
deleted file mode 100755
index 7dc5db9eab..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/linden.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/oak.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/oak.svg
deleted file mode 100755
index a7ee6cfd42..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/oak.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/olive.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/olive.svg
deleted file mode 100755
index 820ef168ce..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/olive.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/plane.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/plane.svg
deleted file mode 100755
index ef1bddb7e9..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/plane.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/plantain.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/plantain.svg
deleted file mode 100755
index 8907a5f429..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/plantain.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-0.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-0.svg
deleted file mode 100644
index 2ccad4ff20..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-0.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-1.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-1.svg
deleted file mode 100644
index 17c4bd8248..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-1.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-2.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-2.svg
deleted file mode 100644
index ecde6941f8..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-2.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-3.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-3.svg
deleted file mode 100644
index 38ac475918..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-3.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-4.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-4.svg
deleted file mode 100644
index 693058a527..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-4.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-5.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-5.svg
deleted file mode 100644
index 7168a49cfc..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-5.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen.svg
deleted file mode 100644
index f03f3420d2..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/poplar.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/poplar.svg
deleted file mode 100755
index d582efa92d..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/poplar.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/ragweed.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/ragweed.svg
deleted file mode 100755
index 9da22d6825..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/ragweed.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/rumex.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/rumex.svg
deleted file mode 100755
index 73194f0e80..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/rumex.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/urticaceae.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/urticaceae.svg
deleted file mode 100755
index c1b8b69052..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/urticaceae.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/willow.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/willow.svg
deleted file mode 100755
index 52e6631136..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/willow.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.airparif/src/main/resources/icon/wormwood.svg b/bundles/org.openhab.binding.airparif/src/main/resources/icon/wormwood.svg
deleted file mode 100755
index c8c8c90f6d..0000000000
--- a/bundles/org.openhab.binding.airparif/src/main/resources/icon/wormwood.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-
\ No newline at end of file