Skip to content

knuckleheadsmiff/homebridge-weather-plus

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

homebridge-weather-plus

npm npm GitHub last commit Weather

This is a weather plugin for homebridge that features current observations, daily forecasts and history graphs for multiple locations and services. You can download it via npm.

Feel free to leave any feedback here.

Features

  • Get current observations and forecasts for up to 10 days
  • Choose from 4 different weather services
  • Add multiple locations/services
  • See the weather history in the Eve App
  • See translations and icons in the Eve App
  • Use all values in HomeKit rules with the Eve App

Observations and Forecasts

The following 19 observation and forecast values can be displayed and used in HomeKit rules.

  • Air Pressure
  • Cloud Cover
  • Condition
  • Condition Category (Sun = 0, Clouds = 1, Rain = 2, Snow = 3)
  • Dew Point
  • Humidity
  • Ozone
  • Rain Last Hour
  • Rain All Day
  • Rain Chance
  • Solar Radiation
  • Temperature
  • Temperature Min
  • Temperature Max
  • UV-Index
  • Visibility
  • Wind Direction
  • Wind Speed
  • Wind Speed Maximum
  • Observation Time
  • Observation Station
  • Forecast day

Choose your Weather Service

This plugin supports multiple weather services. Each has it's own advantages. The following table shows a comparison to help you choosing one.

Dark Sky (recommended) OpenWeatherMap Yahoo (currently offline) Weather Underground
Current observation values 15 7 10 12
Forecast values 16 9 4 0
Forecast days 7 5 10 0
Location geo-coordinates city name, city id, geo-coordinates city name Station ID
Personal weather stations ✔️ ✔️
Free ✔️ ✔️ ✔️ ✔️
Register here here not needed here

You can add more services by forking the project and submitting a pull request.

Installation

  1. Install homebridge using: npm install -g homebridge
  2. Install this plugin using: npm install -g homebridge-weather-plus Note: The installation might take 5 minutes.
  3. Gather an API key for a weather service from the register link in the table above
  4. Update your configuration file. See the samples below.

Configuration

Below are example configurations for all weather apis.

Dark Sky

The key parameter is the API key that you get by registering for the Dark Sky service.

The locationGeo parameter must be a list with the latitude longitude for your location (dont forget the square brackets). You can use this page to find your coordinates: http://www.mapcoordinates.net/en.

"platforms": [
	{
		"platform": "WeatherPlus",
		"name": "WeatherPlus",
		"service": "darksky",
		"key": "XXXXXXXXXXXXXXX",
		"locationGeo": [52.5200066, 13.404954]
	}
]

OpenWeatherMap

The key parameter is the API key that you get by registering for the OpenWeather service

Please choose from one of these location properties.

The location parameter must be a numerical unique city-id (can be found here)

The locationCity parameter must be a city-name with an optional country code e.g. "Berlin, DE" (you can check it here)

