{"id":13830517,"url":"https://github.com/basti0001/MMM-iHaveBeenThere","last_synced_at":"2025-07-09T12:30:36.186Z","repository":{"id":55110118,"uuid":"77319366","full_name":"basti0001/MMM-iHaveBeenThere","owner":"basti0001","description":"A module to visulize where one has been traveled for ","archived":false,"fork":false,"pushed_at":"2025-04-21T08:51:37.000Z","size":23620,"stargazers_count":19,"open_issues_count":2,"forks_count":8,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-21T09:44:53.632Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://github.com/MichMich/MagicMirror","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/basti0001.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-25T09:32:20.000Z","updated_at":"2025-04-21T08:51:45.000Z","dependencies_parsed_at":"2024-11-20T12:07:11.330Z","dependency_job_id":null,"html_url":"https://github.com/basti0001/MMM-iHaveBeenThere","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/basti0001/MMM-iHaveBeenThere","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basti0001%2FMMM-iHaveBeenThere","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basti0001%2FMMM-iHaveBeenThere/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basti0001%2FMMM-iHaveBeenThere/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basti0001%2FMMM-iHaveBeenThere/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/basti0001","download_url":"https://codeload.github.com/basti0001/MMM-iHaveBeenThere/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basti0001%2FMMM-iHaveBeenThere/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264458061,"owners_count":23611475,"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":[],"created_at":"2024-08-04T10:01:01.381Z","updated_at":"2025-07-09T12:30:36.181Z","avatar_url":"https://github.com/basti0001.png","language":"JavaScript","funding_links":[],"categories":["Travel"],"sub_categories":[],"readme":"# MMM-iHaveBeenThere\n\n**MMM-iHaveBeenThere** is a module for MagicMirror² to visualize where one has been traveled.\n\nIt can draw a worldmap or a world section with points of interest (POI). The POI's are linked with a line and an animated plane can fly from the your home origin to you poi where you have been.\n\nThis can be used to show your traveled places in the world. Pretty fancy ;-)\n\n![screenshot](picture/example.png)\n\n## Dependencies\n\n- [Amcharts](https://www.amcharts.com/demos/), many thanks to Martynas Majeris\n- [MagicMirror²](https://github.com/MagicMirrorOrg/MagicMirror)\n\n## Installation\n\n1. clone this repo into the modules directory and install the dependencies:\n\n   ```bash\n   cd ~/MagicMirror/modules\n   git clone https://github.com/basti0001/MMM-iHaveBeenThere\n   cd MMM-iHaveBeenThere\n   npm install\n   ```\n\n2. create a config (see below).\n3. add your gps coordinates.\n4. done!\n\n## Configuration options\n\n\u003ctable width=\"100%\"\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\u003etitle\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003eThe title of the world chart.\u003cbr\u003e\n    \u003cbr\u003e\u003cb\u003eValues:\u003c/b\u003e \u003ccode\u003estring\u003c/code\u003e, see \u003ci\u003eMMM-iHaveBeenThere configuration\u003c/i\u003e below.\n    \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e \u003ci\u003eAn example world.\u003c/i\u003e\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003eAnimationEnabled\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003eenable/disable the plane animation.\u003cbr\u003e\n    \u003cbr\u003e\u003cb\u003eValues:\u003c/b\u003e \u003ccode\u003etrue\u003c/code\u003e or \u003ccode\u003efalse\u003c/code\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\u003epauseDuration\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003eTime in s how long the plane stays at a point if animation is enabled.\u003cbr\u003e\n    \u003cbr\u003e\u003cb\u003eValues:\u003c/b\u003e \u003ccode\u003e0.0\u003c/code\u003e or \u003ccode\u003eany\u003c/code\u003e\n    \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e \u003ccode\u003e3.0\u003c/code\u003e\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003eanimationDuration\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003eTime in s how long the plane flies from point to point if animation is enabled.\u003cbr\u003e\n    \u003cbr\u003e\u003cb\u003eValues:\u003c/b\u003e \u003ccode\u003e0.0\u003c/code\u003e or \u003ccode\u003eany\u003c/code\u003e\n    \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e \u003ccode\u003e10.0\u003c/code\u003e\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003ezoomLevel\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003eSet map region parameter.\u003cbr\u003e\n    \u003cbr\u003e\u003cb\u003eValues:\u003c/b\u003e \u003ccode\u003e0.0\u003c/code\u003e or \u003ccode\u003eany\u003c/code\u003e\n    \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e \u003ccode\u003e5.4\u003c/code\u003efor central europe.\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003ezoomLongitude\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003eSet map region parameter.\u003cbr\u003e\n    \u003cbr\u003e\u003cb\u003eValues:\u003c/b\u003e \u003ccode\u003e0.0\u003c/code\u003e or \u003ccode\u003eany\u003c/code\u003e\n    \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e \u003ccode\u003e-2.0\u003c/code\u003efor central europe.\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003eanimationDuration\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003eSet map region parameter.\u003cbr\u003e\n    \u003cbr\u003e\u003cb\u003eValues:\u003c/b\u003e \u003ccode\u003e0.0\u003c/code\u003e or \u003ccode\u003eany\u003c/code\u003e\n    \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e \u003ccode\u003e46.0\u003c/code\u003efor central europe.\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003ehome_lat, home_lon\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003eLatitude/longitude of the your home.\u003cbr\u003e\n    \u003cbr\u003e\u003cb\u003eValues:\u003c/b\u003e \u003ccode\u003efloat\u003c/code\u003e\n    \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e e.g. lat \u003ccode\u003e48.1548256\u003c/code\u003efor munich.\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003ehome_desc\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003eYour Homename.\u003cbr\u003e\n    \u003cbr\u003e\u003cb\u003eValues:\u003c/b\u003e \u003ccode\u003estring\u003c/code\u003e\n    \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e \u003ccode\u003e\"München\"\u003c/code\u003eFor munich.\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003eaway_lat, away_lon\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003eLatitude/longitude of destinations you have visited.\u003cbr\u003e\n    \u003cbr\u003e\u003cb\u003eValues:\u003c/b\u003e \u003ccode\u003earray[float]\u003c/code\u003e\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003eaway_desc\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003eCity/Country names of destinations you have visited.\u003cbr\u003e\n    \u003cbr\u003e\u003cb\u003eValues:\u003c/b\u003e \u003ccode\u003earray[string]\u003c/code\u003e\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003edisplayDesc\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003eDisplay the descriptions of the destinations you have visited\u003cbr\u003e\n    \u003cbr\u003e\u003cb\u003eValues:\u003c/b\u003e \u003ccode\u003etrue\u003c/code\u003e or \u003ccode\u003efalse\u003c/code\u003e\n    \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e \u003ccode\u003etrue\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003etrip\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003eControls if every single entry is counted as a new jurney or a round trip.\u003cbr\u003e\n    \u003cbr\u003e\u003cb\u003eValues:\u003c/b\u003e \u003ccode\u003earray[bool]\u003c/code\u003e\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003ecolorCountries, colorCountryBorders, colorTargetPoints, colorPlaneLine, colorLegendBorder, colorLegendFont, colorTitleFont\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003eColors for country fill, country border, target points, plane, legend, legend font, title.\u003cbr\u003e\n    \u003cbr\u003e\u003cb\u003eValue:\u003c/b\u003e \u003ccode\u003estring\u003c/code\u003e\n    \u003cbr\u003e\u003cb\u003eDefault value:\u003c/b\u003e e.g.\u003ccode\u003e\"#BDBDBD\"\u003c/code\u003e\n   \u003c/td\u003e\n  \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\n## Using the module\n\nTo use this module, add it to the modules array in the `config/config.js` file:\n\n```javascript\n   {\n      module: \"MMM-iHaveBeenThere\",\n      position: \"middle_center\",\n      config: {\n         title: \"Dork the Explorer\",\n         home_desc: \"Edinburgh\",\n         AnimationEnabled: true,\n         zoomLevel: 1.1,\n         zoomLongitude: 15,\n         home_lat: 55.9411289,\n         home_lon: -3.3454172,\n         displayDesc: true,\n         away_desc: [\n            \"Thailand\",\n            \"France\",\n            \"United States\"\n         ],\n         away_lat: [\n            13.5485582,\n            48.8587741,\n            47.6129432,\n         ],\n         away_lon: [\n            100.6111107,\n            2.2069809,\n            -122.4821436,\n         ],\n         trip: [false,true,false],\n      }\n   },\n```\n\nDepending on the used [Raspberry Pi](https://de.wikipedia.org/wiki/Raspberry_Pi) hardware I recommend to disable the plane animation (though it looks nice).\n\nThe models A, B, B+ run only contain a single CPU core. I tried the B+ with 1Ghz (overclocking). The CPU load was at 100% and the animation laged.\n\nAlso I used [MMM-FRITZ-Box-Callmonitor](https://github.com/paviro/MMM-FRITZ-Box-Callmonitor) and was missing incoming calls with this setup. For this mentioned Pi's I recommend to disable the animation or set.\n\n\u003ctable width=\"100%\"\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\u003eAnimationEnabled\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003e\u003cb\u003evalue:\u003c/b\u003e \u003ccode\u003etrue\u003c/code\u003e\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003epauseDuration\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003e\u003cb\u003evalue:\u003c/b\u003e \u003ccode\u003e10.0\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\u003ccode\u003eanimationDuration\u003c/code\u003e\u003c/td\u003e\n   \u003ctd\u003e\u003cb\u003evalue:\u003c/b\u003e \u003ccode\u003e3.0\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\nThis should give the Pi a little space between the animations. Not a pretty good solution, but during the animation you might have problems.\n\nWith a Pi 3 I had a load of 40% when the animation is running. Dualcore pays off. Also the animation is smooth.\n\nTesting the animation with a Pi 4 resulted in smooth animation. The CPU load was approximately 43%, so be aware that this may conflict with other modules that have high CPU demands.\n\n## To Do\n\nUpgrade from amCharts 3 to amCharts 5: The new version is supposed to be a lot more CPU-efficient, so this could possibly solve the performance problems. You are welcome to create a PR.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasti0001%2FMMM-iHaveBeenThere","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbasti0001%2FMMM-iHaveBeenThere","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasti0001%2FMMM-iHaveBeenThere/lists"}