Changes to allow interaction with cloud service

This commit is contained in:
Gunnar Skjold 2024-05-30 09:46:45 +02:00
parent 7ad97daf86
commit 770d662f2c
8 changed files with 37 additions and 35 deletions

File diff suppressed because one or more lines are too long

View File

@ -76,13 +76,18 @@
data = update;
});
let tariffData = {};
tariffStore.subscribe(update => {
tariffData = update;
});
getTariff();
</script>
<div class="container mx-auto m-3">
<Router basepath={basepath}>
<Header data={data} basepath={basepath}/>
<Route path="/">
<Dashboard data={data} sysinfo={sysinfo} prices={prices} dayPlot={dayPlot} monthPlot={monthPlot} temperatures={temperatures} translations={translations}/>
<Dashboard data={data} sysinfo={sysinfo} prices={prices} dayPlot={dayPlot} monthPlot={monthPlot} temperatures={temperatures} translations={translations} tariffData={tariffData}/>
</Route>
<Route path="/configuration">
<ConfigurationPanel sysinfo={sysinfo} basepath={basepath} data={data}/>

View File

@ -1,16 +1,11 @@
<script>
import { fmtnum, capitalize, formatUnit } from "./Helpers";
import { translationsStore } from "./TranslationService";
export let sysinfo;
export let data;
export let currency;
export let hasExport;
let translations = {};
translationsStore.subscribe(update => {
translations = update;
});
export let translations = {};
let rih,rid,rim,ril, reh,red,rem,rel;
let hasCost = false;

View File

