This an extension for MagicMirror that adds localized weather using the Dark Sky API (originally Forecast.io) -- the same service that powers the Dark Sky App.
This module makes use of the geolocation API to determine the location of the mirror. This can be turned off by setting latitude
and longitude
in the module's config (see Configuration options below).
Unfortunately, Geolocation will currently not work with MagicMirror's Electron-based browser wrapper because of a known issue: electron/electron#6648 If you are using MagicMirror headless with your own browser this shouldn't be a problem.
Note also that the graph is based on degrees fahrenheit. If you use another unit, you will probably have to adjust the code for proper vertical scaling.
This module uses white icons by default. If you prefer color coded icons, merge the contents of the "Color-icons.md" file into your "css\custom.css" file.
To use this module, add it to the modules array in the config/config.js
file:
modules: [
{
module: 'MMM-forecast-io',
position: 'top_right', // This can be any of the regions.
config: {
// See 'Configuration options' for more information.
apiKey: 'abcde12345abcde12345abcde12345ab', // Dark Sky API key.
updateInterval: 900000, // 15 minutes
showWind: true,
showSunrise: true,
showSummary: true,
showPrecipitationGraph: true,
showForecast: true,
// Only required if geolocation doesn't work:
latitude: 16.77532,
longitude: -3.008265
}
}
]
Option | Description |
---|---|
apiKey |
The Dark Sky API key, which can be obtained by creating an Dark Sky API account. This value is REQUIRED |
units |
What units to use. Specified by config.js Possible values: config.units = Specified by config.js, default = Kelvin, metric = Celsius, imperial =Fahrenheit
Default value: config.units
|
language |
The language of the weather text. Possible values: en , nl , ru , etc ...
Default value: uses value of config.language |
updateInterval |
How often does the content needs to be fetched? (Milliseconds) Forecast.io enforces a 1,000/day request limit, so if you run your mirror constantly, anything below 90,000 (every 1.5 minutes) may require payment information or be blocked. Possible values: 1000 - 86400000
Default value: 300000 (5 minutes)
|
animationSpeed |
Speed of the update animation. (Milliseconds) Possible values: 0 - 5000
Default value: 2000 (2 seconds)
|
initialLoadDelay |
The initial delay before loading. If you have multiple modules that use the same API key, you might want to delay one of the requests. (Milliseconds) Possible values: 1000 - 5000
Default value: 0
|
retryDelay |
The delay before retrying after a request failure. (Milliseconds) Possible values: 1000 - 60000
Default value: 2500
|
latitude |
The latitude location in decimal. Set this (and longitude ) as the location for the forecast. If this is not set, the module will attempt to approximate using browser geolocation.Example value: 16.77532
Default value: null
|
longitude |
The longitude location in decimal. Set this (and latitude ) as the location for the forecast. If this is not set, the module will attempt to approximate using browser geolocation.Example value: -3.008265
Default value: null
|
apiBase |
The Dark Sky API base URL. Default value: 'https://api.darksky.net/forecast'
|
showForcast |
Toggles display of the seven-day weather forecast list. Default value: true
|
showPrecipitationGraph |
Toggles display of the precipitation graph. Default value: true
|
precipitationGraphWidth |
Width of the precipitation graph element in pixels. Default value: 400
|
precipitationGraphHeight |
Height of the precipitation graph element in pixels. Default value: 400
|
showWind |
Toggles display of current wind speed next. Default value: true
|
showSunrise |
Toggles display of next sunrise or sunset time. Default value: true
|
showSummary |
Toggles display of next hour's weather summary text. Default value: true
|
iconTable |
The conversion table to convert the weather conditions to weather-icons. Default value: iconTable: { 'clear-day': 'wi-day-sunny', 'clear-night': 'wi-night-clear', 'rain': 'wi-rain', 'snow': 'wi-snow', 'sleet': 'wi-rain-mix', 'wind': 'wi-cloudy-gusts', 'fog': 'wi-fog', 'cloudy': 'wi-cloudy', 'partly-cloudy-day': 'wi-day-cloudy', 'partly-cloudy-night': 'wi-night-cloudy', 'hail': 'wi-hail', 'thunderstorm': 'wi-thunderstorm', 'tornado': 'wi-tornado' } |
This module makes use of the geolocation API to determine the location of the mirror. This can be turned off by setting latitude
and longitude
in the module's config (see Configuration options below).
Unless running headless in a browser, Geolocation requires setting the GOOGLE_API_KEY environment variable.
To use this module, add it to the modules array in the config/config.js
file:
modules: [
{
module: 'MMM-forecast-io',
position: 'top_right', // This can be any of the regions.
config: {
// See 'Configuration options' for more information.
apiKey: 'abcde12345abcde12345abcde12345ab', // Dark Sky API key.
// Only required if geolocation doesn't work:
latitude: 16.77532,
longitude: -3.008265
}
}
]
Small test for Slack integration.
Option | Description |
---|---|
apiKey |
The Dark Sky API key, which can be obtained by creating an Dark Sky API account. This value is REQUIRED |
units |
What units to use. Specified by config.js Possible values: config.units = Specified by config.js, default = Kelvin, metric = Celsius, imperial =Fahrenheit
Default value: config.units
|
language |
The language of the weather text. Possible values: en , nl , ru , etc ...
Default value: uses value of config.language |
updateInterval |
How often does the content needs to be fetched? (Milliseconds) Forecast.io enforces a 1,000/day request limit, so if you run your mirror constantly, anything below 90,000 (every 1.5 minutes) may require payment information or be blocked. Possible values: 1000 - 86400000
Default value: 300000 (5 minutes)
|
animationSpeed |
Speed of the update animation. (Milliseconds) Possible values: 0 - 5000
Default value: 2000 (2 seconds)
|
initialLoadDelay |
The initial delay before loading. If you have multiple modules that use the same API key, you might want to delay one of the requests. (Milliseconds) Possible values: 1000 - 5000
Default value: 0
|
retryDelay |
The delay before retrying after a request failure. (Milliseconds) Possible values: 1000 - 60000
Default value: 2500
|
latitude |
The latitude location in decimal. Set this (and longitude ) as the location for the forecast. If this is not set, the module will attempt to approximate using browser geolocation.Example value: 16.77532
Default value: null
|
longitude |
The longitude location in decimal. Set this (and latitude ) as the location for the forecast. If this is not set, the module will attempt to approximate using browser geolocation.Example value: -3.008265
Default value: null
|
apiBase |
The Dark Sky API base URL. Default value: 'https://api.darksky.net/forecast'
|
showForecast |
Toggles display of the seven-day weather forecast. Default value: true
|
maxDaysForecast |
Limit how many days of weather forecast. Useful values 1-7 Default value: 7
|
enablePrecipitationGraph |
Toggles display of the precipitation graph. Default value: true
|
alwaysShowPrecipitationGraph |
Force the precipition graph to always show, and not just when it's raining. Default value: false
|
precipitationFillColor |
Choose the color of the precipitation graph. Will accept hex value or color names of Javascript-friendly colors. See this page for a list of colors. "dodgerblue" appears to best mimic the Dark Sky app. Default value: white
|
precipitationGraphWidth |
Width of the precipitation graph element in pixels. Scales height to match. Default value: 400
|
precipitationProbabilityThreshold |
Probability threshold at which rain is rendered onto the precipitation graph. See the Darksky.net API documentation for more details. Default value: 0.1
|
iconTable |
The conversion table to convert the weather conditions to weather-icons. Default value: iconTable: { 'clear-day': 'wi-day-sunny', 'clear-night': 'wi-night-clear', 'rain': 'wi-rain', 'snow': 'wi-snow', 'sleet': 'wi-rain-mix', 'wind': 'wi-cloudy-gusts', 'fog': 'wi-fog', 'cloudy': 'wi-cloudy', 'partly-cloudy-day': 'wi-day-cloudy', 'partly-cloudy-night': 'wi-night-cloudy', 'hail': 'wi-hail', 'thunderstorm': 'wi-thunderstorm', 'tornado': 'wi-tornado' } |