susi-forge
Version:
40 lines (36 loc) • 1.34 kB
JavaScript
var TemperatureController = {
lastTemp: 0.0,
notifyThreshold: 0.1,
init: function(){
var self = this;
susi.registerProcessor("demo::temperature::get", self.getTemp.bind(self));
susi.registerConsumer("heartbeat::five",function(evt){
susi.publish({
topic: "demo::temperature::get"
},function(res){
log(JSON.stringify(res));
var currentTemp = res.payload.temperature;
if(currentTemp !== null && Math.abs(currentTemp-self.lastTemp) > self.notifyThreshold){
self.lastTemp = currentTemp;
susi.publish({
topic: "demo::temperature::update",
payload: {
temperature: currentTemp
}
});
}
});
});
log("Temperature-Controller init ready.");
},
getTemp: function(event){
MainController.syscall('get-temperature',function(res){
log(JSON.stringify(res));
var stdout = res.payload.stdout;
var arr = stdout.split("\r\n");
var tempStr = arr[1];
event.payload = {temperature: parseFloat(tempStr)};
susi.ack(event);
});
}
};