Odczyt czasu systemowego

iM@rek
Posts: 376
Joined: Thu Feb 09, 2023 1:25 pm

Post

Chcę w stacji pogodowej odczytać bieżące datę i czas z jakiegoś serwera.
Będzie zapisywana jako wartość kanału KLOP jako znacznika czasu zapisu/ blokady.
Stacja na ESP32.
Próbowałem:

Code: Select all

time_t now = time(0);
Serial.print("The current date and time is: ");
Serial.print(now);
klop1->setValue(now);
Ale dostałem głupoty np wartość "3183"
Jak to zrobić?
Last edited by iM@rek on Fri Jul 19, 2024 7:17 pm, edited 1 time in total.
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Z Suplą czy bez?
Jeśli z, to urządzenie pobiera czas z serwera i go ustawia jako systemowy.
Jeśli bez, to musisz odpytać jakiś serwer NTP. Dość trywialny temat i przykładów jest dużo w sieci i w Arduino
Najlepsze suple dla Twojego domu :mrgreen:
iM@rek
Posts: 376
Joined: Thu Feb 09, 2023 1:25 pm

Post

Stacja działa z Suplą.
To jak odczytać ten czas systemowy z Supli?
Próbowałem przez kod z postu nr 1 - ale wychodzą głupoty.
User avatar
veeroos
Posts: 1081
Joined: Sun Mar 20, 2022 9:30 am
Location: Głogów
Has thanked: 1 time
Been thanked: 9 times

Post

Code: Select all

include <supla/clock/clock.h>
Supla::Clock *cClock = nullptr;
int Godzina = 0;
int Minuta = 0;
W setupie

Code: Select all

cClock = new Supla::Clock();
A później odczytujesz:

Code: Select all

Godzina = cClock->getHour();
 Minuta = cClock->getMin();
Odczytujesz w ten sposób godzinę i minutę aktualna z serwera. Oczywiście aktualna godzina zaciąga się przy połączeniu z serwerem 😉
Last edited by veeroos on Fri Jul 19, 2024 7:47 pm, edited 1 time in total.
Zamel Mew-01, Zamel PEW-01, Zamel SBW-01, Zamel THW-01, Zamel SRW-01, Zamel mSLW-02, Auraton BOX + Indor Sensor, Airly Gate By Veeroos, Zigbee to Supla Gateway + sensors, Zamel SGW-01 and more

https://github.com/v33r005
iM@rek
Posts: 376
Joined: Thu Feb 09, 2023 1:25 pm

Post

Dziękuję, spróbuję.
A dałoby radę jeszcze pobrać datę?
(...)

Spróbowałem i działa: wyszło "2155".
Teraz chciałbym datę i cały łańcuch wrzucić jako wartość dla licznika KLOP.
Ale setValue() przyjmuje wartości typu float., a nie łańcuchy znaków.
W sumie to chciałbym, żeby stan licznika był np: 2407192155, czyli YYMMDDGGMM
Last edited by iM@rek on Fri Jul 19, 2024 8:00 pm, edited 1 time in total.
User avatar
veeroos
Posts: 1081
Joined: Sun Mar 20, 2022 9:30 am
Location: Głogów
Has thanked: 1 time
Been thanked: 9 times

Post

Pewnie.
Dodajesz :

Code: Select all

int Rok = 2000;
int Miesiac = 1;
int Dzien = 1;
int Godzina = 0;
int Minuta = 0;
int Sekunda = 0;
Odczytujesz:

Code: Select all

Rok = cClick->getYear();
Miesiąc = cClick->getMonth();
Dzień= cClick->getDay();
Godzina = cClock->getHour();
  Minuta = cClock->getMin();
  Sekunda = cClock->getSecond();
  
Zamel Mew-01, Zamel PEW-01, Zamel SBW-01, Zamel THW-01, Zamel SRW-01, Zamel mSLW-02, Auraton BOX + Indor Sensor, Airly Gate By Veeroos, Zigbee to Supla Gateway + sensors, Zamel SGW-01 and more

https://github.com/v33r005
iM@rek
Posts: 376
Joined: Thu Feb 09, 2023 1:25 pm

Post

Chyba ma być:
getSecond -> getSec()
a cClick -> cClock
Tak?

Teraz muszę to poskładać jako float,
żeby weszło do KLOPA.
User avatar
veeroos
Posts: 1081
Joined: Sun Mar 20, 2022 9:30 am
Location: Głogów
Has thanked: 1 time
Been thanked: 9 times

Post

iM@rek wrote: Fri Jul 19, 2024 8:20 pm Chyba ma być:
getSecond -> getSec()
a cClick -> cClock
Tak?

Teraz muszę to poskładać jako float,
żeby weszło do KLOPA.
A no tak, literówki 😁, hehe
Nie musisz floata robić żeby do klopa wrzucić, przecież nie będziesz miał formatu zmiennoprzecinkowego. Ja normalnie INT wrzucam do KLOP'a przy na przykład odczycie wartości z wejścia analogowego
Zamel Mew-01, Zamel PEW-01, Zamel SBW-01, Zamel THW-01, Zamel SRW-01, Zamel mSLW-02, Auraton BOX + Indor Sensor, Airly Gate By Veeroos, Zigbee to Supla Gateway + sensors, Zamel SGW-01 and more

https://github.com/v33r005
iM@rek
Posts: 376
Joined: Thu Feb 09, 2023 1:25 pm

Post

Jakoś zapamiętałem, że Klew pisał, że to musi być float. Ale pewnie się pomyliłem.
Dzięki.
Użyłem unsigned long long i mam znacznik czasu w formacie: YYMMDDHHMMSS -> 12 cyfr.
No i fajnie.
Teraz mogę sprawdzić, kiedy nastąpiło najnowsze wystąpienie wiatru o szybkości przekraczającej zadaną granicę.

Do pełni szczęścia brakuje możliwości zmiany wartości prędkości wiatru i czasu blokady powiadomień o silnym wietrze, bez konieczności ponownej kompilacji.
Póki co, te wartości mam zaszyte w programie.
User avatar
veeroos
Posts: 1081
Joined: Sun Mar 20, 2022 9:30 am
Location: Głogów
Has thanked: 1 time
Been thanked: 9 times

Post

iM@rek wrote: Sat Jul 20, 2024 12:53 pm Jakoś zapamiętałem, że Klew pisał, że to musi być float. Ale pewnie się pomyliłem.
Dzięki.
Użyłem unsigned long long i mam znacznik czasu w formacie: YYMMDDHHMMSS -> 12 cyfr.
No i fajnie.
Teraz mogę sprawdzić, kiedy nastąpiło najnowsze wystąpienie wiatru o szybkości przekraczającej zadaną granicę.

Do pełni szczęścia brakuje możliwości zmiany wartości prędkości wiatru i czasu blokady powiadomień o silnym wietrze, bez konieczności ponownej kompilacji.
Póki co, te wartości mam zaszyte w programie.
Zrób poprzez okna do wpisywania w webserwerze poprzez custom_parameter.
Zamel Mew-01, Zamel PEW-01, Zamel SBW-01, Zamel THW-01, Zamel SRW-01, Zamel mSLW-02, Auraton BOX + Indor Sensor, Airly Gate By Veeroos, Zigbee to Supla Gateway + sensors, Zamel SGW-01 and more

https://github.com/v33r005

Return to “Pomoc”