Tasker Para hablar de todo lo relacionado con la aplicación tasker

Respuesta
 
Herramientas
  #41  
Viejo 24/02/17, 16:41:53
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
WillyWeb dijo:

"Procesar un JSON es muy sencillo. Necesitas una única acción de Tasker y tres o cuatro líneas de JavaScript."

Podrias echarnos un cable? (Lo más explícito possible 😊)

Enviat des del meu Nexus 5 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita


  #42  
Viejo 24/02/17, 16:58:59
Array

[xs_avatar]
Caravantes Caravantes no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Tu operador: Lowi
Hola.
Creo que Fus ha hecho un trabajo fantástico analizando y comentando esa API de OpenWeather... pero creo que me he perdido un poco porque no he visto una URL que me lleve a obtener una información como la que ha mostrado FUS.

Tampoco veo que hayáis comentado nada sobre cómo se gestiona (a través de la URL u otra técnica de la API) la ubicación y el tiempo (time) de la información pedida. O Sea: ¿Cómo de digo que quiero la situación climatológica actual para tal ubicación? ¿Cómo le digo que quiero la previsión para las próximas 5 horas?

Mitrhandir, me parece que te estás embalando hacia pasos posteriores (Qué hago con la devolución del API? Javascript? Ni idea.) cuando no se han resuelto estos pasos previos que estoy comentando... o al menos no los habéis explicado.

Mitrhandir, sigo sin ver un ejemplo del texto que quieres generar en la parte final de la tarea, para la acción Decir. Sin eso, se me hace difícil saber si la API nos aporta los datos que quieres usar, y menos aún saber cómo trocear la información obtenida.

> Quiero la temperatura actual, el tiempo actual (despejado, nublado, lloviendo, etc.. .) y la previsión meteorológica para las próximas 3/5 horas...
> Con lo de la previsión meteorológica me refiero a si va a llover, si va a hacer sol, etc...

¿Esta API te dice algo como "Va a llover" o "No va a llover"?
¿Esta API te dice algo como "Va a hacer sol" o "No va a hacer sol"?

Hay que analizar si esta API aporta los datos que quieres gestionar...
Porfa, pon un ejemplo del texto que quieres generar en la parte final de la tarea, para la acción Decir.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
  #43  
Viejo 24/02/17, 18:13:01
Array

[xs_avatar]
Mitrhandir Mitrhandir no está en línea
Usuario muy activo
 
Fecha de registro: ene 2014
Localización: Burrifornia
Mensajes: 910
Modelo de smartphone: Huawei Ascend G7
Tu operador: Yoigo
Tampoco veo que hayáis comentado nada sobre cómo se gestiona (a través de la URL u otra técnica de la API) la ubicación y el tiempo (time) de la información pedida. O Sea: ¿Cómo le digo que quiero la situación climatológica actual para tal ubicación? ¿Cómo le digo que quiero la previsión para las próximas 5 horas?

- Ni idea eso escapa a mi comprensión.

Mitrhandir, sigo sin ver un ejemplo del texto que quieres generar en la parte final de la tarea, para la acción Decir. Sin eso, se me hace difícil saber si la API nos aporta los datos que quieres usar, y menos aún saber cómo trocear la información obtenida.

-Lo sé y te pido disculpas. Pero al ser un tema absolutamente nuevo para mí, no sabía por dónde iban a ir los tiros.

La idea es que por las mañanas, cuando salga del modo silencio, la muy odiada por mi mujer, mi amiga Conchita me diga: Buenos días Javi. Estás en %Lugar, %hhh %mmm %ccc y estamos a %DAYW, %DATE. La temperatura es de %Temperatura grados, y el cielo está %Cielo. Se espera %Lluvia dentro de X tiempo ¡Que tengas un buen día!

Luego tengo pensado que la tarea se ejecute cada 3 horas (por ejemplo) y que si se aproximan lluvias, Conchita me avise (bueno, casi mejor una notificación, que ya me está mirando mal mi señora)

