leer xml de web


([N3] monetizeware) #1

Hola:

Tengo una pagina interna que sirve el siguiente xml:

http://192.168.1.74

<sensores>
<sensor1>on</sensor1>
<sensor2>off</sensor2>
<sensor3>on</sensor3>
<sensor4>off</sensor4>
<sensor5>on</sensor5>
<sensor6>on</sensor6>
</sensores>

Necesito parsear cada valor y asignarlo a una variable.

Para esto quero descargar el xml y luego parsearlo:

set(url,“http://192.168.1.74
set(carpeta,tempPath())
Get fichero de Url (url,carpeta+"//sensores.xml",ok)

Pero no logro que me guarde nada.

Me pueden ayudar por favor a ver que puede estar mal?

Gracias,


([N1] wikan) #2

No pongas dos barras, carpeta + “/sensores.xml”
Incluso comprueba si tempPath() devuelve la carpeta terminada en barra o no por si acaso.


([N3] monetizeware) #3

Hola Manuel:

Comprobe el path y sale:

C:/Users/Gls/AppData/Local/Temp

Reviso esa carpera pero no aparece nada. La he cambiado por otras sendas y tampoco me ha funcionado.

La verdad no se, si la instruccion Get fichero de Url funciona bien.

gracias,


([N3] pacosatu) #4

Hola monetizeware

El comando set(url,”http://192.168.1.74″) no me cuadra.

¿ No será la url = http://192.168.1.74/sensores.xml ?

Prueba antes la Url en un explorador de Internet y comprueba que devuelve correctamente el String XML.

Saludos
Paco Satué


([N3] monetizeware) #5

Hola Paco:

Muchas gracias por la ayuda.

Lo que estoy haciendo es utilizando una tarjeta wifi WEMOS D1 para servir un xml.

http://www.esp8266learning.com/wemos-webserver-example.php.

Cuando entro a la URL en el explorador de internet o en un control HTML de velneo, la sirve correctamente, se puede visualizar bien. He ensayado servir HTMl y funciona también correctamente.

Lo que pretendo hacer ya que con esta tarjeta puedo servir XML o Html es parsear esa información y guardarla en variables en Velneo.

He intentado usar Get fichero de url o tambien xmlhttprequest, pero no hace nada. Si cambio la url http://192.168.1.74/ por “http://www.google.com” funciona bien.

No se si sea la forma como contruyo el HTMl, que no lo interpreta bien velneo, aunque con el explorador se ve correctamente:

client.println("<html>");
client.println("<meta http-equiv=“Content-Type” content=“text/html; charset=utf-8”>");
client.println ("</head>");
client.println("<body>");
client.println("<h1 align=‘center’>Prueba de Sensores</h1>");

if(digitalRead(HALL1)==HIGH)
{
client.println("<body>

<p>On</p><p>");
}
else
{
client.println("<body>
<p>OFF</p><p>");
}

if(digitalRead(HALL2)==HIGH)
{
client.println("<body>

<p>On</p><p>");
}
else
{
client.println("<body>
<p>Off</p><p>");
}

if(digitalRead(HALL3)==HIGH)
{
client.println("<body>

<p>On</p><p>");
}
else
{
client.println("<body>
<p>OFF</p><p>");
}

if(digitalRead(HALL4)==HIGH)
{
client.println("<body>

<p>On</p><p>");
}
else
{
client.println("<body>
<p>OFF</p><p>");
}

if(digitalRead(HALL5)==HIGH)
{
client.println("<body>

<p>On</p><p>");
}
else
{
client.println("<body>
<p>Off</p><p>");
}

if(digitalRead(HALL6)==HIGH)
{
client.println("<body>

<p>On</p><p>");
}
else
{
client.println("<body>
<p>Off</p><p>");
}
client.println("
");
client.println("<br />");
}    }

Saludos,

Mauricio.


([N3] pacosatu) #6

Hola monetizeware.

Velneo no tiene que interpretar ningún HTML, simplemente guarda en el fichero lo que recibe del servidor Http de la placa Wifi con los sensores.

Si en el explorador funciona, también debe hacerlo con el comando Get fichero de Url, al fin y al cabo todo son peticiones HTTP y no tiene mayor misterio.

Usa la clase del Api XmlHttpRequest y haz un proceso de depuración para ver qué obtienes en la propiedad ResponseText.

Saludos
Paco Satué


([N3] monetizeware) #7

Hola Paco tenes razon, con el html.

El response text me da error 2.

2 = El servidor remoto ha cerrado la conexión, antes de que la petición fuera recibida y procesada.

En el explorador lo que noto es que tiene un cierto retardo en la carga de las lecturas.

Voy a revisar el codigo de arduino a ver que puedo hacer.

Muchas gracias !!!