Konzept-Fragen für eine Server/Client Software

Du hast eine Idee für ein Projekt?
Antworten
Mr_C
User
Beiträge: 14
Registriert: Samstag 15. Dezember 2018, 13:32

Hallo Zusammen,

ich möchte gerne eine Software für die Organisation einer Übung im Katastrophenschutz-Sektor erstellen. Die Software soll im Hintergrund laufen und "nur" für die Organisation/Bereitstellung und das Monitoring der relevanten Daten sein.

Hierzu muss die Software jedoch auf 6 Arbeitsplätzen zur Verfügung stehen:
  • Arbeitsplätze 1-4 dienen der Auftragsbearbeitung durch die Übungsleitung. Diese sind über Funk zu den Teilnehmern verbunden.
  • Arbeitsplatz 5 ist der Hauptarbeitsplatz, wo Aufträge/Einsatzmittel eingespielt werden können.
  • Arbeitsplatz 6 dient als reine Anzeige (am Beamer)
Die Schwierigkeit besteht aus meiner Sicht in der Netzwerkkommunikation der Arbeitsplätze untereinander. Das Erstellen und Auswerten der Übungsrelevanten Daten in Python sehe ich aktuell nicht als Schwierigkeit an, da es sich rein um Lese/Schreib-Aktionen in einer Datenbank handelt.

Hierzu kommt auch meine Frage: Ich würde die Software gerne in Python programmieren um dort meine Fähigkeiten weiter auszubauen. Bin jedoch dort noch Anfänger (ich habe bisher div. Data-Mining Projekte und ein paar E-Mail-Sortierer programmiert), würde aber gerne weiter vorankommen. Weiterhin komme ich in PHP zurecht.

Was ist aus Eurer Sicht sinnvoller?
Der Einsatz von PHP und die Software als Website abbilden?
  • (+) Server/Client Struktur bereits durch den Webserver vorhanden
  • (+) Visualisierung einfach möglich
  • (+) Einsatz von jedem Notebook möglich
  • (-) Fähigkeiten in Python werden nicht weiter ausgebaut
Der Einsatz des Flask- oder Django-Frameworks und die Software ebenfalls als Website abbilden?
  • (+) Server/Client Struktur bereits durch den Webserver vorhanden
  • (+) Visualisierung einfach möglich (Behaupte ich mal!)
  • (+) Einsatz von jedem Notebook möglich
  • (+/-) Einsatz von Python, keine Erfahrung mit den Frameworks
  • (-) Mein aktueller Webserver bietet die Frameworks nicht an. Ggf. muss ich einen eigenen Server aufsetzen (Wäre mit dem Rpi möglich)
Der Einsatz als "herkömmliche" Software und dort eine Server/Client Struktur aufbauen?
  • (+) Einsatz von Python
  • (+/-) Keine Erfahrung in der Programmierung einer Server/Client Struktur
  • (-) Auf den Notebooks muss Python installiert werden

Reizen würde mich eigentlich die letzte Varianten, wobei dort vermutlich am meisten Arbeit auf mich zukommt.
Was meint Ihr? Welche Lösung wäre für einen fortgeschrittenen Anfänger die beste? Zeitlich möchte ich die Software in ca. 2 Monaten fertig haben (wobei das keine Deadline ist. Durch die Corona-Pandemie sind Präsenzveranstaltungen aktuell ausgesetzt...aber wenn ich mir kein Ziel stecke ist es in zwei Jahren noch nicht fertig).

Danke für Euer Feedback und viele Grüße!
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mir fehlt hier völlig die Beschreibung *was* mit dieser Anwendung eigentlich getan wird. Welche Eingaben, was wird da visualisiert, und wieso können die Beteiligten neben dem, was sie eh schon machen müssen, noch nebenbei dein Tool betreiben?
Mr_C
User
Beiträge: 14
Registriert: Samstag 15. Dezember 2018, 13:32

Es geht um die Simulation von Unwetterlagen, wo in kurzer Zeit eine Menge einzelne kleine Aufträge abgearbeitet werden müssen.

Die vier Arbeitsplätze simulieren hierbei die Einheiten, die vor Ort sind. Diese haben auf ihrem Bildschirm die Einheiten visualisiert (welche sie simulieren) sowie die Aufträge, welche durch die Einheiten abgearbeitet werden. Sie geben anschließend dem Auftrag den Status "Zugewiesen/in Bearbeitung/Abgeschlossen".

Auf dem Hauptarbeitsplatz werden Einsatzmittel den vier oben genannten Arbeitsplätzen zugewiesen. Ebenso werden Aufträge erstellt und per Fax den Teilnehmern zugespielt. Diese werden dann durch die Teilnehmer bearbeitet und irgendwann weisen Sie über eine Funkverbindung ihren Einheiten die Aufträge zu. Hier schließt sich der Kreis und die vier Arbeitsplätze "bearbeiten" dann die Aufträge.


Wie gesagt, die Software arbeitet eher im Hintergrund für die Übungsleitung. Die Teilnehmer arbeiten mit ihrer üblichen Arbeitsweise bzw. nutzen speziell für diesen Zweck erstelle Software.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wie arbeitet deine Software denn “im Hintergrund”? Wie sollen denn die Informationen, die du erheben willst, da reinkommen? Wenn die eigentlichen Tätigkeiten in der speziellen Software vorgenommen werden - wie kommst du da ran, was darin gerade passiert?
Benutzeravatar
sparrow
User
Beiträge: 4165
Registriert: Freitag 17. April 2009, 10:28

Ich verstehe noch immer nicht, was genau die Software machen soll.
Soll sie nun Unwetter simulieren? Oder sollen darin die Aufträge eingegeben werden?
Und das "im Hintergrund" ist auch verwirrend. "Im Hintergrund" laufen Dienste bzw. Daemons, die keine Benutzerinteraktion benötigen.

Das "Große Ganze" ist doch egal und lenkt nur ab. Was genau soll mit deiner Software gemacht werden? Soll da etwas eingegeben oder angezeigt werden? Und nur mit deiner Software.
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

Die Frage ist, was soll dargestellt werden? Wie kompliziert wird die Darstellung? Einfacher Listen, paar Knöpfe. Hört sich für mich an, als ob Nachrichten vom Server ständig aktualisiert werden müssen. Dann kommt bei den Web- Varianten noch einiges an JavaScript hinzu. Bei einer nativen Python-GUI ist das mit Ereignis- basierter nebenläufiger Programmierung aber auch eine Herausforderung.
Der Server wird auch aber in Variante II oder III kaum unterscheiden. Groß Hardware wirst du dafür auch nicht brauchen. Das kann ohne Probleme auf dem Hauptarbeitsplatzrechner nebenher laufen.
Mr_C
User
Beiträge: 14
Registriert: Samstag 15. Dezember 2018, 13:32

Ich habe mal eine kleine Übersicht der Aufgaben Teilnehmer/Übungsleitung erstellt.
Mhmm...da keine Bilder hochgeladen werden können versuche ich das mal Textlastig abzubilden:

Aufgaben der Teilnehmer / Übungsleitung
- Auftrag wird über Fax eingespielt Auftrag muss erstellt und gespeichert werden. Der Ausdruck wird durchgeführt.
- Auftrag wird priorisiert und einem Einsatzmittel zugewiesen. keine Aktion
- Einsatzmittel Übersicht muss geführt werden Die Übungsleitung muss ebenso eine komplette Lageübersicht für die Bewertung führen
- Übersicht über die gesamte Lage muss geführt werden Die Übungsleitung muss ebenso eine komplette Lageübersicht für die Bewertung führen
- Über Funk wird das Einsatzmittel angesprochen und die Auftragsdaten werden durchgegeben Die Stati der Aufträge müssen gespeichert werden, die Einsatzmittel müssen simuliert werden
- Auftrag wird als „abgeschlossen“ gemeldet Auftrags-Stati speichern


Die Schwierigkeit der Übungsleitung ist es:
  • Die Aufträge zu erstellen (es können bis zu 150 sein). Diese möchte ich gerne via Zufallsprinzip aus Straßenlisten, Stichworten usw. erstellen
  • Eine Übersicht über die gesamte Lage mit weniger Personal zu führen
  • Flexibel auf die Anforderungen der Teilnehmer zu reagieren

Was möchte ich am Beamer visualisieren möchte:
  • Übersicht der Aufträge nach Status
  • Einsatzmittelübersicht

Was die Ansicht an den vier Arbeitsplätzen sein soll:
  • Anzeige, für welche Einheiten der Arbeitsplatz verantwortlich ist
  • Übersicht alle Aufträge mit dem Status "offen"
  • Übersicht aller Aufträge, die einem der für sie verantwortlichen Einsatzmittel zugewiesen worden ist
Als Aktion wäre:
  • Auswahl eines offenen Auftrag und Zuweisung eines Einsatzmittels (wenn die Aufforderung über Funk gekommen ist)
  • Bearbeitung der Zugewiesenen Aufträgen: fiktive Rückmeldungen geben, Einsatz abschließen

