Paso 3: Configurar el Raspberry Pi
Conecte su frambuesa Pi a un monitor, ratón y teclado. Asegúrese de que está trabajando una conexión Ethernet o WiFi, y asegúrese de que el sistema operativo está actualizado:
- actualización de $ sudo apt-get
- actualización de $ sudo apt-get
Si no ya instalado, instalar Node.js para el brazo, luego agregue los paquetes serialport y ws a través de la nueva gestión pública:
- $ MNP instalar serialport
- $ MNP instalación ws
Ahora Conecte el puerto serie de Arduino al USB en la Raspberry Pi.
Por último, descargar el código de Node.js (send_data_to_sami.js) a la frambuesa Pi. Reemplace los marcadores de posición en el código con el dispositivo token y ID de dispositivo recogidos desde el Portal de usuario.
El código de Node.js también se da a continuación. Establece una WebSocketconnection bidireccional entre el Raspberry Pi y el SAMI. Después de la conexión WebSocket está abierta, método register() registra el dispositivo con lo WebSocket. Cada vez, el código Lee un punto de datos del puerto serie, envuelve en un mensaje y envía el mensaje a SAMI via WebSocket.
var webSocketUrl = "wss://api.samsungsami.io/v1.1/websocket?ack=true";
device_id var = ""; var device_token = "";
var isWebSocketReady = false; var ws = null;
serialport var = require("serialport")
var SerialPort = serialport. SerialPort;
sp var = nuevo SerialPort ("/ dev/ttyACM0", {}
velocidad en baudios: 9600,
Intérprete: serialport.parsers.readline("\n")
});
var WebSocket = require('ws');
/**
* Obtiene la hora actual en millis
*/
función getTimeMillis() {}
volver parseInt(Date.now().toString());
}
/**
* Crear una conexión bidireccional de /websocket
*/
la función start() {}
Crear la conexión websocket
isWebSocketReady = false;
WS = new WebSocket(webSocketUrl);
WS.on ('open', function() {}
Console.log ("conexión Websocket está abierta...");
Register();
});
WS.on ('mensaje', {} de la función (datos, banderas)
Console.log ("mensaje recibido:" + datos + '\n');
});
WS.on ('cerca', function() {}
Console.log ("Websocket se cierra la conexión...");
});
}
/**
* Envía un mensaje de registro a lo websocket y comienza al flooder de mensaje
*/
función register() {}
Console.log ("dispositivo de registro en la conexión websocket");
trate de {}
var registerMessage = ' {"type": "registro", "sdid": "' + device_id +'", "Autorización": "portador de '+ device_token +'", "cid":"'+getTimeMillis() +'"}';
Console.log ('Enviar mensaje de registro de' + registerMessage + '\n');
WS.Send (registerMessage, {mask: true});
isWebSocketReady = true;
}
{} catch (e)
Console.error (' no se pudo registrar mensajes. Error en el registro de mensaje: ' + e.toString());
}
}
/**
* Envíe un mensaje a SAMI
*/
función sendData(onFire) {}
trate de {}
ts = ', "ts": ' + getTimeMillis();
var datos = {}
"onFire": onFire
};
var carga = ' {"sdid": "' + device_id +'" '+ ts +', "datos": '+ JSON.stringify(data) +', "cid":"'+getTimeMillis() +'"}'; Console.log ('Capacidad de carga de envío' + carga útil);
WS.Send (capacidad de carga, {mask: true});
} catch (e) {}
Console.error ('Error en el envío de un mensaje: ' + e.toString());
}
}
/**
* Todo comienza aquí
*/
Start(); crear conexión websocket
SP.on ("open", la función () {}
SP.on ('datos', {} function(data)
Si (! isWebSocketReady) {}
Console.log ("Websocket no está listo. Omitir enviar datos a SAMI (datos: "+ datos +") ");
retorno;
}
Console.log ("datos de puerto serie recibido:" + datos);
var flameDigitalValue = parseInt(data);
flameDigitalValue = 1 == > se detecta nada
flameDigitalValue = 0 == > se detecta fuego
onFire var = false;
Si (flameDigitalValue == 0) {}
onFire = true;
}
sendData(onFire);
});
});