The locationGeo parameter must be a list with the latitude longitude for your location (don't forget the square brackets). You can use this page to find your coordinates: http://www.mapcoordinates.net/en.

"platforms": [
	{
		"platform": "WeatherPlus",
		"name": "WeatherPlus",
		"service": "openweathermap",
		"key": "XXXXXXXXXXXXXXX",
		"location": 2950159,
		"locationCity": "Berlin, DE",
		"locationGeo": [52.5200066, 13.404954]
	}
]

Yahoo

The location parameter is a text for finding a location with YQL (see here)

"platforms": [
	{
		"platform": "WeatherPlus",
		"name": "WeatherPlus",
		"service": "yahoo",
		"location": "Berlin, DE",
		"forecast": [1,2,3,4,5,6,7]
	}
]

Weather Underground

This supports the new Weather Underground (Online in Jan 2019.) The old API was turned off by Weather Underground in March 2019 and was replaced with a newer API. The current API, unlike the one it replaced, does not provide forecast data. The location info is also changed, you need to provide a StationID, users who post their own feed data to Weather Underground all have a StationID.

The location parameter is the Weather Underground StationID.

The key parameter is the API key that you get by registering for the Weather Underground service--see https://www.wunderground.com/member/api-keys

"platforms": [
{
"platform": "WeatherPlus",
"name": "WeatherPlus",
"service": "weatherunderground",
"key": "XXXXXXXXXXXXXXX",
"location": "XXX STATION ID XXX"
}
]

Advanced Configuration

Below are explanations for all advanced parameters of this plugin. Most parameters are optional.

The forecast parameter is optional and defines a list of forecast days with 1 for today, 2 for tomorrow etc. Default are none.

The interval parameter is optional and sets the update interval in minutes. The default is 4 minutes because the rate for free API keys is limited. This parameter is global for all weather accessories.

The units parameter is optional and sets the conventions used for reporting values. The default is "metric". This parameter is global for all weather accessories. The choices are:

  • "si" (or "metric")
  • "us" (or "imperial")
  • "ca" to report wind speeds in km/h instead of m/s
  • "uk" to report visibility in miles and wind speeds in km/h instead of m/s

The language parameter is optional and sets the translation for the description of the day and the weather report for each API. Available languages can be found here. The default is en.

The forecast parameter is optional and defines a list of forecast days with 1 for today, 2 for tomorrow etc. The default is none.

The displayName parameter is optional and sets the CurrentConditons accessory's name. The default is "Now". IMPORTANT NOTE: If setting multiple weather accessories, ensure that each accessory has a unique name, or you will get an error from homebridge. If you do not set this parameter the plugin will take care of that.

The displayNameForecast parameter is optional and sets the Forecast accessories name. If the forecast parameter is present, then the names of the forecasts are prefixed with the displayNameForecast parameter. IMPORTANT NOTE: If setting multiple weather accessories, ensure that each accessory has a unique name, or you will get an error from homebridge. If you do not set this parameter the plugin will take care of that.

The currentObservations parameter is optional and sets how the 3 current observations temperature, humidity and pressure are displayed. You can choose one of these 2 options:

  • "eve" (this combines all 3 values into one row in the eve app but shows nothing in the Apple Home app)
  • "normal" (default, this shows all 3 values in a seperate row in the eve app and shows the temperature in the Apple Home app)

The fakegatoParameters parameter is optional. By default, history is persisted on filesystem. You can pass your own parameters to fakegato-history module using this paramter, in order to change the location of the persisted file or use GoogleDrive persistance. See https://github.com/simont77/fakegato-history#file-system and https://github.com/simont77/fakegato-history#google-drive for more info. IMPORTANT NOTE: Do not modify the parameter for the fakegato internal timer.

The serial parameter is optional and sets the Serial Number of the accessory. If it's not provided the serial number will be set to the location if present, or to 999 if not. Note that for proper operation of fakegato when multiple fakegato-enabled weather accessories are present in your system, the serial number must be unique.

Example

"platforms": [
        {
            "platform": "WeatherPlus",
            "name": "WeatherPlus",
            "interval": 5,
            "displayName":"Conditions OWM",
            "displayNameForecast":"Forecast OWM",
            "service": "openweathermap",
            "key": "XXXXXXXXXXXXXXX",
            "forecast": [1,2],
            "locationGeo": [45.4999952, 9.3061655],
            "serial": "OWM"                        
        }
    ]

Multiple Stations Configuration

You can set up multiple stations for different locations and/or weather services by putting your configuration in an stations array. The parameters interval and units are global to all accessories, and must be set at the top level.

Example

"platforms": [
        {
            "platform": "WeatherPlus",
            "name": "WeatherPlus",
            "interval": 5,
            "units": "si",
            "stations":[{
                "displayName":"Conditions OWM",
                "displayNameForecast":"Forecast OWM",
                "service": "openweathermap",
                "key": "XXXXXXXXXXXXXXX",
                "forecast": [1,2],
                "locationGeo": [45.4999952, 9.3061655],
                "serial": "OWM" 
            },{
                "displayName":"Conditions DS",
                "displayNameForecast":"Forecast DS",
                "service": "darksky",
                "key": "XXXXXXXXXXXXXXX",
                "forecast": [1,2],
                "locationGeo": [45.4999952, 9.3061655],
                "serial": "DS"
            }]
        }
    ]

Example Use Cases

  • Switch on a blue light in the morning when the chance for rain is above 20% today (or white when the forecast condition is snow / yellow when it's sunny).
  • Start your automatic garden irrigation in the evening, depending on the amount of rain today and the forecast for tomorrow.

Hint: To trigger rules based on time and weather condition you will need a plugin like homebridge-delay-switch. Create a dummy switch that resets after some seconds. Set this switch to on with a timed rule. Then create a condition rule that triggers when the switch goes on depending on weather conditions of your choice.

Screenshots

Current Conditions in Elgato Eve app History graph in Elgato Eve app

(c) Screenshots are taken from the Elgato Eve app

Contributors

Many thanks go to

  • Kevin Harwood for his original homebridge-weather-station
  • Clark Endrizzi for his wundergroundnode library
  • simont77 for his fakegato-history library, the eve weather emulation, the multiple stations feature and several other great improvements
  • GatoPharaoh for his interval option pull request
  • David Werth for integrating the OpenWeatherMap and Yahoo apis
  • Marshall T. Rose for adding support for imperial units and the displayName parameter
  • Bill Waggoner for his fix for the crashing wunderground api
  • Russell Sonnenschein replacement of obsolete weatherunderground with new one

This plugin is a fork of homebridge-weather-station which is no longer being developed. That one is a fork of homebridge-wunderground.

Attribution

About

A comprehensive weather plugin for homebridge.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%