Skip to content

Open Pay ist ein drahtloses Bezahlsystem auf Basis des Raspberry PI's, das mit günstigen 13,56MHz RFID Karten funktioniert. Es ist komplett in Python3 geschrieben und mit einer einfachen Tkinter Gui bestückt.

Notifications You must be signed in to change notification settings

flowluap/open-pay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Open-Pay

Getting started

Zuerst werden die Displaytreiber installiert:

sudo rm -rf LCD-show
git clone https://github.com/goodtft/LCD-show.git
chmod -R 755 LCD-show
cd LCD-show/
sudo ./LCD35-show

Nach einem Reboot funktioniert das Touch-Display

git clone https://github.com/flowluap/open-pay.git
cd open-pay
#über ssh muss noch das richtige Display gewählt werden
export DISPLAY=:0.0
python3 gui.py

Auf dem PI wird Maria DB genutzt. Falls das Netlink Feature genutzt werden soll, muss in /etc/mysql/mariadb.conf.d/50-server.cnf die bind_address=0.0.0.0 gesetzt werden. Außerdem muss der root Nutzer entsprechend angepasst werden. Für ein System, das über ein externes Netzwerk erreichbar ist, sollte diese Konfiguration nicht genutzt werden. Da hier aber nur Peer2Peer oder in einem eigenen Netz kommuniziert wird, erachte ich das als vernachlässigbar.

GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.0.0.%' IDENTIFIED BY '' WITH GRANT OPTION;

Ab diesem Zeitpunkt kann Open-Pay in vollem Umfang genutzt werden. Um Open-Pay in einer Art Kioskmodus laufen zu lassen, habe ich mich dazu entschieden nodm (einen minimalistischen Displaymanager) und openbox zu verwenden, um einen möglichst schnellen Start zu erlauben.

sudo apt-get -y install nodm

# nodm config bearbeiten
sudo sed -i -e "s/NODM_ENABLED=false/NODM_ENABLED=true/" -e "s/NODM_USER=root/NODM_USER=pi/" \
  /etc/default/nodm

#Xsession Datei erstellen
printf "%s\n" \
  "#!/usr/bin/env bash" \
  "exec openbox-session &" \
  "while true; do" \
  "  python3 $PWD/open-pay/gui.py" \
  "done" \
  > /home/pi/.xsession

Dann werden noch die Bootkonfigurationen angepasst, sodass der Bootscreen klar bleibt:

#sudo nano /boot/cmdline.txt

console=tty1 --> console=tty3
loglevel=3
logo.nologo
#sudo nano /boot/config.txt

disable_splash=1

Anleitung

Einrichtung

Wenn Open-Pay auf dem System läuft, muss eine Nutzerdatenbank erstellt werden. Das geschieht über einen CSV Import. Hierbei ist es wichtig, dass das CSV Sheet mit Kommata getrennt, utf-8 encoded und die Spalten "name" und "nachname" besitzt. Die Spalten müssen genau so heißen, sodass die Software richtig importieren kann. Um das zu erleichtern gibt es die Möglichkeit eine leere CSV mit diesen Anforderungen auf einen USB-Stick zu laden:

Immmer wenn ein USB Gerät eingesteckt wird, wird es als /dev/sda in /media/sda gemountet.
Dabei öffnet sich ein Eingabefenster, in das man einen 4-stelligen PIN eingeben muss (default 0816).
Hier öffnen sich dann die Einstellungen, unter denen auch dieser Code geändert werden kann.

Updaten

Der PI wird zum Updaten sudo apt-get update -y && sudo apt-get upgrade -y an ein LAN angeschlossen. In den Einstellungen wird von "Statische IP" zu "DHCP" gewechselt. Der PI kann vom DHCP aus dem LAN nun eine IP-Adresse beziehen und seine Updates aus dem Internet herunterladen. Bei jedem Neustart des Programmes wird die IP-Adresse auf statisch umgestellt 10.0.0.1/24, sodass ein Netzwerklink zwischen mehreren Geräten erfolgen kann. Edit: Die Konfiguration "Statische IP" nutzt nur eine Statische IP als Fallback, falls kein DHCP verfügbar ist (was bei Peer2Peer ja der Fall ist). Sollte sich im Statischen Modus ein DHCP melden, wird dessen IP angenommen. Der Modus "DHCP" löscht in /etc/dhcpdc.conf den Fallback-Teil von eth0 vollständig. (Siehe .env Datei NO_DHCP_CONFIG und DHCP_CONFIG)

Going further

Klonen von SD-Karten, um mehrere Geräte einzusetzen:

Mit dd kann man unter OSX und Linux ein Image einer SD-Karte erstellen und dieses auf eine Karte gleicher Größe wieder entpacken. (kleinere Speicherkapazität klappt nicht und bei einer größeren Karte müsste man die Partitionierung anpassen)

#In einer Shell (um den Namen des Gerätes z.B /dev/sda herauszufinden):
fdisk -l 

Dann das Image erstellen

sudo dd bs=4M if=/dev/{Gerät z.B. sda} | gzip > image.gz

Das Image auf eine SD-Karte entpacken:

gzip -dc image.gz | sudo dd bs=4M of=/dev/{Gerät z.B. sda}

Sollte das Gerät im Linkmodus verwendet werden, empfiehlt es sich in der .env Datei in Zeile 3 und 33 die IP-Adresse im Class-A 10.0.0.0/24 Netzwerkraum fortzuführen.

Todos

  • DB sync
  • change password
  • sync history file
  • Enable / Disable DHCP -->Button grey out Update
  • SQL Lite Merge (lastchanged attribute db for row)
  • Main functionality (pay, get money)
  • card add to kid && lost
  • History file
  • All Kids list view
  • Export DB
  • show IP

Authors

  • Paul Wolf - Initial work -

About

Open Pay ist ein drahtloses Bezahlsystem auf Basis des Raspberry PI's, das mit günstigen 13,56MHz RFID Karten funktioniert. Es ist komplett in Python3 geschrieben und mit einer einfachen Tkinter Gui bestückt.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages