- Ein Python-Skript liest alle 5 Minuten einige Sensorwerte auf einem esp32 (dem gleichen Netzwerk) und sendet diese Werte unter Hinzufügung von „acktime“ (Daten und Zeit, wenn ich die Werte lese) an eine Laravel-API (gehostet) mit Post-Methode. Dadurch wird auch die Synchronisierungszeit (Daten und Zeit, wenn ich Werte in die Datenbank schreibe) hinzugefügt.
- Laravel Cronjob erstellt mir einen täglichen Bericht mit maximalem und minimalem Durchschnittswert vom Sensor
Problem des Cron-Jobs:
Mein Befehl gruppiert alle Zeilen in der Datenbank nach Tag:
Code: Select all
$weatherdata = rawData::all()
->groupBy(function (RawData $item) {
return $item->acktime->format('Y-m-d');
})
->each(function (Collection $day) {
foreach ($day as $value){
Log::info($value);
}
Log::info('NEXT DAY');
});
Code: Select all
{"acktime":"2021-10-30T22:56:45.000000Z",
NEXT DAY
{"acktime":"2021-10-30T23:01:47.000000Z",
Wenn ich Zeilen nach Stunden statt nach Tag gruppiere:
Code: Select all
NEXT HOUR
{"acktime":"2021-10-31T02:02:54.000000Z","temperatur..."}
..other 23 values when hour is 2 (not ok,total is 24 values)
NEXT HOUR
{"acktime":"2021-10-31T03:03:58.000000Z","temperatur..."}
..other 11 values (it's ok,total should be maximum 12)
NEXT HOUR
Code: Select all
NEXT HOUR
{"acktime":"2021-10-31T02:02:54.000000Z","temperatur..."}
..other 11 value (it's ok,total 12)
NEXT HOUR
{"acktime":"2021-10-31T03:03:58.000000Z","temperatur..."}
..other 11 value (it's ok,total 12)
NEXT HOUR
{"acktime":"2021-10-31T02:02:54.000000Z","temperatur.."}
..other 11 value (it's ok,total 12)
Code: Select all
'timezone' => 'Europe/London',
Code: Select all
class rawData extends Model
{
use HasFactory;
protected $fillable = [
'acktime',
'temperature',
'humidity',
..other data..
'synctime'
];
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['acktime','synctime'];
public $timestamps = false;
}
Python-Skript:
Das Python-Skript sendet nach dem Lesen des Sensorwerts die Werte direkt an meine API, aber vielleicht liegt das Problem darin, wie ich die Datenzeit darauf erhalte:
Code: Select all
from datetime import datetime
def writeData(data):
data['acktime'] = datetime.now()
http post
acktime und synctime sind Datenzeittypen und die UTC ist +1
wird ausgeführt. SHOW GLOBAL VARIABLES LIKE 'time_zone'; ich bekomme SYSTEM
Ich weiß nicht, wie ich die Zeitzone in Datenzeitzeilen speichern kann
Wie kann ich dieses Problem in Zukunft vermeiden??
Wie kann ich die bereits gespeicherten Datenzeitwerte wiederherstellen??
Mobile version