Raspberry: Prüfen ob gültige Zeit?

Antworten
Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Raspberry: Prüfen ob gültige Zeit?

Beitrag von Timm Thaler »

Beim Raspberry Pi ohne Uhrenerweiterung habe ich ja unter Umständen eine falsche Systemzeit, solange er noch keine Zeitsynchro gemacht hat oder diese fehlschlägt.

Nun habe ich gesehen, dass timedatectl status eine Information liefert, ob die Systemzeit aktualisiert wurde:

Code: Alles auswählen

timedatectl status
      Local time: Mi 2018-10-03 19:07:53 CEST
  Universal time: Mi 2018-10-03 17:07:53 UTC
        RTC time: n/a
       Time zone: Europe/Berlin (CEST, +0200)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no


Komme ich an diese Info im System ran, von Freepascal aus? Die einzige Idee wäre jetzt, timedatectl status auszuführen und das Ergebnis nach NTP synchronized zu parsen. Aber vielleicht gehts auch einfacher.

Hintergrund: Ich habe einige Programme, die Daten mit Zeitstempel abspeichern und wenn der unsicher ist soll das vermerkt werden.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Raspberry: Prüfen ob gültige Zeit?

Beitrag von Mathias »

Vielleicht hilft dir dies weiter: http://manpages.ubuntu.com/manpages/tru ... rtc.4.html

In FPC würde dies dann in etwa so aussehen:

Code: Alles auswählen

uses
  BaseUnix;
 
var
  fd: cint;
  buf: Pointer;
begin
  fd := FpOpen('/dev/rtc', O_RDONLY);
  FpIOCtl(fd, $80247009, buf);
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Raspberry: Prüfen ob gültige Zeit?

Beitrag von Timm Thaler »

Gerade nochmal geschaut: Da der Raspberry keine RTC hat, gibt es auch kein Device rtc. Zumindest auf meinem nicht.

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Raspberry: Prüfen ob gültige Zeit?

Beitrag von sstvmaster »

unter lazarus mit synapse kannst du von zb. pool.ntp.org zeit holen und stellen (Windows mit Admin)

könnte auch die Anwort zu deinem anderem Thema sein.
Dateianhänge
sntp.zip
(64.19 KiB) 231-mal heruntergeladen
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Raspberry: Prüfen ob gültige Zeit?

Beitrag von sstvmaster »

und das geht mit deinem raspi nicht?

https://blog.doenselmann.com/richtige-u ... i-mit-ntp/
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Raspberry: Prüfen ob gültige Zeit?

Beitrag von Timm Thaler »

sstvmaster hat geschrieben:unter lazarus mit synapse kannst du von zb. pool.ntp.org zeit holen und stellen


Die Zeit holt der systemd-timesyncd Service zu meiner besten Zufriedenheit. Ich will den auch nicht abstellen, da systemd-timesyncd gegenüber ntp deutlich früher abfragt, das sieht man auch in den Logfiles, und es ist mit systemd verzahnt.

Ich will nur eine Aussage: systemd-timesyncd hat erfolgreich die Zeit synchronisiert.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Raspberry: Prüfen ob gültige Zeit?

Beitrag von af0815 »

Wird meiner Erfahrung mit RasPi darauf hinauslaufen - entweder oder :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Raspberry: Prüfen ob gültige Zeit?

Beitrag von sstvmaster »

Timm Thaler hat geschrieben:Hintergrund: Ich habe einige Programme, die Daten mit Zeitstempel abspeichern und wenn der unsicher ist soll das vermerkt werden.


Ich würde es so machen:
- vom raspi datum und zeit holen und in unix time umwandeln -> DateTimeToUnix(LocalTimeToUniversal(Now))
- mit dem Beispiel von mir zum vergleich noch mal zeit holen unix auch umwandeln -> DateTimeToUnix(sntp.NTPTime)
- und wenn die differenz kleiner als x ist sollten datum und uhrzeit stimmen

Bei mir ist die Differenz so bei 3-4
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Raspberry: Prüfen ob gültige Zeit?

Beitrag von af0815 »

Abfrage des Status mit $ timedatectl status siehe https://help.ubuntu.com/lts/serverguide/NTP.html.en und das Ergebnis auswerten.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Raspberry: Prüfen ob gültige Zeit?

Beitrag von Mathias »

Timm Thaler hat geschrieben:Gerade nochmal geschaut: Da der Raspberry keine RTC hat, gibt es auch kein Device rtc. Zumindest auf meinem nicht.


Das sieht man gut, wen man es auf dem PC ausführt. da hat es einen wert bei RTC.

Code: Alles auswählen

$ timedatectl 
                      Local time: Do 2018-10-04 18:52:01 CEST
                  Universal time: Do 2018-10-04 16:52:01 UTC
                        RTC time: Do 2018-10-04 16:52:00
                       Time zone: Europe/Zurich (CEST, +0200)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Raspberry: Prüfen ob gültige Zeit?

Beitrag von sstvmaster »

@Timm Thaler

https://www.freedesktop.org/software/sy ... nchronized

Was hier beschrieben ist kann dir auch nicht weiterhelfen?

/var/lib/systemd/timesync/clock

The modification time of this file indicates the timestamp of the last successful synchronization (or at least the systemd build date, in case synchronization was not possible).
/run/systemd/timesync/synchronized

A file that is touched on each successful synchronization, to assist systemd-time-wait-sync and other applications to detecting synchronization events.
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Raspberry: Prüfen ob gültige Zeit?

Beitrag von af0815 »

Kurzum deine idee vom ersten Post, das Ergebnis von timedatectl zu scannen ist imho der einzige Weg.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten