Wiki/getränkezähler.md

277 lines
6.9 KiB
Markdown
Raw Normal View History

2023-06-05 22:23:49 +02:00
+++
title = "Getränkezähler"
+++
Unter-Seiten:
* [Usage](usage/)
## Benutzer-Guide
### Anonym Bezahlen
Um anonym zu bezahlen, kannst du dir kleine Zettel mit einem Barcode
ausdrucken. Dieser Barcode verfällt, nachdem sein Guthaben aufgebraucht
ist.
1. Hierzu tippst du am Getränkescanner auf **Geld einwerfen**
2. Wirf einen Schein in die Kasse hinter dir.
3. Tippe den entsprechenden Betrag auf dem Display an.
4. Dein Code wird ausgedruckt. Du kannst jetzt Buchen!
### Getränk Trinken
1. Scanne ein Getränk.
2. Tippe **Buchen**. Alternativ kannst du deinen Zettel oder Member-Code scannen.
1. Wähle deinen Anfangsbuchstaben.
2. Wähle deinen Nutzer.
3. Drücke **Trinken**!
Alternativ kannst du auch zuerst deinen Nutzer auswählen (oder
Member-Code scannen), und dann dein Getränk scannen. Drücke danach
genauso auf **Trinken**.
## Konzept
### Idee
Es soll mithilfe eines Barcode Scanners gezählt werden, wie viele
Getränke man getrunken hat. So behält jeder den Überblick, wieviel er
dem Verein spenden sollte und wir wissen, wann neue Getränke besorgt
werden müssen.
[github
repository](https://github.com/flipdot/drinks-scanner-display)
des Getränkezählers.
### Anleitung
==> Hier gehts zur [Getränkezähler Usage](usage/)
### Hacker
- DoB (Projektmanagement)
- Niklas (Datenbank/Modellierung, Externe Schnittstellen (später))
- Sören ([Ansteuerung
Display](http://www.raspberrypi-spy.co.uk/wp-content/uploads/2012/07/16x2_lcd_module.jpg))
- Eike
(http://www.raspberrypi-spy.co.uk/2012/07/16x2-lcd-module-control-using-python\|Elektronik\]\])
- Anselm (Core-Logik)
- Jonas (Core-Logik)
- kssoz (Testing, Installation, Buchungsdialoge)
- nox_x (Callibration Display)
### Zeitplan
```
1. Termin: 02.07.2015 18:00 Uhr
    Technologie entscheiden
    Setup Raspberry PI
    Ausgabe Barcode auf Anzeige (HDMI-Bildschirm)
2. Termin: 09.07.2015 18:00 Uhr
    Barcode-Format spezifizieren
    Hintergrundbeleuchtung, Kontrast einstellen
3. Termin: 16.07.2015 18:00 Uhr
    SQL Datenbank modellieren
4. Termin: 27.04.2016
    Case fertigbauen und im Space installieren
    RasPi bestellen
5. Termin: 28.04.2016
    Raspi anschliessen und einrichten
    Barcodes in Datenbank speichern und zählen
6. Termin 29.04.2016
    Flipdot Display ansteuern
    low-res font implementieren
    Testing (Hacked) ^^
7. Termin: 28.05.2016
     Touchscreen Interface:
     Touch-Matrix,
     homescreen mit Namensauswahl,
     login Begrüßung mit Piechart-Dummy und Scan Aufforderung
8. Termin: 29.05.2016
     Anbindung an LDAP (User-Datenbank)
9. Termin: 11.06.2016
     Kallibration der Touch-Matrix - fixed!
```
### Details
#### Buchungsprozesse
Spenden per Prepaid-Karte soll ermöglicht werden, nicht erzwungen. Das
analoge Spendensystem (von \*hel) wird nicht abgeschafft, sondern
ergänzt.
##### Fall 1 - member ohne Digital-Konto
1\. homescreen with login
Flipdot
Getränkescanner
Wer bist du?
[a][b][c][d][e][f][g]
[h][i][j][k][l][m][n]
[o][p][q][r][s][t][u]
[v][w][x][y][z][#]
[Gast]
(Ereignis: Tastendruck z.B. wenn \# dann Sonderzeichen Namen zeigen)
2\. name selection
Dennis
DoB
DmB
...
(Ereignis: Namenswahl oder timeout 5s)
3\. scan demand
Hallo Dennis,
Scanne ein Getränk!
(Ereignis: Scan! oder timeout 10s)
4\. scan result & donate prompt
Club Mate
EAN 123456778890
Spende bitte 1,00€ in die Kasse!
Flaschenaufkleber wird gedruckt...
(Warten bis timeout 10s oder Touch! -\> home)
------------------------------------------------------------------------
##### Fall 2 - member mit Digital-Konto und Barcode membercard
(Ereignis: Scan einer membercard!)
1\. scan demand & credit balance
Hallo Banana,
Kontostand: 13€
Scanne ein Getränk!
(Ereignis: timeout 10s -\> home oder Scan!)
2\. scan result & credit balance
Club Mate
EAN 123456778890
1,00€ von Dir wurde gespendet!
Kontostand: 12€
Flaschenaufkleber wird gedruckt...
------------------------------------------------------------------------
##### Fall 3 - Direkter Scan einer Flasche/Objekts
(Ereignis: Scan!)
1\. scan result & donation prompt
Club Mate
EAN 123456778890
1,00€ in die Kasse spenden?
[Ja] [Nein]
(Ereignis: "Nein"! oder timeout 10s -\> zurück nach homescreen.
"Ja"! -\> Namensauswahl)
2\. homescreen with login
Wer bist Du?
[a][b][c][d][e][f][g]
[h][i][j][k][l][m][n]
[o][p][q][r][s][t][u]
[v][w][x][y][z][#]
[Gast]
(Ereignis: timeout 5s -\> home; Tastendruck z.B. wenn \# dann
Sonderzeichen Namen zeigen)
3\. name selection
Dennis
DoB
DmB
...
(Ereignis: timeout 5s -\> home oder Namenswahl)
4\. donation prompt
Hallo DmB,
Spende bitte 1,00€ in die Kasse!
Flaschenaufkleber wird gedruckt...
(Warten bis timeout 10s oder Touch! -\> home)
------------------------------------------------------------------------
#### Spezifikation für den Barcode
23Z YYYY YYYXX C
enum Z
{
Steuerkarte = 0,
Guthabenkarte = 1
}
X - Steuerkarte:
Anzahl an Elementen/Flaschen
Guthabenkarte:
Ursprünglicher Betrag
Y - Steuerkarte:
0
Guthabenkarte:
Random
C - EAN-Checksum
Der Barcode startet mit 23, um mit dem EAN-13-Standard kompatibel zu
sein (20-29 für In-Store-Functions). Vgl:
<http://www.barcodeisland.com/ean13.phtml>
#### Datenbank
<!-- {{http://i.imgur.com/QJvq4nW.png}} -->
#### Feature Ideen
- Scanpiep ersetzen durch Schraubverschluss Geräusch (Zischhhh)
- NFC Bezahl Methode
- Nach Scan wird ein selbstklebendes Etikett ausgedruckt zum
Flasche markieren (User ID, Datum, Glückskeksspruch ...)
- Auf Flipdot Display werden gescannte Getränke gezählt (beta: nur
3 stellig, später mehr Infos wie Getränketyp)
- Datenbank schlägt Alarm, wenn kritische Lagerbestände
unterschritten werden (-\> Getränke-Einkauf)
- Statistiken über Getränke :D
- Zusätzlich gibt es einen Hardware Knopf mit dem ich alle
Aktionen abbrechen kann und wieder zurück in den Initialzustand
wechseln kann
- Datenbank läuft mit auf dem PI, Daten bleiben im Space
#### Hack
Getränkezähler mit Flipdotdisplay verbunden und schöne Invaders
lowres-font implementiert.
"Wir kommen doch nicht über 999 Getränke pro Tag oder?" -\>
Getränkezähler geDoSt: Makita, Deutschlandflagge, Krepklebeband,
Bier-Etikett, Mate-Ettiket \^\^
<!-- {{attachment:IMG_20160429_190628.jpg}} -->
<!-- {{attachment:IMG_20160429_190844.jpg}} -->
<!-- {{attachment:VID_20160429_190711.mp4}} -->
<!-- {{attachment:VID_20160429_190901.mp4}} -->
<!-- {{attachment:VID_20160501_211820.mp4}} -->
<!-- <attachment:VID_20160501_211820.mp4> -->
<!-- <attachment:VID_20160429_190711.mp4> -->
<!-- <attachment:VID_20160429_190901.mp4> -->