Está en la página 1de 16

7TUTORIAL

Acontinuacinvamosadescribirelusodeestesoftware,aadiremosalgunostrucosquenos harnmassencilloelmanejo,lamonitorizacinyladeteccindeerroresyademsdescribiremos endetallecmorealizarlasconfiguracionesmscomplejas. Necesitaremosenprincipioabrirtresventanasdecomandosparalosiguiente: a)ParaempezarautilizarZoneMinderesrecomendableenprimerlugarmonitorizarlosmensajes queofrecelaaplicacinentiempodeejecucin.Paraelloenunaventanadeterminalejecutamos: tailf/var/log/messages Enestaventanasenosirmostrandounregistrodelosmensajesgeneradosporaplicacinen tiemporeal. b)EnsegundolugaresimportantesaberqueenocasionesnuestroPCpuederalentizarsedebidoa unmalfuncionamientodelaaplicacinApache2.SiestoocurriesedebemosreiniciarApache2y buscar en el registro antes mencionado si el problema proviene de ZoneMinder. Para reiniciar Apache2ejecutamos: sudo/etc/init.dapache2krestart c)PorltimoparainiciarelservicioZoneMinderpropiamentedichoejecutamoselscriptzmpkg: sudozmpkg.plstart Unavezqueelservicioestcorriendopodemosaccederalaconsolamedianteunnavegador tecleandoenlabarradedireccioneshttp://127.0.0.1/zmohttp://localhost/zm. Lo primero que se presenta es la vista inicial cuando se est ejecutando en modo non authenticated (pordefecto).Laautentificacinesunaopcinquepermiteespecificarparacada usuarioqueseregistraenZoneMinderlospermisosparaejecutarciertastareas.Serecomiendala ejecucinenmodoauthenticatedsinuestrosistemaestabiertoainternet.Durantelainstalacin secreaunusuariocontodoslosprivilegioscuyologinypasswordsonadmin.Serecomienda cambiarelpasswordtanprontocomoseaposible.Paracrearusuariosaccedemosallinkoptions en la esquina superior derecha y en la pestaa system marcamos la casilla ZM_OPT_USE_AUTH. A continuacin podemos aadir, eliminar y establecer permisos de usuariosenlanuevapestaausersdentrodeoptions. LaventanadeZoneMinderajustarsutamaoparanoserdemasiadoagresivaconelescritorio. En la parte superiorpodemosver variasinformacionesbsicascomoelmomentodelaltima actualizacin y la carga del servidor. Tambin habr una indicacin del estado del sistema: stoppedorunning. Ms abajo se encuentran varios links incluyendo la indiciacin del usuario actual y la configuracin delanchodebanda.Laconfiguracindelanchodebandapermiteoptimizar los ajustesdependiendodesiestamosenlocaloremoto.Porejemplo,siestamostrabajandoenla mismamquinaosubreddelservidorseleccionaremoslosajustesparaungrananchodebanda,en

unaconexinADSLelegiremoslaopcinintermediayenunaconexindemodemelegiremosbajo anchodebanda. Lavistasersimilara:

