forked from Moki38/vedirect
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
83 lines (73 loc) · 1.97 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
var serialport = require('serialport');
//
// BMV
//
var serialport = require('serialport');
var bmvdata = {};
function get_product_longname(pid) {
if (pid == "0x203") return("BMV-700");
if (pid == "0x204") return("BMV-702");
if (pid == "0x205") return("BMV-700H");
if (pid == "0x300") return("MPPT 70/15");
if (pid == "0xA042") return("MPPT 75/15");
if (pid == "0xA043") return("MPPT 100/15");
if (pid == "0xA044") return("MPPT 100/30");
if (pid == "0xA041") return("MPPT 150/35");
if (pid == "0xA040") return("MPPT 75/50");
if (pid == "0xA045") return("MPPT 100/50");
return ("Unknown");
};
function parse_serial(line) {
var res = line.split("\t");
switch(res[0]) {
case 'V':
bmvdata.V = Math.floor(res[1]/10)/100;
break;
case 'VS':
bmvdata.VS = Math.floor(res[1]/10)/100;
break;
case 'I':
bmvdata.I = res[1];
break;
case 'SOC':
bmvdata.SOC = res[1]/10;
break;
case 'CE':
bmvdata.CE = res[1];
break;
case 'VPV':
bmvdata.VPV = Math.floor(res[1]/10)/100;
break;
case 'PPV':
bmvdata.PPV = res[1];
break;
case 'PID':
bmvdata.PID = res[1];
bmvdata.LONG = get_product_longname(res[1]);
break;
case 'H20':
bmvdata.YT = res[1];
break;
case 'H22':
bmvdata.YY = res[1];
break;
case 'BMV':
bmvdata.BMV = res[1];
bmvdata.LONG = res[1];
break;
}
}
exports.open = function(ve_port) {
port = new serialport(ve_port, {
baudrate: 19200,
parser: serialport.parsers.readline('\r\n')});
port.on('data', function(line) {
// parse_serial(ve_port, line);
parse_serial(line);
});
}
exports.update = function() {
return bmvdata;
}
exports.close = function() {
}