Na du rufst main einfach auf. Das ist aber eine async Funktion. Die muss awaited werden. Was die Fehlermeldung doch klar sagt.
Aber wenn du das machst, hast du einen Bug programmiert. Denn du erzeugst eine Rekursion, statt einer Endlosschleife. Warum benutzt du nicht einfach while?
Fehler: RuntimeWarning: coroutine 'main' was never awaited
Dass `scanner` außerhalb des with-Blocks benutzt wird, sieht komisch aus. Aber das steht auch so in der Dokumentation (!).
Man benutzt keine einbuchstabigen Variablennamen. `d` ist ein `device`. Mit Deinem rekursiven Aufruf hast Du doch viel mehr Probleme, das sauber zu beenden. Wenn etwas 5mal durchlaufen werden soll, dann ist eine for-Schleife das richtige.
Man ruft keine Skripte aus einem anderen Skript auf, sondern benutzt einfach Funktionen. Warum glaubst Du, das auf diese komplizierte Art lösen zu müssen?
Man benutzt keine einbuchstabigen Variablennamen. `d` ist ein `device`. Mit Deinem rekursiven Aufruf hast Du doch viel mehr Probleme, das sauber zu beenden. Wenn etwas 5mal durchlaufen werden soll, dann ist eine for-Schleife das richtige.
Code: Alles auswählen
import asyncio
from bleak import BleakScanner
async def main():
scanner = BleakScanner()
for _ in range(5):
async with scanner:
await asyncio.sleep(10.0)
for device in scanner.discovered_devices:
print(device)
if __name__ == "__main__":
asyncio.run(main())