{"id":15170300,"url":"https://github.com/stefanrautner/mbotcontroller","last_synced_at":"2026-02-07T22:31:59.995Z","repository":{"id":242132374,"uuid":"808768831","full_name":"StefanRautner/MBotController","owner":"StefanRautner","description":"Controller for the MBot2 (Group Project)","archived":false,"fork":false,"pushed_at":"2024-06-17T08:45:32.000Z","size":17787,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"Master","last_synced_at":"2024-10-10T22:22:23.501Z","etag":null,"topics":["css","html","javascript","json","micropython","python"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StefanRautner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-31T19:22:44.000Z","updated_at":"2024-06-17T08:45:36.000Z","dependencies_parsed_at":"2024-05-31T20:44:05.261Z","dependency_job_id":"fcb1d8b6-0586-49f6-a3fe-dcdfa93bf6d2","html_url":"https://github.com/StefanRautner/MBotController","commit_stats":null,"previous_names":["stefanrautner/mbotcontroller"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StefanRautner%2FMBotController","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StefanRautner%2FMBotController/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StefanRautner%2FMBotController/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StefanRautner%2FMBotController/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StefanRautner","download_url":"https://codeload.github.com/StefanRautner/MBotController/tar.gz/refs/heads/Master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219865216,"owners_count":16555929,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["css","html","javascript","json","micropython","python"],"created_at":"2024-09-27T08:01:22.851Z","updated_at":"2025-10-25T17:31:42.609Z","avatar_url":"https://github.com/StefanRautner.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"| **Projektbezeichnung** | MBot-Controller                                 |\n|-------------------------|------------------------------------------------|\n| **Projektteam**         | Tobias Haas, Patrick Thor, Stefan Rautner      |\n| **Erstellt am**         | 27.05.2024                                     |\n| **Letzte Änderung am**  | 08.06.2024                                     |\n| **Status**              | Fertig                                         |\n| **Aktuelle Version**    | 1.4                                            |\n\n\n \n\n# Änderungsverlauf\n\n| Nr. | Datum      | Version | Geänderte Kapitel  | Art der Änderung | Autor          |\n|-----|------------|---------|--------------------|------------------|----------------|\n| 1   | 27.05.2024 | 1.0     | Alle               | Erstellung       | Stefan Rautner |\n| 2   | 28.05.2024 | 1.1     | 5.1, 5.2           | Ergänzung        | Stefan Rautner |\n| 3   | 05.06.2024 | 1.2     | 5                  | Ergänzung        | Stefan Rautner |\n| 4   | 07.06.2024 | 1.3     | 1, 2, 3, 4, 5      | Ergänzung        | Stefan Rautner |\n| 5   | 08.06.2024 | 1.4     | 5, 6, 7, 8         | Ergänzung        | Stefan Rautner |\n\n\n# Inhalt\n\n1. [Allgemeines / Projektübersicht](#1-allgemeines--projektübersicht)\u003cbr\u003e\n   1.1 [Projektbeschreibung](#11-projektbeschreibung)\u003cbr\u003e\n   1.2 [Projektteam und Schnittstellen](#12-projektteam-und-schnittstellen)\n\n2. [Funktionale Anforderungen](#2-funktionale-anforderungen)\u003cbr\u003e\n   2.1 [Use Cases](#21-use-cases)\u003cbr\u003e\n   2.1.1 [Download Webapp](#211-download-webapp)\u003cbr\u003e\n   2.1.2 [Download MBot-Script](#212-download-mbot-script)\u003cbr\u003e\n   2.1.3 [Download \u0026 Start Zwischenserver](#213-download--start-zwischenserver)\u003cbr\u003e\n   2.1.4 [Steuerung des MBot](#214-steuerung-des-mbot)\u003cbr\u003e\n   2.1.5 [LineFollower](#215-linefollower)\u003cbr\u003e\n   2.1.6 [SuicidePrevention](#216-suicideprevention)\u003cbr\u003e\n   2.1.7 [Ambientebeleuchtung](#217-ambientebeleuchtung)\u003cbr\u003e\n   2.1.8 [DinoGame](#218-dinogame)\n\n3. [Nichtfunktionale Anforderungen](#3-nichtfunktionale-anforderungen)\n\n4. [Projektplanung](#4-projektplanung)\u003cbr\u003e\n   4.1 [Variantenbildung](#41-variantenbildung)\u003cbr\u003e\n   4.2 [Machbarkeitsstudie](#42-machbarkeitsstudie)\u003cbr\u003e\n   4.3 [Allgemeine Planungsinformationen](#43-allgemeine-planungsinformationen)\u003cbr\u003e\n   4.4 [Projektumfeldanalyse](#44-projektumfeldanalyse)\n\n5. [Softwarearchitektur](#5-softwarearchitektur)\u003cbr\u003e\n   5.1 [Aktivitätsdiagramme](#51-aktivitätsdiagramme)\u003cbr\u003e\n   5.1.1 [MBot suchen \u0026 verbinden](#511-mbot-suchen--verbinden)\u003cbr\u003e\n   5.1.2 [Daten an den MBot senden \u0026 Sensordaten vom MBot erhalten](#512-daten-an-den-mbot-senden--sensordaten-vom-mbot-erhalten)\u003cbr\u003e\n   5.1.3 [Von dem MBot trennen](#513-von-dem-mbot-trennen)\u003cbr\u003e\n   5.1.4 [Webapp schließen](#514-webapp-schließen)\u003cbr\u003e\n   5.2 [Sequenzdiagramme](#52-sequenzdiagramme)\u003cbr\u003e\n   5.2.1 [Sequenzdiagramm MBot verbinden](#521-sequenzdiagramm-mbot-verbinden)\u003cbr\u003e\n   5.2.2 [Sequenzdiagramm Daten senden](#522-sequenzdiagramm-daten-senden)\u003cbr\u003e\n   5.2.3 [Sequenzdiagramm Disconnect](#523-sequenzdiagramm-disconnect)\u003cbr\u003e\n   5.2.4 [Sequenzdiagramm Close](#524-sequenzdiagramm-close)\u003cbr\u003e\n   5.3 [Komponentendiagramme](#53-komponentendiagramme)\u003cbr\u003e\n   5.4 [Verteilungsdiagramme](#54-verteilungsdiagramme)\u003cbr\u003e\n   5.5 [Softwarekomponenten / Programme](#55-softwarekomponenten--programme)\u003cbr\u003e\n   5.5.1 [SW Programme](#551-sw-programme)\u003cbr\u003e\n   5.5.2 [SW Komponenten](#552-sw-komponenten)\n\n6. [Projektdurchführung](#6-projektdurchführung)\u003cbr\u003e\n   6.1 [Sprint 1](#61-sprint-1)\u003cbr\u003e\n   6.1.1 [Sprintplanung](#611-sprintplanung)\u003cbr\u003e\n   6.1.2 [Sprint Demo](#612-sprint-demo)\u003cbr\u003e\n   6.1.3 [Sprint Retrospektive](#613-sprint-retrospektive)\u003cbr\u003e\n   6.1.4 [Sprint Zusammenfassung](#614-sprint-zusammenfassung)\u003cbr\u003e\n   6.2 [Sprint 2](#62-sprint-2)\u003cbr\u003e\n   6.2.1 [Sprintplanung](#621-sprintplanung)\u003cbr\u003e\n   6.2.2 [Sprint Demo](#622-sprint-demo)\u003cbr\u003e\n   6.2.3 [Sprint Retrospektive](#623-sprint-retrospektive)\u003cbr\u003e\n   6.2.4 [Sprint Zusammenfassung](#624-sprint-zusammenfassung)\u003cbr\u003e\n   6.3 [Sprint 3](#63-sprint-3)\u003cbr\u003e\n   6.3.1 [Sprintplanung](#631-sprintplanung)\u003cbr\u003e\n   6.3.2 [Sprint Demo](#632-sprint-demo)\u003cbr\u003e\n   6.3.3 [Sprint Retrospektive](#633-sprint-retrospektive)\u003cbr\u003e\n   6.3.4 [Sprint Zusammenfassung](#634-sprint-zusammenfassung)\u003cbr\u003e\n   6.4 [Sprint 4](#64-sprint-4)\u003cbr\u003e\n   6.4.1 [Sprintplanung](#641-sprintplanung)\u003cbr\u003e\n   6.4.2 [Sprint Demo](#642-sprint-demo)\u003cbr\u003e\n   6.4.3 [Sprint Retrospektive](#643-sprint-retrospektive)\u003cbr\u003e\n   6.4.4 [Sprint Zusammenfassung](#644-sprint-zusammenfassung)\u003cbr\u003e\n   6.5 [Sprint 5](#65-sprint-5)\u003cbr\u003e\n   6.5.1 [Sprintplanung](#651-sprintplanung)\u003cbr\u003e\n   6.5.2 [Sprint Demo](#652-sprint-demo)\u003cbr\u003e\n   6.5.3 [Sprint Retrospektive](#653-sprint-retrospektive)\u003cbr\u003e\n   6.5.4 [Sprint Zusammenfassung](#654-sprint-zusammenfassung)\n\n7. [Installation / Software deployment](#7-installation--software-deployment)\n\n8. [Projektabschluss](#8-projektabschluss)\u003cbr\u003e\n   8.1 [Projektzusammenfassung](#81-projektzusammenfassung)\u003cbr\u003e\n   8.2 [Attachments](#82-attachments)\n\n\n\n# 1. Allgemeines / Projektübersicht\n## 1.1 Projektbeschreibung\nDas Projekt zielt darauf ab, eine Anwendung zur Fernsteuerung eines MBot2s zu entwickeln, die sowohl auf Computern als auch auf mobilen Geräten (Handys, Tablets, …) funktioniert. Der MBot2 ist mit diversen Sensoren und Aktoren ausgestattet und wird über MicroPython programmiert. Die Anwendung ermöglicht die automatische Netzwerkverbindung, zeigt Sensordaten an und erlaubt das Verarbeiten von Steuerbefehlen wie Bewegungsrichtung und Geschwindigkeit. Ein Sicherheitsmodus verhindert Kollisionen und einen Linienfolgemodus zum automatischen Folgen einer Linie. Das Projekt wird dem agilen Projektmanagement SCRUM durchgeführt. Die Projektlaufzeit ist vom 10. Januar 2024 bis zum 12. Juni 2024.\n\n## 1.2 Projektteam und Schnittstellen\n| Rolle(n)           | Name             | Telefon | E-Mail                              | Team    |\n|--------------------|------------------|---------|-------------------------------------|---------|\n| Frontend Developer | Tobias Haas      | Privat  | Tobias.haas@htl-saalfelden.at       | Group05 |\n| 3D-Designer        | Patrick Thor     | Privat  | Patrick.thor@htl-saalfelden.at      | Group05 |\n| Backend Developer  | Stefan Rautner   | Privat  | Stefan.rautner@htl-saalfelden.at    | Group05 |\n\n# 2. Funktionale Anforderungen\n## 2.1 Use Cases\n### 2.1.1 Download Webapp\n \n- Akteur: Benutzer\u003cbr\u003e\n- Vorbedingung: Benutzer muss funktionierenden Internetzugang und Zugang zur Webapp haben\u003cbr\u003e\n- Beschreibung: Der Benutzer drückt auf den „Download“-Button auf der Webapp (Home-Screen, relativ weit unten) und der Download startet automatisch, nachdem dieser Abgeschlossen ist, muss der User in dem erscheinenden Dialog (rechts oben am Bildschirm) auf „Installieren“ klicken um die Webapp zu Installieren.\u003cbr\u003e\n- Ergebnis: Die Webapp ist wie eine native App auf dem Gerät des Users installiert und kann ohne Internetzugriff verwendet werden (für die Steuerung des MBot muss aber trotzdem eine Internetverbindung hergestellt werden).\n\n### 2.1.2 Download MBot-Script\n \n- Akteur: Benutzer\u003cbr\u003e\n- Vorbedingung: Benutzer muss funktionierenden Internetzugang und Zugang zur Webapp haben.\u003cbr\u003e\n- Beschreibung: Der Benutzer drückt in dem Text auf das markierte „HIER (Home-Screen, ganz unten), danach startet der Download automatisch.\u003cbr\u003e\n- Ergebnis: Das MBot-Skript ist heruntergeladen und kann jetzt vom Benutzer weiter entwickelt/verwendet werden.\n\n### 2.1.3 Download \u0026 Start Zwischenserver\n \n- Akteur: Benutzer\u003cbr\u003e\n- Vorbedingung: Benutzer muss funktionierenden Internetzugang und Zugang zur Webapp haben.\u003cbr\u003e\n- Beschreibung: Der Benutzer öffnet den Tab „Controller“ in der Navigationsleiste der Webapp, dadurch wird der Zwischenserver (falls das aufrufende Gerät ein PC ist, wenn nicht, dann erscheint ein Dialog) automatisch heruntergeladen. Der Zwischenserver muss danach vom Benutzer manuell ausgeführt werden. Der Zwischenserver lädt sich automatisch die benötigten Module herunter und installiert diese, sodass der Zwischenserver funktionsfähig ist.\u003cbr\u003e\n- Ergebnis: Der Zwischenserver ist gestartet und wartet auf Befehle von Webapp und MBot.\n\n### 2.1.4 Steuerung des MBot\n \n- Akteur: Benutzer\u003cbr\u003e\n- Vorbedingung: Benutzer muss funktionierenden Internetzugang und Zugang zur Webapp haben, außerdem muss Python installiert sein.\u003cbr\u003e\n- Beschreibung: Der Benutzer öffnet den Tab „Controller“ in der Navigationsleiste, danach muss der heruntergeladene Zwischenserver gestartet werden und die Checkbox „Zwischenserver gestartet“ angekreuzt werden. Jetzt muss der gewünschte MBot ausgewählt werden, danach kann man diesen Steuern.\u003cbr\u003e\n- Ergebnis: Der Benutzer kann den MBot mit Hilfe des Zwischenservers über die Webapp steuern.\n\n### 2.1.5 LineFollower\n \n- Akteur: Benutzer\u003cbr\u003e\n- Vorbedingung: Benutzer muss funktionierenden Internetzugang und Zugang zur Webapp haben und mit einem MBot verbunden sein.\u003cbr\u003e\n- Beschreibung: Der Benutzer kreuzt die Checkbox „LineFollower“ an, dadurch wird von dem System die Steuerung übernommen.\u003cbr\u003e\n- Ergebnis: Der Benutzer hat die Funktione LineFollower auf dem MBot gestartet.\n\n### 2.1.6 SuicidePrevention\n \n- Akteur: Benutzer\u003cbr\u003e\n- Vorbedingung: Benutzer muss funktionierenden Internetzugang und Zugang zur Webapp haben und mit einem MBot verbunden sein.\u003cbr\u003e\n- Beschreibung: Der Benutzer kreuzt die Checkbox „SuicidePrevention“ an, dadurch stoppt der MBot automatisch vor Hindernissen.\u003cbr\u003e\n- Ergebnis: Der Benutzer hat die SuicidePrevention auf dem MBot gestartet.\n\n### 2.1.7 Ambientebeleuchtung\n \n- Akteur: Benutzer\u003cbr\u003e\n- Vorbedingung: Benutzer muss funktionierenden Internetzugang und Zugang zur Webapp haben und mit einem MBot verbunden sein.\u003cbr\u003e\n- Beschreibung: Der Benutzer kreuzt wählt in den 5 ColorPickern (unten bei Steuerungen Mitte) die jeweils gewünschte Farbe aus.\u003cbr\u003e\n- Ergebnis: Wenn der MBot stillsteht, ändern sich die Farben der 5 LEDs automatisch nach den Benutzereingaben.\n\n### 2.1.8 DinoGame\n \n- Akteur: Benutzer\u003cbr\u003e\n- Vorbedingung: Benutzer muss funktionierenden Internetzugang und Zugang zur Webapp haben.\u003cbr\u003e\n- Beschreibung: Der Benutzer öffnet in der Navigationsleiste den Tab „Dino-Game“ und kann dort eine abgespeckte Version des originalen Dino-Games von Google spielen.\u003cbr\u003e\n- Ergebnis: Der Benutzer kann das Dino-Game spielen.\n\n# 3. Nichtfunktionale Anforderungen\nBenutzer benötigt einen PC\u003cbr\u003e\nBenutzer benötigt einen Browser\u003cbr\u003e\nBenutzer benötigt eine funktionierende Internetverbindung\n\nVerwendetes Betriebssystem: Windows 11 64-bit\u003cbr\u003e\nVerwendete IDEs: PyCharm Version 2024.1.1 \u0026 Mblock Version 5.4.3\n\n# 4. Projektplanung\nWebapp in den Sprachen HTML, CSS \u0026 JS\u003cbr\u003e\nZwischenserver in der Sprache Python\u003cbr\u003e\nMBot in der Sprache Micropython\u003cbr\u003e\nUnterstützung für alle Geräte \u0026 Betriebssysteme (benötigt aber PC für Zwischenserver)\n\n\n## 4.1 Variantenbildung\nMit einem Zwischenserver in Spring-Boot (verworfen, weil größeres Framework).\u003cbr\u003e\nIn einem Docker-Container (verworfen, schwerer zu bedienen).\u003cbr\u003e\nMit einem Zwischenserver in Python (ausgeführt, benötigt nur Python, installiert Module automatisch, sehr benutzerfreundlich).\u003cbr\u003e\nOhne Zwischenserver durch WebSocket (verworfen, MBot keine WebSocket Unterstützung)\u003cbr\u003e\nOhne Zwischenserver durch UDP (verworfen, UDP im Web nicht möglich)\u003cbr\u003e\nOhne Zwischenserver durch TCP (verworfen, TCP im Web nicht möglich)\n\n## 4.2 Machbarkeitsstudie\nZwischenserver in Python (Unterstützung für WebSockets und UDP \u0026 TCP im lokalen Netzwerk)\u003cbr\u003e\nMBot mit UDP \u0026 TCP Sockets verbinden (UDP wegen Broadcast, TCP weil sicherer)\n\n## 4.3 Allgemeine Planungsinformationen\nAufteilung:\u003cbr\u003e\nTobias Haas: grafische Oberfläche \u0026 Dino-Game\u003cbr\u003e\nPatrick Thor: 3D-Model erstellen \u0026 anzeigen\u003cbr\u003e\nStefan Rautner: Programmierung, GitHub \u0026 Dokumentation\n\n## 4.4 Projektumfeldanalyse\nEs gibt schon vergleichbare Produkte auf dem Markt (in Form einer Fernsteuerung für einen Roboter) aber noch nicht für den MBot2. Es wird aber in nächster Zukunft mehrere geben, da die anderen Gruppen in unserer Klasse den gleichen Projektauftrag erhalten haben. Die Stakeholder des Projekts sind unsere Professoren Herr Falkensteiner \u0026 Herr Eigner.\n\n# 5. Softwarearchitektur\nKomponenten: Webapp, Zwischenserver \u0026 MBot\u003cbr\u003e\nVerteiltes System, das auf einem Gerät die von GitHub-Pages gehostete Webapp besucht, auf dem gleichen oder anderen PC muss der Zwischenserver gehostet werden (wird von der Webapp auto gedownloaded), wenn die Steuerung über ein Mobilgerät erfolgt, dann Zwischenserver auf PC und Webapp-Aufruf auf Mobilgerät und MBot Skript local auf dem MBot.\u003cbr\u003e\nDie Webapp und der MBot kommunizieren über den Zwischenserver miteinander.\u003cbr\u003e\nDer Zwischenserver erstellt einen UDP-Socket der nach der Broadcastnachricht des MBot sucht.\u003cbr\u003e\nDie Webapp gibt dem Zwischenserver den Befehl nach MBot-Broadcastnachrichten zu suchen.\u003cbr\u003e\nWenn die Broadcastnachricht des MBot gefunden wurde, dann verbindet sich der Zwischenserver durch einen TCP-Socket mit dem MBot für durchgehende Kommunikation.\n\n## 5.1 Aktivitätsdiagramme\n### 5.1.1 MBot suchen \u0026 verbinden\nWebapp sendet Befehl zum MBots suchen, Zwischenserver sucht über den UDP-Socket nach der Broadcastnachricht „MBot2-Group05_4AHINF“. Alle gefundenen MBots werden an die Webapp zurückgegeben, dort wählt der Benutzer einen MBot aus. Die Adresse des MBot wird automatisch an den Zwischenserver gesendet und dieser verbindet sich dadurch automatisch mit dem TCP-Socket des MBot. Dieser schließt danach den UDP-Socket.\n\n### 5.1.2 Daten an den MBot senden \u0026 Sensordaten vom MBot erhalten\nWebapp sendet Steuerbefehl an Zwischenserver, dieser leitet den Befehl an den MBot weiter. Dort werden die Daten verarbeitet (SuicidePrevention, Ambientebeleuchtung, …) und die Sensordaten ausgelesen. Die Sensordaten werden dann an den Zwischenserver gesendet, dieser Sendet die Daten dann an die Webapp weiter. Dort werden die Sensordaten verarbeitet und dem Benutzer angezeigt.\n\n### 5.1.3 Von dem MBot Trennen\nDie Webapp sendet den Disconnect Befehl an den Zwischenserver, dieser sendet darauf den „Disconnect“-Befehl an den MBot und schließt die Verbindung zum TCP-Socket. Der MBot „restartet“ dadurch sein Skript und bereitet sich für die nächste Verbindung vor.\n\n### 5.1.4 Webapp schließen\nDer Benutzer schließt die Webapp, dadurch sendet wird der „Close“-Befehl an den Zwischenserver gesendet. Der Zwischenserver sendet darauf den „Disconnect“-Befehl an den MBot und trennt den TCP-Socket \u0026 schließt den WebSocket. Der MBot „restartet“ dadurch sein Skript und bereitet sich für die nächste Verbindung vor.\n\n## 5.2 Sequenzdiagramme\n### 5.2.1 Sequenzdiagramm MBot Verbinden\nDie Webapp sendet einen Search Befehl an den MBot, dieser sucht dann über einen UDP-Socket nach dem Broadcast „MBot2-Group05_4AHINF“ und gibt dann die gefundenen MBots zurück. Dort wird dann ein MBot ausgewählt und dessen Adresse an den Zwischenserver gesendet. Der Zwischenserver verbindet sich jetzt über diese Adresse mit dem TCP-Socket des MBot.\n\n### 5.2.2 Sequenzdiagramm Daten Senden\nDie WebApp verarbeitet Benutzerdaten und sendet diese dann an den Zwischenserver weiter, dieser sendet die Daten sofort über den TCP-Socket an den MBot weiter. Der MBot verarbeitet die erhaltenen Daten (stellt dadurch die Ambientebeleuchtung, SuicidePrevention, … ein), liest die Sensordaten aus und sendet diese dann zurück an den Zwischenserver. Der Zwischenserver sendet diese Daten dann über den WebSocket an die Webapp weiter. Dieser Kreislauf wiederholt sich automatisch unendlich, bis der Benutzer den MBot trennt oder die Webapp schließt.\n\n### 5.2.3 Sequenzdiagramm Disconnect\nDer Benutzer sendet den „Disconnect“-Befehl an den Zwischenserver, dieser sendet dann eine „Disconnect“-Nachricht an den MBot und schließt die TCP-Socket Verbindung zum MBot. Der MBot startet dann sein Skript neu.\n\n### 5.2.4 Sequenzdiagramm Close\nDer Benutzer sendet den „Close“-Befehl an den Zwischenserver, dieser sendet dann eine „disconnect“-Nachricht an den MBot und schließt die TCP-Socket Verbindung zum MBot und den WebSocket. Der MBot startet dann sein Skript neu.\n\n## 5.3 Komponentendiagramme\n```mermaid\ngraph TD\n    A[\u003c\u003ccomponent\u003e\u003e mBot]\n    B[\u003c\u003ccomponent\u003e\u003e Zwischenserver]\n    C[\u003c\u003ccomponent\u003e\u003e WebApp]\n\n    A --\u003e|Sendet Sensordaten| B\n    B --\u003e|Leitet Sensordaten weiter| C\n    C --\u003e|Sendet Befehle| B\n    B --\u003e|Leitet Befehlsdaten weiter| A\n\n    B --\u003e|Hört auf Broadcast von mBot| A\n    B --\u003e|Sendet mögliche mBots zu mBot| A\n\n    A:::mbot\n    B:::zwischenserver\n    C:::webapp\n\n    style A fill:#fff,stroke:#000,stroke-width:1px\n    style B fill:#fff,stroke:#000,stroke-width:1px\n    style C fill:#fff,stroke:#000,stroke-width:1px\n```\n \n## 5.4 Verteilungsdiagramme\n```mermaid\ngraph TD\n    subgraph WebApp\n        A[Benutzereingabe]\n        B[Verarbeitet Sensordaten]\n        C[Sendet Befehle]\n        A --\u003e B --\u003e C\n    end\n\n    subgraph Zwischenserver\n        D[System Zwischenserver]\n    end\n\n    subgraph MBot\n        E[Sendet Sensordaten]\n        F[Empfängt und verarbeitet Befehlsdaten]\n        E --\u003e F\n    end\n\n    C --\u003e|WebSocket: 0.0.0.0:5431| D\n    D --\u003e|UDP: 255.255.255.255:4900| E\n    D --\u003e|TCP: 10.10.x.x:5431| F\n```\n\n## 5.5 Softwarekomponenten / Programme\n### 5.5.1 SW Programme\nPyCharm, Version: 2024.1.1\u003cbr\u003e\nMBlock, Version 5.4.3\n\n### 5.5.2 SW Komponenten\nHyper Text Markup Language\u003cbr\u003e\nVersion: HTML 5.2\u003cbr\u003e\nHersteller: Sir Timothy John Berners-Lee, World Wide Web Consortium (W3C) \u0026 Web Hypertext Application Technology Working Group (WHATWG)\u003cbr\u003e\nDownloadlink: Kein Download möglich (nur in IDEs)\u003cbr\u003e\n[Lizenz](https://www.w3.org/2011/03/html-license-options.html) \n\nCascading Style Sheets\u003cbr\u003e\nVersion: CSS 3\u003cbr\u003e\nHersteller: Hakon Wium Lie \u0026 World Wide Web Consortium (W3C)\u003cbr\u003e\nDownloadlink: Kein Download möglich (nur in IDEs)\u003cbr\u003e\n[Lizenz](https://www.w3.org/copyright/document-license-2023/)\n\nJavascript (ofizieller Name: ECMA Script)\u003cbr\u003e\nVersion: ECMAScript 2023\u003cbr\u003e\nHersteller: Oracle\u003cbr\u003e\nDownloadlink: Kein Download möglich (nur in IDEs)\u003cbr\u003e\n[Lizenz](https://docs.oracle.com/cd/E19957-01/816-6152-10/copyrt.html)\n\nPython 3.12\u003cbr\u003e\nVersion: 3.12.3\u003cbr\u003e\nHersteller: Python Software Foundation (Guido van Rossum)\u003cbr\u003e\n[Downloadlink](https://www.microsoft.com/store/productId/9NCVDN91XZQP?ocid=pdpshare)\u003cbr\u003e\n[Lizenz](https://docs.python.org/3/license.html) \n\n# 6. Projektdurchführung\n## 6.1 Sprint 1\n### 6.1.1 Sprintplanung\nDauer: 07.02.2024 – 28.02.2024\u003cbr\u003e\n\nAusgewählte User Stories:\u003cbr\u003e\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 6\u003cbr\u003e\nName: Automatische Verbindung zum WLAN nachdem MBot eingeschalten wurde\u003cbr\u003e\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 7\u003cbr\u003e\nName: Steuerung des MBot vom Client über den Zwischenserver eingeschalten wurde\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 8\u003cbr\u003e\nName: Verbindung der Webapp mit dem MBot über den Zwischenserver\neingeschalten wurde\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 9\u003cbr\u003e\nName: Webapp automatisch mit Zwischenserver verbinden\neingeschalten wurde\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 10\u003cbr\u003e\nName: Implementierung eines LineFollower für den MBot eingeschalten wurde\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 2\u003cbr\u003e\nName: Implementierung einer SuicidePrevention für den MBot\nwurde\n\nBearbeiter: Tobias Haas\u003cbr\u003e\nID: 3\u003cbr\u003e\nName: Webapp mit mobilen Geräten kompatible machen\neingeschalten wurde\n\nAnzahl geplante Story points: 120\u003cbr\u003e\nGeschaffte Story points: 45\n\n### 6.1.2 Sprint Demo\nDie Eingabemethoden: WASD, Pfeil-Tasten, Touch \u0026 Controller sind implementiert worden und funktionieren.\u003cbr\u003e\nDie Verbindung vom MBot zum WLAN funktioniert.\u003cbr\u003e\nImplementierung der Steuerung des MBot wurde begonnen, aber nicht abgeschlossen.\u003cbr\u003e\nImplementierung der Verbindung des MBot wurde begonnen, aber nicht abgeschlossen.\u003cbr\u003e\nDie Webapp verbindet sich automatisch mit dem Zwischenserver.\u003cbr\u003e\nDer LineFollower wurde nicht implementiert.\u003cbr\u003e\nImplementierung der SuicidePrevention wurde begonnen, aber nicht abgeschlossen.\u003cbr\u003e\nEs wurde begonnen, eine Unterstützung der Webapp für mobile Geräte zu erstellen.\n\n### 6.1.3 Sprint Retrospektive\nDa es der Erste Sprint war, hatten wir noch keine Erfahrung, wie viel wir in einem Sprint machen können.\u003cbr\u003e\nIch (Stefan Rautner) habe mich in diesem Sprint überschätzt und bin dadurch nur mit ca. 50% meiner Aufgaben fertig geworden.\u003cbr\u003e\nDas Abschließen der User Story von Tobias Haas ist rein technisch nicht möglich, weil die Grafische Oberfläche im Verlauf der zukünftigen Sprints immer wieder aktualisiert werden wird.\n\n### 6.1.4 Sprint Zusammenfassung\nGrundsätzlich ist der Sprint gut gelaufen, aber ich (Stefan Rautner) habe mich sehr übernommen.\u003cbr\u003e\nEs wurden keine neuen User Stories hinzugefügt.\u003cbr\u003e\nEs wurden ebenfalls keine User Stories entfernt.\n \nAuf Basis dieser Sprint Velocity ist das Projekt früher als erwartet fertig.\u003cbr\u003e\nDie Durchschnittliche Sprint Velocity beträgt 45.\n\n## 6.2 Sprint 2\n### 6.2.1 Sprintplanung\nDauer: 29.02.2024 – 20.03.2024\n\nAusgewählt User Stories: \n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 11\u003cbr\u003e\nName: MBot mit der Zeit immer schneller fahren lassen\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 12\u003cbr\u003e\nName: Client zeigen, dass MBot mit WLAN verbunden ist\n\nBearbeiter: Patrick Thor \u0026 Stefan Rautner\u003cbr\u003e\nID: 13\u003cbr\u003e\nName: Ausrichtung des MBot durch 3D-Model mit dessen Gyrodaten auf dem Client anzeigen\n\nBearbeiter: Tobias Haas\u003cbr\u003e\nID: 14\u003cbr\u003e\nName: Grafische Oberfläche für die Webapp\n\nAnzahl geplanter User Stories: 31\u003cbr\u003e\nGeschaffte Story Points: 21\n\n### 6.2.2 Sprint Demo\nDer MBot beschleunigt jetzt je länger eine Taste gedrückt wird oder je weiter der Stick des Controllers in eine Richtung gedrückt wird.\u003cbr\u003e\nDem Client wird jetzt angezeigt, dass der MBot mit dem WLAN verbunden ist.\u003cbr\u003e\nDie Webapp beinhält jetzt ein 3D-Model welches abhängig von den Gyrodaten des MBot geupdatet wird.\u003cbr\u003e\nDie Grafische Oberfläche der Webapp wurde verbessert.\n\n### 6.2.3 Sprint Retrospektive\nIn diesem Sprint war die Planung der User Stories deutlich besser.\u003cbr\u003e\nDie User Story von Tobias Haas konnte wie im Letzten Sprint bereits beschrieben nicht abgeschlossen werden, weil die Grafisch Oberfläche in folgenden Sprints sicher noch geändert wird.\n\n### 6.2.4 Sprint Zusammenfassung\nDiesmal ist der Sprint besser ausgefallen und wir haben fast alle Arbeitspakete erfolgreich erledigen können.\u003cbr\u003e\nEs wurde 2 neue Anforderungen hinzugefügt:\n- Anzeigen der Farben unter den RGB-Sensoren des MBot während aktivem LineFollower.\n- Die 3D-Anzeige des MBots aufgrund seiner Gyrodaten verändern.\nEs wurden keine User Stories entfernt.\n \n \nAuf Basis dieser Sprint Velocity ist das Projekt später als erwartet fertig.\u003cbr\u003e\nDie Durchschnittliche Sprint Velocity beträgt jetzt 33.\n\n## 6.3 Sprint 3\n### 6.3.1 Sprintplanung\nDauer: 21.03.2024 – 17.04.2024\n\nAusgewählt User Stories: \n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 23\u003cbr\u003e\nName: Ausführung des Zwischenservers\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 4\u003cbr\u003e\nName: Daten der 4 RGB-Sensoren bei aktiviertem LineFollower an den Client senden\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 5\u003cbr\u003e\nName: Geschwindigkeit des MBot durch dessen Beschleunigungssensors an den Client senden\n\nBearbeiter: Tobias Haas\u003cbr\u003e\nID: 14\u003cbr\u003e\nName: Grafische Oberfläche für die Webapp\n\nAnzahl geplanter User Stories: 41\u003cbr\u003e\nGeschaffte Story Points: 31\n\n### 6.3.2 Sprint Demo\nDer Zwischenserver ist jetzt ausführbereit und hat alle benötigten Funktionen für unseren Anwendungsfall.\u003cbr\u003e\nDie 4 RGB-Sensoren werden jetzt bei aktivem LineFollower ausgelesen und auf der Webapp angezeigt.\u003cbr\u003e\nDie Geschwindigkeit des MBot wird jetzt ausgelesen und auf der Webapp dargestellt.\u003cbr\u003e\nDie Grafische Oberfläche der Webapp wurde weiter verbessert.\n\n### 6.3.3 Sprint Retrospektive\nIn diesem Sprint war die Planung der User Stories relativ gleich wie im Letzten.\u003cbr\u003e\nDie User Story von Tobias Haas ist wie in den letzten zwei Sprints beschrieben nicht abschließbar, weil die Grafisch Oberfläche in folgenden Sprints sicher noch geändert wird.\u003cbr\u003e\n\n### 6.3.4 Sprint Zusammenfassung\nDiesmal ist der Sprint besser ausgefallen und wir haben fast alle Arbeitspakete erfolgreich erledigt.\u003cbr\u003e\nEs wurden keine weiteren User Stories hinzugefügt.\u003cbr\u003e\nEs wurden die User Stories „Firebase“ entfernt.\n \nAuf Basis dieser Sprint Velocity wird das Projekt ca. zum Abgabezeitpunkt fertig.\u003cbr\u003e\nDie Durchschnittliche Sprint Velocity beträgt jetzt 32,33.\n\n## 6.4 Sprint 4\n### 6.4.1 Sprintplanung\nDauer: 18.04.2024 – 15.05.2024\n\nAusgewählt User Stories: \n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 20\u003cbr\u003e\nName: Ambientebeleuchtung auf MBot durch Client einstellen \u0026 einschalten\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 21\u003cbr\u003e\nName: Liniendiagramm mit den Daten der Beschleunigungssensors erstellen\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 22\u003cbr\u003e\nName: Liniendiagramm mit den Daten des Ultraschallsensors erstellen\n\nBearbeiter: Tobias Haas\u003cbr\u003e\nID: 24\u003cbr\u003e\nName: Dino-Game implementieren, dass vom Client gespielt werden kann\n\nAnzahl geplanter User Stories: 27\u003cbr\u003e\nGeschaffte Story Points: 27\n\n### 6.4.2 Sprint Demo\nDie Ambientebeleuchtung kann jetzt vom User ausgewählt und geändert werden.\u003cbr\u003e\nEbenfalls gibt es jetzt Liniendiagramme um die Daten des Beschleunigungssensors \u0026 des Ultraschallsensors (Zeitraum: 5 Sekunden, Abstände zwischen Datenpunkten: 500ms).\u003cbr\u003e\nDer User kann jetzt das Google Chrome Dino-Game auf der Webapp spielen.\n\n### 6.4.3 Sprint Retrospektive\nIn diesem Sprint war die Planung der User Stories relativ gleich wie in den Letzten zwei.\u003cbr\u003e\nDie User Story von Tobias Haas ist wie in den letzten Sprints bereits erwähnt nicht abschließbar, weil die grafisch Oberfläche in folgenden Sprints sicher noch geändert wird.\n\n### 6.4.4 Sprint Zusammenfassung\nDiesmal ist der Sprint sehr gut ausgefallen.\u003cbr\u003e\nWir haben alle Arbeitspakete erfolgreich abgeschlossen.\u003cbr\u003e\nEs wurden keine weiteren User Stories hinzugefügt.\u003cbr\u003e\nEr wurden keine User Stories entfernt.\n \nAuf Basis dieser Sprint Velocity wird das Projekt ca. zum Abgabezeitpunkt fertig.\u003cbr\u003e\nDie Durchschnittliche Sprint Velocity beträgt jetzt 31.\n\n## 6.5 Sprint 5\n### 6.5.1 Sprintplanung\nDauer: 16.05.2024 – 12.06.2024\n\nAusgewählt User Stories: \n\nBearbeiter: Tobias Haas\u003cbr\u003e\nID: 15\u003cbr\u003e\nName: Webapp anschaulich \u0026 benutzerfreundlich gestalten\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 16\u003cbr\u003e\nName: MBot Skript ändern, sodass Reset möglich ist\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 17\u003cbr\u003e\nName: Verbindung zu Zwischenserver ändern\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 18\u003cbr\u003e\nName: Dokumentation neu erstellen\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 25\u003cbr\u003e\nName: LineFollower fertig machen\n\nBearbeiter: Stefan Rautner\u003cbr\u003e\nID: 26\u003cbr\u003e\nName: Endpräsentation erstellen\n\nAnzahl geplanter User Stories: 77\u003cbr\u003e\nGeschaffte Story Points: 77\n\n### 6.5.2 Sprint Demo\nDie Grafische Oberfläche der Webapp wurde in diesem Sprint endgültig fertig gestellt.\u003cbr\u003e\nEbenfalls wurde das Skript des MBot geändert, sodass dieser (wenn er getrennt wird) das Programm neu startet.\u003cbr\u003e\nEbenfalls wurde die Verbindung zum Zwischenserver geändert und die Unterstützung für Mobilegeräte hinzugefügt.\u003cbr\u003e\nZu guter Letzt wurde die Dokumentation des gesamten Dokuments (Projektdokumentation \u0026 5 Sprintpräsentationen) neu aufgesetzt, der LineFollower fertig implementiert und das MBot Skript neu aufgesetzt.\n\n### 6.5.3 Sprint Retrospektive\nIn diesem Sprint war die Planung der User Stories relativ gleich wie in den Letzten drei.\u003cbr\u003e\nDie User Story von Tobias Haas ist wie in den Letzten Sprints angegeben jetzt fertig geworden, weil jetzt keine Erneuerungen mehr dazu kommen.\n\n### 6.5.4 Sprint Zusammenfassung\nDiesmal ist der Sprint sehr gut ausgefallen.\u003cbr\u003e\nWir haben alle verbleibenden Arbeitspakete erfolgreich abgeschlossen.\u003cbr\u003e\nEs wurden die User Stories „Dokumentation neu erstellen“, „Endpräsentation erstellen“ und „MBot Skript neu aufsetzen“ hinzugefügt.\u003cbr\u003e\nEs wurden keine User Stories entfernt. \n \nAuf Basis dieser Sprint Velocity wird das Projekt genau zum Abgabepunkt fertig.\u003cbr\u003e\nDie Durchschnittliche Sprint Velocity beträgt jetzt 40,2.\n\n# 7. Installation / Software deployment\nWindows Store öffnen \u003e Python 3.12 suchen \u003e installieren\u003cbr\u003e\nJetBrains Website öffnen \u003e PyCharm suchen \u003e herunterladen \u003e .exe ausführen\u003cbr\u003e\nVisual Studio Website öffnen \u003e VS-Code suchen \u003e herunterladen \u003e .exe ausführen\n\n# 8. Projektabschluss\n## 8.1 Projektzusammenfassung\nPrinzipiell lief das Projekt gut. Manchmal war die Produktivität eher gering, aber es wurde trotz allem das Projekt erfolgreich fertig gestellt.\u003cbr\u003e\nDie Arbeitsaufteilung im Team war ehrlich gesagt eher mangelhaft, hauptsächlich aufgrund des Engagements einzelner Teammitglieder.\n\n## 8.2 Attachments\nSprint-Review Präsentationen \u0026 die Projektbeschreibung sind in dem Zip-Ordner \"Dokumente\" zu finden\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefanrautner%2Fmbotcontroller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstefanrautner%2Fmbotcontroller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefanrautner%2Fmbotcontroller/lists"}