Introducción.
Para los proyectos que involucran el Internet de las Cosas se deben usar placas de desarrollo con conectividad Wi Fi, una de estas placas es el Photon de la empresa Particle por lo que existe la necesidad de comunicar el Photon con el software que permitirá procesar, visualizar y supervisar los datos, uno de los software más ampliamente usado es Python 3, por lo que en esta entrada se verá como lograr la comunicación entre Photon y Python 3.
Software para Photon.
El software para que el Photon pueda enviar y recibir información desde Python lo tomaremos desde el siguiente enlace:
Este programa funciona correctamente en un Photon y solo tenemos que comentar algunas líneas de las funciones que no usemos o si tenemos problemas de espacio en memoria. A continuación aparece el código comentado de las funciones que conectan y desconectan un servomotor, que para este ejemplo no las usaremos:
//int attachServo(String pin) //Attach a servo to a pin
//{
// int p = getPin(pin); //convert pin to an integer
// if(p>-1 && read2[p]==-1)
// {
// myservo.attach(p);
// servoPin = p;
// delay(10);
// read2[p] = 2;
// return p;
// }
// return -1;
//}
//int detachServo(String pin) //Detach a servo to a pin
//{
// myservo.detach(); //convert pin to an integer
// read2[servoPin] = -1;
// servoPin = -1;
// delay(10);
// return 1;
//}
Software para Python.
Para lograr la comunicación con Photon desde Python nos basaremos en un módulo llamado Photon.py que encontramos en el siguiente enlace:
El problema con este módulo es que está realizado para Python 2 y no para Python 3, por lo que no funcionará en la versión más reciente, es aquí en donde he realizado el trabajo de revisar las clases que hay en el módulo y actualizarlas a Phyton 3.
El enlace para descargar el módulo corregido es: modulo Photon.py para Python 3
Prueba del módulo en un Photon.
Para probar el módulo de comunicación con un Photon he realizado el siguiente programa en Python 3:
from Photon import * | |
atoken = "bd3ce2e37c5f82ea597c418a87e8dbfd480d01be" | #Cambie esto a su token de acceso |
name = "HectorUDB" | #Cambie esto a su nombre del Photon |
g = Photon(name,atoken) | # Crea el acceso al Photon con el Token y el nombre. |
g.getDevices() | #Devuelve el nomre del dispositivo asociados con el token de acceso. |
time.sleep(1) | |
g.getFunctions() | #Presenta una lista de todas las funciones que tienen el Photon y se pueden llamar desde Python |
g.getVariables() | #Presenta una lista de todas las variables que tienen el Photon y se pueden leer o escribir desde Python |
print(g.push("setInput","D0")) | # Coloca al pin D0 como entrada e imprime si está como lectura (1), escritura (0), no inicializado (-1) o Servo (2). |
print(g.digitalRead('D0')) | #Imprime el resultado de la lectura del pin D0. |
print(g.getConnection()) | #Imprime si hay conexión desde Python al Photon. |
print(g.fetch('String')) | #Imprime la cadena de caracteres que tiene los datos memorizados de la escritura o lectura digital. |
print(g.fetch('String2')) | #Imprime la cadena de caracteres que tiene los datos guardados de configuración de los pines: lectura (1), escritura (0), no inicializado (-1) o Servo (2). |
Una vez creado el programa anterior lo ejecutamos, teniendo en cuenta que en la misma carpeta se encuentre el módulo Photon.py.
El resultado cuando la entrada digital D0 es uno lógico se muestra en la siguiente Figura 1.
Figura 1. Ejecución del programa de ejemplo cuando la entrada D0 = 1 lógico.
Ahora cambiamos el valor de la entrada D0 a 0 lógico y obtenemos la siguiente respuesta al volver a ejecutar el programa de ejemplo:
Figura 2. Ejecución del programa de ejemplo cuando la entrada D0 = 0 lógico
Con lo que se comprueba que el programa está corriendo correctamente, comunicándose con el Photon y leyendo los datos de la entrada digital D0, además de transferir dos variables tipo cadena de caracteres (String) desde el Photon hacia Python.
Conclusiones.
Se puede concluir que hemos actualizado una herramienta que será muy útil en los proyectos de investigación, para dotar de una interfaz gráfica de usuario en Python, a los dispositivos del Internet de las Cosas, como por ejemplo: la visualización y control de variables eléctricas desde un contador digital de energía eléctrica en una Smart Grid.
No hay comentarios:
Publicar un comentario