Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including pimatic-openweather with all npm packages installed. Try it out:

require("pimatic/package.json"); // pimatic is a peer dependency. var pimaticOpenweather = require("pimatic-openweather")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

pimatic-openweather v0.9.4

Imports weather data as devices

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
RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free