Files
tello-commander/commander/commands.py
2023-05-15 22:41:39 +03:00

57 lines
1.8 KiB
Python

import requests
class CommandHandler:
def __init__(self):
self.COMMANDER_ROOT_URL = "http://0.0.0.0:8889"
self.COMMANDER_COMMANDS_URL = f"{self.COMMANDER_ROOT_URL}/command"
self._check_commander_health()
def _check_commander_health(self):
response = requests.get(f"{self.COMMANDER_ROOT_URL}/test/health")
status = response.json()
if status["msg"] != "ok":
raise Exception(f"commander service is unavailable: {self.COMMANDER_ROOT_URL}")
def _move(self, direction, distance):
response = requests.get(f"{self.COMMANDER_COMMANDS_URL}/move/{direction}/{distance}")
print(response.json())
def _turn(self, direction, degree):
response = requests.get(f"{self.COMMANDER_COMMANDS_URL}/turn/{direction}/{degree}")
print(response.json())
def _takeoff(self):
response = requests.get(f"{self.COMMANDER_COMMANDS_URL}/takeoff")
print(response.json())
def _land(self):
response = requests.get(f"{self.COMMANDER_COMMANDS_URL}/land")
print(response.json())
def _end_session(self):
response = requests.get(f"{self.COMMANDER_COMMANDS_URL}/end")
print(response.json())
def handle(self, cmd: dict):
#print(f"commanding for: {cmd}")
if cmd["command"] == "move":
self._move(
direction=cmd["direction"],
distance=cmd["distance_angle"]
)
elif cmd["command"] == "turn":
self._turn(
direction=cmd["direction"],
degree=cmd["distance_angle"]
)
elif cmd["command"] == "takeoff":
self._takeoff()
elif cmd["command"] == "land":
self._land()
else:
raise ValueError(f"Uknown command object: {cmd}")