Hallo
Bei einem ESP8266 Projekt mit RTC soll die NTP Zeit zum setzen der RTC benutzt werden.
Leider ist bei "strftime" der Sonntag = 0 und bei der "uRTCLib" zum setzen der RTC ist der Sonntag = 1
Wie kann ich das Problem lösen.
C
// RTC
#include "uRTCLib.h"
uRTCLib rtc;
// WLAN und NTP
#include <ESP8266WiFi.h>
#include <time.h>
struct tm tm; // http://www.cplusplus.com/reference/ctime/tm/
void setup() {
Wire.begin();
rtc.set_rtc_address(0x68); // initialize die RTC mit der Standard Adresse.
rtc.set_model(URTCLIB_MODEL_DS3231);
// Bei der RTCLib ist der Eintrag(dayOfWeek) für den Sonntag gleich 1 dh. Eintrag(weekday) aus der der "strftime" muss um 1 erhöht werden um die RTC zu stellen.
// rtc.set(0, 34, 16, 5, 20, 02, 20);
// RTCLib::set(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year)
}
void loop() {
// Hiermit soll die RTC mit der NTP Zeit gestellt werden aber der dayOfWeek(weekday) ist noch falsch.
static char dsbuf[23];
static time_t lastsek {0};
time_t now = time(&now);
localtime_r(&now, &tm);
if (tm.tm_sec != lastsek) {
lastsek = tm.tm_sec;
// Leider ist bei "strftime" der %w Eintrag(weekday) für den Sonntag gleich 0 zum stellen der RTC muss der Sonntag aber 1 sein !!!
strftime (dsbuf, sizeof(dsbuf), "%S,%M,%H,%w,%d,%m,%Y", &tm);
}
}
Alles anzeigen