homenode-node
Advanced tools
Comparing version 0.0.5 to 0.0.6
@@ -9,18 +9,26 @@ var homenode = require('./homenode.js')( | ||
homenode.addDevice({ | ||
id : '4322', | ||
var temp1Device = homenode.addDevice({ | ||
id : 'temp1', | ||
typ : 'sensor', | ||
name : 'TempSensor', | ||
description : 'Temperator sensor outside', | ||
state : 35.6 | ||
state : 35.6, | ||
events : [ | ||
{ name : "TempChange", | ||
description : "The temparature reading changed" | ||
} | ||
] | ||
}); | ||
homenode.removeDevice('4322'); | ||
homenode.addDevice({ | ||
id : '4323', | ||
var temp2Device =homenode.addDevice({ | ||
id : 'temp2', | ||
typ : 'sensor', | ||
name : 'TempSensor', | ||
description : 'Temperator sensor inside', | ||
state : 21.6 | ||
state : 21.1, | ||
events : [ | ||
{ name : "TempChange", | ||
description : "The temparature reading of the inside sensor changed" | ||
} | ||
] | ||
}); | ||
@@ -57,1 +65,9 @@ | ||
}); | ||
// Simulate temparture change | ||
setInterval(function() { | ||
temp1Device.state+=0.1; | ||
temp2Device.state+=0.05; | ||
temp1Device.fireEvent('TempChanged',temp1Device.state); | ||
temp2Device.fireEvent('TempChanged',temp2Device.state); | ||
},6000); |
@@ -37,4 +37,18 @@ var express = require('express'); | ||
devices.push(device); | ||
master.notifyDeviceChange(); | ||
device.fireEvent = function(eventName,payload) { | ||
master.notify( | ||
{ | ||
type : 'event', | ||
device : device.id, | ||
event : eventName, | ||
payload : payload | ||
} | ||
); | ||
} | ||
master.notify( { | ||
type: 'newdevice', | ||
device : device.id | ||
}); | ||
log('New device "'+device.name+'" registered.'); | ||
return device; | ||
} | ||
@@ -156,7 +170,4 @@ | ||
addDevice : addDevice, | ||
removeDevice : removeDevice, | ||
addApi : function(def) { | ||
api.use(app,def); | ||
} | ||
removeDevice : removeDevice | ||
} | ||
} |
@@ -6,2 +6,2 @@ module.exports = logger; | ||
} | ||
} | ||
} |
@@ -6,3 +6,3 @@ /** | ||
var log = require('./log.js')('master'); | ||
var urlHelper = require('url'); | ||
var masterNodes = []; | ||
@@ -54,2 +54,3 @@ | ||
res.on('end', function() { | ||
log("Master data "+data); | ||
var masterInfo = JSON.parse(data); | ||
@@ -110,19 +111,60 @@ masternode.registered = new Date(); | ||
function obj(input) { | ||
for( var p in input ) { | ||
if( ! (typeof input[p] === 'function' ) ) { | ||
console.log( p+':'+input[p]); | ||
} | ||
} | ||
} | ||
/** | ||
* Notify a device change | ||
* Send a notify | ||
*/ | ||
module.exports.notifyDeviceChange = function() { | ||
module.exports.notify = function(data) { | ||
var payload = { | ||
type : data.type, | ||
nodeid : local.id, | ||
device : data.device, | ||
event : data.event, | ||
payload : data.payload, | ||
} | ||
var postData = JSON.stringify(payload); | ||
masterNodes.forEach( function(masternode) { | ||
if(masternode.registered) { | ||
var fullurl = url(masternode, '/keeper/notify?type=device'); | ||
log("Device change url : "+fullurl) | ||
http.get(fullurl, function(res) { | ||
log("Device change notify done"); | ||
res.resume(); | ||
}) | ||
.on('error', function(e) { | ||
log("Device change notify error "+e); | ||
var notifyUrl = url(masternode, '/keeper/notify'); | ||
log("Notify url : "+notifyUrl); | ||
var connectionData = urlHelper.parse(notifyUrl,true); | ||
obj(connectionData); | ||
var options = { | ||
hostname: connectionData.hostname, | ||
port: connectionData.port, | ||
path: connectionData.path, | ||
method: 'POST', | ||
headers: { 'Content-Type': 'application/json', 'Content-Length': postData.length } | ||
}; | ||
var req = http.request(options, function(res) { | ||
log('STATUS: ' + res.statusCode); | ||
log('HEADERS: ' + JSON.stringify(res.headers)); | ||
res.setEncoding('utf8'); | ||
var data = ''; | ||
res.on('data', function (chunk) { | ||
log('PARTIAL BODY: ' + chunk); | ||
data += chunk; | ||
}); | ||
res.on('end', function() { | ||
log('COMPLETE BODY: ' + data); | ||
}); | ||
req.on('error', function(e) { | ||
log('problem with request: ' + e.message); | ||
}); | ||
}); | ||
// write data to request body | ||
req.write(postData); | ||
log('Postdata:'+postData); | ||
req.end(); | ||
} | ||
}); | ||
} |
{ | ||
"name": "homenode-node", | ||
"version": "0.0.5", | ||
"version": "0.0.6", | ||
"description": "Homenode node library", | ||
@@ -5,0 +5,0 @@ "main": "homenode.js", |
@@ -0,0 +0,0 @@ Homenode node |
12
ssdp.js
@@ -22,3 +22,3 @@ var log = require('./log.js')('ssdp'); | ||
client.search('urn:homenode:device:Master:1'); | ||
log("Searching ..."); | ||
log("Searching for master ..."); | ||
} | ||
@@ -36,11 +36,1 @@ setInterval(search, 10000); | ||
} | ||
// Or maybe if you want to scour for everything after 5 seconds | ||
//setTimeout(function() { | ||
// client.search('ssdp:all') | ||
//}, 5000) | ||
// And after 10 seconds, you want to stop | ||
//setTimeout(function () { | ||
// client.stop() | ||
//}, 10000) |
Sorry, the diff of this file is not supported yet
11591
403