godoor/README.md
Arti Zirk 2f4005a7ba
All checks were successful
ci/woodpecker/push/build/1 Pipeline was successful
ci/woodpecker/push/build/2 Pipeline was successful
ci/woodpecker/push/manifest Pipeline was successful
Add system architecture
2024-08-29 13:05:38 +03:00

66 lines
2.8 KiB
Markdown

# GoDoor
Go rewrite of [kdoorpi](https://git.k-space.ee/arti/kdoorpi). Uses
[libgpiod](https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/about/)
native Go library to access the general purpose pins in cross platform way.
# Developing
Either build directly on Raspberry Pi or build locally and copy the binary
```
GOOS=linux GOARCH=arm64 go build
scp godoor rpi4b:
```
# Deployment
The CI system should automatically build docker image and push it to [Harbor](https://harbor.k-space.ee)
Refer to
[Ansible playbook](https://git.k-space.ee/k-space/kube/src/branch/master/ansible-doors.yml)
on how to deploy on all door controllers
# Usage
For end users door can be opened by:
* [Web interface](https://inventory.k-space.ee/m/doorboy)
* Push button
* Enrolling keyfob and swiping keyfob at door cardreader
* Issuing `/open-...-door` command in #members channel
For emergency cases:
* Log into door controller via SSH and issue `killall -sUSR1 godoor`
# Door system architecture
* Web UI / Slack commands - https://git.k-space.ee/k-space/inventory-app
* Card List provider - https://git.k-space.ee/k-space/doorboy-proxy
```
┌──────────────┐
┌──────────────────┐ │ Card Reader │ ...
│ Slack /open-door │ └───────┬──────┘
└─────────────────┬┘ │
│ ┌──────────────┐
┌──────────────┐ │ ┌────│ RPI/w godoor │ ...
│ Web Open door│ │ │ └──────────────┘
└─────────┬────┘ │ │Swipe ▲
│ │ │Event │ Open event
▼ ▼ ▼ │ Card list
┌───────────────┐ ┌─────────┴─────┐
│ inventory-app │ │ doorboy-proxy │
│ doorboy.py │ └───────────────┘
└───────────────┘ ▲
│ │
│ │
│ ▼
│ ┌───────────┐
└──────────►│ MongoDB │
└───────────┘
```
https://asciiflow.com/ diagram