7.1)DEFINICINDEMONITORES
ParautilizarZoneMinderesnecesariodefiniralmenosunMonitor.UnMonitoresbsicamente una asociacin con una cmara y puede realizar comprobaciones continuas de las imgenes captadasporesacmara,comoporejemploladeteccindemovimiento.ParacrearunMonitor hacemosclickenAddNewMonitor. Paraayudarnosacomenzarconlaconfiguracindevdeolomejoresapoyarseenutilidades comoCamorama(disponibledesdeSynaptics).Deestaformaencontraremoslaconfiguracinde imgenadecuadaparacadacmara.Hayquetenerencuentaquesiunacmarafuncionaconun programa de visualizacin no significa necesariamente que funcione con ZoneMinder. Esto es debidoaquelosprogramasdevisualizacinsimplementemapeanlaimgendevideohaciala pantalla de forma transparente, mientras que ZoneMinder necesita capturar la imgen y normalmentetratarla. Esposiblevalidarlascmarasmedianteelcomandozmud<rutadeldispositivo>qvU <usuario>P<password>(larutadelascmarasUSBesnormalmente/dev/video0,1,2,etc).De esta forma es posible adems obtener valores tiles de configuracin del dispositivo que nos servirnparacompletarloscamposdelpanelAddNewMonitor.Sielcomandozmudaunerror lomshabitualescomprobarsiposeemostodoslospermisos,paraestoejecutamoszmfixa. Existe un pequeo conjunto de cmaras que ZoneMinder soporta de forma nativa, su configuracin puedeestablecersemedianteellinkPresets.Estasconfiguracionescompletarn todosloscamposnecesariosconlosvaloresadecuados. Lasopcionesestndivididasenunconjuntoetiquetas.Noesnecesariosalvarloscambiosdeuna etiqueta,sinoquesepuedenrellenarloscamposdetodasellasyluegosalvarlascomounconjunto. Lasopcionesdecadaetiquetasedescribenbrevementeacontinuacin: a)EtiquetaGeneral: Name: el nombre del Monitor en carcteres alfanumricosysinespacios. Source Type: esta variable determina si la cmaraestconectadaenlocal,aunpuertoUSBdela mquina,siporelcontrarioesunacmararemota,osi esunafuentedeimgenrepresentadaporunarchivo. Seleccionarunaopcin uotraafectaralconjuntode opcionesquesemostrarenlasiguienteetiqueta. Fuction:estavariabledefineloqueelmonitor hace . El estado puede ser uno de los siguientes: None:elmonitorestactualmentedesactivadoynoes posiblevisualizarvdeonigenerareventos. Monitor:elMonitorsolomostrarflujosdevdeosin realizaruntratamientodelosmismos. Modect: o Motion Detection. Todas las imgenes capturadassernanalizadasysegeneraruneventocuandosedetectemovimiento. Record:enestecasosegenerancontinuamenteeventosdeunalongituddeterminada. Mocord:esunhbridoentreModectyRecord,yelresultadosoneventosdelongitudfijaconlas

zonasdedeteccindemovimientoremarcadasdentrodeesoseventos. Nodect:ONoDetection.Esteesunmodoespecialdiseadoparaserusadoconeventosexternos. Enabled: indicasielmonitor debeser iniciadoenmodoactivoopasivo.Normalmente marcaremosestaopcinsalvosiqueremosquelacmaraseaavtivadaodesactivadaporacciones externas.SInoseactivaelMonitornogenerarningneventoenrespuestaamovimientouotros desencadenantes. Linked Monitors: este campo nos permite seleccionar otros monitores del sistema que actuarancomodesencadenantesparaactivarestemonitor.Porejemplo,sitenemosvariascmaras supervisandounazonapodemoshacerquetodasempiecenagrabarsisolounadeellasdetectaun movimeinto.Hayquetenermuchocuidadodenocreardpendenciascircularesquenosllevarna alarmaspersistentes. Maximum FPS: en algunas ocasiones podemos tener cmaras capaces de altas tasas de captura,perononormalmentenorequeriremostantorendimientoparanosobrecargarelservidor. Estaopcinnospermitelimitarlamximatasadecaptura. AlarmMaximumFPS:sihemosespecificadounnivelmximodeframensporsegundo, quizsdeseamosqueestenivelseasobrepasadoanteunaalarma.Estevalornospermitedefinirel nmerodeframensporsegundogeneradosanteunaalarma. ReferenceImageBlend%ge:cadaimgenanalizadaenZoneMinderesunacomposicinde lasimgenesprevias,normalmenteformadaaplicandolaimgenactualconunciertoporcentajede laimgenanteriordereferencia.Estevaloralrededorde10,nospermitedefinirelporcentajede imgendereferenciaqueseaplicaralaimgenactual. Triggers: esta seccin nos permite seleccionar que eventos se aplicarn si el modo de ejecucinhasidoestablecidoTriggered.Eleventomscomneselgeneradoporelestndarx10. b)EiquetaSource(paradispositivoslocales): Device Path/Channel: especifica la ruta completa donde se ubica el dispositivo, por ejemplo /dev/video0, 1, 2, etc. y Channel 0 para dispositivos USB. Device Format: el formato del streaming de video.Losmascomunesson0paraelsistemaPALy1 paraelNTSC. CapturePalette:indicalaprofundidaddecolor. Sitenemosdudasesinteresantecomenzarprobandocon escalasdegrises,Grey,ocolorde24bits. CaptureWidth/Height:especificalasdimensionesdelstreamingdevideoquegenerarla cmara. Orientation: si por motivos de ubicacin nuestra cmara se encuentra girada es posible girarelvideoparaquelavisualizacinseacorrecta.

