Zum Inhalt springen

TUTORIAL Entwickler Informationen zur DR!FT Community API


Empfohlene Beiträge

Bitte melde dich an um den Link zu sehen.

naja, musst ja nicht mit dem virtuellen Finger auf deine unordentlichste Ecke hinweisen .. 😉

 

Yeah ... die Portierung auf  Raspberry Pi ist abgeschlossen. Alle Container lassen sich auf dem Pi bauen, Connection zur DB funktioniert jetzt auch und es läuft stabil - der praktische Test ist ebenfalls erfolgreich.

Ich musste einiges was während dem build angezogen wird austauschen. Aber die build-Skripte bleiben vom Aufbau her gleich. Also auch die meisten künftigen Mods sollten portierbar sein.

Ich werde jetzt noch schauen, ob sich an der Größe etwas optimieren lässt und ein paar Komfort-Funktionen einbauen (Wifi-AP, Display on Demand, evtl auch Touchscreen) und dann eine Anleitung zum Nachbauen bereitstellen und das fertige Image für Anfänger. Damit wird das Projekt auch für unbedarfte Nutzer zugänglich und man kann es bei Treffen spontan und mit minimaler Hardware einsetzen.

Schonmal ein paar Spoiler-Infos:

- Basis ist Pi-OS 64Bit bullseye (jippieh, es geht sogar ohne das fette Ubuntu/Debian sondern mit dem entschlackten und schnell bootenden System)

- Voraussetzung ist ein Pi4. Eventuell kann man es auch auf dem Pi3 und 2w laufen lassen, müsste man testen (ich selbst hab keinen). Pi2 und weniger geht definitiv nicht, sofern man an der MongoDB festhält.

- Es wird jetzt eine modifizierte Version von FastAPI bzw uvicorn-gunicorn angezogen. Das ist noch nicht ganz clean und ich suche eine bessere Lösung. Wenn man es richtig machen will, müsste man selbst an den built-Prozess des original Docker-Images herangehen. Da der Entwickler tiangolo den request danach schon seit einer Weile "zurückstellt", vermute ich dass es mit einem einfachen buildx nicht getan ist. Mal schauen ob  ich mir  die Mühe mache - es hat jetzt auch keine große Prio, da es ja auch so funktioniert.

Jetzt werde ich erstmal etwas ausgiebiger die Funktionen testen! 😀😀😀

Bitte melde dich an um Bilder zu sehen.

Bitte melde dich an um Bilder zu sehen.

 

 

Bearbeitet von Foox
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Zusammen,

ich baue gerade einen eigenen Server in Java, dadurch entfällt das ganze docker Gedöns und es lässt sich auf Windows, Mac und Linux  einfach direkt ausführen. Ist evtl. für einige etwas einfacher. Hauptgrund ist allerdings das meine ganze Strecken-Kontroll-Software schon auf Java läuft und ich den server nun mit implementieren möchte 🙂
Wenn das alles läuft plane ich einen standalone crossplatform server der sowohl auf desktop oder headless, Android und iOS laufen kann.


Allerdings struggle ich gerade mit dem timestamp 
2022-06-06T12:45:23.4651510Z

Das sieht mir nach ISO 8601 aus, allerdings verwirren mich die letzen 4 Ziffern (1510) vor dem Z.   ISO8601 hat 9 (bis zu Nanosekunden) Stellen , daher bin ich mir nicht sicher, warum hier nur 7 stellen sind.
Das Z steht ja nur für die Zulu-Zeit (UTC).
Wie muss ich den Spaß parsen?

Viele Grüße
Stephan

 
Bearbeitet von Blueforcer
Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte melde dich an um den Link zu sehen.

 hmm, gute Frage, ich hab die Zeit einfach direkt von FastAPI parsen lassen und mich nicht so sehr darum gekümmert. Wichtig ist, dass die Zeit immer als UTC+0 übermittelt wird. Da innerhalb der VMs immer nur UTC+0 herrscht, musste ich bei create game etwas tricksen und die differenz zur Deutsgen Zeit ermitteln und fix drauf rechnen. Die Entwickler von Sturmkind schreiben zum Zeitformat:

start_time: (optional)
If set this time will be used as preset.

