Air Quality Binding - looking for testers

@AndrewZ check your configuration in *.things file or in PaperUI. I checked my own configs just now and everything seems to run smoothly.

Air Quality Binding is now a part of openhab2-addons!

Thank you everyone for testing, improving and reviewing my code!
You no longer need to place a JAR file - just update your openHAB! :sunglasses:


Regarding the binding itself, a few breaking changes:

  1. Location configuration no longer understands semicolon - you need to use comma instead (which is now compliant with other bindings)
  2. Iā€™ve removed stationUrl channel - I couldnā€™t find any reason to keep it. Let me know if you find any use case for it!
  3. Aqi_StationGeo item (and stationLocation channel) is now a Location element (instead of String) which allows you to display it on a map
2 Likes

@kubawolanin Iā€™m using the same configuration for quite some time already and this error appears sporadically. I suppose this is how binding reacts to the invalid response from the server. Iā€™ll probably need to keep debug on for a longer period.

I have updated to unstable Build #789 but the new binding is not available in Paper UI and it doesnā€™t install through my addons.cfg. Whatā€™s wrong?

Iā€™m on build #798 - my binding is there :slight_smile:

I did a sudo apt-get update && sudo apt-get upgrade and the latest build was 789 (in the karaf screen). Thatā€™s weird.

You might have missed The Linux snapshot installation repo has moved!?

1 Like

Hello!

Iā€™ve just installed Air Quality Binding and registered on their site, but Iā€™m unable to find Station ID there. I would like to use the binding with the Station ID, rather then geolocation, because there is a significant difference in the air pollution between stations (and neighborhoods). Namely, I would like to find the Station ID for Sarajevo, Otoka station.

Best regards,
Davor

How to manually get Station ID of Air Quality Index

@davorf yeah, I didnā€™t find any convenient way to get Station ID from AQIcn.
If youā€™d like to get your hands dirty, you can go diretly to the measurement URL, eg

And then you need to view source of the page by either Ctrl + U or right click and ā€œView sourceā€ option.

