Library to interface with Gran Turismo's motion rig telemetry service.
Project description
GT Telemetry {version}
Python library for interfacing with Polyphony Digital's telemetry service for motion rigs in GT6/GTS/GT7 (maybe older?)
Features
- Playstation IP Address discovery
- Asynchronous callbacks
- Game event observer
- Telemetry as an object or a dictionary
Getting telemetry is fairly straightforward. Here's a simple example:
import json
from gt_telem import TurismoClient
from gt_telem.models import Telemetry
async def print_telem(t: Telemetry):
print(json.dumps(t.as_dict, indent=4))
tc = TurismoClient()
tc.register_callback(print_telem)
tc.run()
print_telem()
is called at the same framerate as the game is running at. This tends to produces a lot of noise, especially when in menus, or even if the race is paused.
Here's a more complex example of a telemetry recorder that's hooked into game events.
from gt_telem import TurismoClient, TurismoGame
from gt_telem.errors.playstation_errors import *
class MySimpleTelemetryRecorder():
def __init__(self, tc: TurismoClient):
self.tc = tc
self.storage = []
def start(self):
tc.register_callback(MySimpleTelemetryRecorder.receive_telem, [self])
def stop(self):
self.deregister_callback(MySimpleTelemetryRecorder.receive_telem)
# save self.storage somewhere
@staticmethod
async def receive_telem(t, context):
context.storage.append(t)
print(f"{t.engine_rpm}RPM - {t.boost_pressure}kPa")
print(f"Best: {t.best_lap_time}\tLast: {t.last_lap_time}")
if __name__ == "__main__":
try:
tc = TurismoClient()
except PlayStatonOnStandbyError as e:
print("Turn the playstation on")
print(e)
except PlayStationNotFoundError:
print("Maybe I'm on the wrong network")
print(e)
else:
tg = TurismoGame(tc)
mstr = MySimpleTelemetryRecorder(tc)
tg.on_in_race.append(mstr.start)
tg.on_race_end.append(mstr.stop)
tg.on_paused.append(mstr.stop)
print("Listening for telemetry. CTRL+C to stop")
tc.run()
TurismoClient.run()
is a blocking call, but does shut down gracefully when a keyboard interrupt is issued. It also accepts a cancellation token.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file gt-telem-0.1.0.tar.gz
.
File metadata
- Download URL: gt-telem-0.1.0.tar.gz
- Upload date:
- Size: 51.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | be22662047d12e14f7e6f3df8a25540be7098e6b900c92ced613d9026c540c19 |
|
MD5 | 04b1f3cf5b584e5e73f53a08eb26ac48 |
|
BLAKE2b-256 | 654a43e34bd7ec490ab9aacb29c04b23920d0b95fe4546eb693ab18425f2f7d7 |
File details
Details for the file gt_telem-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: gt_telem-0.1.0-py3-none-any.whl
- Upload date:
- Size: 39.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79507eed0cfe3dfdfe00b60048187d373adb67867566afb718103d1630ff2db2 |
|
MD5 | f3954325c7c41e159167ddacbfa180d3 |
|
BLAKE2b-256 | 1befeab9b91091a5ebfa9d2cb6d8fe072af84f65195b57058dee08cd389bafeb |