- Сценарий Python считывает некоторые значения датчиков каждые 5 минут в esp32 (той же сети) и отправляет эти значения, добавляя «acktime» (данные и время, когда я читаю значения) в API laravel (размещенный) с помощью метода post, это добавит также время синхронизации (данные и время, когда я записываю значения в БД)
- Laravel cronjob создает мне ежедневный отчет с максимальным и минимальным средним значением от датчика.
Проблема задания cron:
Моя команда группирует все строки в базе данных по дням:
Код: Выделить всё
$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');
});
Код: Выделить всё
{"acktime":"2021-10-30T22:56:45.000000Z",
NEXT DAY
{"acktime":"2021-10-30T23:01:47.000000Z",
Если я группирую строки по часам вместо дня:
Код: Выделить всё
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
Код: Выделить всё
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)
Код: Выделить всё
'timezone' => 'Europe/London',
Код: Выделить всё
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:
Сценарий Python после считывания значения датчика отправляет значения непосредственно в мой API, но, возможно, проблема в том, как я получаю данные о времени:
Код: Выделить всё
from datetime import datetime
def writeData(data):
data['acktime'] = datetime.now()
http post
acktime и synctime — это тип времени данных, а UTC равен +1
работает ПОКАЗАТЬ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ, КАК 'time_zone'; я получаю СИСТЕМУ
Я не знаю, как получить часовой пояс, хранящийся в строках времени данных
Как мне избежать этой проблемы в будущем??
Как я могу восстановить уже сохраненные значения времени данных??
Подробнее здесь: https://stackoverflow.com/questions/699 ... -stack-app
Мобильная версия