Adjustments for high scale wattage

This commit is contained in:
Gunnar Skjold 2024-02-29 15:41:34 +01:00
parent 23cbcf9a0a
commit c06dabba51
6 changed files with 75 additions and 28 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
<script>
import { fmtnum, capitalize } from "./Helpers";
import { fmtnum, capitalize, formatUnit } from "./Helpers";
import { translationsStore } from "./TranslationService";
export let sysinfo;
@ -12,11 +12,22 @@
translations = update;
});
let rih,rid,rim,ril, reh,red,rem,rel;
let hasCost = false;
let cols = 3
$: {
hasCost = data && data.h && (Math.abs(data.h.c) > 0.01 || Math.abs(data.d.c) > 0.01 || Math.abs(data.m.c) > 0.01 || Math.abs(data.h.i) > 0.01 || Math.abs(data.d.i) > 0.01 || Math.abs(data.m.i) > 0.01);
cols = hasCost ? 3 : 2;
rih = formatUnit(data?.h?.u*1000, "Wh");
rid = formatUnit(data?.d?.u*1000, "Wh");
rim = formatUnit(data?.m?.u*1000, "Wh");
ril = formatUnit(sysinfo?.last_month?.c*1000, "Wh");
reh = formatUnit(data?.h?.p*1000, "Wh");
red = formatUnit(data?.d?.p*1000, "Wh");
rem = formatUnit(data?.m?.p*1000, "Wh");
rel = formatUnit(sysinfo?.last_month?.p*1000, "Wh");
}
</script>
@ -29,44 +40,44 @@
<strong>{translations.common?.import ?? "Import"}</strong>
<div class="grid grid-cols-{cols} mb-3">
<div>{capitalize(translations.common?.hour ?? "Hour")}</div>
<div class="text-right">{fmtnum(data.h.u,2)} kWh</div>
<div class="text-right">{rih[0]} {rih[1]}</div>
{#if hasCost}<div class="text-right">{fmtnum(data.h.c,2)} {currency}</div>{/if}
<div>{capitalize(translations.common?.day ?? "Day")}</div>
<div class="text-right">{fmtnum(data.d.u,1)} kWh</div>
<div class="text-right">{rid[0]} {rid[1]}</div>
{#if hasCost}<div class="text-right">{fmtnum(data.d.c,1)} {currency}</div>{/if}
<div>{capitalize(translations.common?.month ?? "Month")}</div>
<div class="text-right">{fmtnum(data.m.u)} kWh</div>
<div class="text-right">{rim[0]} {rim[1]}</div>
{#if hasCost}<div class="text-right">{fmtnum(data.m.c)} {currency}</div>{/if}
<div>{translations.realtime?.last_mo ?? "Last mo."}</div>
<div class="text-right">{fmtnum(sysinfo.last_month.u)} kWh</div>
<div class="text-right">{ril[0]} {ril[1]}</div>
{#if hasCost}<div class="text-right">{fmtnum(sysinfo.last_month.c)} {currency}</div>{/if}
</div>
<strong>{translations.common?.export ?? "Export"}</strong>
<div class="grid grid-cols-{cols}">
<div>{capitalize(translations.common?.hour ?? "Hour")}</div>
<div class="text-right">{fmtnum(data.h.p,2)} kWh</div>
<div class="text-right">{reh[0]} {reh[1]}</div>
{#if hasCost}<div class="text-right">{fmtnum(data.h.i,2)} {currency}</div>{/if}
<div>{capitalize(translations.common?.day ?? "Day")}</div>
<div class="text-right">{fmtnum(data.d.p,1)} kWh</div>
<div class="text-right">{red[0]} {red[1]}</div>
{#if hasCost}<div class="text-right">{fmtnum(data.d.i,1)} {currency}</div>{/if}
<div>{capitalize(translations.common?.month ?? "Month")}</div>
<div class="text-right">{fmtnum(data.m.p)} kWh</div>
<div class="text-right">{rem[0]} {rem[1]}</div>
{#if hasCost}<div class="text-right">{fmtnum(data.m.i)} {currency}</div>{/if}
<div>{translations.realtime?.last_mo ?? "Last mo."}</div>
<div class="text-right">{fmtnum(sysinfo.last_month.p)} kWh</div>
<div class="text-right">{rel[0]} {rel[1]}</div>
{#if hasCost}<div class="text-right">{fmtnum(sysinfo.last_month.i)} {currency}</div>{/if}
</div>
{:else}
<strong>{translations.realtime?.consumption ?? "Consumption"}</strong>
<div class="grid grid-cols-2 mb-3">
<div>{capitalize(translations.common?.hour ?? "Hour")}</div>
<div class="text-right">{fmtnum(data.h.u,2)} kWh</div>
<div class="text-right">{rih[0]} {rih[1]}</div>
<div>{capitalize(translations.common?.day ?? "Day")}</div>
<div class="text-right">{fmtnum(data.d.u,1)} kWh</div>
<div class="text-right">{rid[0]} {rid[1]}</div>
<div>{capitalize(translations.common?.month ?? "Month")}</div>
<div class="text-right">{fmtnum(data.m.u)} kWh</div>
<div class="text-right">{rim[0]} {rim[1]}</div>
<div>{translations.realtime?.last_month ?? "Last month"}</div>
<div class="text-right">{fmtnum(sysinfo.last_month.u)} kWh</div>
<div class="text-right">{ril[0]} {ril[1]}</div>
</div>
{#if hasCost}
<strong>{translations.realtime?.cost ?? "Cost"}</strong>

View File

@ -1,6 +1,6 @@
<script>
import { pricesStore, dayPlotStore, monthPlotStore, temperaturesStore } from './DataStores.js';
import { ampcol, exportcol, metertype, uiVisibility } from './Helpers.js';
import { ampcol, exportcol, metertype, uiVisibility, formatUnit } from './Helpers.js';
import { translationsStore } from './TranslationService.js';
import PowerGauge from './PowerGauge.svelte';
import VoltPlot from './VoltPlot.svelte';
@ -37,6 +37,12 @@
translationsStore.subscribe(update => {
translations = update;
});
let it,et;
$: {
it = formatUnit(data?.ic * 1000, "Wh");
et = formatUnit(data?.ec * 1000, "Wh");
}
</script>
<div class="grid 2xl:grid-cols-6 xl:grid-cols-5 lg:grid-cols-4 md:grid-cols-3 sm:grid-cols-2">
@ -47,7 +53,7 @@
<PowerGauge val={data.i ? data.i : 0} max={data.im ? data.im : 15000} unit="W" label={translations.common?.import ?? "Import"} sub={data.p} subunit={data.pc} colorFn={ampcol}/>
</div>
<div>{data.mt ? metertype(data.mt) : '-'}</div>
<div class="text-right">{data.ic ? data.ic.toFixed(1) : '-'} kWh</div>
<div class="text-right">{it[0]} {it[1]}</div>
</div>
</div>
{/if}
@ -58,7 +64,7 @@
<PowerGauge val={data.e ? data.e : 0} max={data.om ? data.om * 1000 : 10000} unit="W" label={translations.common?.export ?? "Export"} colorFn={exportcol}/>
</div>
<div></div>
<div class="text-right">{data.ec ? data.ec.toFixed(1) : '-'} kWh</div>
<div class="text-right">{et[0]} {et[1]}</div>
</div>
</div>
{/if}

View File

@ -217,4 +217,22 @@ export function capitalize(s) {
export function getBaseChip(chip) {
if(chip.startsWith("esp32")) return "esp32";
return chip;
}
export function formatUnit(val, unit) {
let ret = [val, unit];
if(typeof val === 'undefined') {
ret[0] = "-";
ret[1] = unit;
} else if(val >= 2000000) {
ret[0] = (val / 1000000).toFixed(val > 100000000 ? 1 : 2);
ret[1] = "M"+unit;
} else if(val > 5000) {
ret[0] = (val / 1000).toFixed(val > 100000 ? 1 : 2);
ret[1] = "k"+unit;
} else {
ret[0] = val.toFixed(0);
ret[1] = unit;
}
return ret;
}

View File

@ -1,5 +1,6 @@
<script>
import PowerGaugeSvg from './PowerGaugeSvg.svelte';
import { formatUnit } from './Helpers';
export let val;
export let max;
@ -9,8 +10,10 @@
export let subunit = "";
export let colorFn;
let arr;
let pct = 0;
$: {
arr = formatUnit(val, unit);
pct = (Math.min(val,max)/max) * 100
}
</script>
@ -20,8 +23,8 @@
<span class="pl-ov">
<span class="pl-lab">{label}</span>
<br/>
<span class="pl-val">{val}</span>
<span class="pl-unt">{unit}</span>
<span class="pl-val">{arr[0]}</span>
<span class="pl-unt">{arr[1]}</span>
{#if sub}
<br/>
<span class="pl-sub">{sub}</span>

View File

@ -1,5 +1,6 @@
<script>
import { translationsStore } from "./TranslationService";
import { formatUnit } from "./Helpers";
export let importInstant;
export let exportInstant;
@ -10,6 +11,14 @@
translationsStore.subscribe(update => {
translations = update;
});
let ii,ei,it,et;
$: {
ii = formatUnit(importInstant, "VAr");
ei = formatUnit(exportInstant, "VAr");
it = formatUnit(importTotal*1000, "VArh");
et = formatUnit(exportTotal*1000, "VArh");
}
</script>
<div class="mx-2 text-sm">
@ -17,15 +26,15 @@
<div class="grid grid-cols-2 mt-4">
<div>{translations.reactive?.instant_in ?? "Instant in"}</div>
<div class="text-right">{typeof importInstant !== 'undefined' ? importInstant.toFixed(0) : '-'} VAr</div>
<div class="text-right">{ii[0]} {ii[1]}</div>
<div>{translations.reactive?.instant_out ?? "Instant out"}</div>
<div class="text-right">{typeof exportInstant !== 'undefined' ? exportInstant.toFixed(0) : '-'} VAr</div>
<div class="text-right">{ei[0]} {ei[1]}</div>
</div>
<div class="grid grid-cols-2 mt-4">
<div>{translations.reactive?.total_in ?? "Total in"}</div>
<div class="text-right">{typeof importTotal !== 'undefined' ? importTotal.toFixed(1) : '-'} kVArh</div>
<div class="text-right">{it[0]} {it[1]}</div>
<div>{translations.reactive?.total_out ?? "Total out"}</div>
<div class="text-right">{typeof exportTotal !== 'undefined' ? exportTotal.toFixed(1) : '-'} kVArh</div>
<div class="text-right">{et[0]} {et[1]}</div>
</div>
</div>