62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
import asyncio
|
|
import json
|
|
import websockets
|
|
import uuid
|
|
import time
|
|
|
|
BASE_URL = "ws://localhost:8000/api/ws"
|
|
TOKEN = "ae397229f9ca50cd6320cb0416671ecc780671ac"
|
|
PK = "cf1e36ff-c5ce-4852-8b90-046737974b97"
|
|
|
|
async def satellite_mode():
|
|
"""
|
|
Клиент для отправки данных телеметрии.
|
|
"""
|
|
url = f"{BASE_URL}/satellite/{PK}/telemetry/?token={TOKEN}"
|
|
async with websockets.connect(url) as ws:
|
|
print(f"[satellite] Connected to {url}")
|
|
|
|
while True:
|
|
telemetry_data = {
|
|
"timestamp": int(time.time()),
|
|
"lat": 55.75,
|
|
"lon": 37.61,
|
|
"alt": 200.0,
|
|
"payload": {"temp": 22.5, "status": "OK"},
|
|
"raw_data": {"sensor": "gps", "accuracy": "high"}
|
|
}
|
|
await ws.send(json.dumps(telemetry_data))
|
|
print(f"[satellite] Sent: {telemetry_data}")
|
|
|
|
try:
|
|
response = await asyncio.wait_for(ws.recv(), timeout=2)
|
|
print(f"[satellite] Received: {response}")
|
|
except asyncio.TimeoutError:
|
|
print("[satellite] No response yet")
|
|
|
|
await asyncio.sleep(5)
|
|
|
|
|
|
async def station_mode():
|
|
"""
|
|
Клиент для приёма данных телеметрии.
|
|
"""
|
|
url = f"{BASE_URL}/station/{PK}/telemetry/?token={TOKEN}"
|
|
async with websockets.connect(url) as ws:
|
|
print(f"[station] Connected to {url}")
|
|
|
|
while True:
|
|
try:
|
|
message = await ws.recv()
|
|
print(f"[station] Received: {message}")
|
|
except websockets.ConnectionClosed:
|
|
print("[station] Connection closed")
|
|
break
|
|
|
|
|
|
if __name__ == "__main__":
|
|
mode = input("Enter mode (satellite/station): ").strip().lower()
|
|
if mode == "satellite":
|
|
asyncio.run(satellite_mode())
|
|
else:
|
|
asyncio.run(station_mode())
|