Luego, cuando llegue al curro y encienda la pantalla, que me diga: Buenas tardes y bienvenido al curro Javi. Estás en %Lugar, %hhh %mmm %ccc y estamos a %DAYW, %DATE. La temperatura es de %Temperatura grados, y el cielo está %Cielo. Se espera %Lluvia dentro de X tiempo ¡Que te sea leve!

¿Esta API te dice algo como "Va a llover" o "No va a llover"?
¿Esta API te dice algo como "Va a hacer sol" o "No va a hacer sol"?

-Pues sinceramente, Caravantes, no sabría decirte. Imagino que si no hay lluvia, devolverá un valor de 0 o espacio vacío y si la hay, devolverá un número del 0 al 100 a modo de porcentaje de probabilidad de lluvia.

Espero que mi respuesta te haya sido de utilidad.

Un saludo!

Por cierto, aquí dejo mi API: http://api.openweathermap.org/data/2...947cf05acce72f
__________________
Si la educación te parece cara, prueba con la ignorancia.

Última edición por Mitrhandir Día 24/02/17 a las 18:42:11.
Responder Con Cita
  #44  
Viejo 24/02/17, 18:59:55
Array

[xs_avatar]
Caravantes Caravantes no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Tu operador: Lowi
 Cita: Originalmente Escrito por Mitrhandir Ver Mensaje
> ¿Cómo le digo que quiero la situación climatológica actual para tal ubicación? ¿Cómo le digo que quiero la previsión para las próximas 5 horas?

- Ni idea eso escapa a mi comprensión.
Pues tendrás que estudiarte la documentación de la API para ver cómo se gestionan esos dos detalles.

 Cita: Originalmente Escrito por Mitrhandir Ver Mensaje
Buenos días Javi. Estás en %Lugar, %hhh %mmm %ccc y estamos a %DAYW, %DATE. La temperatura es de %Temperatura grados, y el cielo está %Cielo. Se espera %Lluvia dentro de X tiempo ¡Que tengas un buen día!
¿Ves? Con ese texto hemos averiguado varios detalles, alguno inesperado: Quieres el nombre del lugar, supongo que el municipio. La ubicación solo te da las coordenadas. Averiguar el nombre del lugar implica otro conjunto de acciones, o una subtarea.

En el post siguiente hay una subtarea llamada "UbicNombreSitio" que sirve precisamente para eso, para averiguar el nombre del sitio en función de las coordenadas obtenidas por la ubicación. Esa subtarea devuelve algo como "Calle Dulcinea, 45. 28020 Madrid", pero te será fácil adaptarla para sacar solo el nombre del municipio, o lo que quieras sacar.
http://www.htcmania.com/showpost.php...8&postcount=35

 Cita: Originalmente Escrito por Mitrhandir Ver Mensaje
Imagino que si no hay lluvia, devolverá un valor de 0 o espacio vacío y si la hay, devolverá un número del 0 al 100 a modo de porcentaje de probabilidad de lluvia.
Seguramente. O sea que tu texto de ejemplo habría que modificarlo más o menos así:

Buenos días Javi. Estás en MatalascabrasDelDuque. Son las siete treina del martes doce de febrero de 2017. La temperatura es de 11 grados, y el cielo está cubierto al 40 por ciento. Las posibilidades de lluvia ahora son de 20 por ciento; dentro de tres horas son del 50 por ciento. Que tengas un buen día.

Hay una parte que utiliza datos obtenidos de la API meteo: La temperatura es de 11 grados, y el cielo está cubierto al 40 por ciento. Las posibilidades de lluvia ahora son de 20 por ciento; dentro de tres horas son del 50 por ciento.

Hay otra parte que utiliza datos carentes de relación con la API meteo: Estás en MatalascabrasDelDuque. Son las siete treina del martes doce de febrero de 2017.

Finalmente, el texto final incluye también dos fragmentos fijos: Buenos días Javi. [...] Que tengas un buen día.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
Gracias de parte de:
  #45  
