Drone-Code/main.py

57 lines
2.3 KiB
Python

# These two modules allow us to run a web server.
from flask import Flask, render_template
from flask_socketio import SocketIO
from tfluna import TFLuna
# This module lets us pick random numbers, you can remove it later.
import random
# Here, we create the neccesary base app. You don't need to worry about this.
app = Flask(__name__)
socketio = SocketIO(app)
tfluna = TFLuna()
tfluna.open()
tfluna.set_samp_rate(10)
def printLidar():
distance, strength, temperature = tfluna.read()
lidarValues = {distance, strength, temperature}
return str(lidarValues)
# When someone requests the root page from our web server, we return 'index.html'.
@app.route('/')
def index():
return render_template('index.html')
# This function runs in the background to transmit data to connected clients.
def background_thread():
while True:
# We sleep here for a single second, but this can be increased or decreased depending on how quickly you want data to be pushed to clients.
socketio.sleep(0.1)
# Then, we emit an event called "update_data" - but this can actually be whatever we want - with the data being a dictionary
# where 'randomNumber' is set to a random number we choose here. You should replace the data being sent back with your sensor data
# that you fetch from things connected to your Pi.
socketio.emit(
'update_data',
{
'randomNumber': random.randint(1, 100),
# you can add more here! for instance, something along the lines of:
# 'mySensor': mysensor.get_sensor_data(),
'lidar': printLidar()
}
)
# To add a your first new sensor, try giving https://docs.aerospacejam.org/getting-started/first-sensor a read!
# This function runs when someone connects to the server - and all we do is start the background thread to update the data.
@socketio.on('connect')
def handle_connect():
print('Client connected')
socketio.start_background_task(target=background_thread)
# This function is called
def main():
# These specific arguments are required to make sure the webserver is hosted in a consistent spot, so don't change them unless you know what you're doing.
socketio.run(app, host='0.0.0.0', port=8085, allow_unsafe_werkzeug=True)
if __name__ == '__main__':
main()