evcc-io/tests/simulator/api.js

37 lines
1 KiB
JavaScript

import bodyParser from "body-parser";
let state = {
site: {
grid: { power: 0 },
pv: { power: 0 },
battery: { power: 0, soc: 0 },
},
loadpoints: [{ power: 0, energy: 0, enabled: false, status: "A" }],
vehicles: [{ soc: 0, range: 0 }],
};
export default () => ({
name: "api",
enforce: "pre",
configureServer(server) {
console.log("configureServer");
return () => {
server.middlewares.use(bodyParser.json());
server.middlewares.use((req, res, next) => {
if (req.method === "POST" && req.originalUrl === "/api/state") {
console.log("POST /api/state", req.body);
state = req.body;
res.end();
} else if (req.method === "POST" && req.originalUrl === "/api/shutdown") {
console.log("POST /api/shutdown", req.body);
res.end();
process.exit();
} else if (req.originalUrl === "/api/state") {
res.end(JSON.stringify(state));
} else {
next();
}
});
};
},
});