Viejo 24/02/17, 19:01:15
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por fus Ver Mensaje
Y lo de JS ya sé que es mucho más fácil, pero es que la app que yo uso no permite JavaScript (Automagic), y aún no he dado JS en mi grado así que ando perdido...
Tienes mucha información en la red. Yo suelo usar la de aquí...

https://www.w3schools.com/js/js_json_intro.asp

 Cita: Originalmente Escrito por cace0353 Ver Mensaje
Podrias echarnos un cable? (Lo más explícito possible 😊)
Supongamos que tienes el código JSON de esa respuesta del API en una variable local de Tasker ... %json

Supongamos que quieres saber la ciudad que aparece en la respuesta ... "city.name"

Añades una acción JavaScriptlet y pones esto...
obj = JSON.parse(json);
var city = obj.city.name;
En la siguiente acción de Tasker después de ejecutarse ese script tendrás disponible una variable local de nombre %city con el contenido de esa parte del JSON.

Creo que no se puede hacer más simple.

Y si me vas a preguntar de dónde me he sacado ese "city.name" ... de la documentación del API, naturalmente.

 Cita: Originalmente Escrito por Caravantes Ver Mensaje
... pero creo que me he perdido un poco porque no he visto una URL que me lleve a obtener una información como la que ha mostrado FUS.
La que han usado para esa "prueba de concepto" creo que ha sido esta...

http://api.openweathermap.org/data/2...098818c88cbd6b

 Cita: Originalmente Escrito por Caravantes Ver Mensaje
Tampoco veo que hayáis comentado nada sobre cómo se gestiona (a través de la URL u otra técnica de la API) la ubicación y el tiempo (time) de la información pedida. O Sea: ¿Cómo de digo que quiero la situación climatológica actual para tal ubicación? ¿Cómo le digo que quiero la previsión para las próximas 5 horas?
Los detalles de lo que este API permite hacer están aquí ...

http://www.openweathermap.org/api

 Cita: Originalmente Escrito por Caravantes Ver Mensaje
¿Esta API te dice algo como "Va a llover" o "No va a llover"?
¿Esta API te dice algo como "Va a hacer sol" o "No va a hacer sol"?
Más o menos.

Una vez "parseado" el JSON de la respuesta el objeto "list[0].weather[0].description" contiene valores del tipo "cielo claro".
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Los siguientes 2 usuarios han agradecido a WillyWeb su comentario:
  #46  
Viejo 24/02/17, 19:27:37
Array

[xs_avatar]
Mitrhandir Mitrhandir no está en línea
Usuario muy activo
 
Fecha de registro: ene 2014
Localización: Burrifornia
Mensajes: 910
Modelo de smartphone: Huawei Ascend G7
Tu operador: Yoigo
Sí no os importa, voy a transcribir aquí mi js (con la inestimable ayuda de K2 y L.L., que me lo han explicado paso a paso)

El http GET me devuelve esto:

{"city":{"id":2513700,"name":"Moncofar","coord":{" lon":-0.14701,"lat":39.809071},"country":"ES","populatio n":0,"sys":{"population":0}},"cod":"200","message" :0.003,"cnt":1,"list":[{"dt":1487970000,"main":{"temp":12.93,"temp_min":1 2.93,"temp_max":13.17,"pressure":1028.9,"sea_level ":1031.07,"grnd_level":1028.9,"humidity":100,"temp _kf":-0.24},"weather":[{"id":800,"main":"Clear","description":"cielo claro","icon":"01n"}],"clouds":{"all":0},"wind":{"speed":1.05,"deg":193 .503},"rain":{},"sys":{"pod":"n"},"dt_txt":"2017-02-24 21:00:00"}]}

y luego....

//cargamos los datos que nos ha devuelto en el entorno del scriptlet
var entrada = global('HTTPD');