c)EtiquetaTimestamp: TimestampLabelFormat:indicaelformatode laetiquetadetiempo,fechayhora,quesesuperponeal video generado. Por defecto especifica ao/mes/dia hora/minuto/segundo con el formato: %%s %y/%m/%d%H:%M:%S. Timestamp Label X/Y: indican la posicin en coordenadascartesianasdndeseubicarlaetiqueta. Elpunto0,0especificalaesquinasuperiorizquierdade lapantalla. d)EtiquetaBuffers: ImageBufferSize:esteeseltamaodelbuffer deimgenesmuertas,dondeseguardanlasltimas imgenes captadas. Son imgenes que an estn esperando tratamiento. Estas imgenes se incluyen tambincomopreviasalageneracindeunaalarma,es decir,sisegeneraunaalarmasepresentanlosframes que generaron la alarma y tambin algunas capturas previasqueseobtienendeestebuffer. Warmup Frames: especifica cuantos frames procesarperonoexaminareldemoniodeanlisisal inicio.Estopermitegenerarunareferenciaprecisaantes debuscarcambiosenlosframesparadetectaralarmas. Pre/Post Event Image Buffer: indica cuantos framesdebenconservarseantesydespusdeunevento paraincluirlosenlascapturas.Estonospermitirver qu ocurri antes y despus de un evento concreto. Normalmenteseutilizaelvalor10paraambos,perosideseamosgenerarunnmeromenorde eventosperomslargosincrementaremoselbufferPost, ya que el Preest limitadoalamitaddelavariable ImageBufferSize. AlarmFrameCount:indicacuantosframesde alarma consecutivos deben ocurrir antes de que se genere un evento. Por defecto se utiliza el valor 1, aunque valores de 3 o 4 evitan las falsas alarmas generadas por fluctuaciones de luz o defectos de visualizacin. e)EtiquetaMisc: EventPrefix:pordefectoloseventossellaman Event <id del evento> pero se nos permite

modificarloparallamarloscomodeseemosyasipoderidentificar,porejemplo,queMonitorlos gener. SectionLength:especificalalongitudensegundosdeloseventosdelongitudfijagenerados cuandoelMonitorestenmodoRecordoMocord.Sielmodoescualquierotro,estavariablese ignora. FrameSkip:estacaractersticaseaplicatambinsielMonitorseencuentrasloenmodo RecordoMocord,eindicacuantosframessedebensaltaralgrabarloseventos.Unvalorde1indica quesesaltaunframedecadaunograbado,2indicaquesesaltarn2framesporcadaunograbado, etc. FPSReportInterval:indicacadacuantossegundosserefrescalatasadeframesporsegundo queofrecelacmara. DefaultScale:sihemoselegidountamaodeimagenparticularmentegrandoopequeo, conestavariablepodemosescalarlo. WebColour:algunoselementosdeZoneMinderutilizancoloresparadiferenciarMonitores. Desdeaquseseleccionaelcolorqueidentificaraestemonitor. Finalmente si hacemos click en Save ya tendremos perfectamente caracterizado nuestro Monitor. Comoyasehacomentadocuandoseactivanciertasopcionesaparecennuevaspestaas.Esel casodelaopcinZM_OPT_CONTROLqueactivarpestaasrelativasalcontroldecmarasPTZ. Ennuestrocasonohemospodidoprobarmuchasdelascaractersticasdelprogramapornodisponer delhardwareadecuadoporloquenoseincluirnenelpresentedocumento.Encualquiercasoes posibleconsultarlainformacinsobretodosestoselementosadicionalesenlapginaweb,elforo, lazonawikiyelmanual,eningls,delaaplicacin. Ahora,devueltaaalconsolaprincipal,veremosnuestroyalgunascolumnasconestadsticas vitales.Lamayoriadelascolumnassontambinlinks.Deizquierdaaderechatenemos:Id,Name,

Function,Source,Events,Hour,Day,Week,Month,Archive,Zones,OrderyMark. Id: haciendo click sobre la Id podemos editar algunas de las caractersticas que hemos

