Commit 66131834 authored by Leandro Lanzieri's avatar Leandro Lanzieri

Se agrega la aplicacion que corre en el servidor

parent 9060286b
......@@ -46,7 +46,8 @@
#define PING 0x19
#define ACK 0x41
/* ======= FRECUENCIAS ======== */
#define FREC_LUCES 0x66
#define FREC_ON_OFF 0x78
/* El MSB debe ser 0*/
#define FREC_LUCES 0x66 // 0110 0110
#define FREC_ON_OFF 0x78 // 0111 1000
#endif /* COMUNICACION_H_ */
......@@ -127,19 +127,19 @@ void inicializarNRF24L01(void)
int i;
for(i=0; i<5; i++)
{
val[i]=0x12; //N�mero de direcci�n
val[i]=0x13; //N�mero de direcci�n
}
WriteToNrf(W, RX_ADDR_P0, val, 5); //Cargo la direcci�n del RX
for(i=0; i<5; i++)
{
val[i]=0x13; //N�mero de direcci�n
val[i]=0x12; //N�mero de direcci�n
}
WriteToNrf(W, RX_ADDR_P1, val, 5); //Cargo la direcci�n del RX
for(i=0; i<5; i++)
{
val[i]=0x12; //N�mero de direcci�n
val[i]=0x13; //N�mero de direcci�n
}
WriteToNrf(W, TX_ADDR, val, 5); //Cargo la direcci�n del TX
......
var WebSocketServer = require("ws").Server;
var http = require("http");
var express = require("express");
var app = express();
var port = process.env.PORT || 5000;
app.use(express.static(__dirname + "/public"));
var server = http.createServer(app)
server.listen(port)
console.log("\nServidor HTTP en el puerto %d.", port)
var wss = new WebSocketServer({server: server});
console.log("\nServidor Websocket creado.");
wss.broadcast = function broadcast(data) {
wss.clients.forEach(function each(client) {
client.send(data);
});
};
wss.on("connection", function(ws) {
console.log("\nConexion websocket nueva.")
ws.on('message', function (data) {
var mensaje = JSON.parse(data);
if(mensaje.destino == 'servidor') {
/* La raspberry esta enviando actualizacion de estado o alerta,
* se hace un broadcast a todos los usuarios con la actualizacion. O
* se esta enviando un ping.
*/
if(!mensaje.ping) {
console.log("\n Destino: " + mensaje.destino + " | Nombre del nodo: " + mensaje.nodo + " | Estado: " + mensaje.estado);
wss.broadcast(JSON.stringify({destino: "usuario", nodo: mensaje.nodo, estado: mensaje.estado}));
}
}
if(mensaje.destino == 'raspberry') {
/* Un usuario esta enviando algun comando
* a la raspberry sobre algun nodo. Se hace
* un broadcast pero dirigido a la raspberry con la actualizacion
*/
console.log("\n Destino: " + mensaje.destino + " | Nombre del nodo: " + mensaje.nodo + " | Estado: " + mensaje.estado);
wss.broadcast(JSON.stringify({destino: "raspberry", nodo: mensaje.nodo, estado: mensaje.estado}));
}
});
ws.on("close", function() {
console.log("\nSe cerro una conexion websocket.");
})
})
\ No newline at end of file
This diff is collapsed.
html, body {
font-family: 'Muli', sans-serif;
}
/*===== Colores de fondo =====*/
div.bg-gris {
background-color: #333333;
color: #FFFFFF;
}
div.bg-verde {
background-color: #00EBC1;
color: #FFFFFF;
}
div.bg-verde .text-muted {
color: #00B998;
}
div.bg-verde hr {
background-color: #00B998;
}
/*===== Estilos de fuente =====*/
/* Tamaños*/
.fuente-s {
font-size: 1.4em;
}
.fuente-m {
font-size: 2em;
}
.fuente-l {
font-size: 3em;
}
.fuente-xl {
font-size: 9em;
margin-top: 0;
}
/* Secciones */
.titulo-seccion {
border-top: 8px solid #00B998;
display: inline-block;
padding-top: 10px;
text-transform: uppercase;
}
.alerta {
background-color: none;
background-color: rgba(255,255,255,0.3);
border-left: #FFFFFF solid 0.5em;
margin: 0.5em;
padding: 0.1em;
}
/* Alineaciones */
.img-top {
vertical-align: top;
}
.vertical-align {
display: flex;
align-items: center;
}
/* Botones */
.btn-verde {
background-color: #00B998;
cursor: pointer;
}
/*===== Espaciadores =====*/
.espacio-30 {
min-width:100%;
min-height: 3em;
}
.espacio-50 {
min-width:100%;
min-height: 4em;
}
/*===== Seccion top =====*/
#top {
color: #FFFFFF;
font-size: 2em;
font-weight: 300;
height: 70px;
line-height: 70px;
min-width: 100%;
}
#top img {
display: inline-block;
}
#top #logo-col {
text-align: center;
}
#top small {
color: #707070;
font-size: 15px;
}
.btn .glyphicon {
vertical-align: top;
}
@media screen and (min-width: 1200px) {
body {
font-size: 11px;
}
#top .container{
width: 100%;
max-width: 1200px;
}
}
@media screen and (max-width: 1200px) {
body {
font-size: 10px;
}
}
@media screen and (max-width: 768px) {
body {
font-size: 8px;
}
}
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js"></script>
<script>
var temp = location.origin.replace(/^https/, 'ws');
var host = temp.replace(/^http/, 'ws');
var ws = new WebSocket(host);
ws.onopen = function () {
<!-- Se envia un ping cada 15 segundos al servidor para que no se cierre la conexion -->
var ping = setInterval(function () {
ws.send(JSON.stringify({destino: "servidor", ping: "Ping!"}));
}, 15000);
$('#luces-living-boton').click(function() {
ws.send(JSON.stringify({destino: "raspberry", nodo: "luces living", estado: "toggle"}));
$('#luces-living-boton').prop('disabled', true);
});
$('#ventilacion-living-boton').click(function() {
ws.send(JSON.stringify({destino: "raspberry", nodo: "ventilacion living", estado: "toggle"}));
$('#ventilacion-living-boton').prop('disabled', true);
});
};
ws.onmessage = function (event) {
var mensaje = JSON.parse(event.data);
if(mensaje.destino == 'usuario') {
switch(mensaje.nodo) {
case 'temperatura living':
$('#temperatura-living-valor').html(mensaje.estado);
// Actualizar temperatura en pantalla
break;
case 'luces living':
$('#luces-living-estado').html(mensaje.estado);
$('#luces-living-boton').prop('disabled', false);
// Actualizar estado de nodo y cambiar de estado el boton
break;
case 'ventilacion living':
$('#ventilacion-living-estado').html(mensaje.estado);
$('#ventilacion-living-boton').prop('disabled', false);
// Actualizar estado de nodo y cambiar de estado el boton
break;
case 'alerta':
// Crear una alerta con el texto
break;
}
}
};
</script>
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<link rel="stylesheet" href="css/estilo.css" media="screen" title="no title" charset="utf-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div class="container">
<h1>Proyecto Dom&oacute;tica</h1>
<hr>
<div class="row">
<div class="col-xs-12"><h2>Temperatura del living: <span id="temperatura-living-valor"></span>º</h2></div>
</div>
<div class="row">
<div class="col-xs-8">
<h2>Luces del living: <span id="luces-living-estado"></span></h2>
</div>
<div class="col-xs-4">
<button class="btn btn-default btn-lg" id="luces-living-boton"><span class="glyphicon glyphicon-off"></span></button>
</div>
</div>
<div class="row">
<div class="col-xs-8">
<h2>Ventilaci&oacute;n del living: <span id="ventilacion-living-estado"></span></h2>
</div>
<div class="col-xs-4">
<button class="btn btn-default btn-lg" id="ventilacion-living-boton"><span class="glyphicon glyphicon-off"></span></button>
</div>
</div>
</div>
</body>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment