Меnu:


Una cosa que siempre hace falta por defecto en cualquier distribución GNU/Linux es una manera rápida y sencilla de enviar y recibir archivos a través del bluetooth. En el articulo anterior vimos como recibir archivos, en esta ocasión veremos como poder enviar archivos por bluetooth desde la linea de comandos.

¿De donde salio esta idea?

Existe una utilidad en la distro ubuntu que sirve para enviar archivos por bluetooth desde la linea de comandos que se llama bluetooth-sendto, así que intentaremos emular a dicha utilidad.

¿Que necesitamos?

Necesitamos instalar PyOBEX en nuestro caso en nuestra distro Archlinux la hemos instalado papa python2, también existe este paquete para python3. una vez instalado el paquete. debemos tener este script(send_fyle.py):

#!/usr/bin/env python
from bluetooth import *
from PyOBEX.client import Client
import sys
addr = sys.argv[1]
uuidv =  sys.argv[2]
filename =  sys.argv[3]
absolute_path =  sys.argv[4]
print("Searching for OBEX service on %s" % addr)

service_matches = find_service(uuid = uuidv, address = addr )

if len(service_matches) == 0:
    print("Couldn't find the service.")
    sys.exit(0)

first_match = service_matches[0]
port = first_match["port"]
name = first_match["name"]
host = first_match["host"]

print("Connecting to \"%s\" on %s" % (name, host))
client = Client(host, port)
client.connect()
client.put(filename, open(absolute_path, "rb").read())
client.disconnect()

y con ello ya podríamos probarlo con:

#    python2 ~/dev/python/send_fyle.py $BTAddress $MYUUID $FILENAMEVAR $MYABSOLUTE_PATH
bt-sendto-n900f() {
    bt-sendto 20:D6:07:BF:A2:1E $1
}
bt-sendto() {
    MYUUID="00001105-0000-1000-8000-00805f9b34fb"
    if [ ! -z "$2" ]; then
        BTAddress="$1"
        MYABSOLUTE_PATH=$(readlink -f "$2")
    else
        BTAddress="14:5F:94:AE:86:38"
        MYABSOLUTE_PATH=$(readlink -f "$1")
    fi
    FILENAMEVAR=$(echo $MYABSOLUTE_PATH| rev | awk -v FS='/' '{print $1}' | rev)
    python2 ~/dev/python/send_fyle.py $BTAddress $MYUUID $FILENAMEVAR $MYABSOLUTE_PATH
}

La primera linea es para probar que funciona (quitar carácter de comentario). Luego tenemos la función bt-sendto para enviar a dispositivos con direcciones especificas (direcciones bluetooth).

Ya esta. Comiencen a enviar y recibir archivos con una facilidad relativa, debemos recordar que no usamos desktop environment en kipuamutay just Openbox as window manager y que todo este articulo ha sido escrito y publicado en una estación arm desde la opi+2e.

¿Como saber las direcciones de los dispositivos bluetooth a los que podría enviar archivos?

Despues de escanear los dispositivos bluetooth cercanos acá en kipuamutay para poder identificar a los dispositivos que pueden recibir archivos por bluetooth, verificamos los dispositivos que tienen el servicio "OBEX Object Push". hint (info bt-address desde el bluetoothctl) en cada dispositivo.

Algo que se podría mejorar

Seria conveniente no depender del python sino mas bien tener un binario compilado directamente con las librerias bluetooth que haga lo mismo.

Last change: 29.06.2018 18:48

blog comments powered by Disqus