Skip to content

Latest commit

 

History

History
67 lines (44 loc) · 1.95 KB

README.md

File metadata and controls

67 lines (44 loc) · 1.95 KB

SensorSockets_app

Esta app lee via Bluetooth LE un sensor tag de Texas Instruments y envia un stream de datos con sockets a un servidor en Nodejs, repo del server.

Imgur

Clases

La clase SocketStream.java hace todo el trabajo de transferencia de forma asincorna, lo primero es crear el socket, clientSocket = new Socket(IP, PORT);, alli se tiene que definir la IP y el puerto del servidor que estará recibiendo el DataOutputStream.

protected Void doInBackground(Double... params) {

    try {

        clientSocket = new Socket(IP, PORT);

        if (clientSocket.isConnected()) {

            Log.i(TAG, "Connected to Nodejs");
            outToServer = new DataOutputStream(
            clientSocket.getOutputStream());

            /*Test stream thread
            Random r = new Random();*/

            while (clientSocket.isConnected()) {

            /* double out = MainActivity.JAJA;
            byte[] buf = out.getBytes("UTF-8");*/

            String out = Double.toString(MainActivity.JAJA);
            outToServer.writeUTF(out);
            //outToServer.writeDouble(out);
            Thread.sleep(1000);

            }
        }
    } catch (Exception e) {
        Log.e(TAG, "Server 404 !");
        Log.e(TAG, "" + e);
    }

    return null;
}

Por otro lado la clase SensorTagData.java esta encargada de recibir la interfaz Bluetooth del BluetoothGatt para extraer la lecturas analogas de los servicios definidos en el MainActivity.java.

Activación del servicio en el MainActivity.java

/*Temperature Service*/
private static final UUID AMB_TEMP_SERVICE = fromString("f000aa00-0451-4000-b000-000000000000");

Obtención de la lectura en SensorTagData.java

public static double extractAmbientTemperature(BluetoothGattCharacteristic c) {
    int offset = 2;
    return shortUnsignedAtOffset(c, offset) / 128.0;
}