{"id":16514728,"url":"https://github.com/andgineer/docker-iot-calendar","last_synced_at":"2025-04-04T18:45:38.928Z","repository":{"id":145706679,"uuid":"88355017","full_name":"andgineer/docker-iot-calendar","owner":"andgineer","description":"Render data from Google Sheets / Calendar on Amazon Kindle","archived":false,"fork":false,"pushed_at":"2025-03-15T06:11:18.000Z","size":8078,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-15T07:19:53.831Z","etag":null,"topics":["google-calendar","google-sheets","iot","matplotlib","python"],"latest_commit_sha":null,"homepage":"","language":"Python","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/andgineer.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":"2017-04-15T15:14:00.000Z","updated_at":"2025-03-15T06:10:37.000Z","dependencies_parsed_at":"2024-01-18T07:33:01.682Z","dependency_job_id":"9febd64f-6a35-4630-a930-e9cfaa9e6aed","html_url":"https://github.com/andgineer/docker-iot-calendar","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/andgineer%2Fdocker-iot-calendar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andgineer%2Fdocker-iot-calendar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andgineer%2Fdocker-iot-calendar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andgineer%2Fdocker-iot-calendar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andgineer","download_url":"https://codeload.github.com/andgineer/docker-iot-calendar/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247234873,"owners_count":20905852,"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":["google-calendar","google-sheets","iot","matplotlib","python"],"created_at":"2024-10-11T16:13:32.300Z","updated_at":"2025-04-04T18:45:38.908Z","avatar_url":"https://github.com/andgineer.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://github.com/andgineer/docker-iot-calendar/workflows/ci/badge.svg)](https://github.com/andgineer/docker-iot-calendar/actions)\n[![Coverage](https://raw.githubusercontent.com/andgineer/docker-iot-calendar/python-coverage-comment-action-data/badge.svg)](https://htmlpreview.github.io/?https://github.com/andgineer/docker-iot-calendar/blob/python-coverage-comment-action-data/htmlcov/index.html)\n[![Docker Automated build](https://img.shields.io/docker/image-size/andgineer/iot-calendar)](https://hub.docker.com/r/andgineer/iot-calendar)\n\n[Docker Hub container](https://hub.docker.com/r/andgineer/iot-calendar)\nthat generates image for Amazon Kindle.\n\n![calendar](docs/src/en/images/calendar.png)\n\nThe image contains calendar with events from Google Calendar - supposedly events from your IoT devices\n(like [Smart wifi button (Amazon Dash Button hack)](https://sorokin.engineer/posts/en/amazon_dash_button_hack.html)).\n\nYou can point your Kindle browser to html-page that updates the image every minute.\nSo you can see the calendar on your Kindle.\n\n## Usage\nRead [description in my blog](https://sorokin.engineer/posts/en/iot_calendar_synology.html).\n\n## Prepare environment\nDetailed manual how to create Google and open weather credentials is in the blog post mentioned above.\n\nRoadmap:\n* Create Google project\n* Create Google service account\n* Enable [Google Calendar API](https://console.cloud.google.com/apis/api/calendar-json.googleapis.com/metrics)\n* [Create key](https://console.cloud.google.com/iam-admin/serviceaccounts/details/110121235683045242579;edit=true/keys) -\u003e Add Key -\u003e JSON\n* replace `amazon-dash-hack.json` in `amazon-dash-private` folder with downloaded file\n* Create Google calendar wheret your IoT device will publish events (like [Amazon Dash Button](https://sorokin.engineer/posts/en/amazon_dash_button_hack.html))\n* Share Google calendar with service account\n* Create OpenWeatherMap API key and place it into `amazon-dash-private/openweathermap.key` file\n\n\n## Local run\n\nPrepare secrets as described in the blog post mentioned above.\n\nCopy `amazon-dash-private` folder up one level, so it will be in the same folder as `docker-iot-calendar` project.\nPlace your secrets to this folder copy.\n\nRun in the `docker-iot-calendar` folder:\n```\nmake run\n```\n\nLocal address for the calendar page `http://localhost:4444`\n\n## Development\n\n### Packages\n\nAt first I thought it would be great idea to use\n[svgwrite](http://svgwrite.readthedocs.io/en/master/attributes/presentation.html),\nand [cairosvg](http://cairosvg.org/documentation/), but then decided otherwise\nand use [matplotlib](http://matplotlib.org) instead.\n\n### Development dependencies\n\nTo install system dependencies in Mac OSX (if you want to run it outside docker container):\n```\nbrew update\nbrew install cairo\n```\n\n### Matplotlib fonts\n\nYou have to install [Humor font](http://antiyawn.com/uploads/humorsans.html),\n[xkcd font](https://github.com/ipython/xkcd-font) or [xkcd font](https://github.com/andgineer/docker-matplotlib/blob/master/xkcd.otf)\nand [Comic Neue](https://fonts.google.com/specimen/Comic+Neue).\n\nIf you already had matplotlib installed, after font installation you have to remove `~/.matplotlib/fontList.json`.\n\n### HTTP server\n\nAs HTTP server I use [tornado](http://www.tornadoweb.org/en/stable/).\n\n### Local debug\n\nCreate and/or virtual environment (note two dots):\n\n    . ./activate.sh\n\nNow you can run debug code or debug the application, for example\n\n    python src/iot_calendar.py\n\n## Performance\n\nhttps://andgineer.github.io/docker-iot-calendar/builds/benchmark\n\n## Coverage report\n* [Codecov](https://app.codecov.io/gh/andgineer/docker-iot-calendar/tree/master/src)\n* [Coveralls](https://coveralls.io/github/andgineer/docker-iot-calendar)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandgineer%2Fdocker-iot-calendar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandgineer%2Fdocker-iot-calendar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandgineer%2Fdocker-iot-calendar/lists"}