Paso 3: Crear el servidor Web con python
No soy un experto en programación web o protocolos de red específicos pero logró controlar mi arduino en la web, así que tengo fe que todos ustedes también pueden! Vamos a crear un sitio web muy básico y que nuestro equipo ser el anfitrión. Para ello que vamos a utilizar el framework de web frasco para crear un web basado en la API para el control de nuestro arduino. Altamente le animo todos a leer a través de algunos ejemplos sobre el uso de frasco para que pueda entender los conceptos básicos de cómo funciona y porque no puedo ser el mejor maestro.
¿Qué queremos hacer?
- Crear una página web con 2 botones
- Apagar LED botón
- Encender LED botón
- Cuando nosotros activar o desactivar el LED que queremos leer el valor de la fotorresistencia y mostrarla
- Crear una dirección URL determinada para convertir nuestro LED encendido - necesario para web API
Para crear una página web dinámica que se actualiza con el valor de la fotorresistencia cuando cargamos la página que necesitamos crear una página de plantilla en frasco. Matraz utiliza el valor obtenemos de nuestra fotorresistencia y enviarlo a nuestra plantilla a mostrar. Frasco sigue automáticamente un formato de directorio específico cuando busca nuestra plantilla tan vigilante sobre donde colocar ciertos archivos. En el directorio que está trabajando en desea crear un directorio llamado plantillas. Vamos a poner nuestra página plantilla allí. Nuestra página de html de la plantilla se verá muy similar a una página HTML normal sólo con una opción adicional para colocar una variable en algún lugar. Copia el fragmento de código html en el siguiente link: http://codepen.io/theown1/pen/RNeYMg en un nuevo archivo llamado index.html y el lugar que los archivos en su directorio de plantillas.
Copia que el siguiente código en un archivo había llamado hello_flask_world.py el pedazo de código a continuación es nuestra página básica del matraz. Su bastante simple de entender, sólo tenemos una página web en la dirección '/' que es la página de inicio. La dirección URL de esta página web será su dirección ip en la red o 127.0.01:5000. Cuando alguien se conecta a nuestra página web sólo prestamos nuestra plantilla que teníamos antes con algún valor que vamos a cambiar a nuestra salida del fotorresistor después. Si nuestra página web recibe una petición POST que aka alguien presiona un botón en nuestra página de nuestro servidor se realice la tarea específica de impresión lo que pasó y redirigirá a la Página principal. Puede ejecutar este trozo de código por debajo como si fuera un programa python normal. ($ python hello_world.py)
from flask import Flask, render_template,request, redirect, url_forapp = Flask(__name__) # we are able to make 2 different requests on our webpage # GET = we just type in the url # POST = some sort of form submission like a button methods = ['POST','GET']) def hello_world(): # variables for template page (templates/index.html) author = "Kyle" readval = 10 # if we make a post request on the webpage aka press button then do stuff if request.method == 'POST': # if we press the turn on button if request.form['submit'] == 'Turn On': print 'TURN ON' # if we press the turn off button elif request.form['submit'] == 'Turn Off': print 'TURN OFF' else: pass # the default page to display will be our template with our template variables return render_template('index.html', author=author, value=100*(readval/1023.)) if __name__ == "__main__": # lets launch our webpage! # do 0.0.0.0 so that we can log into this webpage # using another computer on the same network later app.run(host='0.0.0.0')
Cuando se ejecuta este programa debería obtener una salida similar a la imagen de arriba. Asegúrese de conectar a la web en tu navegador en http://127.0.0.1:5000 / después de ejecutar el python script (y siga funcionando!) Jugar con los botones y comprobar que está recibiendo a imprimir algo en el terminal.
Ahora debe tener la carpeta que está trabajando en todos los archivos a continuación en los directorios correspondientes.
ARBITRARY_WORK_FOLDER/ |-- pyduino.py # pyduino library file |-- analog_read_test.py # pyduino code to check circuit |-- hello_flask_world.py # your first Flask webpage |-- templates/ # directory to store flask templates |-- index.html # our html template
A continuación es el momento de integrar nuestros controles de Arduino en el servidor Web!