Initial commit
This commit is contained in:
57
youless-exporter/src/main.ts
Normal file
57
youless-exporter/src/main.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import * as http from 'http';
|
||||
|
||||
const port = 4202;
|
||||
const youlessUri = 'http://192.168.2.68/a'
|
||||
|
||||
const server = http.createServer((req, res) => {
|
||||
|
||||
http.request(youlessUri, response => {
|
||||
let str = ''
|
||||
response.on('data', function (chunk) {
|
||||
str += chunk;
|
||||
});
|
||||
|
||||
response.on('end', function () {
|
||||
const parser = new Parser(str);
|
||||
|
||||
res.end(parser.toPrometheusFormat())
|
||||
});
|
||||
}).end();
|
||||
|
||||
})
|
||||
|
||||
server.listen(port)
|
||||
|
||||
|
||||
class Parser {
|
||||
public kWhTotal: number = null;
|
||||
public currentPowerWatt: number = null;
|
||||
|
||||
constructor(
|
||||
private input: string
|
||||
) {
|
||||
this.parse();
|
||||
}
|
||||
|
||||
public toPrometheusFormat(): string {
|
||||
return [
|
||||
`kwh_total ${this.kWhTotal}`,
|
||||
`current_power_watt ${this.currentPowerWatt}`
|
||||
].join('\n')
|
||||
}
|
||||
|
||||
private parse() {
|
||||
const lines = this.input.split('\n')
|
||||
.map(line => line.trim())
|
||||
.map(line => line.split(' '))
|
||||
|
||||
if (lines.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.kWhTotal = parseFloat(lines[0][0]?.replace(',', '.'));
|
||||
this.currentPowerWatt = parseInt(lines[1][0])
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user