Czas, zegar, clock w SuplaDevice
-
- Posts: 9211
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Jeśli RTC jest dokładniejszy niż systemowy, to można pobierać z niego czas częściej i aktualizować ten systemowy. Do tego od czasu do czasu można pobrać czas z serwerów Supli i się synchronizować.
Widzimy się na Supla Offline Party - 19.10.2024
https://forum.supla.org/viewtopic.php?t=15820
https://forum.supla.org/viewtopic.php?t=15820
-
- Posts: 2190
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
W nowej klasie?
Code: Select all
class DS3231rtc : public Clock {
public:
DS3231rtc();
https://www.facebook.com/groups/supladiy/
-
- Posts: 2190
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
https://www.facebook.com/groups/supladiy/
-
- Posts: 13
- Joined: Tue Mar 30, 2021 2:00 pm
Czy kod w pierwszym poście tego tematu jest właściwy? Bo coś mi nie wchodzi.
Wyskakuje taki błąd.
z kolei jak daję to mi się wysypuje:
co jest źle?
Wyskakuje taki błąd.
Code: Select all
request for member 'getHour' in 'clock1', which is of pointer type 'Supla::Clock*' (maybe you meant to use '->' ?)
Code: Select all
clock1->getHour()
Code: Select all
Supla - starting initialization
19:40:28.843 -> Main storage not configured
19:40:28.843 -> Config storage not configured
19:40:28.843 -> Initializing network layer
19:40:28.843 -> Network AP/hostname: CZAS-8CAAB57AAA80
19:40:28.890 -> Using Supla protocol version 16
19:40:28.890 -> Current status: [5] SuplaDevice initialized
19:40:28.890 -> Enter normal mode
19:40:28.890 -> WiFi: establishing connection with SSID: "SMC"
19:40:29.765 ->
19:40:29.765 -> --------------- CUT HERE FOR EXCEPTION DECODER ---------------
19:40:29.765 ->
19:40:29.765 -> Exception (28):
19:40:29.765 -> epc1=0x40205f24 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
19:40:29.812 ->
19:40:29.812 -> >>>stack>>>
19:40:29.812 ->
19:40:29.812 -> ctx: cont
19:40:29.812 -> sp: 3ffffe00 end: 3fffffd0 offset: 0190
19:40:29.812 -> 3fffff90: 00000000 3423bdde cd7beeeb 3fff00b0
19:40:29.812 -> 3fffffa0: 3fffdad0 00000000 3fff0084 40205f11
19:40:29.812 -> 3fffffb0: 00000000 00000000 3fff0084 40211490
19:40:29.812 -> 3fffffc0: feefeffe feefeffe 3fffdab0 40100d99
19:40:29.812 -> <<<stack<<<
19:40:29.812 ->
19:40:29.812 -> --------------- CUT HERE FOR EXCEPTION DECODER ---------------
-
- Posts: 9211
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Tak, tam powinno być "->" zamiast kropki, bo getClock zwraca wskaźnik.
Sprawdziłem to przed chwilą u siebie i działa poprawnie.
Pokaż kod, pewnie jest tam jakiś inny problem.
Widzimy się na Supla Offline Party - 19.10.2024
https://forum.supla.org/viewtopic.php?t=15820
https://forum.supla.org/viewtopic.php?t=15820
-
- Posts: 1837
- Joined: Wed Aug 24, 2016 7:26 pm
- Location: Opole
Mam ten sam problem co kolega powyżej. Procesor wysypuje się przy próbie sprawdzenia godziny.
-
- Posts: 9211
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Wyślij do mnie kod (albo wklej tu na forum). I wklej też co leci na konsoli.
Jaka wersja biblioteki?
Widzimy się na Supla Offline Party - 19.10.2024
https://forum.supla.org/viewtopic.php?t=15820
https://forum.supla.org/viewtopic.php?t=15820
-
- Posts: 468
- Joined: Wed Oct 26, 2022 7:35 pm
Help...
Do termostatu zamontowałem DS1307 z EEPROM. Dodałem bibliotekę RTClib.h.
W kodzie dodałem RTC itd. żeby pamiętało czas przy Offline i po resecie. Termostat jest Offline, po resecie pokazuje na serialu aktualny czas. Ale jest też komunikat:
Hvac: processs weekly schedule failed - clock is not ready
HVAC: set target mode HEAT, keepScheduleOn 1
co trzeba zrobić żeby Schedule działało po resecie brzy braku WiFi?
Do termostatu zamontowałem DS1307 z EEPROM. Dodałem bibliotekę RTClib.h.
W kodzie dodałem RTC itd. żeby pamiętało czas przy Offline i po resecie. Termostat jest Offline, po resecie pokazuje na serialu aktualny czas. Ale jest też komunikat:
Hvac: processs weekly schedule failed - clock is not ready
HVAC: set target mode HEAT, keepScheduleOn 1
co trzeba zrobić żeby Schedule działało po resecie brzy braku WiFi?
-
- Posts: 2190
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
Masz aktualną bibliotekę SD?zzrr wrote: ↑Thu Feb 01, 2024 9:55 pm Help...
Do termostatu zamontowałem DS1307 z EEPROM. Dodałem bibliotekę RTClib.h.
W kodzie dodałem RTC itd. żeby pamiętało czas przy Offline i po resecie. Termostat jest Offline, po resecie pokazuje na serialu aktualny czas. Ale jest też komunikat:
Hvac: processs weekly schedule failed - clock is not ready
HVAC: set target mode HEAT, keepScheduleOn 1
co trzeba zrobić żeby Schedule działało po resecie brzy braku WiFi?
Pokaż kod.
https://www.facebook.com/groups/supladiy/
-
- Posts: 468
- Joined: Wed Oct 26, 2022 7:35 pm
biblioteka aktualna
to jest część z SETUP
to w Loop
Jak jest Online to obie daty są ok. po włączeniu offline też daty obie są ok. Zrobię reset przy Offline i jest jak poniżej. Nie wiem jak zsynchronizować schedule z zegarem w DS1307
To co nie istotne oczywiście wyrzuciłem bo wszystkiego jest 800 linii kodu
to jest część z SETUP
Code: Select all
Supla::Sensor::DS18B20 *DsTemp = nullptr;
Supla::Control::HvacBase *hvac = nullptr;
Supla::Clock *cClock = nullptr;
int ggetYear;
void setup()
{
Serial.begin(115200);
cClock = new Supla::Clock();
new Supla::Html::CustomParameter(PARAM2, "Thermostat nr 1-8");
new Supla::Html::DeviceInfo(&SuplaDevice);
new Supla::Html::WifiParameters;
new Supla::Html::ProtocolParameters;
new Supla::Html::StatusLedParameters;
new Supla::Html::TimeParameters(&SuplaDevice);
new Supla::Device::StatusLed(STATUS_LED_GPIO, true);
eeprom.setStateSavePeriod(5000);
auto output = new Supla::Control::InternalPinOutput(OUTPUT_GPIO);
// auto hvac = new Supla::Control::HvacBase(output);
hvac = new Supla::Control::HvacBase(output);
new Supla::Html::HvacParameters(hvac);
.
.
.
.
SuplaDevice.begin();
if (!myRTC.begin())
{
Serial.println("Nie można znaleźć DS1307. Upewnij się, że jest poprawnie podłączony!");
while (1)
;
}
if (!myRTC.isrunning())
{
Serial.println("DS1307 nie działa! Ustaw czas!");
// Jeśli DS1307 nie działa, ustaw datę i czas tutaj
myRTC.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
Code: Select all
.
.
.
if (millis() - czas >= 1000)
{
DateTime now = myRTC.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
ggetYear = cClock->getYear();
Serial.print("czas z clocka: ");
Serial.println(ggetYear);
czas = millis();
}
Code: Select all
2024/2/2 0:27:54
czas z clocka: 1970
Hvac: processs weekly schedule failed - clock is not ready
HVAC: set target mode HEAT, keepScheduleOn 1