
Ich habe einen Raspberry Pi 3B und somit Bluetooth 4.1. Wenn ich nun aber die Verbindung aufbaue zu meinem Rollentrainer dauert es ca eine Sekunde bis der neue Frame ankommt. Für die Umsetzung in einer virtuellen Welt ist dies jedoch um einiges zu langsam und die Laufzeit würde ich gerne verbessern. Ich habe bereits einige await Funktionen rausgehauen, benötige dennoch eine, die ich nicht rausbringe.
Hier der Code:
import asyncio
from bleak import BleakClient
from pycycling.tacx_trainer_control import TacxTrainerControl
resistance = 1
async def run(address):
# Abfrage über Bluetooth an den TACX Hometrainer
async with BleakClient(address) as bleakclient:
def my_page_handler(data):
ret=client.publish("Python/MQTT",str(data))
print("DATA :",data)
print("Verbindungsaufbau mit Trainer")
#await bleakclient.is_connected()
trainer = TacxTrainerControl(bleakclient)
trainer.set_general_fe_data_page_handler(my_page_handler)
print("Trainer set : ",trainer.set_general_fe_data_page_handler(my_page_handler))
await trainer.enable_fec_notifications()
#print("Trainer enable :",trainer.enable_fec_notifications())
print("Verbunden mit Trainer")
#duration = 0.0005
#duration = 0.1
try:
while True:
await trainer.set_basic_resistance(resistance)
except KeyboardInterrupt:
pass
#Diese Funktion wird als erstes Durchlaufen
if __name__ == "__main__":
print("Hier angekommen")
#Debugmeldungen aktivieren
os.environ["PYTHONASYNCIODEBUG"] = str(1)
#Adresse des Heimtrainers
subprocess.Popen(["bluetoothctl","remove", "XX:XX:XX:XX"])
address = "XX:XX:XX:XX"
#Starten der asynchronen Schleife mit Verbindung zu Trainer und MQTT Server
asyncio.run(run(address))
print("get_Loop")
# ENDE
Der Code wurde eigentlich zum großen Teil aus Github übernommen und funktioniert fehlerfrei. Nur die Laufzeit stellt mich noch nicht ganz zu frieden .
Meine einzige Idee war die await funktionen einzusparen. Vielleicht hat jemand noch eine Idee was ich ändern könnte.
Vielen Dank im Voraus und frohes Codieren
