> For the complete documentation index, see [llms.txt](https://alfredo-reyes-montero.gitbook.io/tello-dji/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://alfredo-reyes-montero.gitbook.io/tello-dji/applications/telemetry/boschxdk110-remotecontroller/drone.md).

# Drone

We are going to use Tellopy framework. First we need to connect our computer to two networks.

\*Important\*

```
  For example Ethernet to Internet, and Wifi should be connected to hotspot of DroneTello.
```

We need to write a program in python, that would use the next code:

```
from time import sleep
import signal
import tellopy
import paho.mqtt.client as paho
import sys

from threading import Thread

//We define our broker, port and drone object
mqttserver = "broker.hivemq.com"
mqttport = 1883
drone = tellopy.Tello()

def handler(event, sender, data, **args):
   drone = sender
   if event is drone.EVENT_FLIGHT_DATA:
      print(data)
//We define the subscribe function this would help us to read the message that came in the topic.
//So whatever is the case we make some action. This functions are already predefine in the XDK of Drone
def subscribeTelloAction(mosq, obj, msg):
   print("Command %s" % msg.payload)
   if msg.payload == "takeoff":
      drone.takeoff()
      sleep(5)
   elif msg.payload == "land":
      drone.land()
      sleep(5)
      drone.quit()
   elif msg.payload == "left":
      drone.left(30)
      sleep(4)
   elif msg.payload == "right":
      drone.right(30)
      sleep(4)
   elif msg.payload == "forward":
      drone.forward(30)
      sleep(4)
   elif msg.payload == "back":
      drone.back(30)
      sleep(4)
   elif msg.payload == "up":
      drone.up(30)
      sleep(4)
   elif msg.payload == "down":
      drone.down(30)
      sleep(4)
   elif msg.payload == "cw":
      drone.cw(180)
      sleep(4)
   elif msg.payload == "ccww":
      drone.ccw(180)
      sleep(4)
   elif msg.payload == "flip":
      drone.flip(r)
      sleep(4)
//We establish the subscription to MQTT.
def subscribeTello():
   mqttclient = paho.Client()
   mqttclient.on_message = subscribeTelloAction
   mqttclient.connect(mqttserver, mqttport, 60)
   mqttclient.subscribe("xdk110/tello/action", 0)
   while mqttclient.loop() == 0:
      pass

def functionSignalHandler(signal, frame):
   sys.exit(0)

if __name__ == '__main__':
   signal.signal(signal.SIGINT, functionSignalHandler)

   threadmqttsubscribetello = Thread(target=subscribeTello)
   threadmqttsubscribetello.start()
   try:
      drone.subscribe(drone.EVENT_FLIGHT_DATA, handler)
      drone.connect()
      drone.wait_for_connection(60.0)
   except Exception as ex:
      print(ex)
   while True:
      time.sleep(5)
```

Then we need to execute this program

```
$ cd Tello/python/FlyControll/XDKTello/Tello/mqttcontrol.py
$ python mqttcontrol.py
```
