Skip to content

Commit

Permalink
converted demo.yaml to use go instead of javascript
Browse files Browse the repository at this point in the history
  • Loading branch information
tisoft committed Mar 6, 2023
1 parent 656793b commit 9851cc6
Showing 1 changed file with 108 additions and 88 deletions.
196 changes: 108 additions & 88 deletions cmd/demo.yaml
Expand Up @@ -5,187 +5,207 @@ log: debug

interval: 3s

javascript:
go:
- 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));
import (
"fmt"
"math/rand"
"time"
)
type Loadpoint struct {
Enabled bool
VehicleSoc float64
MaxCurrent int
Phases int
ChargePower int
}
function set() {
console.log(param+":", val);
console.log("state:", JSON.stringify(state));
type State struct {
ResidualPower int
PvPower int
Batterypower int
BatterySoc int
GridPower int
Loadpoints []Loadpoint
}
var state = State{
ResidualPower: 500,
PvPower: 5000,
Batterypower: -750,
BatterySoc: 55,
GridPower: -1000,
Loadpoints: []Loadpoint{
{Enabled: true, VehicleSoc: 62, MaxCurrent: 6, Phases: 1, ChargePower: 0},
{Enabled: false, VehicleSoc: 22, MaxCurrent: 0, Phases: 3, ChargePower: 0},
},
}
var random = rand.New(rand.NewSource(time.Now().UnixNano()))
meters:
- name: grid
type: custom
power:
source: js
source: go
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;
state.PvPower = 8000 + random.Intn(500)
if (state.GridPower > 0){
state.Batterypower = random.Intn(1000);
} else {
state.Batterypower = 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
source: go
vm: shared
script: state.pvpower;
script: state.PvPower;

- name: battery
type: custom
power:
source: js
source: go
vm: shared
script: state.batterypower;
script: state.Batterypower;
soc:
source: js
source: go
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;
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;
capacity: 13.4

- name: meter_charger_1
type: custom
power:
source: js
source: go
vm: shared
script: state.loadpoints[0].chargepower;
script: state.Loadpoints[0].ChargePower;

- name: meter_charger_2
type: custom
power:
source: js
source: go
vm: shared
script: state.loadpoints[1].chargepower;
script: state.Loadpoints[1].ChargePower;

chargers:
- name: charger_1
type: custom
enable:
source: js
source: go
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;
lp := &state.Loadpoints[0];
lp.Enabled = enable;
if (lp.Enabled) { lp.ChargePower = lp.MaxCurrent * 230 * lp.Phases} else {lp.ChargePower = 0}
enabled:
source: js
source: go
vm: shared
script: |
state.loadpoints[0].enabled;
state.Loadpoints[0].Enabled;
status:
source: js
source: go
vm: shared
script: |
if (state.loadpoints[0].enabled) "C"; else "B";
ret := "B"
if (state.Loadpoints[0].Enabled) {ret="C"} else {ret="B"}
ret
maxcurrent:
source: js
source: go
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;
lp := &state.Loadpoints[0];
lp.MaxCurrent = maxcurrent;
if (lp.Enabled) {lp.ChargePower = lp.MaxCurrent * 230 * lp.Phases} else {lp.ChargePower = 0}
- name: charger_2
type: custom
enable:
source: js
source: go
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;
lp := &state.Loadpoints[1];
lp.Enabled = enable;
if (lp.Enabled) {lp.ChargePower = lp.MaxCurrent * 230 * lp.Phases} else {lp.ChargePower = 0}
enabled:
source: js
source: go
vm: shared
script: |
state.loadpoints[1].enabled;
state.Loadpoints[1].Enabled;
status:
source: js
source: go
vm: shared
script: |
if (state.loadpoints[1].enabled) "C"; else "B";
ret := "B"
if (state.Loadpoints[1].Enabled) {ret="C"} else {ret="B"}
ret
maxcurrent:
source: js
source: go
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;
lp := &state.Loadpoints[1];
lp.MaxCurrent = maxcurrent;
if (lp.Enabled) {lp.ChargePower = lp.MaxCurrent * 230 * lp.Phases} else {lp.ChargePower = 0}
phases1p3p:
source: js
source: go
vm: shared
script: |
set();
if (val === 1) lp.phases = 1; else lp.phases = 3;
lp.phases;
if (phases == 1) {lp.Phases = 1} else {lp.Phases = 3}
lp.Phases;
vehicles:
- name: vehicle_1
title: blauer e-Golf
type: custom
soc:
source: js
source: go
vm: shared
script: |
var lp = state.loadpoints[0];
if (lp.chargepower > 0) lp.vehicleSoc+=0.1; else lp.vehicleSoc-=0.1;
if (lp.vehicleSoc < 15) lp.vehicleSoc = 80;
if (lp.vehicleSoc > 80) lp.vehicleSoc = 15;
lp.vehicleSoc;
lp := &state.Loadpoints[0];
if (lp.ChargePower > 0) {lp.VehicleSoc+=0.1} else {lp.VehicleSoc-=0.1}
if (lp.VehicleSoc < 15) {lp.VehicleSoc = 80}
if (lp.VehicleSoc > 80) {lp.VehicleSoc = 15}
lp.VehicleSoc;
range:
source: js
source: go
vm: shared
script: |
var lp = state.loadpoints[0]
var range = (44 * lp.vehicleSoc) / 15;
range
lp := &state.Loadpoints[0]
ret := (44 * lp.VehicleSoc) / 15;
ret
capacity: 44
onidentify:
targetsoc: 90
- name: vehicle_2
title: weißes Model 3
type: custom
soc:
source: js
source: go
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;
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
source: go
vm: shared
script: |
var lp = state.loadpoints[1]
var range = (80 * lp.vehicleSoc) / 17;
range
lp := &state.Loadpoints[1]
ret := (80 * lp.VehicleSoc) / 17;
ret
status:
source: js
source: go
vm: shared
script: |
"B"
Expand Down

0 comments on commit 9851cc6

Please sign in to comment.