225 lines
5.1 KiB
YAML
225 lines
5.1 KiB
YAML
network:
|
|
port: 7070
|
|
|
|
log: info
|
|
|
|
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;
|
|
- name: meter_charger_3
|
|
type: custom
|
|
power:
|
|
source: js
|
|
script: 0
|
|
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;
|
|
- name: charger_3
|
|
type: custom
|
|
enable:
|
|
source: js
|
|
vm: shared
|
|
script:
|
|
enabled:
|
|
source: js
|
|
vm: shared
|
|
script: false
|
|
status:
|
|
source: js
|
|
vm: shared
|
|
script: "'A'"
|
|
maxcurrent:
|
|
source: js
|
|
vm: shared
|
|
script: 16
|
|
|
|
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
|
|
- 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
|
|
capacity: 80
|
|
|
|
site:
|
|
title: Zuhause
|
|
meters:
|
|
grid: grid
|
|
pv: pv
|
|
battery: battery
|
|
|
|
loadpoints:
|
|
- title: Carport
|
|
charger: charger_1
|
|
mode: pv
|
|
phases: 1
|
|
soc:
|
|
target: 90
|
|
meter: meter_charger_1
|
|
vehicle: vehicle_1
|
|
- title: Garage
|
|
charger: charger_2
|
|
soc:
|
|
target: 75
|
|
mode: "off"
|
|
meter: meter_charger_2
|
|
vehicle: vehicle_2
|
|
# - title: Garage rechts
|
|
# charger: charger_3
|
|
# mode: "off"
|
|
# meters:
|
|
# charge: meter_charger_3
|