network: port: 7070 log: debug levels: mercedes: trace interval: 3s javascript: - vm: shared script: | state = { residualpower: 500, pvpower: 5000, batterypower: -750, batterySoC: 55, gridpower: -1000, loadpoints: [ { enabled: true, vehicleSoC: 62, maxcurrent: 6, phases: 1, chargepower: 0 }, { enabled: false, vehicleSoC: 22, maxcurrent: 0, phases: 3, chargepower: 0 } ] }; function get() { console.log("state:", JSON.stringify(state)); } function set() { console.log(param+":", val); console.log("state:", JSON.stringify(state)); } meters: - name: grid type: custom power: source: js vm: shared script: | state.pvpower = 8000+500*Math.random(); state.batterypower = state.gridpower > 0 ? 1000 * Math.random() : 0; state.gridpower = state.loadpoints[0].chargepower + state.loadpoints[1].chargepower + state.residualpower - state.batterypower - state.pvpower; state.gridpower; - name: pv type: custom power: source: js vm: shared script: state.pvpower; - name: battery type: custom power: source: js vm: shared script: state.batterypower; soc: source: js vm: shared script: | if (state.batterypower < 0) state.batterySoC++; else state.batterySoC--; if (state.batterySoC < 10) state.batterySoC = 90; if (state.batterySoC > 90) state.batterySoC = 10; state.batterySoC; - name: meter_charger_1 type: custom power: source: js vm: shared script: state.loadpoints[0].chargepower; - name: meter_charger_2 type: custom power: source: js vm: shared script: state.loadpoints[1].chargepower; chargers: - name: charger_1 type: custom enable: source: js vm: shared script: | set(); var lp = state.loadpoints[0]; lp.enabled = val; if (lp.enabled) lp.chargepower = lp.maxcurrent * 230 * lp.phases; else lp.chargepower = 0; enabled: source: js vm: shared script: | state.loadpoints[0].enabled; status: source: js vm: shared script: | if (state.loadpoints[0].enabled) "C"; else "B"; maxcurrent: source: js vm: shared script: | set(); var lp = state.loadpoints[0]; lp.maxcurrent = val; if (lp.enabled) lp.chargepower = lp.maxcurrent * 230 * lp.phases; else lp.chargepower = 0; - name: charger_2 type: custom enable: source: js vm: shared script: | set(); var lp = state.loadpoints[1]; lp.enabled = val; if (lp.enabled) lp.chargepower = lp.maxcurrent * 230 * lp.phases; else lp.chargepower = 0; enabled: source: js vm: shared script: | state.loadpoints[1].enabled; status: source: js vm: shared script: | if (state.loadpoints[1].enabled) "C"; else "B"; maxcurrent: source: js vm: shared script: | set(); var lp = state.loadpoints[1]; lp.maxcurrent = val; if (lp.enabled) lp.chargepower = lp.maxcurrent * 230 * lp.phases; else lp.chargepower = 0; phases1p3p: source: js vm: shared script: | set(); if (val === 1) lp.phases = 1; else lp.phases = 3; lp.phases; vehicles: - name: vehicle_1 title: blauer e-Golf type: custom soc: source: js vm: shared script: | var lp = state.loadpoints[0]; if (lp.chargepower > 0) lp.vehicleSoC++; else lp.vehicleSoC--; if (lp.vehicleSoC < 15) lp.vehicleSoC = 80; if (lp.vehicleSoC > 80) lp.vehicleSoC = 15; lp.vehicleSoC; range: source: js vm: shared script: | var lp = state.loadpoints[0] var range = (44 * lp.vehicleSoC) / 15; range capacity: 44 onidentify: targetsoc: 90 - name: vehicle_2 title: weißes Model 3 type: custom soc: source: js vm: shared script: | var lp = state.loadpoints[1]; if (lp.chargepower > 0) lp.vehicleSoC++; else lp.vehicleSoC--; if (lp.vehicleSoC < 15) lp.vehicleSoC = 75; if (lp.vehicleSoC > 75) lp.vehicleSoC = 15; lp.vehicleSoC; range: source: js vm: shared script: | var lp = state.loadpoints[1] var range = (80 * lp.vehicleSoC) / 17; range status: source: js vm: shared script: | "B" capacity: 80 onidentify: targetsoc: 75 - name: vehicle_3 type: template template: offline title: grüner Honda e capacity: 26 - name: mercedes1 type: mercedes title: Mercedes phases: 2 vin: W1K2052131G009532 clientId: 53c28422-25e4-47c2-9cf4-94a48065c5b3 clientSecret: ePhxFTNyMbvslPqgoAfERHscIvpHZIaOfKPLjmEvQZDhSaocKAOiceLEVubDPyxP identifiers: Jochen site: title: Zuhause meters: grid: grid pv: pv battery: battery loadpoints: - title: Carport charger: charger_1 mode: pv phases: 1 meter: meter_charger_1 # vehicle: vehicle_1 # default - title: Garage charger: charger_2 mode: "off" meter: meter_charger_2