//creamos un objeto vacio
var objJson = new Object();
//cargamos en el objeto los datos
objJson = JSON.parse(entrada);
//extraemos los datos que nos interesen
var nombre = objJson['city']['name'];
var maxdia = objJson['list'][0]['temp']['max'];
var minnoche = objJson['list'][0]['temp']['min'];
var descripcion = objJson['list'][0]['weather'][0]['description'];
//Sacamos las variables con la informacion
setGlobal('%Localidad',nombre);
setGlobal('%Maia',maxdia);
setGlobal('%MinDia',minnoche);
setGlobal('%Maia',maxdia);
setGlobal('%Descripcion',descripcion);

Quiero crear el código yo solo (para coger soltura, más que nada), pero la lío parda.

está visto que Javascriptlet es mi fuerte eh?
__________________
Si la educación te parece cara, prueba con la ignorancia.
Responder Con Cita
  #47  
Viejo 24/02/17, 19:45:08
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por Mitrhandir Ver Mensaje
//creamos un objeto vacio
var objJson = new Object();
No es imprescindible hacer eso. Sólo con la líneas del "JSON.parse" funciona igual.

 Cita: Originalmente Escrito por Mitrhandir Ver Mensaje
//extraemos los datos que nos interesen
var nombre = objJson['city']['name'];
var maxdia = objJson['list'][0]['temp']['max'];
var minnoche = objJson['list'][0]['temp']['min'];
var descripcion = objJson['list'][0]['weather'][0]['description'];
Esas líneas también las puedes escribir así...

var nombre = objJson.city.name;

Mucho más sencillo y fácil de leer/escribir.

 Cita: Originalmente Escrito por Mitrhandir Ver Mensaje
//Sacamos las variables con la informacion
setGlobal('%Localidad',nombre);
setGlobal('%Maia',maxdia);
setGlobal('%MinDia',minnoche);
setGlobal('%Maia',maxdia);
setGlobal('%Descripcion',descripcion);
Eso es innecesario. Las variables que creas en el bloque anterior (nombre, maxdia, etc...) ya son accesibles desde Tasker como variables locales (%nombre, %maxdia, etc...).

Este código JS hace exactamente lo mismo que el que has puesto pero sin crear variables globales...

Código:
//pasamos la variable global HTTPD al entorno del scriptlet
var json = global('HTTPD');

//creamos un objeto con los datos JSON
obj = JSON.parse(json);

//extraemos los datos que nos interesen
var nombre = obj.city.name;  
var maxdia = obj.list[0].temp.max;
var minnoche = obj.list[0].temp.min;
var descripcion = obj.list[0].weather[0].description;
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)

Última edición por WillyWeb Día 24/02/17 a las 21:02:34.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a WillyWeb su comentario:
  #48  
Viejo 24/02/17, 21:24:46
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Viendo la URL que estáis usando con más calma ...

http://api.openweathermap.org/data/2.5forecast/daily

... me estoy dando cuenta de que es de este API ...

http://www.openweathermap.org/forecast16

... que proporciona la predicción de hasta 16 días.

Para lo que querías hacer creo que es mejor esta otra ...

http://www.openweathermap.org/forecast5

... que proporciona predicciones de hasta 5 días cada 3 horas.

En cambio de URL es muy simple ...

http://api.openweathermap.org/data/2.5forecast

... y el del código JS tampoco es complicado ...

var maxdia = obj.list[0].temp.max; (antes)

var maxdia = obj.list[0].main.temp_max; (ahora)
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
  #49  
Viejo 24/02/17, 22:41:28
Array

[xs_avatar]
fus fus no está en línea
Usuario muy activo
 
Fecha de registro: dic 2010
Localización: Polsovia
Mensajes: 1,503
Modelo de smartphone: Samsung Galaxy Nexus
Tu operador: Vodafone
 Cita: Originalmente Escrito por WillyWeb Ver Mensaje

... que proporciona predicciones de hasta 5 días cada 3 horas.

En cambio de URL es muy simple ...