definidoparaelMonitor. Name:desdeaqupodemosaccederaunanuevaventanadondesenosmostrarelvideoen vivodeesacmaraascomounalistadelosltimoseventosgeneradosyalgunascaractersticasdel Monitor. Function y Source: estas dos columnas nos proporcionaninformacinvitaldependiendodelcoloren quesemuestran.Elrojoindicaqueelmonitornohasido configuradopararealizarningunaaccinyporlotanto noexisteningndemoniodecaptura(zmc)ejecutndose en l. Si el color es naranja significa que existe un demoniodecapturaejecutndose(zmc)peronounode anlisis(zma).Enverdeindicaqueambosdemoniosse estn ejecutando.Paraejecutarestosdemoniospodemos hacer clickenunadelascolumnas y cambiar la funcionalidad del Monitor. Si tenemos varios Monitores apuntando a un mismo dispositivo,elcolordeestadodeldispositivoindicaelestadodetodoslosMonitores. UnavezquetenemosvariosMonitoresactivos,laetiqueta<n>Monitorsseconviertetambin enunlinkpermitindonosasociarlosengrupos.TambinseactivarnloslinksCycle,quemostrar unosinstantesdecadamonitordelsistemaenunanuevaventana,yMontage,quenosmostrar todoslosmonitoresactivosenunanuevaventana.

7.2)DEFINICINDEZONAS
Elprximopasoimportanteadarparatrabajarcon MonitoresesconfigurarlasZonas.Pordefectoya existeunazonaqueocupabatodalaimgencapturada pero nosostros desearemos crear nuestras propias Zonas.SihacemosclickenlacolumnaZonasdeun monitorveremosunasnuevaventanaquecontendrla imgencapturadaporlacmara.Dichaimgentendr superpuesto unmalladorepresentandolasZonas.El colordelaZonadeterminadequ tiposetrata.La zona por defectoes unaZona Activaas queestar coloreadaenrojo.LasZonasInclusivasaparecernen naranja,lasExclusivasenprpura,lasPreclusivasen azulylasInactivasenblanco. Enprincipionotendremoszonasseleccionadas. Debajodelaimagendondeserepresentanlaszonas aparecerunlistadodelasmismas.Haciendoclicken cadaunapodremoseditarlasparticularidades. Alaadirunazona,haciendoclickenAddNewZoneomodificarlascaractersticasdela mismaaccedemosalaventanadeconfiguracinopantalladecaractersticas.

LapantalladecaractersticasdecadaZonaestdivididaendosreasprincipales,alaizquierda estelreadeopcionesyaladerechaelreadedibujo. ElreadelaZonapuedeserdefinida completandolatabladecoordenadasohaciendoclickenlasesquinsdelaZonayhaciendoclicken sunuevaubicacin.Paraaadirnuevospuntosdedibujoutilizamoselsigno+colocadoallado delpuntodetrsdelquequeremosaadirelnuevopunto.Elsmbolosirveparaeliminarpuntos

