Commit a6f35a6b authored by Kamron Aroonrua's avatar Kamron Aroonrua 💬

1.2.1

parent eb8f6083
#Changelog #Changelog
## [1.2.1] - 2018-10-11
### Added
- PLUGIN :: do-netpie
### Changed
- PLUGIN :: di-http-request inherit meta form input
## [1.2] - 2018-08-11 ## [1.2] - 2018-08-11
### Fixed ### Fixed
- BS :: job registering with no token bug - BS :: job registering with no token bug
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
"express-jwt": "^5.3.1", "express-jwt": "^5.3.1",
"ioredis": "^2.5.0", "ioredis": "^2.5.0",
"jsonwebtoken": "^8.2.2", "jsonwebtoken": "^8.2.2",
"microgear": "^0.8.1",
"minimatch": "^3.0.4", "minimatch": "^3.0.4",
"minimist": "^1.2.0", "minimist": "^1.2.0",
"moment": "^2.17.1", "moment": "^2.17.1",
......
...@@ -52,7 +52,23 @@ function execute_function(context,response){ ...@@ -52,7 +52,23 @@ function execute_function(context,response){
} }
request({'method': 'GET','url':url,'headers':http_headers ,'encoding':encode}, function (error, resp, body) { request({'method': 'GET','url':url,'headers':http_headers ,'encoding':encode}, function (error, resp, body) {
response.meta = {'_status_code':(error)?0:resp.statusCode,'_error':(error)?true:false} var respmeta = {};
//response.meta = {'_status_code':(error)?0:resp.statusCode,'_error':(error)?true:false}
//Merg Input Meta
if(input_meta && typeof input_meta == 'object')
{
Object.keys(input_meta).forEach((item)=>{
if(!item.startsWith('_')){
respmeta[item] = input_meta[item];
}
});
}
respmeta['_status_code'] = (error)?0:resp.statusCode;
respmeta['_error'] = (error)?true:false;
response.meta = respmeta;
if (!error && resp.statusCode == 200) { if (!error && resp.statusCode == 200) {
if(param.encoding=='json'){ if(param.encoding=='json'){
try{ try{
......
var util = require('util');
var DOPlugin = require('../do-plugin');
function DOTask(context,request){
DOPlugin.call(this,context,request);
this.name = "call";
}
util.inherits(DOTask,DOPlugin);
DOTask.prototype.perform = require('./perform');
module.exports = DOTask;
{
"name": "do-netpie",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"microgear": "^0.8.1"
}
}
var ctx = require('../../../context');
var Utils = ctx.getLib('lib/util/plugin-utils');
var bsdata = ctx.getLib('lib/model/bsdata');
var async = require('async');
var MicroGear = require('microgear');
function perform_function(context,request,response){
var job_id = context.jobconfig.job_id;
var transaction_id = context.transaction.id;
var param = context.jobconfig.data_out.param;
var memstore = context.task.memstore;
var in_type = request.type;
var data = (Array.isArray(request.data))?request.data:[request.data];
var meta = request.meta;
var prm_appid = param.appid;
var prm_appkey = param.appkey;
var prm_secret = param.secret;
var prm_topic = param.topic;
var microgear = MicroGear.create({
key : prm_appkey,
secret : prm_secret
});
microgear.setCachePath('tmp/microgear-' + job_id + '.cache');
//microgear.resetToken(function(result){
microgear.connect(prm_appid);
//});
microgear.on('connected', function() {
var idx = 0;
async.whilst(
function() { return idx < data.length; },
function(callback) {
var ev = {
'type' : in_type,
'meta' : meta,
'data' : data[idx]
}
var topic=Utils.vm_execute_text(ev,prm_topic);
microgear.publish(topic, data[idx],{},function(err){
idx++;
callback(err);
});
},
function (err) {
if(!err){
response.success();
}else{
console.log(err);
response.error("publish error");
}
microgear.disconnect();
}
);
});
//response.success();
//response.reject();
//response.error("error message")
}
module.exports = perform_function;
...@@ -43,6 +43,8 @@ function avg_point(prm,cb) ...@@ -43,6 +43,8 @@ function avg_point(prm,cb)
var y1 = (dpoint[1]+radius<h)?dpoint[1]+radius:h; var y1 = (dpoint[1]+radius<h)?dpoint[1]+radius:h;
var sum_point = []; var sum_point = [];
var sumwg=0;
var wg=0;
var sum=0; var sum=0;
for(var i=x0;i<=x1;i++){ for(var i=x0;i<=x1;i++){
for(var j=y0;j<=y1;j++){ for(var j=y0;j<=y1;j++){
...@@ -51,17 +53,15 @@ function avg_point(prm,cb) ...@@ -51,17 +53,15 @@ function avg_point(prm,cb)
var bpx = Jimp.intToRGBA(ibg.getPixelColor(i, j)); var bpx = Jimp.intToRGBA(ibg.getPixelColor(i, j));
var fpx = Jimp.intToRGBA(ifg.getPixelColor(i, j)); var fpx = Jimp.intToRGBA(ifg.getPixelColor(i, j));
//Channel threshold
// if(bpx.r-fpx.r > bg_threshold || bpx.g-fpx.g > bg_threshold || bpx.b-fpx.b > bg_threshold){
// newimg.setPixelColor(Jimp.rgbaToInt(fpx.r, fpx.g, fpx.b, 255), i, j);
// }
//Color Distance threshold //Color Distance threshold
var pointW = weight(i,j,dpoint[0],dpoint[1],radius);
wg += pointW;
if(distance([bpx.r,bpx.g,bpx.b],[fpx.r,fpx.g,fpx.b])>bg_threshold){ if(distance([bpx.r,bpx.g,bpx.b],[fpx.r,fpx.g,fpx.b])>bg_threshold){
var mv = mapping(table,[fpx.r,fpx.g,fpx.b]) var mv = mapping(table,[fpx.r,fpx.g,fpx.b])
if(mv.value>0 && mv.distance<mapping_threshold){ if(mv.value>0 && mv.distance<mapping_threshold){
sum_point.push(mv.value); sum_point.push(mv.value);
sum+=mv.value; sum+=mv.value;
sumwg+=mv.value*pointW;
} }
}else{ }else{
sum_point.push(0); sum_point.push(0);
...@@ -72,9 +72,10 @@ function avg_point(prm,cb) ...@@ -72,9 +72,10 @@ function avg_point(prm,cb)
} }
var avg = (sum_point.length>0)?sum/sum_point.length:0; var avg = (sum_point.length>0)?sum/sum_point.length:0;
var avgw = (wg>0)?sumwg/wg:0
var mdn = (sum_point.length>0)?median(sum_point):0; var mdn = (sum_point.length>0)?median(sum_point):0;
callback(null,{'avg':avg,'mdn':mdn}); callback(null,{'avg':avg,'avgw':avgw,'mdn':mdn});
} }
...@@ -153,6 +154,11 @@ function pointInCircle(x, y, cx, cy, radius) { ...@@ -153,6 +154,11 @@ function pointInCircle(x, y, cx, cy, radius) {
return Math.sqrt(distancesquared) <= radius; return Math.sqrt(distancesquared) <= radius;
} }
function weight(x, y, cx, cy,radius) {
var distancesquared = Math.pow(x - cx,2) + Math.pow(y - cy,2);
return radius - Math.sqrt(distancesquared);
}
function distance(a,b) function distance(a,b)
{ {
sum = 0; sum = 0;
......
...@@ -17,6 +17,7 @@ function perform_function(context,request,response){ ...@@ -17,6 +17,7 @@ function perform_function(context,request,response){
var prm_point = param.point; var prm_point = param.point;
var prm_radius = param.radius; var prm_radius = param.radius;
var prm_table = param.color_mapping || def_table(); var prm_table = param.color_mapping || def_table();
var prm_field = param.field || ['avg','median'];
var mapping_threshold = param.mapping_threshold; var mapping_threshold = param.mapping_threshold;
var bg_threshold = param.backgroud_threshold; var bg_threshold = param.backgroud_threshold;
var prefix = param.prefix || 'radar_'; var prefix = param.prefix || 'radar_';
...@@ -48,8 +49,10 @@ function perform_function(context,request,response){ ...@@ -48,8 +49,10 @@ function perform_function(context,request,response){
'bg_threshold ':bg_threshold 'bg_threshold ':bg_threshold
},function(err,res){ },function(err,res){
if(!err){ if(!err){
meta[prefix+'avg'] = res.avg; if(prm_field.indexOf('avg') >= 0){meta[prefix+'avg'] = res.avg;}
meta[prefix+'median'] = res.mdn; if(prm_field.indexOf('avgw') >= 0){meta[prefix+'avgw'] = res.avgw;}
if(prm_field.indexOf('median') >=0){meta[prefix+'median'] = res.mdn;}
response.success(data,{'meta':meta,'output_type':output_type}); response.success(data,{'meta':meta,'output_type':output_type});
}else{ }else{
response.error(err) response.error(err)
......
...@@ -20,15 +20,35 @@ ...@@ -20,15 +20,35 @@
// sock.send(t); // sock.send(t);
// }, 1500); // }, 1500);
var axon = require('axon'); // var axon = require('axon');
var sock = axon.socket('rep'); // var sock = axon.socket('rep');
//
// sock.bind('tcp://0.0.0.0:3333')
//
// sock.on('message', function(img, reply){
// // resize the image
// console.log('receive');
// setTimeout(function(){
// console.log('reply');
// var rep = img;
// reply(rep);
// },5000);
// });
var ctx = require('../../context');
var RPCServer = ctx.getLib('lib/axon/rpcserver');
var server = new RPCServer({
//'url':'tcp://0.0.0.0:3333'
'url':ctx.getUnixSocketUrl('test.sock')
});
sock.bind('tcp://0.0.0.0:3333') server.start();
sock.on('message', function(img, reply){ server.set_remote_function(function(req,cb){
// resize the image
console.log('receive'); console.log('receive');
var rep = img; setTimeout(function(){
rep.note = 'rep'; console.log('reply');
reply(rep); cb(null,req)
},10000);
}); });
...@@ -7,14 +7,76 @@ ...@@ -7,14 +7,76 @@
// console.log(msg); // console.log(msg);
// }); // });
var axon = require('axon'); // var axon = require('axon');
var sock = axon.socket('req'); // var sock = axon.socket('req');
//
// sock.connect('tcp://127.0.0.1:3333',function(){
// var img = {
// 'n' : Math.random().toString()
// }
//
// console.log('Send ' + img.n);
// sock.send(img, function(res){
// console.log(res.n);
// sock.close();
// });
// });
// var img = {
// 'n' : Math.random().toString()
// }
//
// console.log('Send ' + img.n);
// sock.send(img, function(res){
// console.log(res.n);
// //sock.close();
// });
// setTimeout(function(){
// sock.send({
// 'n' : '2'
// }, function(res2){
// console.log('2 ' + res2.n);
// //sock.close();
// });
// },1000);
//
//
//
// sock.send({
// 'n' : '3'
// }, function(res3){
// console.log('3 ' + res3.n);
// //sock.close();
// });
sock.connect('tcp://127.0.0.1:3333'); var ctx = require('../../context');
var RPCCaller = ctx.getLib('lib/axon/rpccaller');
var caller = new RPCCaller({
url : ctx.getUnixSocketUrl('test.sock'),
name :'storage_request'
});
var img = { var img = {
't' : 'hello' 'n' : Math.random().toString()
} }
sock.send(img, function(res){
req = {
'object_type' : 'storage_request',
'command' : 'writex',
'param' : {
'storage_name' : "test",
'meta' : {},
'data' : {
'type' : 'bsdata',
'value' : {}
}
}
}
console.log('Send ');
caller.call(req, function(err,res){
console.log(res); console.log(res);
//caller.close();
}); });
{ {
"version":"1.2", "version":"1.2.1",
"build":"201808021100" "build":"201810111600"
} }
\ No newline at end of file
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