{"id":18071825,"url":"https://github.com/dmcinnes/mmm-forecast-io","last_synced_at":"2025-04-12T03:00:26.052Z","repository":{"id":55366884,"uuid":"64726125","full_name":"dmcinnes/MMM-forecast-io","owner":"dmcinnes","description":"Forecast.io Module for MagicMirror","archived":false,"fork":false,"pushed_at":"2021-01-05T04:03:26.000Z","size":309,"stargazers_count":59,"open_issues_count":6,"forks_count":47,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-25T22:36:36.027Z","etag":null,"topics":["darksky","darksky-api","forecast","magic-mirror-modules","magicmirror","magicmirror2","raspberry-pi","weather"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dmcinnes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-02T05:12:43.000Z","updated_at":"2024-07-09T22:47:55.000Z","dependencies_parsed_at":"2022-08-14T22:40:32.077Z","dependency_job_id":null,"html_url":"https://github.com/dmcinnes/MMM-forecast-io","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmcinnes%2FMMM-forecast-io","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmcinnes%2FMMM-forecast-io/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmcinnes%2FMMM-forecast-io/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmcinnes%2FMMM-forecast-io/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmcinnes","download_url":"https://codeload.github.com/dmcinnes/MMM-forecast-io/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248510006,"owners_count":21116131,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["darksky","darksky-api","forecast","magic-mirror-modules","magicmirror","magicmirror2","raspberry-pi","weather"],"created_at":"2024-10-31T09:17:20.752Z","updated_at":"2025-04-12T03:00:26.015Z","avatar_url":"https://github.com/dmcinnes.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MMM-Forecast-IO\nThis 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/).\n\nThis 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)).\n\nUnless 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).\n\n![screenshot](screenshot.png)\n\n## Using the module\n\nTo use this module, add it to the modules array in the `config/config.js` file:\n````javascript\nmodules: [\n  {\n    module: 'MMM-forecast-io',\n    position: 'top_right',  // This can be any of the regions.\n    config: {\n      // See 'Configuration options' for more information.\n      apiKey: 'abcde12345abcde12345abcde12345ab', // Dark Sky API key.\n      // Only required if geolocation doesn't work:\n      latitude:   16.77532,\n      longitude: -3.008265\n    }\n  }\n]\n````\n\n## Configuration options\n\n\u003ctable width=\"100%\"\u003e\n  \u003c!-- why, markdown... --\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eOption\u003c/th\u003e\n      \u003cth width=\"100%\"\u003eDescription\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003cthead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eapiKey\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eThe \u003ca href=\"https://darksky.net/dev/\" target=\"_blank\"\u003eDark Sky API\u003c/a\u003e key, which can be obtained by creating an Dark Sky API account.\u003cbr\u003e\n        \u003cbr\u003e This value is \u003cb\u003eREQUIRED\u003c/b\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eunits\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eWhat units to use. Specified by config.js\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003ePossible values:\u003c/b\u003e \u003ccode\u003econfig.units\u003c/code\u003e = Specified by config.js, \u003ccode\u003edefault\u003c/code\u003e = Kelvin, \u003ccode\u003emetric\u003c/code\u003e = Celsius, \u003ccode\u003eimperial\u003c/code\u003e =Fahrenheit\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e \u003ccode\u003econfig.units\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003elanguage\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eThe language of the weather text.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003ePossible values:\u003c/b\u003e \u003ccode\u003een\u003c/code\u003e, \u003ccode\u003enl\u003c/code\u003e, \u003ccode\u003eru\u003c/code\u003e, etc ...\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e uses value of \u003ci\u003econfig.language\u003c/i\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eupdateInterval\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eHow often does the content needs to be fetched? (Milliseconds)\u003cbr\u003e\n        \u003cbr\u003eForecast.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.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003ePossible values:\u003c/b\u003e \u003ccode\u003e1000\u003c/code\u003e - \u003ccode\u003e86400000\u003c/code\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e \u003ccode\u003e300000\u003c/code\u003e (5 minutes)\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eanimationSpeed\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eSpeed of the update animation. (Milliseconds)\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003ePossible values:\u003c/b\u003e\u003ccode\u003e0\u003c/code\u003e - \u003ccode\u003e5000\u003c/code\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e \u003ccode\u003e2000\u003c/code\u003e (2 seconds)\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003einitialLoadDelay\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eThe 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)\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003ePossible values:\u003c/b\u003e \u003ccode\u003e1000\u003c/code\u003e - \u003ccode\u003e5000\u003c/code\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003e0\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eretryDelay\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eThe delay before retrying after a request failure. (Milliseconds)\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003ePossible values:\u003c/b\u003e \u003ccode\u003e1000\u003c/code\u003e - \u003ccode\u003e60000\u003c/code\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003e2500\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003elatitude\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eThe latitude location in decimal. Set this (and \u003ccode\u003elongitude\u003c/code\u003e) as the location for the forecast. If this is not set, the module will attempt to approximate using browser geolocation.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eExample value:\u003c/b\u003e \u003ccode\u003e16.77532\u003c/code\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003enull\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003elongitude\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eThe longitude location in decimal. Set this (and \u003ccode\u003elatitude\u003c/code\u003e) as the location for the forecast. If this is not set, the module will attempt to approximate using browser geolocation.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eExample value:\u003c/b\u003e \u003ccode\u003e-3.008265\u003c/code\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003enull\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eshowTextSummary\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eToggles display of text summary.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003etrue\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eshowCurrentWeather\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eToggles display of current weather.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003etrue\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eshowIndoorTemperature\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eIf you have another module that emits the INDOOR_TEMPERATURE notification, the indoor temperature will be displayed.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003efalse\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eshowWind\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eToggles display of wind conditions\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003etrue\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eapiBase\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eThe Dark Sky API base URL.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003e'https://api.darksky.net/forecast'\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eshowForecast\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eToggles display of the seven-day weather forecast.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003etrue\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eshowFeelsLike\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eToggles 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.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003efalse\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003efadeForecast\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eToggles fading of last 2 forecast rows.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003efalse\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003emaxDaysForecast\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eLimit how many days of weather forecast. Useful values 1-7\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003e7\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eshowSunriseSunset\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eToggles display of sunrise and sunset times\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003etrue\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eenablePrecipitationGraph\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eToggles display of the precipitation graph.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003etrue\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003ealwaysShowPrecipitationGraph\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eForce the precipition graph to always show, and not just when it's raining.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003efalse\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n     \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eprecipitationFillColor\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eChoose the color of the precipitation graph. Will accept hex value or color names of Javascript-friendly colors. See \u003ca href=\"http://www.javascripter.net/faq/colornam.htm\"\u003ethis page\u003c/a\u003e for a list of colors. \"dodgerblue\" appears to best mimic the Dark Sky app.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003ewhite\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eprecipitationGraphWidth\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eWidth of the precipitation graph element in pixels. Scales height to match.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003e400\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eforecastTableFontSize\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eSets CSS font style for forecast table. Possible values: \u003ccode\u003e'xsmall'\u003c/code\u003e, \u003ccode\u003e'small'\u003c/code\u003e, \u003ccode\u003e'medium'\u003c/code\u003e, \u003ccode\u003e'large'\u003c/code\u003e, \u003ccode\u003e'xlarge'\u003c/code\u003e\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003e'medium'\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eprecipitationProbabilityThreshold\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eProbability threshold at which rain is rendered onto the precipitation graph.\u003cbr\u003e\n          See the \u003ca href=\"https://darksky.net/dev/docs/response#data-point\"\u003eDarksky.net API documentation\u003c/a\u003e for more details.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003e0.1\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eshowDailyPrecipitationChance\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eToggles display of the precipitation probability for each day.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e  \u003ccode\u003etrue\u003c/code\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003ccode\u003eiconTable\u003c/code\u003e\u003c/td\u003e\n      \u003ctd\u003eThe conversion table to convert the weather conditions to weather-icons.\u003cbr\u003e\n        \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e\u003cpre\u003eiconTable: {\n      'clear-day':           'wi-day-sunny',\n      'clear-night':         'wi-night-clear',\n      'rain':                'wi-rain',\n      'snow':                'wi-snow',\n      'sleet':               'wi-rain-mix',\n      'wind':                'wi-cloudy-gusts',\n      'fog':                 'wi-fog',\n      'cloudy':              'wi-cloudy',\n      'partly-cloudy-day':   'wi-day-cloudy',\n      'partly-cloudy-night': 'wi-night-cloudy',\n      'hail':                'wi-hail',\n      'thunderstorm':        'wi-thunderstorm',\n      'tornado':             'wi-tornado'\n    }\u003c/pre\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmcinnes%2Fmmm-forecast-io","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmcinnes%2Fmmm-forecast-io","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmcinnes%2Fmmm-forecast-io/lists"}