http://api.openweathermap.org/data/2.5forecast

... y el del código JS tampoco es complicado ...

var maxdia = obj.list[0].temp.max; (antes)

var maxdia = obj.list[0].main.temp_max; (ahora)

Es la que hemos estado utilizando, el problema con la de 3 horas, es que creo que no da las máximas del día, y era lo que en un principio quería mi peor pesadilla mith, por lo que opte por usar la predicción diaria.
Y el JS estaba un poco más desarrollado porque no tenía ni idea de JavaScript yo, el ya tenía ese código que se lo había pasado alguien, y hemos hecho lo que buenamente hemos podido

Y lo que comenta caravantes, la api te devuelve el nombre de la localidad en la que estás y la hora de la predicción, la hora actual, pues tasker la puede dar tranquilamente el mismo..


Y con todo esto creo que la consulta quedaría medio cerrada, a falta de que conchita diga lo que tiene que decir

Un saludo

Edit: Acabo de mirar la documentación de la API, y la predicción para las 3 horas no da las máximas, el valor temp_max es útil sólo para ciudades muy grandes en las que la temperatura pueda variar entre una zona y otra
Código:
list.main.temp Temperature. Unit Default: Kelvin, Metric: Celsius, Imperial: Fahrenheit.
list.main.temp_min Minimum temperature at the moment of calculation. This is deviation from 'temp' that is possible for large cities and megalopolises geographically expanded (use these parameter optionally). Unit Default: Kelvin, Metric: Celsius, Imperial: Fahrenheit.
list.main.temp_max Maximum temperature at the moment of calculation. This is deviation from 'temp' that is possible for large cities and megalopolises geographically expanded (use these parameter optionally). Unit Default: Kelvin, Metric: Celsius, Imperial: Fahrenheit.
__________________
Tutorial sobre el mundo de las roms GNexus
Las OTA's llevan a la ira, la ira lleva al flaseo, el flaseo lleva al lado oscuro de Android.

Última edición por fus Día 24/02/17 a las 22:43:53.
Responder Con Cita
Gracias de parte de:
  #50  
Viejo 24/02/17, 23:02:29
Array

[xs_avatar]
Mitrhandir Mitrhandir no está en línea
Usuario muy activo
 
Fecha de registro: ene 2014
Localización: Burrifornia
Mensajes: 910
Modelo de smartphone: Huawei Ascend G7
Tu operador: Yoigo
Ya sabes, a mí o se me quiere o se me odia... Pero tu peor pesadilla @fus?

A ver, estoy utilizando esta url : http://api.openweathermap.org/data/2...947cf05acce72f

Y tengo como archivo de salida weather.txt el cual me arroja todo esto:


{"city":{"id":2513700,"name":"Moncofar","coord":{" lon":-0.14701,"lat":39.809071},"country":"ES","populatio n":0},"cod":"200","message":0.0916,"cnt":1,"lis t":[{"dt":1487937600,"temp":{"day":6.92,"min":4.4,"max ":6.92,"night":4.4,"eve":6.92,"morn":6.92},"pressu re":983.35,"humidity":63,"weather":[{"id":800,"main":"Clear","description":"cielo claro","icon":"01n"}],"speed":2.95,"deg":326,"clouds":0}]}


Ahora bien (y aquí es donde me vuelvo loco) yo quiero sacar a relucir toda la información posible.

Luego edito, que voy a probar.

Edito: en la acción javascript estoy usando esto:

var json = global('HTTPD');
obj = JSON.parse(json);
var nombre = obj.city.name; var maxdia = obj.list[0].temp.max; var minnoche = obj.list[0].temp.min; var descripcion = obj.list[0].weather[0].description;
@WillyWeb tenía toda la razón. Más limpio y más fácil de leer.

Ahora voy a intentar yo solo extraer todos los datos que faltan.

