VSP Shop - Tienda en línea

Kit de 2 Unidades del Punto de Acceso WiFi 6 con Antena Sectorial de 80° de Apertura, Cobertura de Hasta 600 m, MIMO 2x2, Doble Banda, Hasta 574 Mbps en 2.4 GHz y Hasta 2402 Mbps en 5 GHz, Administración en Nube Gratis con INSIGHTS

Disponibilidad: Agotado

  • WiFi 6 (802.11AX) con velocidad hasta 2.976 Gbps
  • Doble banda simultánea 2.4 GHz (574 Mbps) y 5 GHz (2.402 Mbps)
  • Administración en nube gratuita con plataforma INSIGHTS
  • Diseño exterior IP55 para instalación en pared o poste
Modelo: KIT2-C260S
Clave SAT: 43222640
Garantía: 1 año
$8,010.02

Especificaciones del Producto

Peso:
0.68 kg
Dimensiones:
Alto: 25 cm, Ancho: 13 cm, Largo: 5 cm
Categoría:
Redes WiFi
Insights
t.classList.remove('active'));e.classList.add('active')} // ── LIGHTBOX ── var lbImages=[], lbIndex=0; var lbScale=1, lbPanX=0, lbPanY=0; var lbDragging=false, lbDragged=false; var lbDragSX=0, lbDragSY=0, lbDragPX=0, lbDragPY=0; var lbMinScale=1, lbMaxScale=5; (function(){ document.querySelectorAll('.thumbnail img').forEach(function(img){ lbImages.push(img.src); }); })(); document.getElementById('mainImageContainer').addEventListener('click', function(){ var cur=document.getElementById('mainImage').src; lbIndex=lbImages.indexOf(cur); if(lbIndex<0) lbIndex=0; lbOpen(); }); function lbOpen(){ var ov=document.getElementById('lightbox-overlay'); ov.classList.add('open'); lbShow(lbIndex); document.body.style.overflow='hidden'; buildDots(); } function lbClose(){ document.getElementById('lightbox-overlay').classList.remove('open'); document.body.style.overflow=''; lbZoomReset(); } function lbShow(i){ lbZoomReset(); var img=document.getElementById('lightbox-img'); img.style.opacity='0'; setTimeout(function(){ img.src=lbImages[i]; img.style.opacity='1'; },120); document.getElementById('lbDots').querySelectorAll('.lb-dot').forEach(function(d,idx){ d.classList.toggle('active',idx===i); }); lbIndex=i; var show=lbImages.length>1; document.querySelector('.lb-prev').style.display=show?'':'none'; document.querySelector('.lb-next').style.display=show?'':'none'; } function lbMove(dir){ if(lbScale>1){ return; } var n=(lbIndex+dir+lbImages.length)%lbImages.length; lbShow(n); } function buildDots(){ var wrap=document.getElementById('lbDots'); wrap.innerHTML=''; if(lbImages.length<=1) return; lbImages.forEach(function(_,i){ var d=document.createElement('span'); d.className='lb-dot'+(i===lbIndex?' active':''); d.onclick=function(){ lbShow(i); }; wrap.appendChild(d); }); } // ── ZOOM ── function lbApplyTransform(anim){ var img=document.getElementById('lightbox-img'); img.style.transition=anim?'transform .18s ease, opacity .2s':'opacity .2s'; img.style.transform='scale('+lbScale+') translate('+(lbPanX/lbScale)+'px,'+(lbPanY/lbScale)+'px)'; img.classList.toggle('zoomed',lbScale>1); img.style.cursor=lbScale>1?'grab':'zoom-in'; document.getElementById('lbDots').style.opacity=lbScale>1?'0':'1'; // mostrar/ocultar flechas al hacer zoom var show=lbImages.length>1&&lbScale<=1; document.querySelector('.lb-prev').style.opacity=show?'1':'0'; document.querySelector('.lb-prev').style.pointerEvents=show?'':'none'; document.querySelector('.lb-next').style.opacity=show?'1':'0'; document.querySelector('.lb-next').style.pointerEvents=show?'':'none'; } function lbZoomReset(){ lbScale=1; lbPanX=0; lbPanY=0; var img=document.getElementById('lightbox-img'); if(img){ img.style.transition='transform .22s ease, opacity .2s'; img.style.transform='scale(1) translate(0,0)'; img.classList.remove('zoomed','dragging'); img.style.cursor='zoom-in'; } document.getElementById('lbDots').style.opacity='1'; // restaurar flechas var show=lbImages.length>1; document.querySelector('.lb-prev').style.opacity=show?'1':'0'; document.querySelector('.lb-prev').style.pointerEvents=show?'auto':'none'; document.querySelector('.lb-next').style.opacity=show?'1':'0'; document.querySelector('.lb-next').style.pointerEvents=show?'auto':'none'; } function lbZoomBy(delta,cx,cy){ var img=document.getElementById('lightbox-img'); var newScale=Math.max(lbMinScale,Math.min(lbMaxScale,lbScale+delta)); if(newScale===lbScale) return; if(cx!==undefined&&cy!==undefined){ var rect=img.getBoundingClientRect(); var px=cx-rect.left-rect.width/2, py=cy-rect.top-rect.height/2; lbPanX+=px*(lbScale-newScale); lbPanY+=py*(lbScale-newScale); } lbScale=newScale; if(lbScale<=1){ lbPanX=0; lbPanY=0; } lbApplyTransform(true); } // Clic simple: zoom in. Doble clic: reset zoom (y flechas vuelven) var lbClickTimer=null; document.getElementById('lightbox-img').addEventListener('click',function(e){ e.stopPropagation(); if(lbDragged){ lbDragged=false; return; } if(lbClickTimer){ // Doble clic → reset zoom clearTimeout(lbClickTimer); lbClickTimer=null; lbZoomReset(); return; } lbClickTimer=setTimeout(function(){ lbClickTimer=null; // Clic simple → zoom in solo si no está en zoom if(lbScale<=1){ lbZoomBy(2, e.clientX, e.clientY); } },220); }); // Rueda de ratón: zoom in/out pero nunca por debajo de escala 1 document.getElementById('lightbox-img-wrap').addEventListener('wheel',function(e){ e.preventDefault(); if(e.deltaY>0){ // Reducir — pero no pasar de 1 var nuevoScale=Math.max(1, lbScale-0.5); if(nuevoScale===lbScale) return; lbScale=nuevoScale; if(lbScale<=1){ lbPanX=0; lbPanY=0; } lbApplyTransform(true); } else { lbZoomBy(0.5, e.clientX, e.clientY); } },{passive:false}); // Drag para paneo document.getElementById('lightbox-img').addEventListener('mousedown',function(e){ if(lbScale<=1) return; lbDragging=true; lbDragged=false; lbDragSX=e.clientX; lbDragSY=e.clientY; lbDragPX=lbPanX; lbDragPY=lbPanY; this.classList.add('dragging'); e.preventDefault(); }); document.addEventListener('mousemove',function(e){ if(!lbDragging) return; var dx=e.clientX-lbDragSX, dy=e.clientY-lbDragSY; if(Math.abs(dx)>3||Math.abs(dy)>3) lbDragged=true; lbPanX=lbDragPX+dx; lbPanY=lbDragPY+dy; lbApplyTransform(false); }); document.addEventListener('mouseup',function(){ if(lbDragging){ lbDragging=false; document.getElementById('lightbox-img').classList.remove('dragging'); } }); // Cerrar fondo document.getElementById('lightbox-overlay').addEventListener('click',function(e){ if(e.target===this) lbClose(); }); // Teclado document.addEventListener('keydown',function(e){ if(!document.getElementById('lightbox-overlay').classList.contains('open')) return; if(e.key==='Escape') lbClose(); if(e.key==='ArrowLeft'||e.key==='ArrowRight'){ if(lbScale<=1) lbMove(e.key==='ArrowLeft'?-1:1); } if(e.key==='+'||e.key==='=') lbZoomBy(0.5); if(e.key==='-') lbZoomBy(-0.5); if(e.key==='0') lbZoomReset(); }); // Pinch zoom + swipe táctil (function(){ var sx=0,sy=0,lastDist=0,pinching=false,tPanX=0,tPanY=0; var el=document.getElementById('lightbox-overlay'); el.addEventListener('touchstart',function(e){ if(e.touches.length===2){ pinching=true; lastDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY); } else { pinching=false; sx=e.touches[0].clientX; sy=e.touches[0].clientY; tPanX=lbPanX; tPanY=lbPanY; } },{passive:true}); el.addEventListener('touchmove',function(e){ if(e.touches.length===2&&pinching){ e.preventDefault(); var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY); var cx=(e.touches[0].clientX+e.touches[1].clientX)/2, cy=(e.touches[0].clientY+e.touches[1].clientY)/2; lbZoomBy((dist-lastDist)*0.018,cx,cy); lastDist=dist; } else if(e.touches.length===1&&lbScale>1){ e.preventDefault(); lbPanX=tPanX+(e.touches[0].clientX-sx); lbPanY=tPanY+(e.touches[0].clientY-sy); lbApplyTransform(false); } },{passive:false}); el.addEventListener('touchend',function(e){ if(pinching){ pinching=false; return; } var dx=e.changedTouches[0].clientX-sx, dy=e.changedTouches[0].clientY-sy; if(lbScale<=1&&Math.abs(dx)>Math.abs(dy)&&Math.abs(dx)>40){ lbMove(dx<0?1:-1); } },{passive:true}); })(); function updateQuantity(c){const i=document.getElementById('quantity');let v=parseInt(i.value)||1;v+=c;if(v<1)v=1;if(v>parseInt(i.max))v=parseInt(i.max);i.value=v} function showAlert(m,ok=true){const a=$('#alertMessage');a.html(`${m}`);a.css('background-color',ok?'#28a745':'#dc3545');a.fadeIn();setTimeout(()=>a.fadeOut(),3000)} function addToCart(id,qty,co=false,variante='NEW',provId=null){ qty=parseInt(qty)||1; $('#loaderOverlay').fadeIn(); var payload={ppo:'add',id:id,cant:qty,variante:variante}; if(provId!==null&&provId!==''&&provId!=='-1')payload.proveedor_id=provId; $.post('controller/carro/functions.php',payload,function(r){ $('#loaderOverlay').fadeOut(); try{ const d=typeof r==='object'?r:JSON.parse(r); if(d.success){updateCartCount();showAlert('Producto agregado correctamente');if(co)setTimeout(()=>window.location.href='envio.php',500)} else showAlert(d.message||'Error',false) }catch(e){ updateCartCount();showAlert('Producto agregado correctamente'); if(co)setTimeout(()=>window.location.href='envios.php',500) } }).fail(()=>{$('#loaderOverlay').fadeOut();showAlert('Error de conexión',false)}) } function updateCartCount(){$.post('controller/carro/functions.php',{ppo:'count'},function(c){$('.cart-count').text(c)})} // ── SCROLL TO TOP ── document.getElementById('btnScrollTop').addEventListener('click',function(e){e.preventDefault();window.scrollTo({top:0,behavior:'smooth'})}); // ── FAB FLOTANTES ── // Usa IntersectionObserver para detectar cuando los botones originales // salen de pantalla — funciona perfecto en iOS y Android. var fabIds = ['fabComprar','fabCarrito','fabCompartir','fabWsp'].filter(function(id){ return !!document.getElementById(id); }); var buttonsZone = document.getElementById('productButtons'); var scrollTopBtn = document.getElementById('btnScrollTop'); var fabDelay = [0, 70, 140, 210]; function setFabsVisible(visible){ fabIds.forEach(function(id, i){ var el = document.getElementById(id); if(!el) return; clearTimeout(el._fabTimer); var delay = visible ? fabDelay[i] : fabDelay[fabIds.length - 1 - i]; el._fabTimer = setTimeout(function(){ if(visible){ el.classList.remove('fab-hidden'); el.classList.add('fab-visible'); el.style.animation = 'none'; void el.offsetHeight; // forzar reflow (necesario en Safari/iOS) el.style.animation = 'fabBounceIn .45s cubic-bezier(.34,1.56,.64,1) both'; } else { el.classList.remove('fab-visible'); el.classList.add('fab-hidden'); el.style.animation = 'none'; } }, delay); }); } // Scroll-to-top: usar IntersectionObserver también (más confiable en móvil) var fabVisible = false; if('IntersectionObserver' in window){ // Observer para los botones (FABs) var btnObserver = new IntersectionObserver(function(entries){ entries.forEach(function(entry){ var shouldShow = !entry.isIntersecting; if(shouldShow !== fabVisible){ fabVisible = shouldShow; setFabsVisible(fabVisible); } }); }, { threshold: 0, rootMargin: '0px' }); if(buttonsZone) btnObserver.observe(buttonsZone); // Observer para el scroll-to-top (desaparece cuando estamos arriba) var topSentinel = document.createElement('div'); topSentinel.style.cssText = 'position:absolute;top:400px;left:0;height:1px;width:1px;pointer-events:none'; document.body.insertBefore(topSentinel, document.body.firstChild); var topObserver = new IntersectionObserver(function(entries){ scrollTopBtn.style.display = entries[0].isIntersecting ? 'none' : 'flex'; }, { threshold: 0 }); topObserver.observe(topSentinel); } else { // Fallback para navegadores muy viejos window.addEventListener('scroll', function(){ var scrolled = (window.pageYOffset || document.documentElement.scrollTop) > 300; scrollTopBtn.style.display = scrolled ? 'flex' : 'none'; if(buttonsZone){ var rect = buttonsZone.getBoundingClientRect(); var outOfView = rect.bottom < 0; if(outOfView !== fabVisible){ fabVisible = outOfView; setFabsVisible(fabVisible); } } }, {passive:true}); } // ── FAB COMPARTIR (con animación especial) ── function shareFab(btn){ var title = btn.dataset.title || document.title; var url = window.location.origin + '/' + btn.dataset.url; function copiar(texto){ var ta=document.createElement('textarea'); ta.value=texto;ta.style.cssText='position:fixed;top:-9999px;left:-9999px;opacity:0'; document.body.appendChild(ta);ta.focus();ta.select(); try{ document.execCommand('copy'); mostrarCopiadoFab(btn); } catch(e){ prompt('Copia este enlace:',texto); } document.body.removeChild(ta); } if(navigator.share){ navigator.share({title:title,url:url}).catch(function(){ copiar(url); }); } else if(navigator.clipboard){ navigator.clipboard.writeText(url).then(function(){ mostrarCopiadoFab(btn); }).catch(function(){ copiar(url); }); } else { copiar(url); } } function mostrarCopiadoFab(btn){ btn.classList.add('fab-shared'); var orig = btn.innerHTML; btn.innerHTML = ''; // Tooltip "¡Copiado!" var tip = document.createElement('div'); tip.textContent = '¡Enlace copiado!'; tip.style.cssText = 'position:fixed;right:82px;bottom:' + (btn.getBoundingClientRect().top + 16) + 'px;background:#1a2332;color:#fff;font-size:11.5px;font-weight:700;padding:5px 11px;border-radius:6px;white-space:nowrap;z-index:9999;pointer-events:none;box-shadow:0 4px 12px rgba(0,0,0,.2);animation:fabBounceIn .3s ease both'; document.body.appendChild(tip); setTimeout(function(){ btn.classList.remove('fab-shared'); btn.innerHTML = orig; if(tip.parentNode) tip.parentNode.removeChild(tip); }, 2200); } $(document).ready(function(){updateCartCount()}); function shareRel(btn){ const title = btn.dataset.title || document.title; const url = window.location.origin + '/' + btn.dataset.url; function copiar(texto){ const ta=document.createElement('textarea'); ta.value=texto;ta.style.cssText='position:fixed;top:-9999px;left:-9999px;opacity:0'; document.body.appendChild(ta);ta.focus();ta.select(); try{ document.execCommand('copy'); mostrarCopiado(btn); } catch(e){ prompt('Copia este enlace:',texto); } document.body.removeChild(ta); } if(navigator.share){ navigator.share({title,url}).catch(()=>copiar(url)); } else if(navigator.clipboard){ navigator.clipboard.writeText(url).then(()=>mostrarCopiado(btn)).catch(()=>copiar(url)); } else { copiar(url); } } function mostrarCopiado(btn){ const orig=btn.innerHTML; btn.innerHTML=''; btn.style.cssText='background:#059669;border-color:#059669;color:#fff;position:relative'; const tip=document.createElement('div'); tip.textContent='¡Enlace copiado!'; tip.style.cssText='position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:#1a2332;color:#fff;font-size:11.5px;font-weight:700;padding:5px 11px;border-radius:6px;white-space:nowrap;z-index:9999;pointer-events:none;box-shadow:0 4px 12px rgba(0,0,0,.2)'; const arr=document.createElement('span'); arr.style.cssText='position:absolute;bottom:-5px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #1a2332'; tip.appendChild(arr);btn.appendChild(tip); setTimeout(()=>{ btn.innerHTML=orig; btn.style.cssText=''; },2000); } // Aliases para el componente product_card (reusa las funciones existentes) window.pcAddCart = function(id, btn, provId){ if (!id || btn.disabled) return; btn.disabled = true; // proveedor_id: 3er parametro, sino data-prov del boton, sino null var prov = (typeof provId !== 'undefined' && provId !== null && provId !== '' && provId !== '-1') ? provId : (btn.dataset && btn.dataset.prov !== undefined && btn.dataset.prov !== '' && btn.dataset.prov !== '-1' ? btn.dataset.prov : null); var payload = {ppo:'add', id:id, cant:1}; if (prov !== null && prov !== '') payload.proveedor_id = prov; $.post('controller/carro/functions.php', payload, function(r){ try { const d = typeof r === 'object' ? r : JSON.parse(r); if (d.success) { btn.style.background = '#059669'; showAlert('Producto agregado correctamente'); updateCartCount(); setTimeout(()=>{ btn.style.background=''; btn.disabled=false; }, 1200); } else { showAlert(d.message || 'Error', false); btn.disabled=false; } } catch(e) { btn.style.background = '#059669'; showAlert('Producto agregado correctamente'); updateCartCount(); setTimeout(()=>{ btn.style.background=''; btn.disabled=false; }, 1200); } }).fail(function(){ showAlert('Error de conexión', false); btn.disabled=false; }); }; window.pcShareProduct = function(btn){ return shareRel(btn); };