The time needs to be in coordinate world time standard (Coordinated Universal Time, UTC)
possible formats are:
    - 2008-06-15T21:15:07.0000000
    - 2008-06-15T21:15:07
    - 2008-06-15 21:15:07Z
    - Sunday, June 15, 2008 9:15 PM
    - Sunday, June 15, 2008 9:15:07 PM
    - 6/15/2008 9:15 PM
    - 6/15/2008 9:15:07 PM

 

Da sehe ich kein Z am Ende bei dem höchstaufgelösten Format, ich kann es aber auch nicht erklären, vielleicht müsste man da noch mal tief in den Standard schauen.

Bitte melde dich an um den Link zu sehen.

sehr geil, tolle Sache. Ich finde die größe der Images und so auch nicht cool gerade, hatte auch überlegt die api und das frontend in den gleichen container zu packen, fand es so aber sauberer. Braucht aber viel zu viel Platz. Ne direkte Installation wenn man ein image baut wäre vielleicht das Beste?

Bitte melde dich an um den Link zu sehen.

ich verstehe was du vorschlägst, aber die Lösung hört sich sehr speziell für diesen einen Use Case zugeschnitten an. Grundsätzlich sollte aber die reset bzw sofort weiterspielen Aktion irgendwie auch zu nem Sync führen, ich bin mir nur nicht sicher, wie genau man das universell gut lösen kann. Eine Feste Zeit von 1 Minute für die neue Startzeit finde ich nicht so sauber. Ich hab dahingehend aber auch schon eine andere Lösung, weil ich die Startzeit so wie sie aktuell implementiert ist nocht nicht ideal finde.

Zu den Gymkhana Punkten: ja, die werden aktuell schon übermittelt, siehe api Beschreibung. Und im Server ist auch schon alles dafür vorbereitet.

Bearbeitet von Decrayer
Link zu diesem Kommentar
Auf anderen Seiten teilen

Servus zusammen,

Zitat

Bitte melde dich an um den Link zu sehen.

ich verstehe was du vorschlägst, aber die Lösung hört sich sehr speziell für diesen einen Use Case zugeschnitten an. Grundsätzlich sollte aber die reset bzw sofort weiterspielen Aktion irgendwie auch zu nem Sync führen, ich bin mir nur nicht sicher, wie genau man das universell gut lösen kann. Eine Feste Zeit von 1 Minute für die neue Startzeit finde ich nicht so sauber. Ich hab dahingehend aber auch schon eine andere Lösung, weil ich die Startzeit so wie sie aktuell implementiert ist nocht nicht ideal finde.

Also ich hatte ja umgestellt, dass man die Startzeit in Minutenschritten wählen kann und wenn man das Spiel kreiert, dann wird für die default Einstellung die aktuelle Zeit + 2 Minuten genommen; so kann man, wenn man lokal beisammen ist, fast unmittelbar starten; und wenn nicht, kann man die Zeit aja ohnehin festlegen.

Ich finde ein Sync von der Sturmkind App, sollte man ein Spiel mit gemeinsamer Startampel gespielt haben und nach dem Rennen nicht "zurück" auf dem Handy klickt, sondern "erneut" durchaus  wünschenswert. Du merkst schon ich möchte das schmackhaft machen 😄 denn ich finde das wäre doch sehr sinnvoll. Ich kann hier eigentlich keine Nachteile erkennen. Weil, wer spielt einmal mit ner gesyncten Ampel und geht dann gleich wieder hinein, um ohne zeitgesyncter Ampel zu starten?

Am 6.6.2022 um 13:45 schrieb Decrayer:

Bitte melde dich an um den Link zu sehen.

 Sehr geile "Hacks" 😉 Der ganze Prototyp besteht aus Hacks also never mind 😉 Der ist ja genau dazu gedacht, mal etwas schnell zusammen zu bekommen / zu ändern um Ideen zu brainstormen und zu erproben. Kannst ja mal schauen, ob deinen privaten Stand auch mal teilen magst wenn er soweit ist.

