Closed jisotalo closed 1 year ago
Viimeinen versio tehty ja ratkaisu tuntuu toimivan. Ajan omassa käytössä jonkin aikaa ennen julkaisua.
/**
* Updates current timezone to state as hh:mm string format (url encoded)
* For example if UTC time is 04:55 and local time is 06:55, tz is %2b02:00
*
* NOTE: Technically incorrect, only handles timezones with full hour offsets
*
* @param {Date} now Current time
* @returns
*/
function updateTz(now) {
//Get UTC time as string (e.g. Sun, 29 Oct 2023 04:55:00 GMT)
let utc = now.toUTCString();
//Extract time from UTC time string (e.g. "04:55:00 GMT")
utc = utc.substring(utc.indexOf("" + getFullYear(now)) + 5);
//Extract hours (e.g. "04")
utc = Number(utc.substring(0, utc.indexOf(":")));
//Calculate time difference
let diff = getHours(now) - utc;
let tz = padStart(Math.abs(diff), 2, "0") + ":00";
if (diff < 0) {
tz = "-" + tz;
} else if (diff > 0) {
tz = "%2b" + tz;
} else {
tz = "Z";
}
if (tz !== _.s.tz) {
//Timezone has changed -> we should get prices
_.s.p.ts = 0;
}
_.s.tz = tz;
}
2.7.0 julkaistu
Valitettavasti kellojen siirto aiheutti ongelman skriptin kanssa, olin unohtanut sinne kiinteän aikavyöhykkeen +03:00 UTC. Onneksi varmuustuntiohjaus tuntuu toimivan kuten pitää (eli ainoastaan hintatiedot ei olleet käytössä).
Tämä on korjattu väliaikaisesti versiossa 2.6.1 muuttamalla aikavyöhyke kinteästi +02:00. Ei kuitenkaan ole hyvä ratkaisu.
https://github.com/jisotalo/shelly-porssisahko/releases/tag/v.2.6.1
Lisätään ominaisuus, että aikavyöhyke haetaan Shellyn kellon ja UTC ajan erotuksesta automaattisesti. Shelly ei valitettavasti tue suoraan
Date.getTimezoneOffset()
-metodia, joten haetaan se alla olevalla tavalla tms.Piti laittaa jo versioon 2.6.1 mutta tuli jotain ongelmaa Shellyn pinomuistin tms. kanssa. Alla versio joka tuntuu toimivan mutta ajetaan ensin vähän testiä..