Add time display, set by NTP

This commit is contained in:
Carsten Schmiemann 2022-11-13 04:16:51 +01:00
parent 6b11226ac0
commit 3083b7a383
4 changed files with 43 additions and 4 deletions

View File

@ -21,4 +21,5 @@ lib_deps =
bblanchon/ArduinoJson@^6.19.4
olikraus/U8g2@^2.34.4
tzapu/WiFiManager@^0.16.0
paulstoffregen/Time@^1.6.1
monitor_speed = 115200

View File

@ -42,6 +42,8 @@ char* title_grid;
bool pv_charging = false;
bool show_temp_outside;
int time_hour;
int time_minute;
float temperature_outside;
char* screenbuffer;
@ -54,6 +56,11 @@ void display_temp_outside(float mqtt_temp_outside) {
temperature_outside = mqtt_temp_outside;
}
void display_time(int hour, int minute) {
time_hour = hour;
time_minute = minute;
}
void display_begin() {
display.begin();
}
@ -107,11 +114,20 @@ void display_header(char* TEXT) {
display.setFont(u8g2_font_6x10_tr);
display.drawStr(2,7,TEXT);
display.drawLine(0, 8, 128, 8);
display.drawLine(94, 0, 94, 8);
display.drawLine(62, 0, 62, 8);
display.drawLine(93, 0, 93, 8);
display.setCursor(97,7);
if (time_hour < 10) {
display.print("0");
}
display.print(time_hour); display.print(":");
if (time_minute < 10) {
display.print("0");
}
display.print(time_minute);
if (show_temp_outside)
{
display.setCursor(70,7); display.print(temperature_outside,1); display.print("C");
display.drawLine(58, 0, 58, 8);
display.setCursor(67,7); display.print(temperature_outside,1); display.print("C");
}
}

View File

@ -24,6 +24,7 @@
*/
void display_setup(bool set_show_temp_outside,char lang[2]);
void display_temp_outside(float temperature_outside);
void display_time(int hour, int minute);
void display_begin();
void display_init(char* VERSION);
void display_logo();

View File

@ -42,13 +42,16 @@
#include <ArduinoJson.h>
#include <Wire.h>
#include <U8g2lib.h>
#include "time.h"
//Program parts
#include <pins.h>
#include <lang.h>
#include <display.h>
char VERSION[6] = "v0.7b";
char VERSION[6] = "v0.8c";
#define TimeZone "CET-1CEST,M3.5.0,M10.5.0/3"
#define TimeServ "pool.ntp.org"
//Defaults
char mqtt_server[15] = "";
@ -96,6 +99,11 @@ void saveConfigCallback () {
WiFiClient espClient;
PubSubClient client(espClient);
//Time library setup
time_t now;
tm tm;
//Globals
long lastMsg = 0;
char msg[50];
@ -447,6 +455,17 @@ void setup() {
//end save
}
//NTP setup
#ifdef ESP32
configTime(0, 0, TimeServ);
setenv("TZ", TimeZone, 1);
tzset();
#endif
#ifdef ESP8266
configTime(TimeZone, TimeServ);
#endif
delay(1000); //for screen display
//Generate mqtt topics from id and address
@ -523,6 +542,8 @@ void loop() {
{
if(millis() - lastScreenChangeTime >= DISPLAY_SCREEN_INTERVAL)
{
time(&now); localtime_r(&now, &tm); //Get local time
display_time(tm.tm_hour, tm.tm_min);
display_screen++;
lastScreenChangeTime += DISPLAY_SCREEN_INTERVAL;
if (display_screen == display_last_screen + 1)