Edito: var json = global('HTTPD');
obj = JSON.parse(json);
var nombre = obj.city.name; var maxdia = obj.list[0].temp.max; var minnoche = obj.list[0].temp.min; var descripcion = obj.list[0].weather[0].tiempo;
obj.list[0].pressure[0].presion;
obj.list[0].humidity[0].humedad;
obj.list[0].weather[0].tempus;
obj.list[0].speed[0].velocidad;
obj.list[0].clouds[0].nubes;

He añadido los últimos, pero no acierto a escribir bien el código.

Edito otra vez : var json = global('HTTPD');
obj = JSON.parse(json);
var nombre = obj.city.name;
var maxdia = obj.list[0].temp.max;
var minnoche = obj.list[0].temp.min;
var descripcion = obj.list[0].weather;
var presion = obj.list[0].pressure;
var humedad = obj.list[0].humidity;
var tempus = obj.list[0].weather;
var velocidad = obj.list[0].speed;
var nubes = obj.list[0].clouds;

Creo que ahora está bien, pero no furula!
__________________
Si la educación te parece cara, prueba con la ignorancia.

Última edición por Mitrhandir Día 25/02/17 a las 00:05:10.
Responder Con Cita
  #51  
Viejo 25/02/17, 08:33:12
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por Mitrhandir Ver Mensaje
A ver, estoy utilizando esta url : http://api.openweathermap.org/data/2...947cf05acce72f

Y tengo como archivo de salida weather.txt el cual me arroja todo esto:

{"city":{"id":2513700,"name":"Moncofar","coord" :{" lon":-0.14701,"lat":39.809071},"country":"ES","populatio n":0},"cod":"200","message":0.0916,"cnt":1,"lis t":[{"dt":1487937600,"temp":{"day":6.92,"min":4.4," max ":6.92,"night":4.4,"eve":6.92,"morn":6.92},"pr essu re":983.35,"humidity":63,"weather":[{"id":800,"main":"Clear","description":"cielo claro","icon":"01n"}],"speed":2.95,"deg":326,"clouds":0}]}

Ahora voy a intentar yo solo extraer todos los datos que faltan.

var json = global('HTTPD');
obj = JSON.parse(json);
var nombre = obj.city.name; var maxdia = obj.list[0].temp.max; var minnoche = obj.list[0].temp.min; var descripcion = obj.list[0].weather[0].tiempo;
obj.list[0].pressure[0].presion;
obj.list[0].humidity[0].humedad;
obj.list[0].weather[0].tempus;
obj.list[0].speed[0].velocidad;
obj.list[0].clouds[0].nubes;

He añadido los últimos, pero no acierto a escribir bien el código.

var json = global('HTTPD');
obj = JSON.parse(json);
var nombre = obj.city.name;
var maxdia = obj.list[0].temp.max;
var minnoche = obj.list[0].temp.min;
var descripcion = obj.list[0].weather;
var presion = obj.list[0].pressure;
var humedad = obj.list[0].humidity;
var tempus = obj.list[0].weather;
var velocidad = obj.list[0].speed;
var nubes = obj.list[0].clouds;

Creo que ahora está bien, pero no furula!
Normal. No has respetado la estructura que tienen esos datos. Tienes que estudiar la documentación y ver la forma de ese "árbol" de resultados.

Puede que esto te ayude...

http://codebeautify.org/jsonviewer

Copia el código JSON en la ventana de la izquierda y pulsa el botón "Tree Viewer". En la ventana de la derecha aparecerá una representación en forma de árbol en la que se aprecia mucho mejor la dependencia de cada elemento. Mira qué valor de interesa y recorre el árbol desde arriba hasta llegar a él.

Esos [0] sólo los tienes que poner detrás de valores de los que cuelga un "0".

var descripcion = obj.list[0].weather[0].description;

Y no los tienes que poner si no hacen falta...

var nombre = obj.city.name;

Si ese visor note gusta prueba con estos...

http://www.jsoneditoronline.org
http://jsonviewer.stack.hu