Ich hab erneut ein bisschen gebastelt. Habe in der WebApp sozusagen den Modus wählbar gemacht, so dass das Scoreboard dann auch unterschiedlich aussehen kann. Habe dann über den Original Button das Rennen (Normal, Rally, Rally-Cross) und bei dem neuen Button den Gymkhana Modus (aktuell mit Bester Speed, Angle, 360, 180 - Platzierung für 1-3, Bonus Medaille für Bestes Target (aktuell fix 360, will ich aber in den Game Einstellungen wählbar machen, ähnlich wie die Joker Lap) und Medaille für die kürzeste Strecke, einfach weil es lustig ist 😄

Hänge mal ein paa Bilder an.

Ich teile den Stand natürlich sehr gerne, möchte aber zuvor noch ein bisschen sauber machen. Evtl. findet sich dann auch jemand, der die ein oder andere Verbesserung am ergänzten Code vornehmen kann. 🙂

Viele Grüße

Spider

EDIT: so, das Bonus Target ist nun auch wählbar und die Auswahl wird in Scoreboard auch angezeigt. Sobald ich den Code etwas aufgeräumt habe, stelle ich ihn zur Verfügung.

 

 

Bitte melde dich an um Bilder zu sehen.

Bitte melde dich an um Bilder zu sehen.

Bitte melde dich an um Bilder zu sehen.

Bitte melde dich an um Bilder zu sehen.

Bitte melde dich an um Bilder zu sehen.

Bitte melde dich an um Bilder zu sehen.

Bearbeitet von -=Sp!der=-
Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte melde dich an um den Link zu sehen.

Hau deine Ideen gerne in den jeweiligen Vorschlage Beitrag hier im gleichen Unterbereich, damit die nicht verloren gehen. Geile Ideen hast du da, macht durchaus Sinn für Gymkhana bzw. spezielle Modi jeweils eigene Erstellmasken zu definieren, selbst wenn das Datenmodell darunter noch gleich ist. So kann man echt zugeschnittene Racing Boards erstellen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Servus zusammen, 

würde das eigentlich funktionieren, über die Streamlit Cloud eine ServerApp direkt online zu stellen? 

https://streamlit.io/cloud

Ich hätte das gestern mal versucht, war aber noch nicht mit Erfolg gekrönt.

WebApp läuft, aber die Erstellung eines Spiels klappt nicht. (Fehlermeldung: no game with that ID exists). Bin mir ned ganz sicher, wie man dort Daten bei Multipage teilen kann.. 

Der aktuelle Stand (nach Abbruch gestern Nacht) wäre hier:

https://share.streamlit.io/SpiderStan/drift/main/app.py

Da kann man in den Settings auch gleich zu den Sourcen springen. 

Bitte melde dich an um den Link zu sehen.

 hast du da evtl. bereits Erfahrungen damit und könntest Hilfestellung leisten, was man alles anpassen müsste?

Mir stellt sich auch noch die Frage, ob seitens der Sturmkind App eine Verbindung auf eine Webpage jetzt bereits möglich ist? 🤔 

 

Vielen Dank und beste Grüße, 

Spider

Bearbeitet von -=Sp!der=-
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Minute schrieb Decrayer:

Bitte melde dich an um den Link zu sehen.

 Streamlit ist ja nur das Frontend, du musst auch noch das backend und die Datenbank laufen haben, ohne die kannst du natürlich keine Spiele anlegen. Die DR!FT app kann auch mit internet url umgehen, das wurde schon getestet. 

OK, verstehe, aber könnte man die beiden Komponenten für die Streamlit Cloud App über den Code mit hinzunehmen, oder gibt es da keinen Weg? 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi zusammen,

habe mal einen Fork angelegt, um die Raspberry-Portierung verfügbar zu machen. Die Anleitung ist ebenfalls angepasst.  Bitte auf die Systemvoraussetzungen (Pi-OS 64 Bit Bullseye auf Pi4 - zu testen wäre noch Pi3 und Pi2w) achten.

.https://github.com/Fooxbox/driftapi

 

Pull Request an Christian ist auch raus, es könnte aber etwas schwieriger sein, das in ein gemeinsames Repository zu packen, da Docker bei einigen Dateien einen eineindeutigen File-Namen vorschreibt. Insofern können die Raspi-Anwender sich gerne erstmal in meinem Repository bedienen. 👍

Happy Drift!

 

Bitte melde dich an um den Link zu sehen.

 

Bitte melde dich an um den Link zu sehen.

 

Bitte melde dich an um den Link zu sehen.

Bearbeitet von Foox
  • Gefällt mir 1
  • Danke 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke Foox schonmal!

Doch am Sync bin ich gescheitert, kann immer nur ein rotes x, trotz selbem wlan, richtiger IP (http://127.0.0.1/game)  und richtiger GameId.

Hab dann versucht ein adhoc Netzwerk mitm Raspi zu machen und hab dabei meinen dhcpcd-dienst zerschossen, also morgen wieder alles von null weg...

Link zu diesem Kommentar
Auf anderen Seiten teilen

127.0.0.1 ist die falsche IP


Bist du per SSH auf dem Pi? Dann check mal per ifconfig welche lokale IP der wirklich hat. Alternativ kannste auch in der Fritzbox (oder was du halt als DHCP Server nutzt) nachschauen, welche IP zugewiesen wurde. Dritte Möglichkeit: es gibt Netzwerkscanner fürs Handy, mit dem man sich auch schnell im Heimnetz orientieren kann. Ich nutze auf Android dafür die App "Fing".

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 9.6.2022 um 12:54 schrieb Decrayer:

Bitte melde dich an um den Link zu sehen.

 Streamlit ist ja nur das Frontend, du musst auch noch das backend und die Datenbank laufen haben, ohne die kannst du natürlich keine Spiele anlegen. Die DR!FT app kann auch mit internet url umgehen, das wurde schon getestet. 

So, ein paar weitere Schritte konnte ich nun wieder machen.

Nun stehe ich an folgendem Punkt:

  • MongoDB läuft nun Online (MongoDB Atlas)
  • FastAPI läuft und über Swagger UI kann ich alle API Calls schön austesten, Kommunikation mit MongoDB funktioniert
  • Streamlit Frontend läuft

Aktuell starte ich dann quasi erst das Backend und dann separat das Streamlit Frontend. Aber genau hier bin ich aktuell am verzweifeln, da ich über das Frontend nicht auf die API Calls zugreifen kann/darf (?).

In den Docker files der ursprünglichen Variante  werden die Ports der Dienste exposed, ich denke, dass es daran liegen könnte.

Hätte jemand einen guten Ratschlag für mich?

Grüße

Spider

Bearbeitet von -=Sp!der=-
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Kann mir jemand sagen ob ich das ganze unter Ubuntu auf einem NUC DN2820FYKH mit 8GB RAM und 120GB SSD zum laufen bekomme?

Ich habe den besagten NUC noch hier ruliegen, z.Z. noch ohne Betriebssystem und bevor ich jetzt hier Stundenlang vergebens test, frag ich lieber mal.

 

Grüße Marcel

 

 

 

################ Edit 1

Schade, habe das ganze jetzt mal auf dem besagten NUC unter Proxmox 6.4-15 und Ubuntu 18.04 versucht:

Docker läuft

Server an sich auch, leider scheint die MongoDB Probleme zu machen, das ganze braucht wohl mindestens einen I3 Prozessor

 

driftapi-main-driftapi-db-1          | 
driftapi-main-driftapi-db-1          | WARNING: MongoDB 5.0+ requires a CPU with AVX support, and your current system does not appear to have that!
driftapi-main-driftapi-db-1          |   see https://jira.mongodb.org/browse/SERVER-54407
driftapi-main-driftapi-db-1          |   see also https://www.mongodb.com/community/forums/t/mongodb-5-0-cpu-intel-g4650-compatibility/116610/2
driftapi-main-driftapi-db-1          |   see also https://github.com/docker-library/mongo/issues/485#issuecomment-891991814
driftapi-main-driftapi-db-1          | 
driftapi-main-driftapi-db-1 exited with code 132

 

################ Edit 2

Auf einem NUC7i5BNH unter Proxmox 6.4-15 und Ubuntu 18.04 läuft das ganze schonmal sauber.

Bearbeitet von Dr!ft-MaBo
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 Monate später...
Am 28.10.2022 um 14:50 schrieb TheSeeVen:

Ne feine Sache das Programm, die Installation hat auch reibungslos funktioniert.

Hat schonmal jemand die Daten rausgezogen und weiterverarbeitet, z.B. die aktuelle Rundenzeit eines Racer oder den gesamten  Rennverlauf mit Zeiten ? 

Das würde ich gerne auf einen großen LCD umsetzen.

lg

wie genau meinst du dass? Wenn du meinen Racingserver installiert hast, dann pack doch einfach die Webseite auf der die Renninformationen angezeigt werden auf deinen Monitor, die aktualisiert sich alle paar Sekunden und zeigt die Zeiten an.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

 Teilen

×
×
  • Neu erstellen...

Wichtige Information

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung