Fork me on GitHub

pimatic-openweather by Jose Castro Leon (josecastroleon) | github | npm

pimatic-openweather

Pimatic Plugin that retrieves the current weather and forecast data on several devices. Important notes:

  • To use this plugin you need to sign up to obtain an API key at openweather.org. The subscription is free of charge.
  • The service API has been changed recently. As part of the location you'll need to provide the 2-letter ISO 3166 country code rather than providing the country name.

Notable Changes with v9.0

  • As some users had problems with sporadic "location not found" errors, the cityId property has been added which allows for setting the location id to work-around the problem
  • The blacklist property has been added to OpenWeatherDevice which allows for defining a list of weather results to ignore as they contain false data
  • The day property default value of the OpenWeatherForecastDevice has been changed to 2 to obtain the forecast for the next day by default. The property denotes the forecast day starting from 1 to 16 where 1 means today.

Configuration

Plugin Configuration

Add the plugin to the plugin section:

{
  "plugin": "openweather",
  "apiKey": "xxxxxxxxxxxxx",
  "debug": false
}

Device Configuration

Then add the device with the location into the devices section:

{
  "id": "weather",
  "class": "OpenWeatherDevice",
  "name": "Weather Geneva",
  "location": "Geneva, CH",
  "units": "metric",
  "lang": "en",
  "timeout": 900000
}

If you need a forecast you can use the following device:

{
  "id": "forecast",
  "class": "OpenWeatherForecastDevice",
  "name": "Forecast 1 day for Geneva",
  "location": "Geneva, CH",
  "units": "metric",
  "lang": "en",
  "timeout": 900000,
  "day": 2
}

Then you can add the items into the mobile frontend.

Hiding Attributes

Attributes can be hidden from the display in the mobile frontend by using the xattributeOptions property as shown in the example below.

{
  "id": "weather",
  "class": "OpenWeatherDevice",
  "name": "Today",
  "location": "Geneva, CH",
  "units": "metric",
  "timeout": 900000,
  "lang": "en",
  "xAttributeOptions": [
    {
      "name": "humidity",
      "hidden": true
    },
    {
      "name": "pressure",
      "hidden": true
    }
  ]
}

Using the Blacklist Feature

Unfortunately, some weather stations emit false weather data. As a result for some locations false data is returned at times. The idea of blacklisting is to filter out such outlier results. A blacklist entry may consist of up to three of the following properties.

  • base: a string indicating an internal identification for the type of weather station network. For example, "cmc stations" refers to the weather stations of the Canadian Meteorological Centre while "stations" appears to be weather stations operated on a private basis. This property is mandatory
  • "id": The weather condition id set in the blacklisted result. This property is optional. If provided, the value match will be ANDed with the remainder of the filter
  • "temperature": The temperature set in the blacklisted result. This property is optional. If provided, the value match will be ANDed with the remainder of the filter

Plugin Config Options

OpenWeather
OptionDescriptionDefault
apiKey
string
API key for openweather service
debug
boolean
Debug mode. Writes debug messages to the pimatic log, if set to true.
false

Device Config Options

pimatic-openweather device config schemas

OpenWeatherDevice

OpenWeatherDevice config options
OptionDescriptionDefault
location
string
City/country
cityId
string
City ID. If provided, data will queried for the given id instead of using the location property
lang
string
Language
"en"
units
string
Units
"metric"
timeout
integer
Timeout between requests
"900000"
timeoutOnError
integer
Timeout between requests if previous request failed
"60000"
blacklist
array of objects
List of weather results to ignore as they contain false data
[]
Elements

OpenWeatherForecastDevice

OpenWeatherForecastDevice config options
OptionDescriptionDefault
location
string
City/country
cityId
string
City ID. If provided, data will queried for the given id instead of using the location property
lang
string
Language
"en"
units
string
Units
"metric"
timeout
integer
Timeout between requests
"900000"
timeoutOnError
integer
Timeout between requests if previous request failed
"60000"
day
integer
day to retrieve forecast for, from 1 to 16 (1=today, 2=tomorrow, ...)
2
pimatic-openweather is written by Jose Castro Leon (josecastroleon)