Die Anzeige sollte "fast" dynamisch sein. Mir würde die "Auto-Reload" Funktion des Browsers reichen...also eine Aktualisierungsrate von ca. 1-2 Minuten. Komplett dynamische Anzeige wäre ebenfalls mit PHP ein Problem...
Mr_C
User
Beiträge: 14
Registriert: Samstag 15. Dezember 2018, 13:32

OK...meine abschließende Idee:
Webserver mit MySQL-Datenbank entweder im Netz oder lokal auf einem Rpi
Zugriff aller Clients mit pymsql oder einem anderen Connector.

Ich müsste dann nur einen Timer ablaufen lassen, der z. B. alle 30 oder 60 Sek. die Oberflächen der GUI aktualisiert. Viele Programmteile benötigen z. B. auch keine GUI wie das Anlegen von Aufträgen.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Kannst du mal erklären, wie man einen Auftrag anlegt *ohne* GUI? Mir fehlt da immer noch die Vorstellung wer mit was genau arbeitet.
Mr_C
User
Beiträge: 14
Registriert: Samstag 15. Dezember 2018, 13:32

__deets__ hat geschrieben: Montag 24. August 2020, 11:12 Kannst du mal erklären, wie man einen Auftrag anlegt *ohne* GUI? Mir fehlt da immer noch die Vorstellung wer mit was genau arbeitet.
Mit GUI meinte ich speziell den grafischen Teil. Per Konsole muss der Auftrag schon noch erstellt werden...

Ein Auftrag besteht im Grunde erstmal aus den folgenden Daten: ID, Datum, Uhrzeit, Stichwort, Adresse, Meldender.
Die Adresse möchte ich per Zufall aus einem Straßenverzeichnis ziehen, das Stichwort und der Meldender soll ebenfalls aus vorher definierten Listen per Zufall ausgewählt werden.
Ich möchte ungerne 150 Aufträge "per Hand" definieren. Auch ist man flexibler...langweilen sich die Teilnehmer kann man ad hoc 20 Aufträge genieren und sie zum Schwitzen bringen :twisted:
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

Gerade was eine Darstellung auf einem Beamer anbelangt, ist HTML deutlich ansprechender als die typischen GUI- Rahmenwerke. Gerade in Kombination einer Datenbank hast Django ein sehr gutes Tutorial. Vergleichbare gibt es für native GUIs nicht. Da bist du auf dich alleine gestellt und musst aufpassen, nicht an irgendeine zweifelhafte Quelle zu kommen.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Also im Prinzip reden wir hier von einem Ticket System mit zufällig generierten Tickets (Aufträgen), die bei Fax an irgendwelche Leute verschickt werden. Aufträge werden ausgeführt von Leuten die auf das Ticket System direkt keinen Zugriff haben, sie kommunizieren mit den Leuten in der Zentrale die diesen Zugriff haben sollen via Fax und Funk. Die Leute in der Zentrale teilen die Tickets zu.

Man könnte also im Prinzip auch Software haben die Aufträge generiert. Die generierten Aufträge ausdrucken, faxen und an eine real existierendes Kanban Board heften und bei Bedarf darauf verschieben. Versteh ich dies soweit richtig?
Mr_C
User
Beiträge: 14
Registriert: Samstag 15. Dezember 2018, 13:32

@Sirius3:
Ich denke auch, das eine Oberfläche mit Django besser zu erstellen ist. Weiterhin bleibt der Vorteil, das alle Arbeitsplätze keine weitere Software installieren müssen.

@DasIch:
Als Ticket kann man einen Auftrag auch bezeichnen.
Die Übungsleitung erzeugt z. B. zwei Aufträge: Baum auf Straße, Baum auf Bahntrasse und leitet diese per Fax an die Übungsteilnehmer weiter.
Die Übungsteilnehmer müssen diese Aufträge nun priorisieren. Im Anschluss werden die Aufträge an Einheiten/Fahrzeuge über Funk zur Abarbeitung zugewiesen. Da keine Einheiten/Fahrzeuge an der Übung teilnehmen, werden diese von der Übungsleitung simuliert. Da die Leitung auch nicht weiß, an welche Einheit/Fahrzeug der Auftrag weitergeleitet wird, muss flexibel darauf reagiert werden können.
Die Übungsleitung gibt irgendwann die Rückmeldung "Einsatz abgeschlossen" an die Übungsteilnehmer zurück. Diese können dann der Einheit/dem Fahrzeug einen neuen Auftrag zuweisen.

Die Schwierigkeit besteht dabei für die Übungsteilnehmer: Der Gesamtüberblick muss behalten bleiben, Aufträge müssen passend priorisiert werden usw.
Antworten