Paso 9: Escribir datos BLE mediante programación en Python (frambuesa Pi)
En este último paso a escribir un script en Python para utilizar el programa gatttool mediante programación. Eso significa que te estructuramos nuestro script de manera que nos permitirá usar gatttool sin tener que ingresar repetidamente los comandos en el terminal.
El script es bastante sencillo y puede ser ampliado por visualizar diferentes animaciones de los LED RGB. Con la RFduino potencia y ejecutan el mismo firmware al igual que en el paso anterior, vamos a nuestra frambuesa Pi y abra un Editor de texto (por ejemplo, Leafpad).
La usaremos para crear nuestro script. Comenzamos introduciendo un par de definiciones de funciones:
MAC = "DC:E2:F4:0B:3A:03"
CHAR = 0X0011
DEF initialize():
Commands.GetOutput '(hciconfig hci0 hacia abajo')
Commands.GetOutput '(hciconfig hci0 arriba')
imprimir commands.getoutput ('hciconfig - a')
Commands.GetOutput ('killall hcitool')
La función initialize() se encarga de configurar la interfaz BLE. Aunque lo hicimos ya en un paso anterior, no es malo para que esté disponible. Esta función imprime la salida del comando hciconfig al Windowwhere Terminal de la secuencia de comandos es que funcionó.
DEF sendColor(c):
comando = 'sudo gatttool -t random -b {0}--char-escritura-req-{1} - n {2}'.format (MAC, CHAR, c)
p = subproceso. Popen(Command.Split(), concha = False)
imprimir p.communicate() [0]
La función de sendColor una cadena de 3 bytes y envía al dispositivo con dirección mac MAC al característico mango CHAR. Usted necesitará cambiar estos valores con sus propios valores al principio del script.
Si __name__ == '__main__':
Initialize()
sendColor('FF0000')
Time.Sleep(1)
sendColor('00FF00')
Time.Sleep(1)
sendColor('0000FF')
Time.Sleep(1)
sendColor('000000')
Por último, cuando el script se ejecutará la initialize() función una vez y el conjunto entonces el color rojo de brillo completo, esperar 1 segundo, full brillo verde, espere 1 segundo, full brillo azul, esperar 1 segundo y luego no enviar un 'color' (OFF) comando. Si todo está en su lugar, el RFduino debe mostrar el siguiente comportamiento: