diff --git a/README.md b/README.md index e69de29..93783d3 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,91 @@ +# Scanner Service und Frontend Software (Kugelstoßmeeting Rochlitz) +- Geschrieben von Mario Voigt (2024 - 2025) +- License: MIT + +## WARNUNG: UGLY SOFTWARE. Das ist ein "works for me" Projekt + +## Konzept +- ein eigenständiger Scan-Service läuft permanent und speichert alle gescannten Barcodes, die von einem Eyoyo Barcode Scanner per USB-Anschluss kommen, in eine SQLite DB ab. + - der Scan-Service (usb-scanner.py) basiert auf https://github.com/vpatron/barcode_scanner_python/tree/master + - läuft nur, wenn der Scanner angeschlossen und aktiv ist. Anderfalls gibt es Fehlermeldungen + - wird als systemd Service installiert +- ein separat gestartetes Frontend (GUI) greift auf diese Datenbank zu und prüft die Eingaben bzw. reichert sie an +Frontend (sqlite.py) basiert auf https://github.com/tonypdavis/Raspberry-Pi-Barcode-Scanner-/blob/master/ipad_bs_v1.2.py + - ruft die gleiche Datenbank auf und liest/schreibt Änderungen + +**Achtung: Frontend und Scan-Service müssen auf die gleiche Datenbankdatei konfiguriert werden!** + +## Installation +``` +dnf install -y systemd-devel python3-venv +sudo usermod -G dialout -a $USER #den aktuellen User zu dialout hinzufügen +``` + +``` +cd /opt/ +git clone https://gitea.fablabchemnitz.de/vmario/kugelstossmeeting-ticketing.git +cd kugelstossmeeting-ticketing/ +python3 -m venv venv +venv/bin/pip install -r requirements.txt +``` + +USB-Geräte anzeigen und nach Scanner prüfen: +``` +lsusb -v +#idVendor 0x0581 Racal Data Group +#idProduct 0x0115 Tera 5100 +lsusb +#Bus 003 Device 003: ID 0581:0115 Racal Data Group Tera 5100 +``` + +USB-Gerät Berechtigungen anpassen: +``` +vim /etc/udev/rules.d/55-barcode-scanner.rules +``` +``` +# Set permissions to let anyone use barcode scanner +SUBSYSTEM=="usb", ATTR{idVendor}=="0581", ATTR{idProduct}=="0115", MODE="666" +``` + +Änderungen übernehmen: +``` +udevadm control --reload-rules && udevadm trigger +``` + +Dienst starten und prüfen: +``` +ln -sf /etc/systemd/system/usb-scanner.service /opt/kugelstossmeeting-ticketing/usb-scanner.service +systemctl enable usb-scanner.service --now +journalctl -f -u usb-scanner.service +``` + +Datenbank per Shell leeren: +``` +sudo dnf install sqlite3 +sqlite3 kugelstossmeeting-prod.db "DELETE FROM tickets;" +sqlite3 kugelstossmeeting-prod.db "DELETE FROM scans;" +sqlite3 kugelstossmeeting-test.db "VACUUM;" +``` + +Datenbank per DB Browser for SQLite bearbeiten/ansehen: +``` +sudo apt-get install sqlitebrowser +``` +GUI starten: +``` +/opt/kugelstossmeeting-ticketing/venv/bin/python3 /opt/kugelstossmeeting-ticketing/sqlite.py +``` +... oder die .desktop-Verknüpfung benutzen + +## Notwendig für den Betrieb +- Notebook mit Netzteil +- USB Scanner mit USB-C Kabel +- Stempel + Stempelfarbe +- Alle Tickets als PDF-Backup (falls es nicht klappt) +- eine aktuell befüllte SQ-Lite Datenbank + +## Mögliche Verbesserungen der Software +- SQLite DB gegen netzwerkfähige MySQL/PGSQL tauschen und multimandantenfähig machen (2 Rechner, 2 Barcode Scanner) +- Programm so beschränken, dass es nicht mehrfach gestartet werden kann (PID Kontrolle o.ä.) +- siehe Code-Kommentare +- TK GUI modernisieren