Ergebnis von IPS_GetKernelStartTime

Seit einiger Zeit lasse ich mir von meinen Raspis (alle auf Version IPS5.0 aber unterschiedliche Hardware) die Startzeitpunkte von Linux und IPS an den zentralen Wndows-PC melden.
Auf den Raspis wird jede Minute ein Skript aufgerufen, das Temperatur, Speicher usw. ermittelt und zum Thema folgendes abfragt:

                case 'Uptime':
                    $Wert = shell_exec ("awk '{print $1}' /proc/uptime");
                    $Wert = round ($Wert, 0);
                    $Wert = time () - $Wert;
                    break;
                case 'IPStime':
                    if ((float) IPS_GetKernelVersion () > 4) {
                        $Wert = IPS_GetKernelStartTime ();
                    } else {
                        $Wert = $Liste['Uptime']['Statu'];  // für ältere IPS-Versionen mit der Linux-Uptime begnügen 
                    }
                    break;


Am zentralen PC lasse ich mir dann die Laufzeiten ausrechnen und tabellarisch anzeigen (im Prinzip Wert von time() subtrahiert mit dem übermittelten Laufzeitwert):

    $ZSte = time ();
...
    foreach ($LAN as $PC_Name => $PC) {
 ...
                switch ($Ablauf):
                    case 'LastCall':
                        if (isset ($Liste[$PC_Name]))
                            @$Spalte[$SpNr + $BoxOffset] = ZeitDauer ($ZSte - $Liste[$PC_Name][$Ablauf]['ZLast']);
                        break;
                    case 'Uptime':
                    case 'IPStime':
                        if (isset ($Liste[$PC_Name]))
                            @$Spalte[$SpNr + $BoxOffset] = ZeitDauer ($ZSte - $Liste[$PC_Name][$Ablauf]['aWert']);
                        break;
...

(ZeitDauer ist eine eigene Funktion zur Visualisierung, unter LastCall liste ich den Zeitabstand zur letzten Meldung).

In der Tabelle fällt auf, dass bei einigen Raspis der Wert für die IPS-Laufzeit höher ist, als der der Linux-Laufzeit.

Besonders fällt mir jetzt ein Raspi auf, bei dem ich gestern etwa um diese Zeit die Stromversorgung abgeschaltet habe und dessen IPS-Laufzeit auf ca. 23:52 (dargestellt als hh:mm) steht und den ich am Abend wieder eingeschaltet habe, wobei die Linux-Laufzeit auf ca. 15:57 steht.

Kann es sein, dass IPS zu einem Zeitpunkt seine Startzeit ermittelt, in dem die Zeit aus dem Linux-System noch nicht stabil ist und die Funktion IPS_GetKernelStartTime deshalb permanent den Zeitpunkt vor Verlust der Stromversorgung angibt ??
(Komplizierte Frage zum Sonntagmorgen und nicht besonders wichtig aber halt auffällig)

Viele Grüsse
Harald

Das kann sein - Ich bin mir aber nicht sicher, ob man den Pi zwingen kann zu warten, bis die Zeit per NTP verfügbar ist.

Du kannst ins IPS Log schauen - dort wirst du sofort sehen welche Uhrzeit drin steht.

paresy

11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | Creating...
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | Platform: Raspberry Pi
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | Version: 5.0
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | Revision: 6e7eaf21735c7ea23fbb0e471bdb9c90d32c8737
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | Build: 08/16/18
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | WorkingDir: /var/lib/symcon/
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | SystemDir: /usr/share/symcon/
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | LogDir: /var/log/symcon/
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | Boost Version: 1_65_1
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | cURL Version: libcurl/7.52.1 GnuTLS/3.5.8 zlib/1.2.8 libidn2/0.16 libpsl/0.17.0 (+libidn2/0.16) libssh2/1.8.0 nghttp2/1.18.1 librtmp/2.3
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | Git2 Version: 0.27.0
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | SSH2 Version: 1.8.0
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | ZLIB Version: 1.2.8
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | RapidJSON Version: 1.1.0
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | OpenSSL Version: OpenSSL 1.1.0f  25 May 2017
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | OpenSSL CertDir: /usr/lib/ssl/certs
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | XML2 Version: 20904
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | XML2 Threads: Yes
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | PHP Version: 7.2.5
11/10/18 10:17:04 | 00000 | MESSAGE | Kernel               | Initializing...
11/10/18 10:17:04 | 00000 | MESSAGE | LocalePool           | Creating...
11/10/18 10:17:04 | 00000 | MESSAGE | LocalePool           | Detected locale: de_DE
11/10/18 10:17:04 | 00000 | MESSAGE | LocalePool           | Using locale: de
10.11.2018 10:17:04 | 00000 | MESSAGE | LicensePool          | Erstelle...
10.11.2018 10:17:05 | 00000 | MESSAGE | Settings             | Erstelle...
10.11.2018 10:17:05 | 00000 | MESSAGE | Settings             | Lade Einstellungen...
...

Da gabs erst mal einen Bruch in der Datumsdarstellung nach Laden der lokalen Einstellung

...
10.11.2018 10:17:07 | 00000 | MESSAGE | Kernel               | Initialisierung abgeschlossen
10.11.2018 10:17:07 | 00000 | MESSAGE | Kernel               | Erstelle Nachrichten-Thread ...
10.11.2018 10:17:07 | 00000 | MESSAGE | EventManager         | Erstelle Ereignis-Thread...
10.11.2018 10:17:07 | 00000 | MESSAGE | TimerPool            | Erstelle Ereignis-Thread...
10.11.2018 10:17:07 | 00000 | MESSAGE | DataServer           | Starte Server...
10.11.2018 10:17:07 | 00000 | SUCCESS | Kernel               | *** IPS BETRIEBSBEREIT
10.11.2018 10:17:07 | 00000 | CUSTOM  | #01: EvtCtl/Start    | IPS-Start.ips.php
...

Nach ca. 3 Sekunden immer noch keine Zeitsyschoronisierung, ist ja für einen Prozessor, der (z.Z.) mit 600 MHz läuft eine halbe Ewigkeit :slight_smile:

Aber dann nach der 4ten Sekunde nach Start:

...
10.11.2018 10:17:08 | 33694 | MESSAGE | Event Control        | Start-Skript ausgeführt!
10.11.2018 10:17:08 | 49499 | ERROR   | ScriptEngine         | Ergebnis für Skript 49499
Nicht vorgesehenes RunScript von 15774 Events\IPS-Start
10.11.2018 18:14:44 | 42931 | WARNING | ScriptEngine         | Ergebnis für Ereignis 55953
                                                                                                 Scheduler ist ausgefallen!!
                                                                                                 lief zuletzt      : Sa 10.11.18-10:30:10 mit
                                                                                                 Sa 10.11.18-10:31:00 Scheduler (EVT:Starte Skripte)
                                                                                                 Sa 10.11.18-10:40:00 HB10min (HB:HB 10min)
                                                                                                 Sa 10.11.18-11:00:00 HB1h (HB:HB 1h)
                                                                                                 war vorgesehen für: Sa 10.11.18-18:15:00, 
                                                                                                 Scheduler wird jetzt neu gestartet!
10.11.2018 18:15:27 | 56801 | MESSAGE | Client Socket        | Einstellungen gespeichert
...

Ich bau mir eine Routine ein, die evtl. die Linux-Startup-Time verwendet.
Möchte ja nicht „den Pi zwingen zu warten, bis die Zeit per NTP verfügbar ist“. Und auch nicht IPS zwingen zu warten.

In der IPS-Doku sollte für Funktion IPS_GetKernelStartTime ein Hinweis auf die evtl. verzögerte Zeit-Synchronosierung stehen und dass in solchen Fällen das Resultat nicht korrekt ist.

Viele Grüße
Harald