# AUSGANGSSITUATION
Dieses Projekt zielt darauf ab, den einst von einem Team um Walter Nierer, Patrick Schüssler-Komatsu und Mateusz Gren entwickelten smarten Tischfußball mit neuem Leben zu erfüllen. Durch die Verwendung von IoT-Elementen zählt der Tisch automatisch Tore, zeigt Punktestände an und speichert diese in einem Remote-Server ab.
Dieses Projekt integriert den Tischfußball in eine neue Web-Applikation. Dabei möchten wir das fundierte technische Konzept der früheren Entwickler nutzen und die Funktionalität erweitern, um eine interaktive Online-Tischfußball-Liga mit dem derzeitigen Arbeitstitel "Atos & Eviden Wuzel-Liga" zu schaffen.

# ZIEL
Die Schaffung einer interaktiven und motivierenden Umgebung im Büro durch die Verbindung des smarten Tischfußballs mit der Web-Applikation. Die App zeigt im Wesentlichen eine userbasierte Tischfußball-Liga in Form einer Punkte-Tabelle an.

# HAUPTFUNKTIONEN
Smarter Tischfußball: Ein Tischfußball mit integriertem PC und Raspberry Pi 3B + Touchscreen, der Tore zählt und den aktuellen Punktestand anzeigt.

Web-Applikation: Eine Plattform, die es den MitarbeiterInnen ermöglicht, sich zu registrieren, ihre Punktestände zu erfassen und mittels User-Account in einer Liga-Tabelle zu speichern.

# NUTZEN
Die Atos & Eviden Wuzel-Liga kombiniert technische Innovation mit sozialer Interaktion, um eine einladende und motivierende Arbeitsumgebung zu schaffen.
- Förderung von Teamzusammenhalt und Kommunikation durch die Organisation von Tischfußball-Matches.
- Verbesserung der Arbeitsatmosphäre und Steigerung der Mitarbeiterzufriedenheit durch ein unterhaltsames Element im Büro.
- Der Tischfußball soll das Kerngeschäft von Atos und Eviden in einer spielerischen Weise repräsentieren. 
- Basis für künftige (Bench-)Projekte

# WEB-APPLIKATION
- Startseite mit Tabellenansicht der SpielerInnen/Teams und ihren Punkteständen.
- Registrierungsbereich, um Profile anzulegen.
- Login-Bereich für Anpassungen des Userprofils (Profil-Bild, persönliche Daten)

# HARDWARE-INTEGRATION
Die vorhandene Hardware und das aktuelle Stack des Tischfußballes werden weiterverwendet. Folgende Tasks wurden im Vorfeld durchgeführt:
- Das Update des Windows-PC und die Umstellung der Netzwerkverbindung auf einen LTE-Router wurde durchgeführt. 
- Der Rpi lässt sich wieder durchstarten, kann aber die Grundfunktion der Punkteanzeige aufgrund des inaktiven Edge Server noch nicht erfüllen.

Folgende Tasks sind offen:
- Ein Update der veralteten Rasbian Version ist derzeit nicht ohne einen erheblichen Mehraufwand durchführbar und wird vorerst nicht gemacht. 

Folgende Tasks wurden erledigt:
- Ein Update des Edge Server, die Erneuerung etwaiger Zertifikate sowie die Erweiterung der Ubuntu-VM Partition sind noch ausständig. Dieser Schritt ist ein besonders kritischer Punkt, der zu Verzögerungen führen kann.
- Eine Firmen-Sim-Karte muss beantragt werden, um eine konstante Internetverbindung herzustellen.
- Derzeit können unbegrenzt Tore gezählt werden. Begrenzung auf maximal 10 Tore pro Team wird eingeführt. 
- QR-Code für die Punkteerfassung wird in die Rpi-Logik implementiert.
- Störungen der Lichtschranken aufgrund von Spannungs-Interferenzen werden behoben.

# FUNKTIONSWEISE DER VORHANDENEN HARDWARE
- Raspberry Pi 3B, der die Torzählung mittels Python verarbeitet.
- Trigger für Torzählung mittels Lichtschranken.
- Touchscreen zur Anzeige des aktuellen Punktestands.
- Windows 10-PC mit Ubuntu VM und einem darin laufenden Edge Server zur Übermittlung der Punktestände an einen Azure IoT Server.

# Frontend

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.1.0.

## Development server

Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files.

## Code scaffolding

Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.

## Build

Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory.

## Running unit tests

Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Running end-to-end tests

Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
