127 lines
3.8 KiB
Plaintext
127 lines
3.8 KiB
Plaintext
# doorbuzz
|
|
|
|
raspberry Pi opening the front door and playing videos the button has an RGB led to show status features:
|
|
|
|
* button to push to open the door
|
|
* LED ring of 60 neopixels showing the current clock
|
|
* video player showing some default videos while the space is open
|
|
* a shutdown button for a clean shutdown
|
|
* watchdog
|
|
|
|
how to install
|
|
==============
|
|
|
|
* The basics
|
|
|
|
```
|
|
sudo apt-get install vim tmux
|
|
|
|
```
|
|
* authorize boorduzz to connect to pidor and vice versa
|
|
|
|
```
|
|
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTVHK+yXSXHm42vr1RZ4sgKBFdkL3vi1u8BXYD/zkcbJkDSyWWRlU5q/qzEQYVk2zae870jcSQ5oTeoLZ99ujkuGltTCdzcCin24Aoig8ATyztFXoSHIfdUPCw5dbjhQXGWRPIkk1lSGU6mtLJRmVwLeY0rzVSQKdlspQlKBLwFBeIuACZQZfUzbIB2XiHIaoxcUja9fRfsZpo9TsWiqCMbseAj926qUgV2iotTQF7XLF/f+H8j2MR3iltKHqc35y/PiWy2doxRFHjW9I66Bit+ddOBtrsL6AzjxZP1DyoAc7jqhRpVazeXkMeNPMigpsV4rhLMEeVi2OqgTO7d3Jv root@pidor" >> /home/pi/.ssh/authorized_keys
|
|
```
|
|
copy the file doorbuzz private key to /home/pi/.ssh/doorbuzz (backup of the key located on pidor at /root/.ssh/doorbuzz)
|
|
|
|
|
|
|
|
* If you want to chroot into the image have a look at [this script](https://github.com/CIRCL/Circlean/blob/master/proper_chroot.sh)
|
|
|
|
* Remove screensaver from `/etc/xdg/lxsession/LXDE/autostart`
|
|
|
|
``` bash
|
|
sudo vi /etc/xdg/lxsession/LXDE/autostart
|
|
```
|
|
|
|
* Copy the files present in `root_files` accordingly on the file system
|
|
* Set the hostname: replace the content of `/etc/hostname` with door-buzz
|
|
|
|
* Install the suff
|
|
|
|
``` bash
|
|
sudo apt-get install unclutter xdotool git-core screen imagemagick x11-xserver-utils
|
|
git clone git://git.drogon.net/wiringPi
|
|
cd wiringPi
|
|
./build
|
|
|
|
git clone https://github.com/syn2cat/doorbuzz
|
|
cat > /home/pi/.config/lxsession/LXDE-pi/autostart <<"EOF"
|
|
@xset s off
|
|
@xset -dpms
|
|
@xset s noblank
|
|
@unclutter -display :0 -noevents -grab
|
|
@sudo python ./doorbuzz/setneocolor.py
|
|
@./doorbuzz/buzzctrl.sh
|
|
@./doorbuzz/videoplayer.sh
|
|
@./doorbuzz/arpspoofdetect.sh
|
|
@sudo python ./doorbuzz/shutdownbutton.py
|
|
@./doorbuzz/phone_notification_client.sh
|
|
EOF
|
|
```
|
|
|
|
* connect the button and LED to pins as shown in `buzzctrl.sh`
|
|
* create a file "secret.txt" containing the http://user:pass@10.1.1.xx part of the URL
|
|
* adapt the URL in buzzctrl.sh
|
|
* adapt spaceapi URL in spacestatus.py
|
|
* put .mp4 videos into ~pi/ and they will show when your hackerspace is open you can add videos and they will be taken into account automatically
|
|
|
|
when booting, the button led uses morsecode to send the low byte of the IP adress in decimal
|
|
|
|
`phone_notification_client.sh` communicates with pidor's `doorbuzz_wrapper.sh` to command the flash light
|
|
|
|
# new: using redis to manage the 60 led circle
|
|
|
|
```
|
|
sudo apt-get install python-pip redis-server python-redis
|
|
```
|
|
|
|
* redi.sh comes from here: https://github.com/crypt1d/redi.sh
|
|
|
|
```
|
|
cd ~
|
|
git clone https://github.com/jgarff/rpi_ws281x.git
|
|
cd rpi_ws281x
|
|
sudo apt-get install scons swig python-dev
|
|
scons
|
|
cd python
|
|
sudo python setup.py install
|
|
```
|
|
|
|
# setup watchdog
|
|
|
|
```
|
|
sudo modprobe bcm2708_wdog
|
|
echo "bcm2708_wdog" | sudo tee -a /etc/modules
|
|
|
|
|
|
sudo apt-get install watchdog
|
|
sudo update-rc.d watchdog defaults
|
|
|
|
sudo sed -i 's/#\(watchdog-device\)/\1/
|
|
s/#\(max-load-1\s\)/\1/
|
|
' /etc/watchdog.conf
|
|
|
|
sudo service watchdog start
|
|
```
|
|
|
|
|
|
Note: `projectionscreen.sh` is a standalone program called remotely by pidor because pidor knows the IP adress of the projector but doorbuzz has the RF remote connected.
|
|
The remote command works with ssh, so install pidor's root pub key into `~pi/.ssh/authorized_keys`
|
|
|
|
# setup lirc for AV-receiver remote control
|
|
|
|
```
|
|
sudo-apt-get install lirc
|
|
sudo /bin/su -c "echo 'dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=21' >> /boot/config.txt"
|
|
```
|
|
|
|
|
|
todo
|
|
====
|
|
|
|
* create a config file
|
|
* put more of the hardcoded values from code into parameters
|
|
* make code resilient against missing commands (e.g. gpio not in PATH)
|
|
* move script to run in screen instead starting from rc.local
|