Files
thetool/application/Api/v1/MeasurementsApicontroller.php
AI Development Engine 7560529699 feat: implement issue #
2026-03-02 21:08:38 +00:00

48 lines
1.6 KiB
PHP

<?php
require_once(APPDIR."/Measurement/Measurement.php");
require_once(APPDIR."/Measurement/MeasurementModel.php");
class MeasurementsApicontroller extends mfBaseApicontroller
{
protected function init()
{
// Initialize database connection if needed
$this->addRoute("/measurements/latest", "getLatestMeasurements", "GET");
}
/**
* Get the latest measurements grouped by unique device_id and sensor_id combinations
* Returns one measurement per combination, limited to 50 results
*/
protected function getLatestMeasurements()
{
// Get limit from query parameters, default to 50, max 100
$limit = 50;
if (isset($this->get['limit']) && is_numeric($this->get['limit'])) {
$limit = min(100, max(1, intval($this->get['limit'])));
}
// Get the latest measurements grouped by device_id and sensor_id
$measurements = MeasurementModel::getLatestGroupedByDeviceAndSensor($limit);
$result = [];
foreach ($measurements as $measurement) {
$result[] = [
'id' => $measurement->id,
'device_id' => $measurement->device_id,
'sensor_id' => $measurement->sensor_id,
'value' => (float)$measurement->value,
'unit' => $measurement->unit,
'timestamp' => $measurement->create,
'created_at' => date('Y-m-d H:i:s', $measurement->create)
];
}
return mfResponse::Ok([
'count' => count($result),
'measurements' => $result
]);
}
}