Commit efbbe836 authored by Leandro Lanzieri's avatar Leandro Lanzieri

Nodo temperatura

parent 561d9946
......@@ -11,5 +11,6 @@
"PING": 25,
"FREC_ONOFF": 120,
"FREC_LUCES": 102,
"ACK": 65
"ACK": 65,
"MEDIR_TEMP": 219
}
......@@ -7,7 +7,8 @@
"frecuencia": 102,
"tipo": "temperatura",
"estado": false,
"conectado": false
"conectado": false,
"temperatura": 29
},
{
"id": 2,
......
......@@ -3,6 +3,7 @@ var clone = require('clone'); // Para clonar objetos
var RuleEngine = require('node-rules'); // Para el motor de reglas
var reglas = require('./reglas.json'); // Reglas guardadas
var NodoOnOff = require("./nodo-onoff"); // Clase de nodo on off
var NodoTemperatura = require("./nodo-temperatura"); // Clase de nodo temperatura
var configuracion = require('./configuracion'); // Configuracion del sistema
var comunicacion = require('./comunicacion');
/*COMUNICACION SERIE*/
......@@ -62,7 +63,10 @@ var hecho = {
}
/* Llena el fact con los nodos guardados en la configuracion */
for(i in configuracion.nodos) {
hecho.nodos.push(new NodoOnOff(configuracion.nodos[i]));
if(configuracion.nodos[i].tipo == 'temperatura')
hecho.nodos.push(new NodoTemperatura(configuracion.nodos[i]));
else
hecho.nodos.push(new NodoOnOff(configuracion.nodos[i]));
// TODO Hacer ping para ver si esta en la red
hecho.nodos[i].propiedades();
}
......@@ -164,4 +168,9 @@ var actualizarTiempoHecho = setInterval(function () {
//console.log(result);
}
});
}, 1000);
}, 2000);
var sensarTemperatura = setInterval(function () {
var comando = hecho.nodos..filter(function( obj ) { return obj.nombre == 'temperatura living';})[0].actualizaTemperatura();
bufferTransmision = Buffer.concat([bufferTransmision, comando]);
});
/* Proyecto Domotica | Raspberry
* nodo-onoff.js
* Definicion de propiedades y metodos de la clase Nodo OnOff.
* Esta clase hereda los metodos y propiedades basicas de Nodo.
*/
/*******************************************************************************
* Copyright (c) 2015
* Martin Enriquez (martin.hernan.enriquez@gmail.com),
* Leandro Lanzieri Rodriguez (lanzierileandro@gmail.com).
*
* This file is part of Proyecto Domotica.
*
* Proyecto Domotica is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Proyecto Domotica is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Proyecto Domotica. If not, see <http://www.gnu.org/licenses/>.
*******************************************************************************/
var util = require("util");
var Nodo = require('./nodo.js');
function NodoTemperatura (nodo) {
Nodo.call(this, nodo);
this.temperatura = nodo.temperatura,
this.propiedades = function () {
console.log("-----------------------");
console.log("\nPropiedades del Nodo");
console.log("\nId: " + this.id);
console.log("\nNombre: " + this.nombre);
console.log("\nFrecuencia: " + this.frecuencia);
console.log("\nTipo: " + this.tipo);
};
this.encender = function () {
console.log("\nEstoy encendido!.");
};
this.actualizarEstado = function(nodo) {
if(nodo.estado != this.estado) {
this.estado = nodo.estado;
console.log("\n" + this.nombre + " cambia su estado a: " + this.estado);
}
}
this.actualizarTemperatura = function() {
var comando = new Buffer([comunicacion.MEDIR_TEMP]);
return comando;
}
}
util.inherits(NodoOnOff, Nodo);
module.exports = NodoOnOff;
[
{
"condition": "function (R) { R.when((this.tiempo.hora < '21:00') && (this.tiempo.hora > '0:00') && (this.nodos.filter(function( obj ) { return obj.nombre == 'temperatura living';})[0].estado == true)); }",
"consequence":"function (R) { this.nodos.filter(function( obj ) { return obj.nombre == 'temperatura living';})[0].estado = false; console.log('[Regla Aplicada] temperatura living.estado = false porque la hora esta entre 0:00 y 21:00 y y esta en true'); R.next(); }",
"condition": "function (R) { R.when((this.nodos.filter(function( obj ) { return obj.nombre == 'ventilacion living';})[0].estado == false)) && (this.nodos.filter(function( obj ) { return obj.nombre == 'temperatura living';})[0].temperatura >= 28)); }",
"consequence":"function (R) { this.nodos.filter(function( obj ) { return obj.nombre == 'temperatura living';})[0].estado = true; console.log('[Regla Aplicada] ventilacion living.estado = true porque la temperatura esta sobre 28 '); R.next(); }",
"on":true
}
]
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