{"id":20444873,"url":"https://github.com/timo-reymann/fritzbox-based-presence","last_synced_at":"2025-04-13T00:23:35.710Z","repository":{"id":190587720,"uuid":"682949624","full_name":"timo-reymann/fritzbox-based-presence","owner":"timo-reymann","description":" Show who is home based on devices connected to FritzBox that are currently online.","archived":false,"fork":false,"pushed_at":"2025-04-08T18:02:45.000Z","size":909,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-08T19:23:49.566Z","etag":null,"topics":["container","docker","fritzbox","go","hackfridays","home-automation"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timo-reymann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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},"funding":{"github":["timo-reymann"],"custom":["https://www.buymeacoffee.com/timoreymann","Buy me a coffee"]}},"created_at":"2023-08-25T08:38:00.000Z","updated_at":"2025-04-08T18:02:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"8d1bc182-10ec-4c55-a652-c9855bc12455","html_url":"https://github.com/timo-reymann/fritzbox-based-presence","commit_stats":null,"previous_names":["timo-reymann/fritzbox-based-presence"],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timo-reymann%2Ffritzbox-based-presence","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timo-reymann%2Ffritzbox-based-presence/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timo-reymann%2Ffritzbox-based-presence/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timo-reymann%2Ffritzbox-based-presence/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timo-reymann","download_url":"https://codeload.github.com/timo-reymann/fritzbox-based-presence/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248648696,"owners_count":21139341,"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":["container","docker","fritzbox","go","hackfridays","home-automation"],"created_at":"2024-11-15T10:09:31.421Z","updated_at":"2025-04-13T00:23:35.687Z","avatar_url":"https://github.com/timo-reymann.png","language":"Go","funding_links":["https://github.com/sponsors/timo-reymann","https://www.buymeacoffee.com/timoreymann","Buy me a coffee"],"categories":[],"sub_categories":[],"readme":"fritzbox-based-presence\n===\n[![LICENSE](https://img.shields.io/github/license/timo-reymann/fritzbox-based-presence)](https://github.com/timo-reymann/fritzbox-based-presence/blob/main/LICENSE)\n[![DockerHub Pulls](https://img.shields.io/docker/pulls/timoreymann/fritzbox-based-presence)](https://hub.docker.com/r/timoreymann/fritzbox-based-presence)\n[![Go Report Card](https://goreportcard.com/badge/github.com/timo-reymann/fritzbox-based-presence)](https://goreportcard.com/report/github.com/timo-reymann/fritzbox-based-presence)\n[![codecov](https://codecov.io/gh/timo-reymann/fritzbox-based-presence/graph/badge.svg?token=rsQYV5lODS)](https://codecov.io/gh/timo-reymann/fritzbox-based-presence)\n[![CircleCI](https://circleci.com/gh/timo-reymann/fritzbox-based-presence.svg?style=shield)](https://app.circleci.com/pipelines/github/timo-reymann/fritzbox-based-presence)\n[![GitHub Release](https://img.shields.io/github/v/tag/timo-reymann/fritzbox-based-presence?label=version)](https://github.com/timo-reymann/fritzbox-based-presence/releases)\n[![Renovate](https://img.shields.io/badge/renovate-enabled-green?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNjkgMzY5Ij48Y2lyY2xlIGN4PSIxODkuOSIgY3k9IjE5MC4yIiByPSIxODQuNSIgZmlsbD0iI2ZmZTQyZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUgLTYpIi8+PHBhdGggZmlsbD0iIzhiYjViNSIgZD0iTTI1MSAyNTZsLTM4LTM4YTE3IDE3IDAgMDEwLTI0bDU2LTU2YzItMiAyLTYgMC03bC0yMC0yMWE1IDUgMCAwMC03IDBsLTEzIDEyLTktOCAxMy0xM2ExNyAxNyAwIDAxMjQgMGwyMSAyMWM3IDcgNyAxNyAwIDI0bC01NiA1N2E1IDUgMCAwMDAgN2wzOCAzOHoiLz48cGF0aCBmaWxsPSIjZDk1NjEyIiBkPSJNMzAwIDI4OGwtOCA4Yy00IDQtMTEgNC0xNiAwbC00Ni00NmMtNS01LTUtMTIgMC0xNmw4LThjNC00IDExLTQgMTUgMGw0NyA0N2M0IDQgNCAxMSAwIDE1eiIvPjxwYXRoIGZpbGw9IiMyNGJmYmUiIGQ9Ik04MSAxODVsMTgtMTggMTggMTgtMTggMTh6Ii8+PHBhdGggZmlsbD0iIzI1YzRjMyIgZD0iTTIyMCAxMDBsMjMgMjNjNCA0IDQgMTEgMCAxNkwxNDIgMjQwYy00IDQtMTEgNC0xNSAwbC0yNC0yNGMtNC00LTQtMTEgMC0xNWwxMDEtMTAxYzUtNSAxMi01IDE2IDB6Ii8+PHBhdGggZmlsbD0iIzFkZGVkZCIgZD0iTTk5IDE2N2wxOC0xOCAxOCAxOC0xOCAxOHoiLz48cGF0aCBmaWxsPSIjMDBhZmIzIiBkPSJNMjMwIDExMGwxMyAxM2M0IDQgNCAxMSAwIDE2TDE0MiAyNDBjLTQgNC0xMSA0LTE1IDBsLTEzLTEzYzQgNCAxMSA0IDE1IDBsMTAxLTEwMWM1LTUgNS0xMSAwLTE2eiIvPjxwYXRoIGZpbGw9IiMyNGJmYmUiIGQ9Ik0xMTYgMTQ5bDE4LTE4IDE4IDE4LTE4IDE4eiIvPjxwYXRoIGZpbGw9IiMxZGRlZGQiIGQ9Ik0xMzQgMTMxbDE4LTE4IDE4IDE4LTE4IDE4eiIvPjxwYXRoIGZpbGw9IiMxYmNmY2UiIGQ9Ik0xNTIgMTEzbDE4LTE4IDE4IDE4LTE4IDE4eiIvPjxwYXRoIGZpbGw9IiMyNGJmYmUiIGQ9Ik0xNzAgOTVsMTgtMTggMTggMTgtMTggMTh6Ii8+PHBhdGggZmlsbD0iIzFiY2ZjZSIgZD0iTTYzIDE2N2wxOC0xOCAxOCAxOC0xOCAxOHpNOTggMTMxbDE4LTE4IDE4IDE4LTE4IDE4eiIvPjxwYXRoIGZpbGw9IiMzNGVkZWIiIGQ9Ik0xMzQgOTVsMTgtMTggMTggMTgtMTggMTh6Ii8+PHBhdGggZmlsbD0iIzFiY2ZjZSIgZD0iTTE1MyA3OGwxOC0xOCAxOCAxOC0xOCAxOHoiLz48cGF0aCBmaWxsPSIjMzRlZGViIiBkPSJNODAgMTEzbDE4LTE3IDE4IDE3LTE4IDE4ek0xMzUgNjBsMTgtMTggMTggMTgtMTggMTh6Ii8+PHBhdGggZmlsbD0iIzk4ZWRlYiIgZD0iTTI3IDEzMWwxOC0xOCAxOCAxOC0xOCAxOHoiLz48cGF0aCBmaWxsPSIjYjUzZTAyIiBkPSJNMjg1IDI1OGw3IDdjNCA0IDQgMTEgMCAxNWwtOCA4Yy00IDQtMTEgNC0xNiAwbC02LTdjNCA1IDExIDUgMTUgMGw4LTdjNC01IDQtMTIgMC0xNnoiLz48cGF0aCBmaWxsPSIjOThlZGViIiBkPSJNODEgNzhsMTgtMTggMTggMTgtMTggMTh6Ii8+PHBhdGggZmlsbD0iIzAwYTNhMiIgZD0iTTIzNSAxMTVsOCA4YzQgNCA0IDExIDAgMTZMMTQyIDI0MGMtNCA0LTExIDQtMTUgMGwtOS05YzUgNSAxMiA1IDE2IDBsMTAxLTEwMWM0LTQgNC0xMSAwLTE1eiIvPjxwYXRoIGZpbGw9IiMzOWQ5ZDgiIGQ9Ik0yMjggMTA4bC04LThjLTQtNS0xMS01LTE2IDBMMTAzIDIwMWMtNCA0LTQgMTEgMCAxNWw4IDhjLTQtNC00LTExIDAtMTVsMTAxLTEwMWM1LTQgMTItNCAxNiAweiIvPjxwYXRoIGZpbGw9IiNhMzM5MDQiIGQ9Ik0yOTEgMjY0bDggOGM0IDQgNCAxMSAwIDE2bC04IDdjLTQgNS0xMSA1LTE1IDBsLTktOGM1IDUgMTIgNSAxNiAwbDgtOGM0LTQgNC0xMSAwLTE1eiIvPjxwYXRoIGZpbGw9IiNlYjZlMmQiIGQ9Ik0yNjAgMjMzbC00LTRjLTYtNi0xNy02LTIzIDAtNyA3LTcgMTcgMCAyNGw0IDRjLTQtNS00LTExIDAtMTZsOC04YzQtNCAxMS00IDE1IDB6Ii8+PHBhdGggZmlsbD0iIzEzYWNiZCIgZD0iTTEzNCAyNDhjLTQgMC04LTItMTEtNWwtMjMtMjNhMTYgMTYgMCAwMTAtMjNMMjAxIDk2YTE2IDE2IDAgMDEyMiAwbDI0IDI0YzYgNiA2IDE2IDAgMjJMMTQ2IDI0M2MtMyAzLTcgNS0xMiA1em03OC0xNDdsLTQgMi0xMDEgMTAxYTYgNiAwIDAwMCA5bDIzIDIzYTYgNiAwIDAwOSAwbDEwMS0xMDFhNiA2IDAgMDAwLTlsLTI0LTIzLTQtMnoiLz48cGF0aCBmaWxsPSIjYmY0NDA0IiBkPSJNMjg0IDMwNGMtNCAwLTgtMS0xMS00bC00Ny00N2MtNi02LTYtMTYgMC0yMmw4LThjNi02IDE2LTYgMjIgMGw0NyA0NmM2IDcgNiAxNyAwIDIzbC04IDhjLTMgMy03IDQtMTEgNHptLTM5LTc2Yy0xIDAtMyAwLTQgMmwtOCA3Yy0yIDMtMiA3IDAgOWw0NyA0N2E2IDYgMCAwMDkgMGw3LThjMy0yIDMtNiAwLTlsLTQ2LTQ2Yy0yLTItMy0yLTUtMnoiLz48L3N2Zz4=)](https://renovatebot.com)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=timo-reymann_fritzbox-based-presence\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=timo-reymann_fritzbox-based-presence)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=timo-reymann_fritzbox-based-presence\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=timo-reymann_fritzbox-based-presence)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=timo-reymann_fritzbox-based-presence\u0026metric=bugs)](https://sonarcloud.io/summary/new_code?id=timo-reymann_fritzbox-based-presence)\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg width=\"600\" src=\"https://raw.githubusercontent.com/timo-reymann/fritzbox-based-presence/main/.github/images/example.png\"\u003e\n    \u003cbr /\u003e\n    Show who is home based on devices connected to FritzBox that are currently online.\n\u003c/p\u003e\n\n## Features\n\n- show who is currently connected to your home network and online\n- single go binary\n- docker images for all popular platforms\n- Telegram bot support\n\n## Requirements\n\n- Fritz!OS 7.57+ (they changed the data format inbetween)\n\n## Installation\n\n- Download [latest release](https://github.com/timo-reymann/fritzbox-based-presence/releases/latest) and spin up the\n  binary as systemd service, screen etc.\n- OR use the prebuilt docker images (see [Usage](#usage) for an full example)\n\n## Usage\n\n### Fritz!Box User\n\n- Create a dedicated Fritz!Box user\n    - Navigate to [fritz.box](http://fritz.box) in your browser\n    - Login\n    - Create a user under `System \u003e Fritz!Box Users`\n      ![Create user](https://raw.githubusercontent.com/timo-reymann/fritzbox-based-presence/main/.github/images/create-user.png)\n    - Create a docker-compose file with the following contents:\n\n      ```yaml\n      version: \"3.5\"\n      services:\n        fritzbox-presence:\n          image: timoreymann/fritzbox-based-presence:latest # check for version to use if you would like to pin it\n          restart: always\n          ports:\n            - \u003cpublic-port\u003e:8090\n          environment:\n            FB_PRESENCE__SHOW_GUESTS: \"true\"\n            FB_PRESENCE__FRITZ_BOX_URL: http://192.168.178.1\n            FB_PRESENCE__FRITZ_BOX_USERNAME: \u003cyour-user\u003e\n            FB_PRESENCE__FRITZ_BOX_PASSWORD: \u003cyour-password\u003e\n            FB_PRESENCE__DEVICE_NAME_MAPPING: Name=device1,device2|Name2=device1\n            FB_PRESENCE__AUTH_PASSWORD: \u003c\u003cpassword here\u003e\u003e\n      ```\n\n### Start service with docker-compose\n\n- Run `docker compose up -d`\n- Open your browser at `\u003chost IP\u003e:\u003cpublic port\u003e`\n- Optionally add to your DynDNS, cloudflared tunnel etc. to make it available\n\n\u003e For all available options just run the binary without any required variable set to get an overview, or if you are\n\u003e familiar with go code check the [config sources](./pkg/config/main.go)\n\n### Setup telegram bot\n\nIf you want to use the telegram functionality, follow this guide.\n\n1. Create your bot with [@BotFather](https://telegram.me/botfather)\n    1. `/newbot`\n    2. Enter the desired name to be displayed in chats e.g. `My Home Stalker`\n    3. Give it a username ending in `bot` e.g. `my_home_stalker_bot\n    4. Copy the token you get, you will need it later\n2. Set up some sugar\n    1. `/setcommands`\n    2. `@your_bot_name`\n    3.\n   ```text\n      start - Establish SkyNet\n      home - See who is home\n      online - See who is currently connected to your home\n      ```\n    5. `/setuserpic`\n    6. Send the bot the profile picture you want to see\n3. Configure the service\n    1. Set the env var `FB_PRESENCE__TELEGRAM_BOT_TOKEN` to the token you received\n    2. Set `FB_PRESENCE__TELEGRAM_BOT_ALLOWED_USERS` to a comma seperated list of users that should be allowed to use\n       the bot\n\n### Setup discord bot\n\n1. Create the application \u0026 bot for discord\n   1. Make sure you’re logged on to the Discord website.\n   2. Navigate to the [application page](https://discord.com/developers/applications)\n   3. Click on the “New Application” button.\n   4. Give the application a name and click “Create”.\n   5. Navigate to the “Bot” tab to configure it.\n   6. Make sure that Public Bot is unticked.\n   7. You should also make sure that Require OAuth2 Code Grant is unchecked\n   8. Copy the token using the “Copy” button.\n2. Configure the service\n    1. Set the env var `FB_PRESENCE__DISCORD_BOT_TOKEN` to the token you received\n    2. Set `FB_PRESENCE__DISCROD_BOT_ALLOWED_USERS` to a comma seperated list of users that should be allowed to use\n       the bot\n\n## Motivation\n\nLiving together can be hard. And knowing who will be home is a nice thing to have.\n\nManual maintenance with signs or something analog or the good old message is boring, so lets use something a bit more\nreliable.\n\n## Contributing\n\nI love your input! I want to make contributing to this project as easy and transparent as possible, whether it's:\n\n- Reporting a bug\n- Discussing the current state of the configuration\n- Submitting a fix\n- Proposing new features\n- Becoming a maintainer\n\nTo get started please read the [Contribution Guidelines](./CONTRIBUTING.md).\n\n## Development\n\n### Requirements\n\n- [GNU make](https://www.gnu.org/software/make/)\n- [Docker](https://docs.docker.com/get-docker/)\n- [pre-commit](https://pre-commit.com/)\n- Go 1.21\n\n### Test\n\n```shell\nmake test\n```\n\n### Build\n\n```shell\nmake build\n```\n\n### Alternatives\n\n- writing messages\n- analog signs\n- talking to other people (scary)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimo-reymann%2Ffritzbox-based-presence","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimo-reymann%2Ffritzbox-based-presence","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimo-reymann%2Ffritzbox-based-presence/lists"}