From 846ed64397c75dcf7d2ceedaed1328b49628ef06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20L=27hopital?= Date: Fri, 13 Mar 2026 11:32:03 +0100 Subject: [PATCH] [airparif] Remove pollens (#20370) * Removing pollen related channels, DTO, documentation, icons. Signed-off-by: gael@lhopital.org --- .../org.openhab.binding.airparif/README.md | 77 +--- .../doc/images/alder.svg | 7 - .../doc/images/ash.svg | 19 - .../doc/images/birch.svg | 5 - .../doc/images/chestnut.svg | 5 - .../doc/images/cypress.svg | 11 - .../doc/images/grasses.svg | 5 - .../doc/images/hazel.svg | 17 - .../doc/images/hornbeam.svg | 11 - .../doc/images/linden.svg | 8 - .../doc/images/oak.svg | 5 - .../doc/images/olive.svg | 5 - .../doc/images/plane.svg | 5 - .../doc/images/plantain.svg | 11 - .../doc/images/pollen.svg | 6 - .../doc/images/poplar.svg | 5 - .../doc/images/ragweed.svg | 14 - .../doc/images/rumex.svg | 5 - .../doc/images/urticaceae.svg | 14 - .../doc/images/willow.svg | 5 - .../doc/images/wormwood.svg | 13 - .../internal/AirParifBindingConstants.java | 1 - .../internal/AirParifIconProvider.java | 22 +- .../airparif/internal/api/AirParifApi.java | 54 --- .../airparif/internal/api/AirParifDto.java | 88 +---- .../internal/api/PollenAlertLevel.java | 51 --- .../deserialization/AirParifDeserializer.java | 2 - .../PollenAlertLevelDeserializer.java | 46 --- .../handler/AirParifBridgeHandler.java | 54 +-- .../internal/handler/LocationHandler.java | 29 +- .../resources/OH-INF/i18n/airparif.properties | 113 ------ .../src/main/resources/OH-INF/thing/api.xml | 5 +- .../resources/OH-INF/thing/channel-groups.xml | 43 --- .../main/resources/OH-INF/thing/channels.xml | 341 ------------------ .../main/resources/OH-INF/thing/location.xml | 5 +- .../resources/OH-INF/update/instructions.xml | 42 +++ .../src/main/resources/icon/alder.svg | 7 - .../src/main/resources/icon/ash.svg | 19 - .../src/main/resources/icon/birch.svg | 5 - .../src/main/resources/icon/chestnut.svg | 5 - .../src/main/resources/icon/cypress.svg | 11 - .../src/main/resources/icon/grasses.svg | 5 - .../src/main/resources/icon/hazel.svg | 17 - .../src/main/resources/icon/hornbeam.svg | 11 - .../src/main/resources/icon/linden.svg | 8 - .../src/main/resources/icon/oak.svg | 5 - .../src/main/resources/icon/olive.svg | 5 - .../src/main/resources/icon/plane.svg | 5 - .../src/main/resources/icon/plantain.svg | 11 - .../src/main/resources/icon/pollen-0.svg | 5 - .../src/main/resources/icon/pollen-1.svg | 5 - .../src/main/resources/icon/pollen-2.svg | 5 - .../src/main/resources/icon/pollen-3.svg | 5 - .../src/main/resources/icon/pollen-4.svg | 5 - .../src/main/resources/icon/pollen-5.svg | 5 - .../src/main/resources/icon/pollen.svg | 6 - .../src/main/resources/icon/poplar.svg | 5 - .../src/main/resources/icon/ragweed.svg | 14 - .../src/main/resources/icon/rumex.svg | 5 - .../src/main/resources/icon/urticaceae.svg | 14 - .../src/main/resources/icon/willow.svg | 5 - .../src/main/resources/icon/wormwood.svg | 13 - 62 files changed, 69 insertions(+), 1286 deletions(-) delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/alder.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/ash.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/birch.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/chestnut.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/cypress.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/grasses.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/hazel.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/hornbeam.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/linden.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/oak.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/olive.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/plane.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/plantain.svg delete mode 100644 bundles/org.openhab.binding.airparif/doc/images/pollen.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/poplar.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/ragweed.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/rumex.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/urticaceae.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/willow.svg delete mode 100755 bundles/org.openhab.binding.airparif/doc/images/wormwood.svg delete mode 100644 bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/api/PollenAlertLevel.java delete mode 100644 bundles/org.openhab.binding.airparif/src/main/java/org/openhab/binding/airparif/internal/deserialization/PollenAlertLevelDeserializer.java create mode 100644 bundles/org.openhab.binding.airparif/src/main/resources/OH-INF/update/instructions.xml delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/alder.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/ash.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/birch.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/chestnut.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/cypress.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/grasses.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/hazel.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/hornbeam.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/linden.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/oak.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/olive.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/plane.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/plantain.svg delete mode 100644 bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-0.svg delete mode 100644 bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-1.svg delete mode 100644 bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-2.svg delete mode 100644 bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-3.svg delete mode 100644 bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-4.svg delete mode 100644 bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen-5.svg delete mode 100644 bundles/org.openhab.binding.airparif/src/main/resources/icon/pollen.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/poplar.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/ragweed.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/rumex.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/urticaceae.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/willow.svg delete mode 100755 bundles/org.openhab.binding.airparif/src/main/resources/icon/wormwood.svg 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 | ![Air Quality](doc/images/aq.svg) | -| oh:airparif:pollen | Yes | ![Air Quality](doc/images/pollen.svg) | -| oh:airparif:alder | Yes | ![Alder](doc/images/alder.svg) | -| oh:airparif:ash | Yes | ![Ash](doc/images/ash.svg) | -| oh:airparif:birch | Yes | ![Birch](doc/images/birch.svg) | -| oh:airparif:chestnut | Yes | ![Chestnut](doc/images/chestnut.svg) | -| oh:airparif:cypress | Yes | ![Cypress](doc/images/cypress.svg) | -| oh:airparif:grasses | Yes | ![Grasses](doc/images/grasses.svg) | -| oh:airparif:hazel | Yes | ![Hazel](doc/images/hazel.svg) | -| oh:airparif:hornbeam | Yes | ![Hornbeam](doc/images/hornbeam.svg) | -| oh:airparif:linden | Yes | ![Linden](doc/images/linden.svg) | -| oh:airparif:oak | Yes | ![Oak](doc/images/oak.svg) | -| oh:airparif:olive | Yes | ![Olive](doc/images/olive.svg) | -| oh:airparif:plane | Yes | ![Plane](doc/images/plane.svg) | -| oh:airparif:plantain | Yes | ![Plantain](doc/images/plantain.svg) | -| oh:airparif:poplar | Yes | ![Poplar](doc/images/poplar.svg) | -| oh:airparif:ragweed | Yes | ![Ragweed](doc/images/ragweed.svg) | -| oh:airparif:rumex | Yes | ![Rumex](doc/images/rumex.svg) | -| oh:airparif:urticaceae | Yes | ![Urticaceae](doc/images/urticaceae.svg) | -| oh:airparif:willow | Yes | ![Willow](doc/images/willow.svg) | -| oh:airparif:wormwood | Yes | ![Wormwood](doc/images/wormwood.svg) | ## 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"> - - - - - - Current pollens situation - - - - 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