Hi zusammen und einen schönen Nachmittag.
ich bin leider im Moment etwas ratlos wie ich mit meinem Sketch weiter verfahren soll
ich versuche jetzt seit mittlerweile 1-2 Tagen einen Sketch zu erstellen der sich via NTP die Zeit holt, sie mit der DS3231 syncronisiert und dann die Systemzeit des Arduinos mit der der RTC aktualisiert.
Hintergrund ist das ich versuche diesen Sketch: GitHub - iw5ejm/multibandWSPR_nodeMCU: WSPR multiband beacon with si5351a and nodeMCU board for time sync via NTP
mit einer RTC und einer neuen NTP Lib zu verheiraten.
Nachdem gestern soweit alles lief gab es immer noch Probleme mit der RTC Zeit Aktualisierung.
Ich will halt das die Systemzeit des Arduinos auch noch aktuell ist wenn der NTP Server mal nicht erreichbar ist, WIFI Probleme oä zB. Deswegen die Syncronisierung mit der RTC. Und die RTC wird halt immer mal wieder über den NTP geupdatet.
Also heute nochmal ran und alle RTC Libaries ausprobiert die ich finden konnt. Bin dann bei der uRTCLiB von Naguissa hängen geblieben das ist recht übersichtlich mMn un funktioniert auch gut.
Habe dann den Testsketch geschrieben:
#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <TimeLib.h>
#include <Arduino.h>
#include <Wire.h>
#include <uRTCLib.h>
// uRTCLib rtc;
uRTCLib rtc(0x68);
const char *ssid = "<SSID>";
const char *password = "<PASSWORD>";
WiFiUDP ntpUDP;
//NTPClient NTPtClient(ntpUDP, "Server Pool adress", Time Offset in seconds(Timezone), UpdateInterval in milliseconds);
NTPClient NTPtClient(ntpUDP, "europe.pool.ntp.org", 3600, 60000);
void setup(){
delay(2000);
Serial.begin(115200);
Serial.println("Serial OK");
WiFi.begin(ssid, password);
NTPtClient.begin();
#ifdef ARDUINO_ARCH_ESP8266
Wire.begin(0, 2); // D3 and D4 on ESP8266
#else
Wire.begin();
#endif
}
void loop() {
NTPtClient.update();
rtc.refresh();
//setTime(2,3,4,5,6,7);
setTime(rtc.hour,rtc.minute,rtc.second,rtc.day,rtc.month,rtc.year); // Sets the Arduino System clock to given values from the RTC Clock and then prints the new Arduino System Clock on the Serial Monitor
time_t t = now();
Serial.println("Arduino System Zeit gesetzt, neue Zeit: ");
int hr = hour(t);
Serial.println(hr);//hour(t), minute(t), second(t));
Serial.println("Now the NTP Time: ");
Serial.println(NTPtClient.getFormattedTime());
Serial.print("RTC DateTime: ");
Serial.print(rtc.year());
Serial.print('/');
Serial.print(rtc.month());
Serial.print('/');
Serial.print(rtc.day());
Serial.print(' ');
Serial.print(rtc.hour());
Serial.print(':');
Serial.print(rtc.minute());
Serial.print(':');
Serial.print(rtc.second());
Serial.print(" DOW: ");
Serial.print(rtc.dayOfWeek());
Serial.print(" - Temp: ");
Serial.print(rtc.temp() / 100);
Serial.println();
delay(1000);
}
und das nächste Problem bekommen: Die uRTCLib.h verträgt sich scheinbar nicht mit der TimeLib.h.
Fehlermeldung:
In file included from C:\Users\Admin\Documents\Arduino\Bibliotheken_kompatibel_test\Bibliotheken_kompatibel_test.ino:4:0:
C:\Users\Admin\Documents\Arduino\libraries\Time/TimeLib.h:79:37: error: expected unqualified-id before ')' token
#define dayOfWeek(_time_) ((((_time_) / SECS_PER_DAY + 4) % DAYS_PER_WEEK)+1) // 1 = Sunday
^
C:\Users\Admin\Documents\Arduino\libraries\uRTCLib\src/uRTCLib.h:250:12: note: in expansion of macro 'dayOfWeek'
uint8_t dayOfWeek();
^
C:\Users\Admin\Documents\Arduino\libraries\Time/TimeLib.h:79:39: error: expected ')' before '/' token
#define dayOfWeek(_time_) ((((_time_) / SECS_PER_DAY + 4) % DAYS_PER_WEEK)+1) // 1 = Sunday
^
C:\Users\Admin\Documents\Arduino\libraries\uRTCLib\src/uRTCLib.h:250:12: note: in expansion of macro 'dayOfWeek'
uint8_t dayOfWeek();
^
C:\Users\Admin\Documents\Arduino\libraries\Time/TimeLib.h:79:39: error: expected ')' before '/' token
#define dayOfWeek(_time_) ((((_time_) / SECS_PER_DAY + 4) % DAYS_PER_WEEK)+1) // 1 = Sunday
^
C:\Users\Admin\Documents\Arduino\libraries\uRTCLib\src/uRTCLib.h:250:12: note: in expansion of macro 'dayOfWeek'
uint8_t dayOfWeek();
^
C:\Users\Admin\Documents\Arduino\libraries\Time/TimeLib.h:79:39: error: expected ')' before '/' token
#define dayOfWeek(_time_) ((((_time_) / SECS_PER_DAY + 4) % DAYS_PER_WEEK)+1) // 1 = Sunday
^
C:\Users\Admin\Documents\Arduino\libraries\uRTCLib\src/uRTCLib.h:250:12: note: in expansion of macro 'dayOfWeek'
uint8_t dayOfWeek();
^
Mehrere Bibliotheken wurden für "uRTCLib.h" gefunden
Benutzt: C:\Users\Admin\Documents\Arduino\libraries\uRTCLib
Mehrere Bibliotheken wurden für "NTPClient.h" gefunden
Benutzt: C:\Users\Admin\Documents\Arduino\libraries\NTPClient
Mehrere Bibliotheken wurden für "ESP8266WiFi.h" gefunden
Benutzt: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\libraries\ESP8266WiFi
Mehrere Bibliotheken wurden für "TimeLib.h" gefunden
Benutzt: C:\Users\Admin\Documents\Arduino\libraries\Time
Mehrere Bibliotheken wurden für "Wire.h" gefunden
Benutzt: C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\libraries\Wire
exit status 1
Fehler beim Kompilieren für das Board Generic ESP8266 Module.
Habe das auch getestet, der Fehler kommt nur wenn ich beide Libaries einbinde, selbst wenn der restliche Sketch leer ist.
Hardware: ESP8266 E01S mit DS3231 RTC und SI5351 über I2C
Ich muss dazu sagen das ich noch relativer Anfänger bin.
Hier mal mein vorläufiger Code der vom WSPR Sketch
Sketch ist im Anhang wegen dem Zeichenlimit
Hoffentlich kann mir da jemand helfen, stecke grad ein bisschen fest
WSPR_ESP8266.ino (13.3 KB)