{"id":15198332,"url":"https://github.com/halimath/raspidoor","last_synced_at":"2026-02-19T04:31:25.935Z","repository":{"id":43114366,"uuid":"458619162","full_name":"halimath/raspidoor","owner":"halimath","description":"A door bell to SIP call installation using a Raspberry PI","archived":false,"fork":false,"pushed_at":"2022-04-10T10:03:46.000Z","size":14274,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-10T20:07:06.513Z","etag":null,"topics":["golang","home-automation","raspberrypi","sip"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/halimath.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-02-12T19:27:47.000Z","updated_at":"2022-03-28T17:12:42.000Z","dependencies_parsed_at":"2022-08-26T04:12:06.711Z","dependency_job_id":null,"html_url":"https://github.com/halimath/raspidoor","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/halimath/raspidoor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halimath%2Fraspidoor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halimath%2Fraspidoor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halimath%2Fraspidoor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halimath%2Fraspidoor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/halimath","download_url":"https://codeload.github.com/halimath/raspidoor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halimath%2Fraspidoor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29603050,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T04:01:40.476Z","status":"ssl_error","status_checked_at":"2026-02-19T04:01:12.960Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["golang","home-automation","raspberrypi","sip"],"created_at":"2024-09-28T01:01:48.353Z","updated_at":"2026-02-19T04:31:25.897Z","avatar_url":"https://github.com/halimath.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# raspidoor\n\n![CI Status][ci-img-url] \n[![Go Report Card][go-report-card-img-url]][go-report-card-url] \n[![Releases][release-img-url]][release-url]\n\nA door bell to phone call application for your Raspberry PI.\n\n## What is _raspidoor_?\n\n_raspidoor_ is a combination of hardware and software that uses a [Raspberry PI](https://www.raspberrypi.org/)\nto respond to to door bell pushes by invoking a regular bell as well as ringing a SIP phone. It supports\nmultiple door pushes (such as a garden door, front door, garage, ...) as well as multiple \"bells\". _raspidoor_\ncomes with a web application that you can use to toggle different pushes or bells.\n\n## How to use _raspidoor_?\n\n_raspidoor_ uses some custom wiring to connect door pushes and external bells to your pi. This requires \nsoldering and a couple of electronic parts (mainly connectors, resistors and relays).\n\nThe following picture shows an example breadboard setup with a single bell push and a single external bell.\nThe external bell is connected via a relay as it uses its own power supply. The LED is used to indicate the\nstatus.\n\n![Breadboard View](./doc/breadboard.png)\n\nThe following shows the schematic for this setup:\n\n![Schematic View](./doc/schematic.png)\n\nNote that this is not a mandatory setup. You can uses as much bell pushes and bells as you have GPIO lines\navailable.\n\n## What is required to run the software?\n\nThe software is written in [golang](https://go.dev/). It uses \n[github.com/warthog618/gpiod](https://github.com/warthog618/gpiod) to access the GPIO lines which requires\na linux kernel \u003e= 5.10. Running the software on a Raspberry PI with either Debian Buster or Bullseye works\nfine (I run it on a Raspberry PI Zero W with Debian Buster and kernel 5.10). \n\nThe software consists of multiple modules, three of which are dedicated applications:\n* [`raspidoord`](./daemon) - the main daemon to manange to GPIO and issue SIP calls\n* [`raspidoorwebd`](./webapp) - a web application to control the features of the daemon\n* [`raspidoor`](./cli) - a command line interface application to control the features of the daemon\n\nThe control apps connect to the daemon using a Unix socket using a [gRPC](https://grpc.io/) protocol. Thus,\nthey need to have access to the daemons file system (i.e. run on the same PI).\n\n## How to install the software?\n\nThe software is packaged as a single debian package. The package is not yet published to an `apt` repo, but\nyou can download and install the package yourself. The single package provides:\n* the daemon\n* the web app\n* the cli\n* systemd service files for both the daemon and web app\n* default configuration\n\n## How to run the software?\n\nOnce you installed the debian package on your raspberrypi you can configure the application. The file\n`/etc/raspidoor/raspidoord.yaml` contains a commented default configuration showing you how to configure the\napplication. Although it is technically possible to edit this file, this is not recommended, as the file will\nbe overwritten by package updates. Instead, create a file named `/etc/raspidoor/conf.d/raspidoord.yaml` and\nput in all configuration keys you wish to change. This file will be loaded to override the default values and\nwill not be touched by any package operation.\n\nAfter editing the configuration, you can start the services by running\n\n```shell\nsudo systemctl start raspidoor\n```\n\n## How to build the software?\n\nTo build the software, you need a couple of tools installed. The easiest way is to use \n[docker](https://www.docker.com/). To run the build, you can simply issue\n\n```shell\nmake docker-build-deb\n```\n\nThis will compile all the sources and create a debian package in the `out` directory as part of a docker image\nrun. The resulting debian package is then copied from the container using a volume. Simply copy that\npackage to your raspberry pi and install it.\n\nIf you want to build and test the software locally, you need at least the following:\n\n* golang \u003e= 1.18-rc1 to test and run the applications\n* GNU Make which orchestrates the build\n* protocol buffers compiler with go plugin if you want to make changes to the control protocol\n* `dpkg-deb` to build the debian package for installation on a raspberry pi\n\nThe software consists of the following modules (all written in golang):\n\n* [`controller`](./controller) - library containing the gRPC IDL as well as generated go sources which make up\n  the control protocol\n* [`systemd`](./systemd)  - library containing utilities to implement linux systemd services\n* [`daemon`](./daemon) - application that runs the \"main\" daemon\n* [`cli`](./cli) - application that provides the command line interface\n* [`webapp`](./webapp) - application that provides the web app to control the daemon\n\nThis mono-repo features the new _golang workspace_.\n\n## Case\n\nI created a case for 3d printing using Blender:\n\n![Case](./doc/case.png)\n\nYou can download the [Blender File](./doc/raspidoor.blend) or the [STL](./doc/raspidoor.stl).\n\n## License\n\nCopyright 2022 Alexander Metzner\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n[ci-img-url]: https://github.com/halimath/raspidoor/workflows/CI/badge.svg\n[go-report-card-img-url]: https://goreportcard.com/badge/github.com/halimath/raspidoor/daemon\n[go-report-card-url]: https://goreportcard.com/report/github.com/halimath/raspidoor/daemon\n[release-img-url]: https://img.shields.io/github/v/release/halimath/raspidoor.svg\n[release-url]: https://github.com/halimath/raspidoor/releases","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhalimath%2Fraspidoor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhalimath%2Fraspidoor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhalimath%2Fraspidoor/lists"}