change readme

This commit is contained in:
anonymous
2019-12-20 13:09:42 +00:00
parent f4698446d9
commit 5830bf52ad

View File

@@ -1,7 +1,7 @@
# ButtonCtl # ButtonCtl
ButtonCTL im oberen Stockwerk des Chaospott zur vereinfachenden Steuerung der via SSH kontrollierbaren Türen mithilfe ButtonCTL wird im oberen Stockwerk des Chaospott zur vereinfachenden Steuerung der via SSH kontrollierbaren Türen mithilfe
von physischen Buttons genutzt. Er ersetzt ein gleichnamiges älteres System. von physischen Buttons genutzt. Er ersetzt ein gleichnamiges älteres System.
In seiner momentanen Version ist es nicht mit der zweiten Button-Installation neben der Kellertür In seiner momentanen Version ist er nicht mit der zweiten Button-Installation neben der Kellertür
kompatibel, und kann dort somit nicht eingesetzt werden. kompatibel, und kann dort somit nicht eingesetzt werden.
## Installation ## Installation
@@ -10,8 +10,13 @@ Zur Installation der im nächsten Abschnitt besprochenen Abhängigkeiten öffnen
An diesem Punkt ist es ratsam das ihr System mit `sudo apt update && sudo apt upgrade` An diesem Punkt ist es ratsam das ihr System mit `sudo apt update && sudo apt upgrade`
zu aktualieren. Nun nutzen sie `sudo apt install python3-rpi-gpio` zur Installation der Python-RPi Library und zu aktualieren. Nun nutzen sie `sudo apt install python3-rpi-gpio` zur Installation der Python-RPi Library und
`sudo pip3 install adafruit-circuitpython-neopixel` zur Installation der ebenfalls notwendigen Neopixel-Library. `sudo pip3 install adafruit-circuitpython-neopixel` zur Installation der ebenfalls notwendigen Neopixel-Library.
Des Weiteren wird ein SSH-Client mit einem auf dem Türsystem registrierten Schlüssel benötigt. Den SSH-Client
installieren sie auf einem Raspbian System mit `sudo apt install openssh`. Für weitere Informationen über den
benötigten Schlüssel sehen sie [hier](https://dokuwiki.chaospott.de/infrastruktur:zugang:start).
### Hardware ### Hardware
Zum Ausführen von ButtonCtl ist die korrekte Verkabelung aller Komponenten notwendig. Um Zum Ausführen von ButtonCtl ist der korrekte Anschluss aller Komponenten notwendig. Um
die Verkabelung in der aktuellen Installation des Systems im Club zu verändern, öffnen sie die Verkabelung in der aktuellen Installation des Systems im Club zu verändern, öffnen sie
den unteren, in der rechts neben der Tür im Bällebad befindlichen Wand verbauten Kasten. den unteren, in der rechts neben der Tür im Bällebad befindlichen Wand verbauten Kasten.
Um den Raspberry Pi zu erreichen, müssen sie nun die dort verbauten Schrauben lösen, und die Abdeckung abnehmen. Um den Raspberry Pi zu erreichen, müssen sie nun die dort verbauten Schrauben lösen, und die Abdeckung abnehmen.
@@ -21,28 +26,38 @@ Um den Raspberry Pi zu erreichen, müssen sie nun die dort verbauten Schrauben l
Das Programm kommuniziert mit dem LED-Strip über die Pins 7 (BCM 4) und 12 (BCM 18). Die Buttons sind den Das Programm kommuniziert mit dem LED-Strip über die Pins 7 (BCM 4) und 12 (BCM 18). Die Buttons sind den
Pins 23 (Aerie), 24 (Center), 22 (Keller) zugeordnet. Pins 23 (Aerie), 24 (Center), 22 (Keller) zugeordnet.
### Ausführen
Zum Ausführen klonen sie zuerst dieses Git-Repository.
```bash
git clone https://github.com/dylangoepel/buttonctl.git
cd buttonctl
```
Nun können sie entweder `button.py` direkt mit `python3 button.py` ausführen oder einen Systemd-Service erstellen, der
daraufhin automatisch beim Bootvorgang gestartet werden kann. Zum Erstellen des Services nutzen sie `bash service.sh`,
und zur Aktivierung des automatischen Starts daraufhin `systemctl enable buttond`.
## Abhängigkeiten ## Abhängigkeiten
### Libraries ### Libraries
Zur Implementierung einiger zentraler Features werden folgende nicht-standard Libraries genutzt: Zur Implementierung einiger zentraler Features werden folgende nicht-standard Libraries genutzt:
- RPi (raspbian: python3-rpi.gpio) - RPi (raspbian: python3-rpi.gpio)
- neopixel (pypi: adafruit-circuitpython-neopixel) - neopixel (pypi: adafruit-circuitpython-neopixel)
Da die Buttons nicht etwa über einzelne LEDs, sondern über einen einzelnen LED-Strip verläuft, angesteuert Da die Buttons nicht etwa über einzelne LEDs, sondern über einen einzelnen LED-Strip angesteuert
werden müssen, wird die ```neopixel``` Library dazu genutzt, den aus 36 (3 * 12) Leds bestehenden Strip anzsuteuern werden müssen, wird die ```neopixel``` Library dazu genutzt, den aus 36 (3 * 12) Leds bestehenden Strip zu bedienen
und auf Basis dessen zu einem Button-orientierten Interfcae zu abstrahieren. und auf Basis dessen zu einem Button-orientierten Interface zu abstrahieren.
Die LEDs sind folgendermaßen über die Buttons verteilt: Die LEDs sind folgendermaßen über die Buttons verteilt:
``` ```
(25-36) (13-24) (1-12) (25-36) (13-24) (1-12)
AERIE KELLER AERIE KELLER
``` ```
Um das dazu - und zur Button-Press Erkennung - benötigte GPIO-Board zu kontrollieren nutzt ButtonCtl die ```RPi.gpio``` Um das dazu - und zur Button-Press Erkennung - benötigte GPIO-Board zu kontrollieren, nutzt ButtonCtl die ```RPi.gpio```
Library. Library.
### API ### API
ButtonCtl greift auf die vom Chaospott bereitgestellte [SpaceAPI](http://spaceapi.net/)-Instanz, die - wie es die ButtonCtl greift auf die vom Chaospott bereitgestellte [SpaceAPI](http://spaceapi.net/)-Instanz, die - wie es die
Spezifikation vorsieht - neben den benötigten Sensor-Daten ebenfalls allgemeine Information Spezifikation vorsieht - neben den benötigten Sensor-Daten ebenfalls allgemeine Information
sowie Metadaten über den Hackerspace überträgt. sowie Metadaten über den Hackerspace überträgt, zurück.
Die Statusinformationen befinden sich im `sensor` Bereich der JSON-Daten: Die Statusinformationen befinden sich im `sensor` Bereich der JSON-Daten:
```json ```json
{ {
@@ -70,13 +85,13 @@ Zum Öffnen und Schließen der beiden Türen werden die jeweiligen SSH-Endpunkte
## Benutzung ## Benutzung
Wie durch wiederholte Ausfälle indiziert, sind die durch die API bereitgestellten Daten nicht immer zuverlässig, Wie durch wiederholte Ausfälle indiziert, sind die durch die API bereitgestellten Daten nicht immer zuverlässig,
und sollen somit Grund keinen Einfluss auf die Funktionalität der Buttons haben. In der Vergangenheit und sollen somit keinen Einfluss auf die Funktionalität der Buttons haben. In der Vergangenheit
erfolgte das Öffnen oder Schließen einer Tür durch einen einfachen Click auf den mit dieser assoziierten Knopf. erfolgte das Öffnen oder Schließen einer Tür durch einfaches Drücken auf den mit dieser assoziierten Knopf.
Unter der Voraussetzung, dass der gespeicherte Türstatus korrekt ist, wurde dieser dann geändert, das heißt die Unter der Voraussetzung, dass der gespeicherte Türstatus korrekt ist, wurde dieser dann geändert, das heißt die
Tür wurde geöffnet oder geschlossen. Tür wurde geöffnet oder geschlossen.
Um jenes Vorgehen trotz der Unwissenheit über den aktuellen Zustand der Türen zu ermöglichen, leuchtet in der neuen Um jenes Vorgehen trotz der Unwissenheit über den aktuellen Zustand der Türen zu ermöglichen, leuchtet in der neuen
Version, nach dem Drücken eines Türknopfes (1. / 3. Knopf für Aerie / Keller), ein Button grün und ein anderer rot auf. Version nach dem Drücken eines Türknopfes (1. / 3. Knopf für Aerie / Keller) ein Button grün und ein anderer rot auf.
Nach erneutem Drücken auf den grünen (roten) Button wird die Tür daraufhin geöffnet (geschlossen). Nach erneutem Drücken auf den grünen (roten) Button wird die Tür daraufhin geöffnet (geschlossen).
Im Normalzustand leuchtet der mittlere Button nicht und die Tür-Buttons tragen die mit ihrem API-Status Im Normalzustand leuchtet der mittlere Button nicht und die Tür-Buttons tragen die mit ihrem API-Status