Control de omega-onion desde una nube propia. Primera parte

En este artículo y el siguiente vamos a describir los pasos necesarios para poder realizar una nube y que se comunique nuestra omega onion con ella. La nube será un servidor html y php, nuestra omega onion se conectará como cliente html, con ello podrá enviar datos y recibir órdenes.

Necesitaremos:

  1. Instalar apache y php en nuestra máquina o servidor elegido.
  2. Crear una web con los siguientes elementos:
    • Botones para realizar acciones.
    • Un archivo dónde almacenar los datos recibidos desde la omega-onion.
    • Un archivo dónde guardar la última orden.
  3. Crear los programas en python en la Omega Onion para que activen las salidas (diodo tricolor de la placa “Extension Dock”) y lean los pines (entradas).

1. Cliente html en Python

Para hacer funcionar un cliente html necesitamos un servidor apache, pero en este apartado no será necesario ya que hemos creado en el sitio web de nuestro proyecto una página web con la configuración adecuada. Para mayor información sobre este apartado nos podemos ir a

<https://docs.python.org/2/library/httplib.html>

Nos conectaremos mediante ssh a nuestra omega como habitualmente lo hemos descrito y crearemos un archivo de texto llamado lectura.py

nano lectura.py

A continuación copiaremos el siguiente código en dicho archivo.

import httplib, urllib#importamos las librerias necesarias

import os# libreria para lazar comandos de consola

#Abrimos la conexion con la pagina web del servidor, en nuestro

#caso andaluciaintegra.com con el puerto estandar 80

abrir_conexion = httplib.HTTPConnection(“andaluciaintegra.com:80”)

#Dentro de mi servidor todos los archivos estan en la carpeta /domo/ y ‘orden’ es

#el archivo que queremos leer

abrir_conexion.request(“POST”, “/domo/orden”)

#La contestacion la recibimos en la variable ‘respuesta’, ‘respuesta.status’ nos

#indicara si la conexion se ha realizado con exito, 200 significa que si

respuesta = abrir_conexion.getresponse()

print (respuesta.status)

#leemos toda la pagina web

orden = respuesta.read()

#imprimimos la lectura realizada

print (orden)

if orden[0:4]==”AZUL”:#Comparamos las primeras cuatro letras de orden con la

#palabra azul

os.system(‘python azul.py’)#Lanzamos el programa azul.py

#cerramos la conexion

abrir_conexion.close()

Cada comando está comentado pero vamos a hacer un resumen de lo que hace el programa:

  • Importa las librerías necesarias.
  • Nos conectamos a la web andaluciaintegra.com.
  • Hacemos una lectura del archivo ‘orden’ que está en la carpeta /domo y que es un archivo de comunicación y explicamos a  continuación:
    • Cuando pulsemos algún botón de la web para realizar una acción, por ejemplo queremos activar el led azul, escribiremos en este archivo la palabra “AZUL”.
    • El sistema omega leerá el archivo con el texto “AZUL” y ejecutará la acción correspondiente que es lanzar comando de consola ‘python azul.py’.
  • Imprimimos la respuesta del servidor web (200 significa que todo ha ido bien).
  • Imprimimos el archivo “orden”.
  • Cerramos la conexión .
Fig. 14. Led azul.

Ahora vamos a ampliar el programa anterior para leer una entrada digital y enviarla a la nube

import httplib, urllib#importamos las librerias necesarias

import os# libreria para lazar comandos de consola

import time#libreria de control de tiempo

import onionGpio#libreria de control de pines

pin = 0

gpioObj = onionGpio.OnionGpio(pin)#creamos objeto

# Configuracion del pin 0 como salida

status = gpioObj.setInputDirection()

valor = gpioObj.getValue()#leemos el pin 0 y lo guardamos en valor

print ‘GPIO%d lectura: %d’%(pin, int(valor))#mostramos lectura en pantalla

#En parametros, ‘nombre’ es la variable que tenemos definida

#en el formulario html del servidor

parametros = urllib.urlencode({‘nombre’: ‘Hecho’,’lectura’:valor})

cabeceras = {“Content-type”: “application/x-www-form-urlencoded”,”Accept”: “text/plain”}

#Abrimos la conexion con la pagina web del servidor, en nuestro

#caso andaluciaintegra.com con el puerto estandar 80

abrir_conexion = httplib.HTTPConnection(“andaluciaintegra.com:80”)

#Dentro de mi servidor todos los archivos estan en la carpeta /domo/ y orden es

#el archivo que queremos leer

abrir_conexion.request(“POST”, “/domo/orden”)

#La contestacion la recibimos en la variable respuesta, respuesta.status nos

#indicara si la conexion se ha realizado con exito, 200 significa que si

respuesta = abrir_conexion.getresponse()

print (respuesta.status)

#leemos toda la pagina web

orden = respuesta.read()

#imprimimos la lectura realizada

print (orden)

abrir_conexion.request(“POST”, “/domo/index2.php”, parametros,cabeceras)

if orden[0:4]==”AZUL”:#Comparamos las primeras cuatro letras de orden con la

#palabra azul

os.system(‘python azul.py’)#Lanzamos el programa azul.py

#cerramos la conexion

abrir_conexion.close()

En el programa anterior lo que hacemos resumidamente es:

  • Leemos el pin “0” de la omega onion, el resultado será un ‘0’ ó un ‘1’.
  • Abrimos una conexión html para:
    • Leer el archivo “orden” que contiene la orden a ejecutar en la omega.
    • Actuamos sobre la página index2.php para enviar el dato digital leído desde el pin ‘0’ y la palabra ‘hecho’ que se guardará en el archivo ‘orden’.
    • Interpretamos la orden leída, si es ‘AZUL’ lanzamos el programa ‘python azul.py’.

2. Servidor web

Para poder trabajar con un cliente html necesitamos un servidor html. Hemos montado una página web con  lo básico para realizar las primeras pruebas en andaluciaintegra.com/domo (fig.15).

Fig. 15. Servidor web.

La estructura de la página es la siguiente:

  • En el marco superior izquierdo disponemos de botones para realizar actuaciones en nuestra omega-onion y un cuadro de texto que lo utilizaremos para simular el envío de datos, es decir, cuando escribiremos un texto y “enviamos”, ese texto se añade al archivo ‘datos’ que es donde almacenamos los datos recibidos desde la omega-onion.
  • El marco de la derecha superior muesta una foto subida desde la omega-onion, pero esto se explicará en posteriores artículos.
  • En el marco central vemos el archivo ‘dados’, en este archivo cada línea indica una lectura con fecha y hora de entrada.
  • El marco inferior nos muestra el archivo ‘orden’, aquí aparece la última petición de acción, en este caso queremos activar el led azul.

En el próximo artículo explicaremos cómo montar esta web.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *