Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dmcinnes/MMM-forecast-io

Forecast.io Module for MagicMirror
https://github.com/dmcinnes/MMM-forecast-io

darksky darksky-api forecast magic-mirror-modules magicmirror magicmirror2 raspberry-pi weather

Last synced: 3 months ago
JSON representation

Forecast.io Module for MagicMirror

Awesome Lists containing this project

README

        

# MMM-Forecast-IO
This an extension for [MagicMirror](https://github.com/MichMich/MagicMirror) that adds localized weather using the [Dark Sky API](https://darksky.net/dev/) (originally Forecast.io) -- the same service that powers the [Dark Sky App](https://darksky.net/app/).

This module makes use of the [geolocation API](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/Using_geolocation) 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](#configuration-options)).

Unless running headless in a browser, Geolocation requires setting the [GOOGLE_API_KEY environment variable](https://github.com/electron/electron/blob/master/docs/api/environment-variables.md#google_api_key).

![screenshot](screenshot.png)

## Using the module

To use this module, add it to the modules array in the `config/config.js` file:
````javascript
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
}
}
]
````

## Configuration options




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



showTextSummary
Toggles display of text summary.


Default value: true



showCurrentWeather
Toggles display of current weather.


Default value: true



showIndoorTemperature
If you have another module that emits the INDOOR_TEMPERATURE notification, the indoor temperature will be displayed.


Default value: false



showWind
Toggles display of wind conditions


Default value: true



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



showFeelsLike
Toggles display of the local "feels like" temperature. Feels like is the ambient air temperature, adjusted for relative humidity and wind speed to determine how weather conditions feel to bare skin.


Default value: false



fadeForecast
Toggles fading of last 2 forecast rows.


Default value: false



maxDaysForecast
Limit how many days of weather forecast. Useful values 1-7


Default value: 7



showSunriseSunset
Toggles display of sunrise and sunset times


Default value: true



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



forecastTableFontSize
Sets CSS font style for forecast table. Possible values: 'xsmall', 'small', 'medium', 'large', 'xlarge'


Default value: 'medium'



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



showDailyPrecipitationChance
Toggles display of the precipitation probability for each day.


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'
}