Initial commit
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
'use strict';
|
||||
|
||||
const dgram = require('dgram');
|
||||
|
||||
const commands = [
|
||||
{"cmd": "heartbeat", "model": "gateway", "sid":"81726387164871", "short_id": "0", "token": "8475638456384", "data": {"ip":"192.168.10.68"}},
|
||||
{"cmd": "report", "model": "86sw2", "sid":"1234567abeefc", "short_id": 10256, "data": {"channel_1": "click"}},
|
||||
{"cmd": "report", "model": "86sw2", "sid":"1234567abeefc", "short_id": 10256, "data": {"dual_channel": "both_click"}},
|
||||
{"cmd": "report", "model": "weather.v1", "sid":"1652761251244", "short_id": 12817, "data": {"pressure": "100120"}},
|
||||
{"cmd": "report", "model": "weather.v1", "sid":"1652761251244", "short_id": 12817, "data": {"humidity": "6606"}},
|
||||
{"cmd": "report", "model": "weather.v1", "sid":"1652761251244", "short_id": 12817, "data": {"temperature": "2030"}},
|
||||
{"cmd": "report", "model": "cube", "sid":"287658275634875", "short_id": 21396, "data": {"rotate": "6,500"}},
|
||||
{"cmd": "report", "model": "gateway", "sid":"81726387164871", "short_id": 0, "data": {"rgb": 0, "illumination": 1180}},
|
||||
{"cmd": "heartbeat", "model": "cube", "sid":"287658275634875", "short_id": 21396, "data": {"voltage": 3025}},
|
||||
{"cmd": "report", "model": "sensor_wleak.aq1", "sid":"aaa000xxxxxxx", "short_id": 12345, "data": {"status": "leak"}},
|
||||
{"cmd": "report", "model": "sensor_wleak.aq1", "sid":"aaa000xxxxxxx", "short_id": 12345, "data": {"status": "no_leak"}}
|
||||
];
|
||||
|
||||
function GatewaySimulator () {
|
||||
const that = this;
|
||||
|
||||
this.destroy = function (cb) {
|
||||
this.socket.close(cb);
|
||||
this.socket = null;
|
||||
};
|
||||
|
||||
function onMessage(msgBuffer, rinfo) {
|
||||
let msg;
|
||||
try {
|
||||
msg = JSON.parse(msgBuffer.toString());
|
||||
}
|
||||
catch (e) {
|
||||
return;
|
||||
}
|
||||
if (msg.cmd === 'whois') {
|
||||
for (let c = 0; c < commands.length; c++) {
|
||||
const json = JSON.stringify(commands[c]);
|
||||
console.log('Send ' + json);
|
||||
that.socket.send(json, 0, json.length, rinfo.port, rinfo.ip);
|
||||
}
|
||||
} else {
|
||||
msg.mirror = true;
|
||||
const json = JSON.stringify(msg);
|
||||
console.log('Mirror ' + json);
|
||||
that.socket.send(json, 0, json.length, rinfo.port, rinfo.ip);
|
||||
}
|
||||
}
|
||||
|
||||
this.init = function () {
|
||||
this.socket = dgram.createSocket('udp4');
|
||||
this.socket.on('message', onMessage);
|
||||
this.socket.on('error', error => console.error('ERROR: ' + error));
|
||||
this.socket.on('listening', () => {
|
||||
that.socket.setBroadcast(true);
|
||||
that.socket.setMulticastTTL(128);
|
||||
that.socket.addMembership('224.0.0.50');
|
||||
});
|
||||
this.socket.bind(4321);
|
||||
};
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
if (typeof module !== undefined && module.parent) {
|
||||
module.exports = GatewaySimulator;
|
||||
} else {
|
||||
const gw = new GatewaySimulator();
|
||||
gw.init();
|
||||
}
|
||||
Reference in New Issue
Block a user