React native dji tello sdk wrapper
This wrapper is totally based on https://github.com/AlexanderGranhof/tello-drone, special thanks to the author of this repo. 🙏
Important, install react-native-udp
in your base project.
yarn add rn-dji-tello
or
npm install rn-dji-tello
This is a Tello SDK wrapper exposed here
import Tello from 'rn-dji-tello';
const drone = new Tello();
drone.current.on(event_type, callback);
event type | description | callback args |
---|---|---|
connection | success connection listener | - |
state | sensor state | state: DroneState |
send | on send event listener | error: Error, lenght: Number |
message | - | message: String |
await drone.current?.send(command, options?, froce?);
command list:
type list =
| 'command'
| 'takeoff'
| 'land'
| 'streamon'
| 'streamoff'
| 'emergency'
| 'up'
| 'down'
| 'left'
| 'right'
| 'forward'
| 'back'
| 'cw'
| 'ccw'
| 'flip'
| 'go'
| 'curve'
| 'speed'
| 'rc'
| 'wifi'
| 'speed?'
| 'battery?'
| 'time?'
| 'wifi?'
| 'sdk?'
| 'sn?';
interface options {
value?: number | string;
x?: number;
y?: number;
z?: number;
x1?: number;
y1?: number;
z1?: number;
x2?: number;
y2?: number;
z2?: number;
speed?: number;
a?: number;
b?: number;
c?: number;
d?: number;
}
force: boolean
Please, read tello documentation to group the appropriate options for the desired command.
- Support for typescript and sockets using react-native-udp.
See: https://github.com/NoRoboto/rn-dji-tello-example/tree/main
import React, {useRef, useState} from 'react';
import {Button, SafeAreaView, StatusBar, StyleSheet, View} from 'react-native';
import Tello from 'rn-dji-tello';
const App = () => {
const [init, setInit] = useState<boolean>(false);
const drone = useRef<Tello>();
const onInit = () => {
try {
drone.current = new Tello();
drone.current.on('connection', () => {
setInit(true);
console.log('Connected to drone');
});
drone.current.on('state', state => {
console.log('Received State > ', state);
});
drone.current.on('send', (err, length) => {
if (err) {
console.log('error', err);
}
console.log(`Sent command is ${length} long`);
});
drone.current.on('message', message => {
console.log('Recieved Message > ', message);
});
} catch (error) {
console.error(error);
setInit(false);
}
};
const run = async () => {
await drone.current?.send('takeoff');
await drone.current?.send('battery?');
await drone.current?.send('land');
};
return (
<SafeAreaView style={styles.container}>
<StatusBar barStyle="light-content" />
<View style={styles.viewWrapper}>
<Button title="Run" disabled={!init} onPress={run} />
<Button title="Init" disabled={init} onPress={onInit} />
</View>
</SafeAreaView>
);
};
....
Me, NoRoboto
https://github.com/AlexanderGranhof/tello-drone
MIT