Y por cierto, no es necesario que guardes el resultado en un archivo (weather.txt) que luego no usas para nada. Lo que pasas al script es la variable %HTTPD, no el archivo.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Los siguientes 2 usuarios han agradecido a WillyWeb su comentario:
  #52  
Viejo 25/02/17, 08:56:45
Array

[xs_avatar]
Mitrhandir Mitrhandir no está en línea
Usuario muy activo
 
Fecha de registro: ene 2014
Localización: Burrifornia
Mensajes: 910
Modelo de smartphone: Huawei Ascend G7
Tu operador: Yoigo
Buenas!

He probado las 3 webs que comentas y la más amigable es la última (recuerda que lo hago todo con el móvil).

Para mí esto es muy nuevo! Sé lo que quieres decirme, pero ten en cuenta de que enfrente tienes a un tío que jamás ha tocado nada sobre programación, así que, mon ami, dame cuartel!
__________________
Si la educación te parece cara, prueba con la ignorancia.
Responder Con Cita
  #53  
Viejo 25/02/17, 09:09:13
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Vaaale, guardaré el látigo.

¿Eres capaz de seguir la estructura de los datos?

¿Ves claro cómo se llega hasta "description", por ejemplo? (obj.list[0].weather[0].description)
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Los siguientes 3 usuarios han agradecido a WillyWeb su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
  #54  
Viejo 25/02/17, 10:04:38
Array

[xs_avatar]
Mitrhandir Mitrhandir no está en línea
Usuario muy activo
 
Fecha de registro: ene 2014
Localización: Burrifornia
Mensajes: 910
Modelo de smartphone: Huawei Ascend G7
Tu operador: Yoigo
Te lo diré con 2 letras: no

Esto es como si me voy a EE. UU. y me viene una rubia despampanante diciéndome "Follow-me". Y hago lo que yo entiendo o me parece entender.

Y sí, soy un completo neófito y lerdo (hoy menos que ayer) , pero el único que se atreve a preguntar, porque entiendo que el que pregunta, es tonto 5 minutos, pero el que no pregunta, aunque lea los tutoriales, es tonto toda la vida. (sin ánimo de ofender, hablo por mí)

Entonces, cuando me habláis de js, de JSON, de API'S, etc... ,me entra dolor de cabeza. Pero con las variables me pasaba lo mismo y mira hoy.

Sé que la mayoría sois informáticos, y lo que vosotros dáis por hecho, para los neófitos como yo, se nos hace muy cuesta arriba.

Un saludo!
__________________
Si la educación te parece cara, prueba con la ignorancia.
Responder Con Cita
  #55  
Viejo 25/02/17, 10:26:16
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
Estoy haciendo pruebas con el Api de Openweathermap.

Bajo el epígrafe dt: hay la fecha/hora en formato segundos, como %TIMES.
Extraigo su valor mediante

var dia = obj.list[0].dt;

Luego utilizo una acción Convertir Variable para pasarla a formato fecha/hora comprensible (hay varias opciones)

Ahora bién, el valor de la variable %dia (para hoy es 1488024000) no cambia durante todo el día (lo comprobé ayer) y devuelve como hora las 13:00.

La pregunta: ¿quiere esto decir que no hay actualización a lo largo del día?

Lo comento porque el xml de Aemet creo se va actualizando. Si es así, el "ajuste" de las previsiones puede ser más preciso.

Estaré comprobando y cotejando resultados algunos días y ya os contaré…

Mientras tanto aprendo a hacer nuevas cosas con Javascript!


Enviat des del meu SM-T550 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...

Última edición por cace0353 Día 25/02/17 a las 10:30:32.
Responder Con Cita
  #56  
Viejo 25/02/17, 11:06:17
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Supongamos que partimos de estos datos en formato JSON...