After that, search for aqisrv.obs(' string.
9272 should be your Station ID :slight_smile:

Iā€™ll contact AQIcn and see if they offer any API for getting Station ID easily.

Cheers,
K

1 Like

Hello!

Thank you for the information. And thank you for all the work on this binding.

Best regards,
Davor

I have an item definition like this:

Location Aqi_StationLocation "Meetstation locatie [%s]" <text> (gAirQuality) { channel="airquality:aqi:home:stationLocation" }

The channel is updated, but the item stays at NULL and is never updated.

The debug log shows the channel as a String type, not location:

13:49:13.320 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel stationLocation with state 4.58007,51.86942 (String)

Am I doing something wrong, or should I report an issue in the repo?

part of the log:

13:49:13.063 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_Index changed from NULL to 54
13:49:13.065 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel aqiLevel with state 54 (Integer)
13:49:13.076 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel aqiLevel with state 54 (Integer)
13:49:13.094 [INFO ] [home.event.ItemChannelLinkAddedEvent] - Link 'Aqi_Index-airquality:aqi:home:aqiLevel' has been added.
13:49:13.098 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_Level changed from NULL to MODERATE
13:49:13.101 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel aqiDescription with state MODERATE (String)
13:49:13.119 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel aqiDescription with state MODERATE (String)
13:49:13.138 [INFO ] [home.event.ItemChannelLinkAddedEvent] - Link 'Aqi_Level-airquality:aqi:home:aqiDescription' has been added.
13:49:13.144 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_Pm25 changed from NULL to 54
13:49:13.145 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel pm25 with state 54 (BigDecimal)
13:49:13.155 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel pm25 with state 54 (BigDecimal)
13:49:13.172 [INFO ] [home.event.ItemChannelLinkAddedEvent] - Link 'Aqi_Pm25-airquality:aqi:home:pm25' has been added.
13:49:13.179 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_Pm10 changed from NULL to 19
13:49:13.178 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel pm10 with state 19 (BigDecimal)
13:49:13.189 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel pm10 with state 19 (BigDecimal)
13:49:13.211 [INFO ] [home.event.ItemChannelLinkAddedEvent] - Link 'Aqi_Pm10-airquality:aqi:home:pm10' has been added.
13:49:13.212 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel o3 with state 9.6 (BigDecimal)
13:49:13.218 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_O3 changed from NULL to 9.6
13:49:13.225 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel o3 with state 9.6 (BigDecimal)
13:49:13.242 [INFO ] [home.event.ItemChannelLinkAddedEvent] - Link 'Aqi_O3-airquality:aqi:home:o3' has been added.
13:49:13.249 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_No2 changed from NULL to 23
13:49:13.252 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel no2 with state 23 (BigDecimal)
13:49:13.262 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel no2 with state 23 (BigDecimal)
13:49:13.278 [DEBUG] [airquality.handler.AirQualityHandler] - Station doesn't provide CO measurement
13:49:13.281 [INFO ] [home.event.ItemChannelLinkAddedEvent] - Link 'Aqi_No2-airquality:aqi:home:no2' has been added.
13:49:13.283 [DEBUG] [airquality.handler.AirQualityHandler] - Station doesn't provide CO measurement
13:49:13.291 [INFO ] [home.event.ItemChannelLinkAddedEvent] - Link 'Aqi_Co-airquality:aqi:home:co' has been added.
13:49:13.295 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel locationName with state Hogeweg, Ridderkerk (String)
13:49:13.298 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_LocationName changed from NULL to Hogeweg, Ridderkerk
13:49:13.305 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel locationName with state Hogeweg, Ridderkerk (String)
13:49:13.318 [INFO ] [home.event.ItemChannelLinkAddedEvent] - Link 'Aqi_LocationName-airquality:aqi:home:locationName' has been added.
13:49:13.320 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel stationLocation with state 4.58007,51.86942 (String)
13:49:13.332 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel stationLocation with state 4.58007,51.86942 (String)
13:49:13.346 [INFO ] [home.event.ItemChannelLinkAddedEvent] - Link 'Aqi_StationLocation-airquality:aqi:home:stationLocation' has been added.
13:49:13.351 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel observationTime with state 2017-02-17T13:00:00.000+0100 (GregorianCalendar)
13:49:13.356 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_ObservationTime changed from NULL to 2017-02-17T13:00:00.000+0100
13:49:13.364 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel observationTime with state 2017-02-17T13:00:00.000+0100 (GregorianCalendar)
13:49:13.381 [INFO ] [home.event.ItemChannelLinkAddedEvent] - Link 'Aqi_ObservationTime-airquality:aqi:home:observationTime' has been added.
13:49:14.680 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_ObservationTime changed from NULL to 2017-02-17T13:00:00.000+0100
13:49:14.688 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel observationTime with state 2017-02-17T13:00:00.000+0100 (GregorianCalendar)
13:49:14.756 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_No2 changed from NULL to 23
13:49:14.766 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel no2 with state 23 (BigDecimal)
13:49:14.805 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_LastUpdate changed from NULL to 2017-02-17T13:46:49.821+0100
13:49:14.850 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_LocationName changed from NULL to Hogeweg, Ridderkerk
13:49:14.857 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel locationName with state Hogeweg, Ridderkerk (String)
13:49:14.873 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel stationLocation with state 4.58007,51.86942 (String)
13:49:14.948 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_O3 changed from NULL to 9.6
13:49:14.952 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel o3 with state 9.6 (BigDecimal)
13:49:14.966 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_Level changed from NULL to MODERATE
13:49:14.975 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel aqiDescription with state MODERATE (String)
13:49:15.036 [DEBUG] [airquality.handler.AirQualityHandler] - Station doesn't provide CO measurement
13:49:15.054 [INFO ] [ome.event.GroupItemStateChangedEvent] - gAirQuality changed from 140 to UNDEF through Aqi_Pm10
13:49:15.056 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_Pm10 changed from NULL to 19
13:49:15.060 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel pm10 with state 19 (BigDecimal)
13:49:15.113 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_Index changed from NULL to 54
13:49:15.120 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel aqiLevel with state 54 (Integer)
13:49:15.163 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_LastUpdate changed from 2017-02-17T13:46:49.821+0100 to 2017-02-17T13:49:15.149+0100
13:49:15.246 [INFO ] [marthome.event.ItemStateChangedEvent] - Aqi_Pm25 changed from NULL to 54
13:49:15.252 [DEBUG] [airquality.handler.AirQualityHandler] - Update channel pm25 with state 54 (BigDecimal)

Hello @kubawolanin

I would like to make a MAP file for the air quality description, but Iā€™m not sure what values does it return? Do you have a list of the possible descriptions? Thank you in advance.

Best regards,
Davor

Hey @davorf,
You can find them in the documentation:
http://docs.openhab.org/addons/bindings/airquality/readme.html#full-example

Cheers!
K

1 Like

Hello!

Thank you for the quick reply.

Best regards,
Davor

@kubawolanin it seems that this error is caused by the server response like this:

ā€œaqiā€:ā€œ-ā€

Kuba, could you please check and adjust the error handling if possible?
Thanks!

Hello @kubawolanin

Iā€™ve just installed latest snapshot (2.1.0 nightly build #838), and the Air Quality Binding isnā€™t automatically installed (nor I could find it in the add-ons list). Do you know if itā€™s removed from the official build?

Best regards,
Davor

I installed air quality add-on as per the instructions on the bindings reference page. I am using the location settings for things. The airquality.things is parsed correctly but i donā€™t see any values. I am using the sitemap as in the documentation here2

i checked running the api directly with the key and the location settings and the it is returning the correct values.

In the logs, i donā€™t see the data getting queried. Do i have to any settings for scheduling the fetching of data?

@manu74 could you please enable debug for that binding from karaf console

Hi Andew,

I enabled debug logging for the airquality binding in karaf using the command below

openhab> log:set DEBUG org.openhab.binding.airquality

After that I edited the airquality.things configuration and reduced the frequency of update to 5 mins. The file is parsed correctly as shown below in the log.

16:26:44.026 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'airquality.things'

But i didnā€™t see any activity in the log file for this binding. I restarted openhab and still no information on loading of the binding or scheduling of the refreshing of data (how it shows for astro).

Not sure whether i am missing any important setup step. I rechecked my configuration against binding instructions and they seem to be fine.

@manu74 do you have the binding installed?

in your addons.cfg you should have airquality added on binding = line

i have the airquality in addons.cfg but while loading the bindings, it is not getting activated. Let me reinstall from scratch and check again