{"id":24364415,"url":"https://github.com/koblers/mmm-mvg","last_synced_at":"2026-02-17T10:33:04.581Z","repository":{"id":270115522,"uuid":"909374809","full_name":"KoblerS/MMM-MVG","owner":"KoblerS","description":"MagicMirror² Module to monitor public transport (U-Bahn, Tram, Bus, S-Bahn) in Munich","archived":false,"fork":false,"pushed_at":"2025-03-15T22:01:51.000Z","size":759,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T14:48:55.938Z","etag":null,"topics":["magicmirror","mm","module","munich","mvg"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KoblerS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-28T14:11:56.000Z","updated_at":"2025-03-15T22:01:35.000Z","dependencies_parsed_at":"2024-12-28T15:25:53.612Z","dependency_job_id":"c8746020-dad1-44cd-bb37-ded25e91690d","html_url":"https://github.com/KoblerS/MMM-MVG","commit_stats":null,"previous_names":["koblers/mmm-mvg"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KoblerS%2FMMM-MVG","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KoblerS%2FMMM-MVG/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KoblerS%2FMMM-MVG/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KoblerS%2FMMM-MVG/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KoblerS","download_url":"https://codeload.github.com/KoblerS/MMM-MVG/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248216182,"owners_count":21066628,"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":["magicmirror","mm","module","munich","mvg"],"created_at":"2025-01-18T23:53:04.481Z","updated_at":"2026-02-17T10:33:04.545Z","avatar_url":"https://github.com/KoblerS.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MMM-MVG [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/KoblerS/MMM-MVG/raw/master/LICENSE) [![Known Vulnerabiliries](https://snyk.io/test/github/KoblerS/MMM-mvg/badge.svg)](https://snyk.io/test/github/KoblerS/MMM-MVG)\n\nMagicMirror² Module to monitor public transport (U-Bahn, Tram, Bus, S-Bahn) in Munich - Germany.\n\n\u003e [!CAUTION]\n\u003e This magic mirror module is an independent project and is not affiliated with, endorsed by, or associated with MVG (Münchner Verkehrsgesellschaft mbH), the Munich public transportation company. Any use of data or information related to MVG services is for personal, non-commercial purposes and should comply with their terms of use.\n\n## Installation\n1. Clone the module into your MagicMirror module folder and execute `npm install` in the module's directory.\n```bash\ncd ~/MagicMirror/modules\ngit clone https://github.com/KoblerS/MMM-MVG\n```\n\n## Configuration\n\nTo display the module insert it in the config.js file.\n\n### Simple configuration\n```javascript\n{\n    module: \"MMM-MVG\",\n    position: \"bottom_left\",\n    header: \"MVG\",\n    config: {\n        station: \"Hauptbahnhof\",\n        maxEntries: 10,             // 10 items on screen\n        updateInterval: 60000,      // 60 s\n        showIcons: true,            // Show transport type icon\n        transportTypesToShow: {\n            \"ubahn\": true,            // show ubahn route\n            \"sbahn\": true,            // show sbahn route\n            \"bus\": true,              // show bus route\n            \"regional_bus\": true,     // show regional bus route\n            \"tram\": true              // show tram route\n        },\n        ignoreStations: [],         // lines with destination to which should not be shown\n        lineFiltering: {\n            \"active\": true, \t\t\t// set this to active if filtering should be used\n            \"filterType\": \"whitelist\", \t// whitelist = only specified lines will be displayed, blacklist = all lines except specified lines will be displayed\n            \"lineNumbers\": [\"U1\", \"U3\", \"X50\"] // lines that should be on the white-/blacklist\n        },\n        timeToWalk: 10,             // 10 min walking time to station. Default is 0\n        showWalkingTime: false,     // if the walking time should be included and the starting time is displayed\n        showTrainDepartureTime: true,             // show tran departure time\n        trainDepartureTimeFormat: \"relative\",     // format of the train departure time\n        walkingTimeFormat: \"relative\",            // format of the walking time\n        showInterruptions: true,\t\t\t\t    // show interruptions as gray-out rows\n        showInterruptionsDetails: false,\t\t    // show details of interruptions in next line\n        countInterruptionsAsItemShown: false,\t    // count interruptions details lines as a line shown\n    }\n}\n```\n\n## Examples\n\n|     |     |\n| --- | --- |\n|  **Stations names with arrival time**  | ![](.github/Example_1.png) | \n```javascript\nconfig: {\n    station: \"Hauptbahnhof\",\n    maxEntries: 10,             // 10 items on screen\n    updateInterval: 60000,      // 60 s\n    showIcons: false,            // Show transport type icon\n    transportTypesToShow: {\n        \"ubahn\": true,            // show ubahn route\n        \"sbahn\": false,            // show sbahn route\n        \"bus\": false,              // show bus route\n        \"regional_bus\": false,     // show regional bus route\n        \"tram\": false              // show tram route\n    },\n    ignoreStations: [],         // destination not to be shown\n    timeToWalk: 0,             // 10 min walking time to station. Default is 0\n    showWalkingTime: false,     // if the walking time should be included and the starting time is displayed\n    showTrainDepartureTime: true,     // show tran departure time\n    trainDepartureTimeFormat: \"relative\",   // format of the train departure time\n    walkingTimeFormat: \"relative\",    // format of the walking time\n}\n```\n\n|     |     |\n| --- | --- |\n| **Stations names with icons and arrival time** | ![](.github/Example_3.png) |\n```javascript\nconfig: {\n    station: \"Karlsplatz\",\n    maxEntries: 15,             // 10 items on screen\n    updateInterval: 60000,      // 60 s\n    showIcons: true,            // Show transport type icon\n    transportTypesToShow: {\n        \"ubahn\": true,            // show ubahn route\n        \"sbahn\": true,            // show sbahn route\n        \"bus\": false,              // show bus route\n        \"regional_bus\": false,     // show regional bus route\n        \"tram\": true              // show tram route\n    },\n    ignoreStations: [],         // destination not to be shown\n    timeToWalk: 0,             // 10 min walking time to station. Default is 0\n    showWalkingTime: true,     // if the walking time should be included and the starting time is displayed\n    showTrainDepartureTime: true,     // show tran departure time\n    trainDepartureTimeFormat: \"relative\",   // format of the train departure time\n    walkingTimeFormat: \"relative\"    // format of the walking time\n}\n```\n\n|     |     |\n| --- | --- |\n|  **Stations names with icons, arrival time and walking time** | ![](.github/Example_4.png) |\n```javascript\nconfig: {\n    station: \"Karlsplatz\",\n    maxEntries: 15,             // 10 items on screen\n    updateInterval: 60000,      // 60 s\n    showIcons: true,            // Show transport type icon\n    transportTypesToShow: {\n        \"ubahn\": true,            // show ubahn route\n        \"sbahn\": true,            // show sbahn route\n        \"bus\": true,              // show bus route\n        \"regional_bus\": false,     // show regional bus route\n        \"tram\": true              // show tram route\n    },\n    ignoreStations: [],         // destination not to be shown\n    timeToWalk: 0,             // 10 min walking time to station. Default is 0\n    showWalkingTime: true,     // if the walking time should be included and the starting time is displayed\n    showTrainDepartureTime: true,     // show tran departure time\n    trainDepartureTimeFormat: \"absolute\",   // format of the train departure time\n    walkingTimeFormat: \"relative\"    // format of the walking time\n}\n```\n\n|     |     |\n| --- | --- |\n| **Stations names with icons, arrival time and disruption marking** | ![](.github/Example_5.png) |\n```javascript\nconfig: {\n    station: \"Harras\",\n    maxEntries: 10,             // 10 items on screen\n    updateInterval: 60000,      // 60 s\n    showIcons: true,            // Show transport type icon\n    transportTypesToShow: {\n        \"ubahn\": true,            // show ubahn route\n        \"sbahn\": true,            // show sbahn route\n        \"bus\": true,              // show bus route\n        \"regional_bus\": false,     // show regional bus route\n        \"tram\": false              // show tram route\n    },\n    ignoreStations: [],         // destination not to be shown\n    timeToWalk: 0,             // 10 min walking time to station. Default is 0\n    showWalkingTime: false,     // if the walking time should be included and the starting time is displayed\n    showTrainDepartureTime: true,     // show tran departure time\n    trainDepartureTimeFormat: \"absolute\",   // format of the train departure time\n    walkingTimeFormat: \"relative\",    // format of the walking time\n    showInterruptions: true,\n    showInterruptionsDetails: false,\n    countInterruptionsAsItemShown: false\n}\n```\n\n|     |     |\n| --- | --- |\n| **Stations names with icons, arrival time, disruption marking and disruptions details** (disruption details are not counted as new lines)| ![](.github/Example_6.png) |\n```javascript\nconfig: {\n    station: \"Harras\",\n    maxEntries: 10,             // 10 items on screen\n    updateInterval: 60000,      // 60 s\n    showIcons: true,            // Show transport type icon\n    transportTypesToShow: {\n        \"ubahn\": true,            // show ubahn route\n        \"sbahn\": true,            // show sbahn route\n        \"bus\": true,              // show bus route\n        \"regional_bus\": false,     // show regional bus route\n        \"tram\": false              // show tram route\n    },\n    ignoreStations: [],         // destination not to be shown\n    timeToWalk: 0,             // 10 min walking time to station. Default is 0\n    showWalkingTime: false,     // if the walking time should be included and the starting time is displayed\n    showTrainDepartureTime: true,     // show tran departure time\n    trainDepartureTimeFormat: \"absolute\",   // format of the train departure time\n    walkingTimeFormat: \"relative\",    // format of the walking time\n    showInterruptions: true,\n    showInterruptionsDetails: true,\n    countInterruptionsAsItemShown: false\n}\n```\n\n|     |     |\n| --- | --- |\n| **Stations names with icons, arrival time, disruption marking and disruptions details** (disruption details are counted as new lines) | ![](.github/Example_7.png) |\n```javascript\nconfig: {\n    station: \"Harras\",\n    maxEntries: 10,             // 10 items on screen\n    updateInterval: 60000,      // 60 s\n    showIcons: true,            // Show transport type icon\n    transportTypesToShow: {\n        \"ubahn\": true,            // show ubahn route\n        \"sbahn\": true,            // show sbahn route\n        \"bus\": true,              // show bus route\n        \"regional_bus\": false,     // show regional bus route\n        \"tram\": false              // show tram route\n    },\n    ignoreStations: [],         // destination not to be shown\n    timeToWalk: 0,             // 10 min walking time to station. Default is 0\n    showWalkingTime: false,     // if the walking time should be included and the starting time is displayed\n    showTrainDepartureTime: true,     // show tran departure time\n    trainDepartureTimeFormat: \"absolute\",   // format of the train departure time\n    walkingTimeFormat: \"relative\",    // format of the walking time\n    showInterruptions: true,\n    showInterruptionsDetails: true,\n    countInterruptionsAsItemShown: true\n}\n```\n\n## Dependencies\n* instance of [MagicMirror²](https://github.com/MagicMirrorOrg/MagicMirror)\n* Nothing else, module is small and simple! 🙌\n\n## Config Options\n| **Option**        | **Description** |\n| --- | --- |\n| `station`     | Station for which you want to display data. \u003cbr\u003e **Default:** `Hauptbahnhof` \u003cbr\u003e **Source:** https://www.mvg.de/meinhalt.html |\n| `maxEntries`      | Number of items shown in table. \u003cbr\u003e **Default:** `8` |\n| `updateInterval`  | Update interval \u003cbr\u003e **Default:** `60000` |\n| `ubahn`           | Show data for U-Bahn. \u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default:** `true` |\n| `bus`             | Show data for Bus. \u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default:** `true` |\n| `regional_bus`    | Show data for regional Bus. \u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default:** `true` |\n| `tram`            | Show data for Tram. \u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default:** `true` |\n| `sbahn`           | Show data for S-Bahn. \u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default:** `true` |\n| `ignoreStations`  | Ignore destinations based on a array list. \u003cbr\u003e **Possible values e.g.:** `[\"Feldmoching\", \"Hauptbahnhof\"]` \u003cbr\u003e **Default** `[]` |\n| `timeToWalk`      | Time to walk to the station from your current location \u003cbr\u003e **Default:** `0` minutes |\n| `showWalkingTime`  | If the time to leave should be displayed which includes the walking time. \u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default:** `false` |\n| `showTrainDepartureTime` | If the time of train departure should be displayed. \u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default:** `true` |\n| `trainDepartureTimeFormat` | Train departure time format. Absolute: 21:10; Relative: in 8 min; \u003cbr\u003e **Possible values:** `relative` or `absolute` \u003cbr\u003e **Default** `relative` |\n| `walkingTimeFormat` | Walking time format. Absolute: 21:08; Relative in 6 min; \u003cbr\u003e **Possible values:** `relative` or `absolute` \u003cbr\u003e **Default** `relative` |\n| `showInterruptions` | Gray-out lines with interruptions; \u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default** `false` |\n| `showInterruptionsDetails` | Show interruptions details in a new line after the item with interruptions; \u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default** `false` |\n| `countInterruptionsAsItemShown` | Count interruption detail lines as line of a transport (number of lines will not explode in case of many interruptions; \u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default** `false`  |\n| `lineFiltering`.`active` | Flag to activate or deactivate line filtering \u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default** `false`  |\n| `lineFiltering`.`filterType` | Whitelist or blacklist option lines from `lineFiltering`.`lineNumbers` \u003cbr\u003e **Possible values:** `whitelist` or `blacklist` \u003cbr\u003e **Default** `blacklist` |\n| `lineFiltering`.`lineNumbers` | lines that should be on the white-/blacklist \u003cbr\u003e **Possible values** `[\"U1, U3, X50\"]` \u003cbr\u003e **Default value** `[]` |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoblers%2Fmmm-mvg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkoblers%2Fmmm-mvg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoblers%2Fmmm-mvg/lists"}