Implement telemetry endpoints.
This commit is contained in:
parent
6e58cf08fe
commit
b5297229b6
@ -49,19 +49,18 @@ class TelemetryController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function discretized15min($params)
|
public function discretization(Request $request)
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
|
$response = $this->med5minContract->getDiscretization($request->all());
|
||||||
|
return (new TelemetryResource($response))
|
||||||
|
->response()
|
||||||
|
->setStatusCode(Response::HTTP_OK);
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
return $this->errorResponse(false, $ex->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function discretizedOneHour($params)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public function discretizedOneDay($params)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -6,10 +6,12 @@ use App\Repositories\ContractInterface;
|
|||||||
|
|
||||||
interface Med5minContractInterface extends ContractInterface
|
interface Med5minContractInterface extends ContractInterface
|
||||||
{
|
{
|
||||||
|
public function getDiscretized5min($params);
|
||||||
public function getDiscretized15min($params);
|
public function getDiscretized15min($params);
|
||||||
public function getDiscretizedOneHour($params);
|
public function getDiscretizedOneHour($params);
|
||||||
public function getDiscretizedOneDay($params);
|
public function getDiscretizedOneDay($params);
|
||||||
public function getPowerFactor($params);
|
public function getPowerFactor($params);
|
||||||
public function getDemand($params);
|
public function getDemand($params);
|
||||||
|
public function getDiscretization($params);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -81,6 +81,99 @@ class Med5minRepository extends AbstractRepository implements Med5minContractInt
|
|||||||
->get();
|
->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function getDiscretization($params)
|
||||||
|
{
|
||||||
|
if (empty( $params['type'])){
|
||||||
|
return abort(404, 'Error! The type field needs to be filled in.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$type = $params['type'];
|
||||||
|
|
||||||
|
$params = static::filterRow($params);
|
||||||
|
|
||||||
|
return match ($type) {
|
||||||
|
'5_min' => $this->getDiscretized5min($params),
|
||||||
|
'15_min' => $this->getDiscretized15min($params),
|
||||||
|
'1_hora' => $this->getDiscretizedOneHour($params),
|
||||||
|
'1_dia' => $this->getDiscretizedOneDay($params)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDiscretized5min($params)
|
||||||
|
{
|
||||||
|
$fields =
|
||||||
|
[
|
||||||
|
'med_5min.ponto',
|
||||||
|
'med_5min.dia_num',
|
||||||
|
DB::raw("TO_CHAR((date('1899-12-30') + interval '1' day * med_5min.dia_num), 'DD/MM/YYYY') as day_formatted"),
|
||||||
|
DB::raw("(med_5min.minuto/60) AS hora"),
|
||||||
|
DB::raw("MOD(med_5min.minuto,60) AS minut"),
|
||||||
|
DB::raw("SUM(med_5min.ativa_consumo) AS consumo"),
|
||||||
|
DB::raw("SUM(med_5min.reativa_consumo+med_5min.reativa_geracao) AS reativa")
|
||||||
|
];
|
||||||
|
|
||||||
|
return $this->execute($fields, $params)
|
||||||
|
->groupBy(["med_5min.ponto", "med_5min.dia_num", "day_formatted", 'hora', 'minut'])
|
||||||
|
->distinct()
|
||||||
|
->get();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDiscretized15min($params)
|
||||||
|
{
|
||||||
|
$fields =
|
||||||
|
[
|
||||||
|
'med_5min.ponto',
|
||||||
|
'med_5min.dia_num',
|
||||||
|
DB::raw("TO_CHAR((date('1899-12-30') + interval '1' day * med_5min.dia_num), 'DD/MM/YYYY') as day_formatted"),
|
||||||
|
DB::raw("(med_5min.minuto/60) AS hora"),
|
||||||
|
DB::raw("((MOD(med_5min.minuto,60)/15)+1)*15 AS minut"),
|
||||||
|
DB::raw("SUM(med_5min.ativa_consumo) AS consumo"),
|
||||||
|
DB::raw("SUM(med_5min.reativa_consumo+med_5min.reativa_geracao) AS reativa")
|
||||||
|
];
|
||||||
|
|
||||||
|
return $this->execute($fields, $params)
|
||||||
|
->groupBy(["med_5min.ponto", "med_5min.dia_num", "day_formatted", 'hora', 'minut'])
|
||||||
|
->distinct()
|
||||||
|
->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDiscretizedOneHour($params)
|
||||||
|
{
|
||||||
|
$fields =
|
||||||
|
[
|
||||||
|
'med_5min.ponto',
|
||||||
|
'med_5min.dia_num',
|
||||||
|
DB::raw("TO_CHAR((date('1899-12-30') + interval '1' day * med_5min.dia_num), 'DD/MM/YYYY') as day_formatted"),
|
||||||
|
DB::raw("(med_5min.minuto/60) AS hora"),
|
||||||
|
DB::raw("SUM(med_5min.ativa_consumo) AS consumo"),
|
||||||
|
DB::raw("SUM(med_5min.reativa_consumo+med_5min.reativa_geracao) AS reativa")
|
||||||
|
];;
|
||||||
|
|
||||||
|
return $this->execute($fields, $params)
|
||||||
|
->groupBy(["med_5min.ponto", "med_5min.dia_num", "day_formatted", 'hora'])
|
||||||
|
->distinct()
|
||||||
|
->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDiscretizedOneDay($params)
|
||||||
|
{
|
||||||
|
$fields =
|
||||||
|
[
|
||||||
|
'med_5min.ponto',
|
||||||
|
'med_5min.dia_num',
|
||||||
|
DB::raw("TO_CHAR((date('1899-12-30') + interval '1' day * med_5min.dia_num), 'DD/MM/YYYY') as day_formatted"),
|
||||||
|
DB::raw("SUM(med_5min.ativa_consumo) AS consumo"),
|
||||||
|
DB::raw("SUM(med_5min.reativa_consumo+med_5min.reativa_geracao) AS reativa")
|
||||||
|
];
|
||||||
|
|
||||||
|
return $this->execute($fields, $params)
|
||||||
|
->groupBy(["med_5min.ponto", "med_5min.dia_num", "day_formatted"])
|
||||||
|
->distinct()
|
||||||
|
->get();
|
||||||
|
}
|
||||||
|
|
||||||
public static function filterRow($params, $field = 'dia_num'): array
|
public static function filterRow($params, $field = 'dia_num'): array
|
||||||
{
|
{
|
||||||
$arr['filters'] = collect($params['filters'])
|
$arr['filters'] = collect($params['filters'])
|
||||||
@ -94,47 +187,4 @@ class Med5minRepository extends AbstractRepository implements Med5minContractInt
|
|||||||
return $arr;
|
return $arr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDiscretized15min($params)
|
|
||||||
{
|
|
||||||
$fields =
|
|
||||||
[
|
|
||||||
'med_5min.ponto',
|
|
||||||
'med_5min.dia_num',
|
|
||||||
DB::raw("(med_5min.minuto/60) AS hora"),
|
|
||||||
DB::raw("((MOD(med_5min.minuto,60)/15)+1)*15 AS minut"),
|
|
||||||
DB::raw("SUM(med_5min.ativa_consumo) AS consumo"),
|
|
||||||
DB::raw("UM(med_5min.reativa_consumo+med_5min.reativa_geracao) AS reativa")
|
|
||||||
];
|
|
||||||
|
|
||||||
return $this->execute($fields, $params);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getDiscretizedOneHour($params)
|
|
||||||
{
|
|
||||||
$fields =
|
|
||||||
[
|
|
||||||
'med_5min.ponto',
|
|
||||||
'med_5min.dia_num',
|
|
||||||
DB::raw("(med_5min.minuto/60) AS hora"),
|
|
||||||
DB::raw("SUM(med_5min.ativa_consumo) AS consumo"),
|
|
||||||
DB::raw("UM(med_5min.reativa_consumo+med_5min.reativa_geracao) AS reativa")
|
|
||||||
];;
|
|
||||||
|
|
||||||
return $this->execute($fields, $params);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getDiscretizedOneDay($params)
|
|
||||||
{
|
|
||||||
$fields =
|
|
||||||
[
|
|
||||||
'med_5min.ponto',
|
|
||||||
'med_5min.dia_num',
|
|
||||||
DB::raw("(med_5min.minuto/60) AS hora"),
|
|
||||||
DB::raw("SUM(med_5min.ativa_consumo) AS consumo"),
|
|
||||||
DB::raw("UM(med_5min.reativa_consumo+med_5min.reativa_geracao) AS reativa")
|
|
||||||
];
|
|
||||||
|
|
||||||
return $this->execute($fields, $params);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -61,6 +61,7 @@ Route::middleware(['auth:sanctum', 'ability:Client'])->group(function () {
|
|||||||
// Route::post('telemetry', [\App\Http\Controllers\TelemetryController::class, 'index']);
|
// Route::post('telemetry', [\App\Http\Controllers\TelemetryController::class, 'index']);
|
||||||
Route::post('telemetry/powerFactor', [\App\Http\Controllers\TelemetryController::class, 'powerFactor']);
|
Route::post('telemetry/powerFactor', [\App\Http\Controllers\TelemetryController::class, 'powerFactor']);
|
||||||
Route::post('telemetry/demand', [\App\Http\Controllers\TelemetryController::class, 'demand']);
|
Route::post('telemetry/demand', [\App\Http\Controllers\TelemetryController::class, 'demand']);
|
||||||
|
Route::post('telemetry/discretization', [\App\Http\Controllers\TelemetryController::class, 'discretization']);
|
||||||
// Route::post('telemetry/grossMonthly', [\App\Http\Controllers\TelemetryController::class, 'grossMonthlyEconomy']);
|
// Route::post('telemetry/grossMonthly', [\App\Http\Controllers\TelemetryController::class, 'grossMonthlyEconomy']);
|
||||||
// Route::post('telemetry/estimates', [\App\Http\Controllers\TelemetryController::class, 'captiveMonthlyEconomy']);
|
// Route::post('telemetry/estimates', [\App\Http\Controllers\TelemetryController::class, 'captiveMonthlyEconomy']);
|
||||||
// Route::post('telemetry/MWh', [\App\Http\Controllers\TelemetryController::class, 'costMWhEconomy']);
|
// Route::post('telemetry/MWh', [\App\Http\Controllers\TelemetryController::class, 'costMWhEconomy']);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user