summaryrefslogtreecommitdiff
path: root/idash-server.py
diff options
context:
space:
mode:
Diffstat (limited to 'idash-server.py')
-rw-r--r--idash-server.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/idash-server.py b/idash-server.py
new file mode 100644
index 0000000..7df8f1d
--- /dev/null
+++ b/idash-server.py
@@ -0,0 +1,37 @@
+import irsdk
+import socketio
+import time
+import threading
+from flask import Flask
+
+socket = socketio.Server(async_mode='threading', cors_allowed_origins='*')
+app = Flask(__name__)
+static_files = {
+ '/': './client/build/index.html',
+ '/': './client/build/'
+}
+app.wsgi_app = socketio.WSGIApp(socket, app.wsgi_app, static_files=static_files)
+
+def poll_iracing():
+ ir = irsdk.IRSDK()
+ connected = ir.startup()
+ while True:
+ if not connected:
+ if ir.startup():
+ connected = True
+ print("Connected to iRacing")
+ else:
+ print("Cannot connect to iRacing, trying again in 5 seconds...")
+ time.sleep(5)
+ else:
+ stats_to_collect = ["Speed", "RPM", "FuelLevelPct", "Gear", "Brake", "BrakeABSactive", "Clutch", "OilTemp", "OilPress", "Throttle", "SteeringWheelAngle", "SteeringWheelAngleMax", "DisplayUnits"]
+ payload = {}
+ for stat in stats_to_collect:
+ payload[stat] = ir[stat]
+ socket.emit('update', payload)
+ time.sleep(1/60) # 60FPS
+
+if __name__ == '__main__':
+ poll_thread = threading.Thread(target=poll_iracing)
+ poll_thread.start()
+ app.run("0.0.0.0") \ No newline at end of file