ylaxpermitedeseleccionarpuntos. Una vez que hemos seleccionado el tamao y forma correctos para nuestra zona, debemos rellenarelrestodelaconfiguracin.Lasopcionessonlassiguientes: Name:setratasimplementedelaetiquetaconlaqueidentificaremoslazona. Type:esteesunodelosconpectosmsimportantesdentrodeZoneMinder.Tenemoscinco opcionesentrelasqueelegir: Active:eseltipodezonamsutilizada.Estazonaactivarunaalarmaanteculaquiereventoque ocurraensuinterioryquecumplaunciertocriterio. Inclusive:estetipodezonaseutilizasiqueremosactivarunaalarmasolosialmenosotraZona Activahadesencadenadoyaotraalarma. Exclusive:enestecasolasalarmassoloseactivarnsinoseactivadoyaunaalarmadeotra Zona Activa. Preclusive:esrelativamentereciente.EstetipodeZonaaseguraqueunaalarmanosegenerar anteuneventoenestaregindelaimgen.Seutilizaparaevitarquesegenerenalarmasante cambiosdeluzquenosepuedenexcluirutilizandovaloresgeneralescomonmerode pixelesdealarma,framensdealarmaetc. Inactive:eseltipoopuestoaActive.Nuncasegenerarunaalarmaenestazona. EsimportantemencionarquesedebeintentarsuperponerZonas,loquegeneraraunasobrecarga deprocesamientoinnecesaria. Presets: esunalistadecaractersticas tpicas.Seleccionarunarellenar algunosde los siguientescamposynosayudaraseleccionarlosvaloresadecuadosparanuestrazona. Units: indica si alguna de las siguientes caactersticas estn expresadas en pixeles o porcentaje.El porcentajeserefiererespectoalreaseleccionada,noalaimgencompleta.En generallasmedidasenpixelssonmsprecisas,aunquemsdifcilesdeutilizar. AlarmColour: especifica elcolorconelqueremosmarcarlazonadelaimgenqueha generadolaalarma. Alarm Check Method: se utliza para especificar que tipo de pruebas se aplican para determinarsiunframerepresentaunaalarmaono.AlarmPixelsindicaqueserealizaunacuenta individual de los pixeles activados. FilteredPixels indica que los pixels sern filtrados para eliminarloselementosaisladosantesdecontarlos.Blobsutilizaunalgoritmomssofisticadode anlisis que agrupa pixels activados en grupos contnuos o blobs. Este ltimo mtodo es el elegidopordefectoyaqueesmuchomsprecisoaunquetieneunacargacomputacionalmayor. Min/MaximumPixelThreshold:seutilizaparadefinirlmitesparalosvaloresdelospixels deunaimgenylospredecesoresdelaimgendereferenciaparadecidirsisegeneraunevento. FilterWidth/Height:paramejorarladeteccindeuneventovildoenZoneMinderseaplica otrasvariasfuncionesalosdatos.Laprimeradeestasfuncionesesunfiltroqueeliminatodoslos pixelsquenoparticipanenunbloquecontnuodeciertotamao.Estaopcinsiempreseexpresaen pixelydebeserrealmentepequeayunnmeroimpar.Tresocincoesunbuenvalorinicial. ZoneArea: estecamponotieneporqueserrellenado,essimplementeunareferenciatil

cuandosetrabajenpixelsdelreaseleccionada. Min/MaximumAlarmedArea:estosvaloresdefinenelminimoymximonmerodepixels que,siexcedensuumbral,generarnunaalarma.Silasunidadesestexpresadasenporcentajeesta ylassiguientesopcionessereferirnalprocentajedelaimgen,nodelaZona.Engeneralunvalor decerohacequelavariableseaignorada. Min/MaximunFilteredArea:sondosvaloresadicionalesqueespecificanellmitedepixels quecausarnunaalarmadespusdelprocesodefiltrado.Notienesentidoqueestereaseamayor quelaAlarmedArea. Min/MaximunBlobArea:enlafasedeanlisislospixelsquegeneranalarmasseagrupanen conjuntooBlobs.Estosconjuntospuedentenercualquierformaycualquiertamao.Estavariable nospermitedefinireltamaodelblobquegenerarunaalarma. Min/MaximumBlobs:especificaloslmitesparaelnmerodeblobsdetectados. Laconfiguracinquenosotroshemoselegidocmomsptimadespusdemultituddeensayos hasidolasiguiente:

7.3)VISUALIZACINDEMONITORES
LlegadosaestepuntoyadeberamostenerunoovariosmonitoresconunaovariasZonascada uno.Devueltaalaventanaprincipalveremosunalistaconnuestrosmonitores.Haciendoclicken unmonitorconcretosenosmostrarunanuevaventanaconunaimgenenvivodeesemonitory unalistadelosltimoseventoscapturados.Enelencabezadodeestanuevaventanatambinsenos permiteseleccionarotrasopcionescomoporejemplosideseamosverunstreamingdevdeoostills (secuenciasdeimgenesestticas).Tambinsenospermitecabmiarlaescaladelvdeo,modificar lascaractersticasdelaimgenendispositivoslocalesocerrarlaventana. Pordefecto,sihemosminimizadolaventana,ante una alarma esta saltar a primer plano. Es posible tambinconfigurarsonidosparaavisardeloseventos. Bajo el estatus encontramos una lista de eventos recientes,pordefectolosdiezltimos,perohaciendo click en All se nos dar la lista completa, y en Archive se nos dar una lista de los eventos archivados de este monitor. Haciendo click en el encabezadodecualquiercolumnasenosordenarnlos eventossiguiendoesecriterio. Desde aqu podemos tambin borrar los eventos. CadaeventovienecaracterizadoporunId,unnombre, elmomentoenelqueocurri,lalongituddelevento (incluyendoframesanterioresyposteriores),elnmero de frames que comprende el evento, el nmero de frames que contienen alarma, y finalemente una puntuacin. Lapuntuacines unvalor arbitrarioque representa el porcentaje de pixels de la zona que se agrupan en blobsreferenciadoalarazcuadradadel nmerodeblobs,divididoporeltamaodelazona. Estenmerotieneunvalormximodecien. Tambinesposiblevisualizartodoslosmonitoresdenuestrainstalacindeformasecuencialoal mismotiemposeleccionandodesdelaventanaprincipalCycleoMontagerespectivamente.

7.4)FILTRADODEEVENTOS
Lasotrascolumnasdelaventanaprincipalcontienenotrosdatostalescomolahora,da,semana ymesdelltimoeventos,ascomoeltotaldeloseventoarchivados.Hacerclickencualquierade lostotales,enAll,oenArchivenosllevaraunanuevaventanaconunalistadetodoslos eventosdeacuerdoconunfiltro.PorejemplosihacemosclickeneltotaldelacolumnaArchive se nos mostrarn todos los eventos archivados. Hemos filtrado los eventos mediante el patrn archivadonoarchivado. EnestanuevaventanapodemoshacerclickCreateNewFilter,loquenospermitircrearun nuevofiltroomodificarlosexistentes. Filtraresrealmentesimple;loprimeroquehayquehaceresseleccionarcuantasexpresiones vamosautilizar.Acontinuacinseleccionamosloquequeremosfiltrarydequmanera,incluyendo ademsunarelacinentrelascadenasdefiltrado(anduor). Existenvarioselementosdiferentesrelacionadosconuneventoquenospuedenayudarafiltrar; porejemplolafecha,elnmerodepixelsconalarma,elscore...paraobtenermsinformacin acerca del formato de las fechas se debe consultar la funcin strtotime, disponible en www.php.net/manual/en/function.strtotime.php.Elrestodeopcionessonbastantesintuitivas. SihacemosclickenSaveelsiguientecuadrodedialogonospermitirespecificarlasacciones allevaracaboanteuneventoquecumplaestecriteriodefiltrado,talescomoarchivarelarchivode vdeo,enviarunemail,etc.

Ennuestrocasohemoscreadounfiltroqueanteuneventoconmsde10framesdealarma realizarlassiguientesacciones: Archivarloseventos. Generarunvideoparaellos. SubirlasimgenesaunservidorFTP(Configuradoenelmenoptions/FTPdelaventana principal). Enviarunemailconlosdetallesyunlinkalvideoqueseguardtraslaalarma(Configuradoen elmenoptions/emaildelaventanaprincipal).

7.5)OPCIONESYUSUARIOS
DesdelaventanaprincipalpodemosaccederalaetiquetaOption,quenospermitemodificarla mayora de las opciones de configuracin de ZoneMinder. Para cada caracterstica existe un pequeocuadroexplicativoqueseahbrehaciendoclickenelsmbolodeinterrogacin?que aparecealladodecadauna. Hablaremosahoradeunadelasopcionesmsutilizadasyquevienedesactivadapordefecto:la opcindeusuarios.DentrodelaetiquetaSystemsiactivamoslacasillaZM_OPT_USE_AUTH, secrearunanuevapestaallamadaUsersquenospermitirdefinirusuariosysusprivilegios. En cualquier caso siempre es posible aadir passwords a las carpetas en nuestro servidor web medianteelarchivo.htaccess.

7.6)DISPOSITIVOSMVILES
ZoneMinder tiene la capacidad de funcionar en dispositivos porttiles tales como telfonos mvilesoPDAsmedianteWML.Apartirdelaversin1.20.0sehasustituidoesteestndarporel XHTMLMobileProfileascomoelHTML4.XHTMLMPesunaversinreducidaylimitadade XHTMLdiseadaparadispositivosporttiles. La interfaz XHTMLMP deZoneMinder nos permiteregistrarnos ennuestra instalacin va nuestro telfono mvil y realizar una serie de tareas limitadas, como por ejemplo ver eventos recientes,streamingdevdeo,etc. Paraactivaresteservicionosenecesitaunaconfiguracinextra,peroZoneMindernecesitasaber que tipo de contenidosuministrar,paralocualtenemos dosopciones: laprimeraeseditar el archivozm.phpeincluirunadefinicinquecorrespondaconnuestrotelfono,ylasegunda es utilizarunpaquetedecdigoabiertollamadoWURFL(disponibleenhttp://wurfl.sourceforge.net/).

También podría gustarte