Hallo jonofe,
Erst mal vielen Dank für den tollen LBS. Das hat auf Anhieb soweit funktioniert. Allerdings ist mir beim Ansehen der Plots dann aufgefallen, daß es immer nachts bei mir am wärmsten ist 😂
Sah ganz nach einem Zeitzonen Problem aus. Ich habe das bei mir mal korrigiert. Hier ist der Diff:
Das Problem betrifft jeden, der nicht in der "Europe/Berlin" Zeitzone ist.
Kommt daher das die Edomi Konfiguration, in der die Zeitzone ja gesetzt wird (
date_default_timezone_set() ), nicht im EXEC Teil des LBS geladen wird. Im normalen LBS geht das wie gewohnt. Ich wusste das bisher auch nicht. Daher denkt PHP es ist in der UTC Zeitzone.
Nach dem Laden von '/usr/local/edomi/www/shared/php/config.php' braucht es keine Klimmzüge mehr zum Zeitzonen hinbiegen. Habe nur noch die Logmessages etwas eindeutiger gemacht und damit stimmt es für mich.
Noch eine Frage zu den Timestamps: Du setzt die Präzision auf Sekunden (InfluxDB2\Model\WritePrecision::S) und schreibst dann den Mikrosekundenteil aus der MySQL DB als 'us' tag in die Influx DB. Macht es nicht mehr Sinn, einen UTC Mikrosekunden Timestamp zu errechnen und die Präzision auf Mikrosekunden mit InfluxDB2\Model\WritePrecision::U zu setzen? Der Platz wird in der DB mit dem Tag eh verbraucht. Es wird so aber nie benutzt. Ich denke wenn das Tag wegfällt, kann man sich auch das sperrige 'Group By' in den Queries sparen.
Erst mal vielen Dank für den tollen LBS. Das hat auf Anhieb soweit funktioniert. Allerdings ist mir beim Ansehen der Plots dann aufgefallen, daß es immer nachts bei mir am wärmsten ist 😂
Sah ganz nach einem Zeitzonen Problem aus. Ich habe das bei mir mal korrigiert. Hier ist der Diff:
Code:
[root@edomi lbs]# diff -w 19002576_lbs.php 19002576_lbs.php_bak 285d284 < 290d288 < require_once '/usr/local/edomi/www/shared/php/config.php'; 319a318 > 336d334 < logging("Local Time (" . date_default_timezone_get() . "): $datetime"); 337a336 > logging("UTC Timestamp: $datetimeutc"); 341d339 < logging("UTC Timestamp: $timestamp_utc"); 453c451 < function datetime2utc($datetime) --- > function datetime2utc($datetime, $tz_from = 'Europe/Berlin') 457c455 < $dt = new DateTime($datetime); --- > $dt = new DateTime($datetime, new DateTimeZone($tz_from)); 510a509 > date_default_timezone_set("Europe/Berlin"); 512c511 < file_put_contents('/usr/local/edomi/www/data/log/CUSTOMLOG_Influx_Data_Archives-EXEC.log', date("Y-m-d H:i:s T") . "\t" . $message . "\n", FILE_APPEND); --- > file_put_contents('/usr/local/edomi/www/data/log/CUSTOMLOG_Influx_Data_Archives-EXEC.log', date("Y-m-d H:i:s") . "\t" . $message . "\n", FILE_APPEND);
Kommt daher das die Edomi Konfiguration, in der die Zeitzone ja gesetzt wird (
date_default_timezone_set() ), nicht im EXEC Teil des LBS geladen wird. Im normalen LBS geht das wie gewohnt. Ich wusste das bisher auch nicht. Daher denkt PHP es ist in der UTC Zeitzone.
Nach dem Laden von '/usr/local/edomi/www/shared/php/config.php' braucht es keine Klimmzüge mehr zum Zeitzonen hinbiegen. Habe nur noch die Logmessages etwas eindeutiger gemacht und damit stimmt es für mich.
Code:
2022-06-22 13:30:08 NZST Local Time (Pacific/Auckland): 2022-06-22 13:30:08 2022-06-22 13:30:08 NZST UTC Time: 20220622T013008Z 2022-06-22 13:30:08 NZST UTC Timestamp: 1655861408 2022-06-22 13:30:08 NZST Writing data to InfluxDB ... 2022-06-22 13:30:08 NZST INSERT : archiveName: Flair 325 Actual Control Value 0-10V, archiveId: 21, us: 571692, value: 0, timestamp_utc: 1655861408 2022-06-22 13:30:08 NZST Writing as FLOAT
Kommentar