35 lines
937 B
PHP
35 lines
937 B
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
header('Content-Type: application/json');
|
|
|
|
require __DIR__ . '/db.php'; // ligação PDO
|
|
require __DIR__ . '/mqtt.php'; // função mqtt_publish($topic,$msg)
|
|
|
|
$data = json_decode(file_get_contents('php://input'), true);
|
|
if (!$data || !isset($data['uid']) || !isset($data['cmd'])) {
|
|
http_response_code(400);
|
|
echo json_encode(['error'=>'invalid_request']);
|
|
exit;
|
|
}
|
|
|
|
$uid = $data['uid'];
|
|
$cmd = $data['cmd'];
|
|
$value = $data['value'] ?? null;
|
|
|
|
// ----------------------- MQTT -----------------------
|
|
$topic = "esp/$uid/cmd";
|
|
|
|
$msg = ['cmd' => $cmd];
|
|
if ($value !== null) $msg['value'] = $value;
|
|
|
|
mqtt_publish($topic, json_encode($msg, JSON_UNESCAPED_SLASHES));
|
|
|
|
// ----------------------- BD -------------------------
|
|
if ($cmd === 'BLOCK') {
|
|
$stmt = $db->prepare("UPDATE contadores SET blocked = ? WHERE uid = ?");
|
|
$stmt->execute([intval($value), $uid]);
|
|
}
|
|
|
|
echo json_encode(['ok'=>1]);
|