@ -19,6 +19,7 @@
export let monthPlot = {}
export let temperatures = {};
export let translations = {};
export let tariffData = {};
let it,et,threePhase, l1e, l2e, l3e;
$: {
@ -117,17 +118,17 @@
{/if}
{#if uiVisibility(sysinfo.ui.r, data.ri > 0 || data.re > 0 || data.ric > 0 || data.rec > 0)}
<div class="cnt">
<ReactiveData importInstant={data.ri} exportInstant={data.re} importTotal={data.ric} exportTotal={data.rec}/>
<ReactiveData importInstant={data.ri} exportInstant={data.re} importTotal={data.ric} exportTotal={data.rec} translations={translations}/>
</div>
{/if}
{#if uiVisibility(sysinfo.ui.c, data.ea)}
<div class="cnt">
<AccountingData sysinfo={sysinfo} data={data.ea} currency={data.pc} hasExport={data.om > 0 || data.e > 0}/>
<AccountingData sysinfo={sysinfo} data={data.ea} currency={data.pc} hasExport={data.om > 0 || data.e > 0} translations={translations}/>
</div>
{/if}
{#if uiVisibility(sysinfo.ui.t, data.pr && (data.pr.startsWith("NO") || data.pr.startsWith("10YNO") || data.pr.startsWith('10Y1001A1001A4')))}
<div class="cnt h-64">
<TariffPeakChart title={translations.dashboard?.tariffpeak ?? "Tariff peaks"}/>
<TariffPeakChart title={translations.dashboard?.tariffpeak ?? "Tariff peaks"} tariffData={tariffData} translations={translations}/>
</div>
{/if}
{#if uiVisibility(sysinfo.ui.l, data.hm == 1)}

View File

@ -1,16 +1,11 @@
<script>
import { translationsStore } from "./TranslationService";
import { formatUnit } from "./Helpers";
export let importInstant;
export let exportInstant;
export let importTotal;
export let exportTotal;
let translations = {};
translationsStore.subscribe(update => {
translations = update;
});
export let translations = {};
let ii,ei,it,et;
$: {

View File

@ -1,15 +1,9 @@
<script>
import { zeropad } from './Helpers.js';
import BarChart from './BarChart.svelte';
import { tariffStore, getTariff } from './DataStores';
import { translationsStore } from './TranslationService.js';
let translations = {};
translationsStore.subscribe(update => {
translations = update;
});
export let title;
export let translations = {};
let dark = document.documentElement.classList.contains('dark');
@ -17,11 +11,7 @@
let max = 0;
let min = 0;
let tariffData;
tariffStore.subscribe(update => {
tariffData = update;
});
getTariff();
export let tariffData;
$: {
let i = 0;

View File

@ -10,6 +10,7 @@ static const char HEADER_PRAGMA[] PROGMEM = "Pragma";
static const char HEADER_EXPIRES[] PROGMEM = "Expires";
static const char HEADER_AUTHENTICATE[] PROGMEM = "WWW-Authenticate";
static const char HEADER_LOCATION[] PROGMEM = "Location";
static const char HEADER_ACCESS_CONTROL_ALLOW_ORIGIN[] PROGMEM = "Access-Control-Allow-Origin";
static const char CACHE_CONTROL_NO_CACHE[] PROGMEM = "no-cache, no-store, must-revalidate";
static const char CONTENT_ENCODING_GZIP[] PROGMEM = "gzip";
@ -25,3 +26,5 @@ static const char MIME_HTML[] PROGMEM = "text/html";
static const char MIME_JSON[] PROGMEM = "application/json";
static const char MIME_CSS[] PROGMEM = "text/css";
static const char MIME_JS[] PROGMEM = "text/javascript";
static const char ORIGIN_AMSLESER_CLOUD[] PROGMEM = "https://amsleser.cloud";

View File

@ -438,6 +438,7 @@ void AmsWebServer::sysinfoJson() {
stripNonAscii((uint8_t*) buf, size+1);
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, ORIGIN_AMSLESER_CLOUD);
server.sendHeader(HEADER_CACHE_CONTROL, CACHE_CONTROL_NO_CACHE);
server.sendHeader(HEADER_PRAGMA, PRAGMA_NO_CACHE);
server.sendHeader(HEADER_EXPIRES, EXPIRES_OFF);
@ -608,6 +609,7 @@ void AmsWebServer::dataJson() {
checkSecurity(1, false) ? "true" : "false"
);
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, ORIGIN_AMSLESER_CLOUD);
server.sendHeader(HEADER_CACHE_CONTROL, CACHE_CONTROL_NO_CACHE);
server.sendHeader(HEADER_PRAGMA, PRAGMA_NO_CACHE);
server.sendHeader(HEADER_EXPIRES, EXPIRES_OFF);
@ -629,6 +631,7 @@ void AmsWebServer::dayplotJson() {
}
snprintf_P(buf+pos, BufferSize-pos, PSTR("}"));
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, ORIGIN_AMSLESER_CLOUD);
server.sendHeader(HEADER_CACHE_CONTROL, CACHE_CONTROL_NO_CACHE);
server.sendHeader(HEADER_PRAGMA, PRAGMA_NO_CACHE);
server.sendHeader(HEADER_EXPIRES, EXPIRES_OFF);
@ -651,6 +654,7 @@ void AmsWebServer::monthplotJson() {
}
snprintf_P(buf+pos, BufferSize-pos, PSTR("}"));
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, ORIGIN_AMSLESER_CLOUD);
server.sendHeader(HEADER_CACHE_CONTROL, CACHE_CONTROL_NO_CACHE);
server.sendHeader(HEADER_PRAGMA, PRAGMA_NO_CACHE);
server.sendHeader(HEADER_EXPIRES, EXPIRES_OFF);
@ -683,6 +687,7 @@ void AmsWebServer::energyPriceJson() {
}
snprintf_P(buf+pos, BufferSize-pos, PSTR("}"));
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, ORIGIN_AMSLESER_CLOUD);
server.sendHeader(HEADER_CACHE_CONTROL, CACHE_CONTROL_NO_CACHE);
server.sendHeader(HEADER_PRAGMA, PRAGMA_NO_CACHE);
server.sendHeader(HEADER_EXPIRES, EXPIRES_OFF);
@ -715,6 +720,7 @@ void AmsWebServer::temperatureJson() {
char* pos = buf+strlen(buf);
snprintf_P(count == 0 ? pos : pos-1, 8, PSTR("]}"));
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, ORIGIN_AMSLESER_CLOUD);
server.sendHeader(HEADER_CACHE_CONTROL, CACHE_CONTROL_NO_CACHE);
server.sendHeader(HEADER_PRAGMA, PRAGMA_NO_CACHE);
server.sendHeader(HEADER_EXPIRES, EXPIRES_OFF);
@ -832,6 +838,7 @@ void AmsWebServer::configurationJson() {
qsk = LittleFS.exists(FILE_MQTT_KEY);
}
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, ORIGIN_AMSLESER_CLOUD);
server.sendHeader(HEADER_CACHE_CONTROL, CACHE_CONTROL_NO_CACHE);
server.sendHeader(HEADER_PRAGMA, PRAGMA_NO_CACHE);
server.sendHeader(HEADER_EXPIRES, EXPIRES_OFF);
@ -1008,6 +1015,7 @@ void AmsWebServer::priceConfigJson() {
if(!checkSecurity(1))
return;
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, ORIGIN_AMSLESER_CLOUD);
server.sendHeader(HEADER_CACHE_CONTROL, CACHE_CONTROL_NO_CACHE);
server.sendHeader(HEADER_PRAGMA, PRAGMA_NO_CACHE);
server.sendHeader(HEADER_EXPIRES, EXPIRES_OFF);
@ -1077,6 +1085,7 @@ void AmsWebServer::translationsJson() {
return;
}
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, ORIGIN_AMSLESER_CLOUD);
// server.sendHeader(HEADER_CACHE_CONTROL, CACHE_1DA);
server.sendHeader(HEADER_CACHE_CONTROL, CACHE_CONTROL_NO_CACHE);
server.sendHeader(HEADER_PRAGMA, PRAGMA_NO_CACHE);
@ -1641,6 +1650,8 @@ void AmsWebServer::upgrade() {
"",
sys.dataCollectionConsent == 1 ? "true" : "false"
);
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, ORIGIN_AMSLESER_CLOUD);
server.setContentLength(strlen(buf));
server.send(200, MIME_JSON, buf);
@ -1849,7 +1860,7 @@ HTTPUpload& AmsWebServer::uploadFile(const char* path) {
}
void AmsWebServer::isAliveCheck() {
server.sendHeader(F("Access-Control-Allow-Origin"), F("*"));
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, F("*"));
server.send(200);
}
@ -2027,6 +2038,7 @@ void AmsWebServer::tariffJson() {
ea->getMonthMax()
);
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, ORIGIN_AMSLESER_CLOUD);
server.sendHeader(HEADER_CACHE_CONTROL, CACHE_CONTROL_NO_CACHE);
server.sendHeader(HEADER_PRAGMA, PRAGMA_NO_CACHE);
server.sendHeader(HEADER_EXPIRES, EXPIRES_OFF);
@ -2041,6 +2053,7 @@ void AmsWebServer::realtimeJson() {
return;
}
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, ORIGIN_AMSLESER_CLOUD);
server.sendHeader(HEADER_CACHE_CONTROL, CACHE_CONTROL_NO_CACHE);
server.sendHeader(HEADER_PRAGMA, PRAGMA_NO_CACHE);
server.sendHeader(HEADER_EXPIRES, EXPIRES_OFF);