Fixed time reading and timezone settings. Fixed vertical position in webinterface tc data graph.
This commit is contained in:
parent
161a7e2a78
commit
c7c90ff4b0
2 changed files with 86 additions and 34 deletions
|
@ -198,7 +198,8 @@ void read_eeprom_config() {
|
|||
|
||||
//********************************//
|
||||
|
||||
void setup() {
|
||||
void setup()
|
||||
{
|
||||
EEPROM.begin(256);
|
||||
|
||||
Serial.begin(SERIAL_BAUD_RATE);
|
||||
|
@ -245,7 +246,8 @@ void setup() {
|
|||
|
||||
//********************************//
|
||||
|
||||
void loop() {
|
||||
void loop()
|
||||
{
|
||||
server.handleClient();
|
||||
lightEngine();
|
||||
|
||||
|
@ -332,7 +334,7 @@ void init_webserver() {
|
|||
DynamicJsonDocument root(1024);
|
||||
root["on"] = light_state[light];
|
||||
root["bri"] = bri[light];
|
||||
root["bricur"] = (int)current_bri[light];
|
||||
root["curbri"] = (int)current_bri[light];
|
||||
String output;
|
||||
serializeJson(root, output);
|
||||
server.send(200, "text/plain", output);
|
||||
|
@ -532,7 +534,7 @@ void init_webserver() {
|
|||
|
||||
http_content += "<form class=\"pure-form pure-form-aligned\" action=\"/\" method=\"post\">";
|
||||
http_content += "<script>"
|
||||
"let timeoutId;"
|
||||
"let timeoutId;" // slider value change submit to server
|
||||
"function sendSliderValue(x) {"
|
||||
"x = x - 1;"
|
||||
"clearTimeout(timeoutId);"
|
||||
|
@ -664,6 +666,7 @@ void init_webserver() {
|
|||
http_content += "\" href=\"/?dip=false\">OFF</a>";
|
||||
http_content += "</div>";
|
||||
|
||||
// ip config
|
||||
if (dip == 0) {
|
||||
http_content += "<div class=\"pure-control-group\">";
|
||||
http_content += "<label for=\"ip\">IP</label>";
|
||||
|
@ -685,9 +688,9 @@ void init_webserver() {
|
|||
http_content += "</div>";
|
||||
|
||||
http_content += "<script>"
|
||||
"function loadData() {"
|
||||
"function loadData() {" // load tc data and generate graph
|
||||
"$.getJSON('/tc_data_blocks', function(data) {"
|
||||
"var currenttime = '';"
|
||||
"var currenttime = [];"
|
||||
"var time = [];"
|
||||
"var channel1 = [];"
|
||||
"var channel2 = [];"
|
||||
|
@ -700,7 +703,41 @@ void init_webserver() {
|
|||
"channel3.push(data['tcdata'][i]['ch3']);"
|
||||
"channel4.push(data['tcdata'][i]['ch4']);"
|
||||
"}"
|
||||
"currenttime=data['currenttime'];"
|
||||
"currenttime.push(data['currenttime']['hour']);"
|
||||
"currenttime.push(data['currenttime']['min']);"
|
||||
//"console.log(currenttime);"
|
||||
|
||||
// index suche für die vertikale linie
|
||||
"var currentTimeStr = currenttime[0] + ':' + (currenttime[1] < 10 ? '0' : '') + currenttime[1];"
|
||||
"var index = time.indexOf(currentTimeStr);"
|
||||
"if (index === -1) {"
|
||||
"var lowerIndex = -1;"
|
||||
"var upperIndex = -1;"
|
||||
"for (var i = 0; i < time.length - 1; i++) {"
|
||||
"if (time[i] <= currentTimeStr && currentTimeStr <= time[i+1]) {"
|
||||
"lowerIndex = i;"
|
||||
"upperIndex = i + 1;"
|
||||
"break;"
|
||||
"}"
|
||||
"}"
|
||||
"if (lowerIndex === -1 || upperIndex === -1) {"
|
||||
"console.log(\"Error: Current time not found in time array and not between two elements in time array.\");"
|
||||
"return;"
|
||||
"}"
|
||||
"var lowerTime = time[lowerIndex].split(\":\");"
|
||||
"var upperTime = time[upperIndex].split(\":\");"
|
||||
"var timeDiff = (currenttime[0] - lowerTime[0]) + ((currenttime[1] - lowerTime[1]) / 60);"
|
||||
"var indexFloat = lowerIndex + timeDiff / ((upperTime[0] - lowerTime[0]) + ((upperTime[1] - lowerTime[1]) / 60));"
|
||||
//"console.log(\"Index (float): \" + indexFloat);"
|
||||
"} else {"
|
||||
//"console.log(\"Index (integer): \" + index);"
|
||||
//"console.log(\"Index (float): \" + index);"
|
||||
"}"
|
||||
"if (indexFloat > index) {"
|
||||
"index = indexFloat;"
|
||||
"}"
|
||||
//"console.log(\">>>\" + index);"
|
||||
|
||||
"var trace1 = {"
|
||||
"x: time,"
|
||||
"y: channel1,"
|
||||
|
@ -741,9 +778,9 @@ void init_webserver() {
|
|||
"},"
|
||||
"shapes: [{"
|
||||
"type: 'line',"
|
||||
"x0: currenttime,"
|
||||
"x0: index,"
|
||||
"y0: 0,"
|
||||
"x1: currenttime,"
|
||||
"x1: index,"
|
||||
"y1: 255,"
|
||||
"line: {"
|
||||
"color: 'lightgrey',"
|
||||
|
@ -757,7 +794,7 @@ void init_webserver() {
|
|||
"}"
|
||||
"setInterval(loadData, 10000);"
|
||||
"loadData();"
|
||||
"function updateLightState() {"
|
||||
"function updateLightState() {" // load the light data from server and set on state and brightness
|
||||
"for (let i = 1; i <= 4; i++) {"
|
||||
"const lightURL = `http://192.168.0.26/state?light=${i}`;"
|
||||
"fetch(lightURL)"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include <ESP8266WiFi.h>
|
||||
#include <WiFiUdp.h>
|
||||
#include <NTPClient.h>
|
||||
#include <TimeLib.h>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
|
@ -24,10 +25,8 @@ bool tc_testOngoing = false;
|
|||
|
||||
uint32_t tc_last_check = 60000;
|
||||
|
||||
long utcOffsetInSeconds = 3600;
|
||||
|
||||
WiFiUDP ntpUDP;
|
||||
NTPClient timeClient(ntpUDP, MY_NTP_SERVER, utcOffsetInSeconds);
|
||||
NTPClient timeClient(ntpUDP, MY_NTP_SERVER);
|
||||
|
||||
struct tc_data_st {
|
||||
uint8_t hh;
|
||||
|
@ -87,6 +86,10 @@ void tc_init()
|
|||
|
||||
tc_last_check = millis();
|
||||
|
||||
// Set the timezone to Europe/Berlin
|
||||
setenv("TZ", "CET-1CEST,M3.5.0,M10.5.0/3", 1);
|
||||
tzset();
|
||||
|
||||
timeClient.begin();
|
||||
|
||||
Serial.println("TC: Read data block from eeprom");
|
||||
|
@ -145,8 +148,10 @@ void tc_update_main()
|
|||
{
|
||||
//Serial.println((String)tc_data[i].hh + ":" + (String)tc_data[i].mm);
|
||||
|
||||
if (tc_data[i].hh <= timeClient.getHours() &&
|
||||
tc_data[i].mm <= timeClient.getMinutes())
|
||||
/*if (tc_data[i].hh <= timeClient.getHours() &&
|
||||
tc_data[i].mm <= timeClient.getMinutes())*/
|
||||
if (tc_data[i].hh <= hour() &&
|
||||
tc_data[i].mm <= minute())
|
||||
{
|
||||
target_data_block = i+1; // found the next block to load
|
||||
}
|
||||
|
@ -193,7 +198,11 @@ void tc_update_main()
|
|||
}
|
||||
|
||||
Serial.println("-----\ntdb = " + (String)target_data_block);
|
||||
Serial.print("target time: "); Serial.print(tc_data[target_data_block].hh); Serial.print(":"); Serial.print(tc_data[target_data_block].mm); Serial.println();
|
||||
Serial.print("target time: ");
|
||||
Serial.print(tc_data[target_data_block].hh);
|
||||
Serial.print(":");
|
||||
Serial.print(tc_data[target_data_block].mm);
|
||||
Serial.println();
|
||||
|
||||
// set the channels current and target brightness
|
||||
bri[0] = tc_data[target_data_block].ch1;
|
||||
|
@ -273,33 +282,34 @@ void tc_updateTime()
|
|||
if (timeClient.update() || millis() > (tc_last_check + TIME_CHECK_INTERVAL_MS))
|
||||
{
|
||||
tc_last_check = millis();
|
||||
//Serial.println("TC: Read time from server...");
|
||||
//Serial.println(timeClient.getFormattedTime());
|
||||
|
||||
/*
|
||||
if (dow == 7 && mo == 10 && d >= 25 && h == 3 && DST==1)
|
||||
{
|
||||
// DST=0;
|
||||
timeClient.setTimeOffset(utcOffsetInSeconds);
|
||||
timeClient.forceUpdate();
|
||||
} else if (dow == 7 && mo == 3 && d >= 25 && h ==2 && DST==0)
|
||||
{
|
||||
// DST = 1
|
||||
timeClient.setTimeOffset(utcOffsetInSeconds * 2);
|
||||
timeClient.forceUpdate();
|
||||
}
|
||||
*/
|
||||
adjustTimeForDST();
|
||||
|
||||
Serial.print("=====\nLocal time: ");
|
||||
Serial.print(timeClient.getHours());
|
||||
Serial.print(hour());
|
||||
Serial.print(":");
|
||||
Serial.println(timeClient.getMinutes());
|
||||
Serial.println(minute());
|
||||
}
|
||||
/**/
|
||||
}
|
||||
|
||||
//********************************//
|
||||
|
||||
void adjustTimeForDST()
|
||||
{
|
||||
|
||||
// Get the time and date information
|
||||
time_t now = timeClient.getEpochTime();
|
||||
struct tm timeinfo;
|
||||
localtime_r(&now, &timeinfo);
|
||||
|
||||
// set the local time
|
||||
setTime(timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec, timeinfo.tm_mday, timeinfo.tm_mon + 1, timeinfo.tm_year + 1900);
|
||||
|
||||
}
|
||||
|
||||
//********************************//
|
||||
|
||||
void tc_readConfig()
|
||||
{
|
||||
for (uint8_t i = 0; i < NUMBER_OF_TIMER_DATA_BLOCKS; i++)
|
||||
|
@ -383,7 +393,12 @@ String tc_getJsonData()
|
|||
output += ",";
|
||||
}
|
||||
}
|
||||
output += "], \"currenttime\": \"" + (String)timeClient.getHours() + ":" + (String)timeClient.getMinutes() + "\"}";
|
||||
if (tc_testOngoing == false)
|
||||
{
|
||||
output += "], \"currenttime\":{\"hour\":" + (String)timeClient.getHours() + ",\"min\":" + (String)timeClient.getMinutes() + "}}";
|
||||
} else {
|
||||
output += "], \"currenttime\":{\"hour\":16,\"min\":0}}";
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue