UNPKG

evcharger

Version:

Cost clearing and balancing in energy blockchain for KEBA based electric vehicle charging devices (Wallbox). Payment framework for distributed ledger in e-mobility scenarios.

76 lines (65 loc) 2 kB
const vorpal = require('vorpal')(); var dgram = require('dgram'); var server = null; var communication_port = 7090; module.exports = { listen: function (args, callback,recv) { if(server==null) { server = dgram.createSocket('udp4'); } var device_port = 7090; var device_ip='0.0.0.0'; if(typeof args.options.i != "undefined") device_ip=args.options.i; if(typeof args.options.p != "undefined") device_port=args.options.p; server.on('listening', function () { var address = server.address(); vorpal.log('UDP Server listening on ' + address.address + ":" + address.port); callback(); }); server.on('message', function (message, remote) { if(typeof recv != "undefined") { server = dgram.createSocket('udp4'); recv(message,remote); } else { vorpal.log(remote.address + ':' + remote.port +' - ' +message); callback(); } }); server.bind(device_port,device_ip); }, send: function (args, callback,recv) { let message = args.msg.join(' '); var device_port=7090; var device_ip=null; if(typeof args.options.i != "undefined") { device_ip=args.options.i; if(typeof global.bo != "undefined") { global.bo.storage().setItemSync("default_ip",device_ip); } }else { if(typeof global.bo != "undefined") { device_ip=global.bo.storage().getItemSync("default_ip"); } } if(typeof recv=="undefined") { recv = function(message,remote) { vorpal.log("Rx",remote.address + ':' + remote.port +' - ' +message); server.close(function() { server = null; // Cleanup callback(); }); } } if(server == null) { com.listen({options:[]},function() { com.send(args,callback); },recv); } else { server.send(message, 0, message.length, device_port,device_ip, function(err, bytes) { if (err) throw err; vorpal.log('UDP message sent to ' + device_ip +':'+ device_port); }); } } }; com = module.exports;