annotate src/FdElectricity.ts @ 21:a90cb6927c7d default tip

fix countdown queries. Display "now" instead of "In -0.4 hours"
author drewp@bigasterisk.com
date Sat, 07 Sep 2024 17:47:36 -0700
parents e8c90d893919
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
1 import { LitElement, PropertyValues, TemplateResult, css, html } from "lit";
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
2 import { customElement, state } from "lit/decorators.js";
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
3 import { shared } from "./shared";
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
4
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
5 const HR = 3600;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
6 const off_peak_wh_cost = 0.27 / 1000;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
7 const on_peak_wh_cost = 0.312 / 1000;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
8
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
9 @customElement("fd-electricity")
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
10 export class FdElectricity extends LitElement {
17
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
11 static styles = [
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
12 shared,
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
13 css`
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
14 :host {
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
15 font-size: 14px;
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
16 }
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
17 .unit {
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
18 color: #6c7d6c;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
19 font-family: monospace; /* for dollar signs */
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
20 }
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
21 :host > table {
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
22 margin-top: 10px;
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
23 }
17
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
24 th,
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
25 td {
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
26 padding: 0 0;
20
e8c90d893919 layout and sorting
drewp@bigasterisk.com
parents: 18
diff changeset
27 white-space: nowrap;
17
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
28 }
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
29 th {
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
30 text-align: left;
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
31 }
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
32 td {
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
33 text-align: right;
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
34 }
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
35 tr.total td,
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
36 tr.total th {
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
37 border-top: 1px solid #6c7d6c;
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
38 }
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
39 .bar {
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
40 background: yellow;
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
41 display: inline-block;
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
42 height: 10px;
20
e8c90d893919 layout and sorting
drewp@bigasterisk.com
parents: 18
diff changeset
43 margin-left: 5px;
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
44 }
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
45 .bar > div {
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
46 transition: width 3s ease-out;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
47 }
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
48 .total .bar {
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
49 background: pink;
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
50 }
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
51 table {
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
52 border-collapse: collapse;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
53 }
20
e8c90d893919 layout and sorting
drewp@bigasterisk.com
parents: 18
diff changeset
54 .summary tr:first-of-type {
e8c90d893919 layout and sorting
drewp@bigasterisk.com
parents: 18
diff changeset
55 opacity: .7;
e8c90d893919 layout and sorting
drewp@bigasterisk.com
parents: 18
diff changeset
56 }
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
57 .summary td {
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
58 padding: 2px 6px;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
59 }
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
60 .summary td,
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
61 .summary th {
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
62 border: 1px solid #2f2f2f;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
63 }
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
64 .summary td.odometer {
20
e8c90d893919 layout and sorting
drewp@bigasterisk.com
parents: 18
diff changeset
65 width: 3.4em;
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
66 text-align: left;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
67 }
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
68 `,
17
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
69 ];
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
70 @state() seriesData: Map<string, number> = new Map();
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
71 @state() isPeak = false;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
72 @state() yesterday_charge = 0; // $$
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
73 @state() today_charge = 0; // $$
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
74 @state() today_peak_penalty = 0; // $$
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
75 @state() yesterday_peak_penalty = 0; // $$
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
76 @state() lastLoad = 0; // unix secs
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
77
17
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
78 constructor() {
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
79 super();
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
80 this.load();
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
81 setInterval(this.load.bind(this), 8 * 1000);
20
e8c90d893919 layout and sorting
drewp@bigasterisk.com
parents: 18
diff changeset
82 setInterval(this.computeLiveState.bind(this), 500);
17
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
83 }
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
84
17
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
85 async load() {
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
86 const seriesData = new Map();
17
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
87 const base = "https://bigasterisk.com/m/vmselect/select/0/prometheus/api/v1/query";
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
88 const { t, day0, day1, hoursSinceMidnight, hours } = this.timeMath();
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
89
17
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
90 const seriesUrls = [
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
91 { url: base + `?query=powermeter_w&time=${t}`, label: "powermeter" },
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
92 { url: base + `?query=sum (powermeter_w{sensor=~".*_fridge"})&time=${t}`, label: "fridges" },
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
93 { url: base + `?query=sum (powermeter_w{sensor=~"ws_.*"})&time=${t}`, label: "ws" },
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
94 { url: base + `?query=(sum%20by%20%20(s)%20(house_power_w))%20-%20(sum%20by(s)%20(powermeter_w))&time=${t}`, label: "unmetered" },
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
95 { url: base + `?query=house_power_w&time=${t}`, label: "total" },
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
96
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
97 { url: base + `?query=avg_over_time(house_power_w[17h]) @ ${day0 + 17 * HR}`, label: "day0_off_0" },
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
98 { url: base + `?query=avg_over_time(house_power_w[3h]) @ ${day0 + 20 * HR}`, label: "day0_on_0" },
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
99 { url: base + `?query=avg_over_time(house_power_w[4h]) @ ${day1}`, label: "day0_off_1" },
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
100 { url: base + `?query=avg_over_time(house_power_w[24h]) @ ${day1}`, label: "day0_avg_w" },
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
101
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
102 { url: base + `?query=avg_over_time(house_power_w[17h]) @ ${day1 + 17 * HR}`, label: "day1_off_0" },
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
103 { url: base + `?query=avg_over_time(house_power_w[3h]) @ ${day1 + 20 * HR}`, label: "day1_on_0" },
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
104 { url: base + `?query=avg_over_time(house_power_w[4h]) @ ${day1 + 24 * HR}`, label: "day1_off_1" },
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
105 { url: base + `?query=avg_over_time(house_power_w[${hoursSinceMidnight}h]) @ ${t}`, label: "day1_avg_w" },
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
106 ];
17
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
107
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
108 for (const series of seriesUrls) {
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
109 const response = await fetch(series.url);
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
110 const data = await response.json();
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
111 for (let row of data.data.result) {
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
112 const key = series.label + (row.metric.sensor ? "-" + row.metric.sensor : "");
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
113 const value = parseFloat(row.value[1]);
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
114 seriesData.set(key, value);
17
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
115 }
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
116 }
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
117
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
118 this.lastLoad = t;
20
e8c90d893919 layout and sorting
drewp@bigasterisk.com
parents: 18
diff changeset
119 this.isPeak = hours >= 17 && hours < 20; // todo: no peak on weekends
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
120 this.seriesData = seriesData;
17
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
121 this.update(new Map() as PropertyValues);
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
122 }
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
123
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
124 private timeMath() {
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
125 const now = new Date();
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
126
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
127 const t = now.getTime() / 1000;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
128
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
129 const hours = now.getHours();
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
130 const minutes = now.getMinutes();
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
131 const seconds = now.getSeconds();
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
132 const hoursSinceMidnight = (hours * 60 * 60 + minutes * 60 + seconds) / HR;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
133
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
134 const lastMidnight = new Date(now);
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
135 lastMidnight.setHours(0, 0, 0, 0);
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
136 const day1 = lastMidnight.getTime() / 1000;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
137 const day0 = day1 - 86400;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
138
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
139 return { t, day0, day1, hoursSinceMidnight, hours };
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
140 }
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
141
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
142 private computeLiveState() {
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
143 const data = (label: string): number => this.seriesData.get(label) || 0;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
144
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
145 const day0_off_peak_wh = data("day0_off_0") * 17 + data("day0_off_1") * 4;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
146 const day0_on_peak_wh = data("day0_on_0") * 3;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
147 this.yesterday_charge = off_peak_wh_cost * day0_off_peak_wh + on_peak_wh_cost * day0_on_peak_wh;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
148
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
149 const day1_off_peak_wh = data("day1_off_0") * 17 + data("day1_off_1") * 4;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
150 const day1_on_peak_wh = data("day1_on_0") * 3;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
151 this.today_charge = off_peak_wh_cost * day1_off_peak_wh + on_peak_wh_cost * day1_on_peak_wh + this.costSinceLastLoad();
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
152
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
153 this.yesterday_peak_penalty = this.yesterday_charge - off_peak_wh_cost * (day0_off_peak_wh + day0_on_peak_wh);
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
154 this.today_peak_penalty = this.today_charge - off_peak_wh_cost * (day1_off_peak_wh + day1_on_peak_wh);
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
155 }
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
156
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
157 private costSinceLastLoad() {
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
158 const t = Date.now() / 1000;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
159 const hr_since_last_load = (t - this.lastLoad) / HR;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
160 const wh_since_last_load = (this.seriesData.get("total") || 0) * hr_since_last_load;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
161 const cost_since_load = (this.isPeak ? on_peak_wh_cost : off_peak_wh_cost) * wh_since_last_load;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
162 return cost_since_load;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
163 }
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
164
17
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
165 render() {
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
166 const disp0 = (n: number | undefined) => (n ? `${n.toFixed(0)}` : "0");
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
167 const disp1 = (n: number | undefined) => (n ? `${n.toFixed(1)}` : "0.0");
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
168 const dispDollar = (n: number | undefined, places = 2) => (n ? html`<span class="unit">$</span>${n.toFixed(places)}` : "");
20
e8c90d893919 layout and sorting
drewp@bigasterisk.com
parents: 18
diff changeset
169 const pxPerWatt = 150 / 2500;
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
170 const bar = (n: number | undefined) => (n ? html`<div style="width: ${Math.ceil(n * pxPerWatt).toFixed(1)}px"></div>` : "");
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
171
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
172 const seriesRow = (label: string, value: number | undefined, unitColumn: TemplateResult | string) => html`
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
173 <tr>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
174 <th>${label}</th>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
175 <td>${disp1(value)}</td>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
176 <td>${unitColumn}</td>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
177 <td class="bar">${bar(value)}</td>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
178 </tr>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
179 `;
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
180
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
181 return html`<h1 data-text="Electricity">Electricity (now is ${this.isPeak ? "Peak" : "Off-Peak"})</h1>
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
182 <table>
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
183 ${seriesRow("washer", this.seriesData.get("powermeter-ga_washer"), html`<span class="unit">W</span>`)}
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
184 ${seriesRow("theater console", this.seriesData.get("powermeter-tt_console"), "")} ${seriesRow("workshop", this.seriesData.get("ws"), "")}
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
185 ${seriesRow("dash", this.seriesData.get("powermeter-do_r"), "")} ${seriesRow("fridges", this.seriesData.get("fridges"), "")}
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
186 ${seriesRow("server closet", this.seriesData.get("powermeter-st_wall"), "")} ${seriesRow("(unmetered)", this.seriesData.get("unmetered"), "")}
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
187 <tr class="total">
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
188 <th>Total</th>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
189 <td>${(this.seriesData.get("total") || 0).toFixed(1)}</td>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
190 <td></td>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
191 <td class="bar">${bar(this.seriesData.get("total"))}</td>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
192 </tr>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
193 </table>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
194 <table class="summary">
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
195 <tr>
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
196 <th>yesterday</th>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
197 <td>${disp0(this.seriesData.get("day0_avg_w"))} <span class="unit">W avg</span></td>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
198 <td class="odometer">${dispDollar(this.yesterday_charge)}</td>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
199 <td>${dispDollar(this.yesterday_peak_penalty)} peak penalty</td>
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
200 </tr>
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
201 <tr>
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
202 <th>today</th>
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
203 <td>${disp0(this.seriesData.get("day1_avg_w"))} <span class="unit">W avg</span></td>
20
e8c90d893919 layout and sorting
drewp@bigasterisk.com
parents: 18
diff changeset
204 <td class="odometer">${dispDollar(this.today_charge, 4)}</td>
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
205 <td>${dispDollar(this.today_peak_penalty)} peak penalty</td>
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
206 </tr>
18
499996b8224a more electricity summary info
drewp@bigasterisk.com
parents: 17
diff changeset
207 </table>`;
17
472003015880 restyle using css grid
drewp@bigasterisk.com
parents: 16
diff changeset
208 }
16
719c8cc4d8b2 electricity report
drewp@bigasterisk.com
parents:
diff changeset
209 }