Código:
{"city":{"id":2513700,"name":"Moncofar","coord" :{" lon":-0.14701,"lat":39.809071},"country":"ES","populatio n":0},"cod":"200","message":0.0916,"cnt":1,"lis t":[{"dt":1487937600,"temp":{"day":6.92,"min":4.4," max ":6.92,"night":4.4,"eve":6.92,"morn":6.92},"pr essu re":983.35,"humidity":63,"weather":[{"id":800,"main":"Clear","description":"cielo claro","icon":"01n"}],"speed":2.95,"deg":326,"clouds":0}]}
Si los metemos en uno de esos visores que te he pasado antes verás su organización (la misma que está descrita con detalle en la documentación) en forma de árbol desplegable al estilo de la típica estructura de carpetas.

Si quieres obtener el nombre de la ciudad tiene que recorrer ese árbol desde su origen (object) hasta al valor que te interesa (name) como si fueses abriendo carpetas una detrás de otra...

ciudad=object.city.name

json1.png

Simplemente tienes que poner el nombre de cada rama de ese árbol separada con un punto.

Supongamos que ahora quieres saber la temperatura máxima (max)...

temp_max=object.list[0].temp.max

json2.png

Igual que antes se recorre el árbol desde su origen hasta el valor que te interesa separando cada rama con un punto. Lo único que cambia ahora es ese "list[0]". Si te fijas bien verás que detrás de "list" tienes un número entre corchetes "[1]". Eso indica que esa rama puede tener más de un bloque de datos colgando de ella y que en este caso sólo tiene 1. Esos bloques de datos se organizan como un array, y la forma de hacer referencia a cada elemento de un array es poner su número de índice entre corchetes. El número de índice del primer bloque de datos es ese "0" que cuelga de "list", lo que resulta en que esa rama será "list[0]", la siguiente sería "list[1]", y así sucesivamente.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Los siguientes 3 usuarios han agradecido a WillyWeb su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
  #57  
Viejo 25/02/17, 11:12:06
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
La pregunta: ¿quiere esto decir que no hay actualización a lo largo del día?
Si estás usando el API de previsiones hasta 16 días puede ser...

http://www.openweathermap.org/forecast16

En cambio, el API de previsiones hasta 5 días...

http://www.openweathermap.org/forecast5

...se actualiza cada 3 horas.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Los siguientes 2 usuarios han agradecido a WillyWeb su comentario:
  #58  
Viejo 25/02/17, 11:20:19
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
Si estás usando el API de previsiones hasta 16 días puede ser...

http://www.openweathermap.org/forecast16

En cambio, el API de previsiones hasta 5 días...

http://www.openweathermap.org/forecast5

...se actualiza cada 3 horas.
Lo siento, lo acabo de probar y me devuelve la misma hora: las 13:00 de hoy, o sea: dentro de una hora y 50 minutos (?)!
Ya veo que habrá que probar con WU o quedarme con la kilométrica tarea clásica que ya tengo hecha para el htnl de Aemet…
Enviat des del meu Nexus 5 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...

Última edición por cace0353 Día 25/02/17 a las 11:22:55.
Responder Con Cita
  #59  
Viejo 25/02/17, 11:55:33
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
Lo siento, lo acabo de probar y me devuelve la misma hora: las 13:00 de hoy...
Pues me temo que has interpretado mal la documentación. Prueba esta URL...

http://api.openweathermap.org/data/2...947cf05acce72f

Son 20 predicciones a intervalos de 3 horas y la primera es para las 12:00 de hoy (ahora son las 11:55).
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Los siguientes 2 usuarios han agradecido a WillyWeb su comentario:


  #60  
Viejo 25/02/17, 12:48:51
Array

[xs_avatar]
cace0353 cace0353 no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
Gracias @WillyWeb!

He exportado %HTTPD con el formato que propones (con cnt=20) a un archivo de texto y he visto que hay varios "dt".
Tendré que rehacer el JS…!

Enviat des del meu Nexus 5 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...

Última edición por cace0353 Día 25/02/17 a las 12:55:12.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Otro software para Android > Tasker



Hora actual: 17:36:20 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /