'url_required']); exit; } if (!in_array($cmd, ['OTA_CHECK','OTA_URL'], true)) { http_response_code(400); echo json_encode(['error'=>'cmd_invalid']); exit; } $payload = json_encode(['cmd'=>$cmd,'url'=>$url], JSON_UNESCAPED_SLASHES); if ($uid === 'all') { $rows = $pdo->query("SELECT uid FROM contadores WHERE blocked=0 AND online=1")->fetchAll(PDO::FETCH_ASSOC); foreach ($rows as $r) mqtt_publish("esp/{$r['uid']}/cmd", $payload); echo json_encode(['ok'=>1,'sent'=>count($rows)]); } else { if (!$uid) { http_response_code(400); echo json_encode(['error'=>'uid_required']); exit; } mqtt_publish("esp/$uid/cmd", $payload); echo json_encode(['ok'=>1]); }