A MagicMirrorÂē module for displaying weather information from Yandex Weather API v3.
- ðĄïļ Current weather â temperature, "feels like", wind speed/direction
- ð Daily forecast â up to N days with min/max temperatures and icons
- â° Hourly forecast â configurable number of hours (disabled by default)
- ðĻ Customizable display â colored icons, fade effects, table size
- ð Multi-language â Russian and English
- ð Rate limit protection â built-in 30 req/day counter for free tier
Note: Humidity is not available in the Yandex Weather free tier and is not displayed.
- MagicMirrorÂē version 2.1.0 or higher
- Yandex Weather API key (free tier supports up to 30 requests/day)
- Go to Yandex Weather API Console
- Sign in with your Yandex account (or create one)
- Subscribe to the API service and choose a plan (free "Test" plan is available)
- Generate and copy your API key
cd ~/MagicMirror/modules
git clone https://github.com/isemenov/MMM-YandexWeather
cd MMM-YandexWeather
npm install --productioncd ~/MagicMirror/modules/MMM-YandexWeather
git pull
npm install --productionAdd to the modules array in config/config.js:
{
module: 'MMM-YandexWeather',
position: 'top_right',
config: {
apiKey: 'YOUR_YANDEX_WEATHER_API_KEY',
lat: 55.75396, // Your location latitude
lon: 37.620393 // Your location longitude
}
}{
module: 'MMM-YandexWeather',
position: 'top_right',
config: {
// Required
apiKey: 'YOUR_YANDEX_WEATHER_API_KEY',
// Location
lat: 55.75396, // Latitude (Moscow by default)
lon: 37.620393, // Longitude (Moscow by default)
// Update interval â default 3600000 (60 min) = 24 req/day for free tier
updateInterval: 3600000, // 60 minutes
animationSpeed: 1000, // Animation speed in ms
lang: 'ru', // Language: 'ru' or 'en'
// Forecast
showForecast: true, // Show daily forecast
maxNumberOfDays: 7, // Number of forecast days
showHourlyForecast: false, // Show hourly forecast
maxHourlyForecastEntries: 12, // Number of hourly entries
// Display
showFeelsLike: true, // Show "feels like" temperature
showWind: true, // Show wind speed and direction
showDescription: true, // Show weather condition text
roundTemp: true, // Round temperatures to integers
colored: false, // Colored weather icons
fade: true, // Fade out forecast items
fadePoint: 0.25, // Where fading starts (0â1)
tableClass: 'small' // Icon/text size: xsmall, small, medium, large, xlarge
}
}| Option | Type | Default | Description |
|---|---|---|---|
apiKey |
string |
Required | Yandex Weather API key |
lat |
number |
55.75396 |
Location latitude |
lon |
number |
37.620393 |
Location longitude |
updateInterval |
number |
3600000 |
Update interval in ms (60 minutes â see Rate Limits) |
animationSpeed |
number |
1000 |
DOM update animation speed in ms |
lang |
string |
'ru' |
Display language: 'ru' or 'en' |
showForecast |
boolean |
true |
Show daily forecast section |
maxNumberOfDays |
number |
7 |
Number of forecast days to display |
showHourlyForecast |
boolean |
false |
Show hourly forecast section |
maxHourlyForecastEntries |
number |
12 |
Number of hourly entries to display |
showFeelsLike |
boolean |
true |
Show "feels like" temperature |
showWind |
boolean |
true |
Show wind speed and direction |
showDescription |
boolean |
true |
Show weather condition description |
roundTemp |
boolean |
true |
Round temperatures to integers |
colored |
boolean |
false |
Colored weather icons |
fade |
boolean |
true |
Fade out forecast/hourly items |
fadePoint |
number |
0.25 |
Point where fading begins (0â1) |
tableClass |
string |
'small' |
Size class: xsmall, small, medium, large, xlarge |
The Yandex Weather free tier allows 30 requests per day. The module enforces this limit automatically:
- Daily limit: 30 requests (1 request per update â all data in one query)
- Default interval: 60 minutes â 24 requests/day â
- Rate counter: stored in
.api_rate_limit.json, resets at midnight - On limit reached: module shows an error until midnight
All data (current weather, daily forecast, hourly forecast) is fetched in a single GraphQL request regardless of which sections are displayed.
| Interval | ms | Requests/day |
|---|---|---|
| 48 min | 2880000 |
30 â minimum |
| 60 min | 3600000 |
24 â â default |
| 120 min | 7200000 |
12 â |
- Open Google Maps, right-click your location â copy coordinates
- Or use latlong.net
First number = lat, second = lon.
- Check that
apiKeyis set in your config - Verify the key is active in Yandex API Console
- The free tier limit of 30 requests/day has been exhausted
- Module will resume automatically at midnight
- Increase
updateIntervalto prevent this in future
- Verify API key and internet connection
- Check browser console (F12) for errors
- Check MagicMirror logs for backend errors
- This was a known issue with condition names â fixed in v1.0.0
- Ensure you're on the latest version (
git pull)
- Check
updateIntervalsetting - Verify the rate limit hasn't been reached (check
.api_rate_limit.json)
./check.sh # Run all checks
./check.sh --fix # Run checks and auto-fix issues
./check.sh --help # Show usageThe script performs: linting, security audit, outdated dependencies, JSON validation, file checks, code issues detection, and git status.
npm run lint # ESLint check
npm run lint:fix # Auto-fix ESLint issues
npm run check # Run all quality checks
npm run audit # Security audit onlyGitHub Actions workflows run automatically:
- On every PR â linting, audit, structure check across Node.js 18/20/22
- On version tag (
v*.*.*) â quality checks + GitHub Release with archive - Weekly (Monday) â dependency check; creates issue if vulnerabilities found
See .github/workflows/ for details.
Per Yandex Weather API terms: if weather data is publicly displayed, you may be required to show a "Powered by Yandex.Weather" notice. Check the official documentation for current requirements.
- Weather data: Yandex Weather API
- Weather icons: Weather Icons
- MagicMirrorÂē: MagicMirror Project
MIT â see LICENSE.md.
See CHANGELOG.md.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Run
./check.shto ensure code quality - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request â CI checks will run automatically
- Troubleshooting section above
- GitHub Issues
- MagicMirror Forum
