www/api/send_cmd.php

35 lines
938 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 = $pdo->prepare("UPDATE contadores SET blocked = ? WHERE uid = ?");
$stmt->execute([intval($value), $uid]);
}
echo json_encode(['ok'=>1]);