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

Respuesta
 
Herramientas
  #61  
Viejo 25/02/17, 17:41:17
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
Oh! Muchas gracias @WillyWeb! Muy clarificador! Eres la caña!

Ahora veo que estaba codificado mal. "Temp" es una carpeta y "Weather" es otra.

De verdad. Gracias!
__________________
Si la educación te parece cara, prueba con la ignorancia.
Responder Con Cita


  #62  
Viejo 25/02/17, 23:00:18
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 WillyWeb Ver Mensaje
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...
Muchísimas gracias, Willy. No tenía ni idea de lo que era el formato JSON, pero creo que ya entiendo los aspectos más importantes. Tampoco tenía nociones sobre el funcionamiento de una API, y también me estoy enterando bastante. Gracias.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
Gracias de parte de:
  #63  
Viejo 26/02/17, 07:30:57
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
var json = global('HTTPD');
obj = JSON.parse(json);
var lugar = obj.city.name;
var ahora = obj.list.temp.day;
var minnoche = obj.list.temp.min;
var maxdia = obj.list.temp.max;
var noche = obj.list.temp.night;
var tarde = obj.list.temp.eve;
var mañana = obj.list.temp.morn;
var presion = obj.list.temp.pressure;
var humedad = obj.list.temp.humidity;
var tempus = obj.list.temp.weather;
var velocidad = obj.list.temp.speed;
var direccion = obj.list.temp.deg;
var nubes = obj.list.temp.clouds;



Definitivamente, soy idiota. El fallo seguro que es una tontería!

Sé que son los corchetes!
__________________
Si la educación te parece cara, prueba con la ignorancia.

Última edición por Mitrhandir Día 26/02/17 a las 07:38:55.
Responder Con Cita
  #64  
Viejo 26/02/17, 09:23:24
Array

[xs_avatar]
WillyWeb WillyWeb está en línea ahora
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
El fallo seguro que es una tontería! ... Sé que son los corchetes!
Pues sí, faltan corchetes. Los elementos "list" y "weather" los llevaban, al menos en los JSON que he visto hasta ahora. Y también parece que te has perdido en el árbol de datos. Deberías repasar mi mensaje #56 (el de las imágenes).

Si sigues usando el API "Call 16 day / daily forecast data", esto debería funcionar...

Código:
json = global('HTTPD');
obj = JSON.parse(json);

var lugar = obj.city.name;

var ahora = obj.list[0].temp.day;
var minnoche = obj.list[0].temp.min; 
var maxdia = obj.list[0].temp.max;
var noche = obj.list[0].temp.night;
var tarde = obj.list[0].temp.eve;
var mañana = obj.list[0].temp.morn;

var presion = obj.list[0].pressure;
var humedad = obj.list[0].humidity;

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

var velocidad = obj.list[0].speed;
var direccion = obj.list[0].deg;
var nubes = obj.list[0].clouds;
Compara ese código con el árbol siguiente y mira si ves claro cómo sacar todos los valores...

json0.png
__________________
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 26/02/17 a las 11:14:11.
Responder Con Cita
Gracias de parte de:
  #65  
Viejo 26/02/17, 16:11:49
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
Hola, estoy haciendo pruebas y creo que acabo de descubrir el "misterio de Moncófar":

Estoy en Barcelona, barrio de Gràcia y en "city" me devuelve "el Clot" que es un barrio relativamente lejano. Conclusión que deduzco: en city está la ubicación de la estación metereológica que proporciona los datos...

Otra observación: los grados los devuelve con dos decimales (es una previsión basada en datos estadísticos). Casi que convendria simplificar los valores redondeando. Para ello basta con pedir en todas las extracciones de datos con decimales que no interesan que redondee los valores así:

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

Finalmente: ahora, con sol y sin una nube, me da una humedad relativa del 100% (no creo que estemos por encima del 65% realmente). Es un error de la estación ó no se trata de un valor porcentual como lo usamos habitualmente (en otra escala)?

Saludos!
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
Los siguientes 2 usuarios han agradecido a cace0353 su comentario:
  #66  
Viejo 26/02/17, 17:48:50
Array

[xs_avatar]
WillyWeb WillyWeb está en línea ahora
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
... Conclusión que deduzco: en city está la ubicación de la estación metereológica que proporciona los datos...
La documentación del API no lo aclara, aunque se podría interpretar que "city" tiene el nombre de la ubicación "precisa" de la predicción.

Deberías comparar las coordenadas que envías en la URL con las del resultado. Si estás usando la ubicación por RED es posible que estés enviando la posición de una antena de telefonía que no coincida exactamente con el sitio en el que está el dispositivo.

También podrías ubicarte por GPS y comparar resultados.

 Cita: Originalmente Escrito por cace0353 Ver Mensaje
... los grados los devuelve con dos decimales (es una previsión basada en datos estadísticos).
No veo nada en la documentación sobre que sean datos estadísticos. En todas partes pone que son datos obtenidos de estaciones.

 Cita: Originalmente Escrito por cace0353 Ver Mensaje
Casi que convendria simplificar los valores redondeando...

var maxdia = Math.round(obj.list[0].main.temp_max);
Pues sí.

 Cita: Originalmente Escrito por cace0353 Ver Mensaje
... me da una humedad relativa del 100% ... Es un error de la estación ó no se trata de un valor porcentual como lo usamos habitualmente (en otra escala)?
Según la documentación ... Humidity, %
__________________
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 ]
  #67  
Viejo 26/02/17, 18:13:59
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 "No veo nada en la documentación sobre que sean datos estadísticos. En todas partes pone que son datos obtenidos de estaciones. "

Son previsiones para horas futuras… no puede haber datos de estación!

Por antenas, en otra aplicación que tengo, también con %LOCN me está situando correctamente con nombre de calle y n° correcto… Piensa que %LOCN no devuelve la posición de ninguna antena sino la tuya estimada, por triangulacion de las antenas que te tienen "pillado". La precisión normal, en zonas urbanas és del orden de 20 a 40 m.

Lo de la humedad, pues, debe ser un error de la estación: estamos con sol y sin nubes. No puede haber una humedad del 100%!!!

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 26/02/17 a las 18:38:07.
Responder Con Cita
  #68  
Viejo 26/02/17, 18:30:43
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
02 (62)
A1: Obtener ubicación [ Origen:Red datos Cuenta atrás (segundos):10 Continuar tarea inmediatamente:Apagado Mantener Seguimiento:Apagado Continuar Tarea Tras Error:Encendido ]
A2: Establecer variable [ Nombre:%pos A:%LOCN Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A3: Separar variable [ Nombre:%pos Separador:, Eliminar base:Apagado ]
A4: HTTP Get [ Servidor:Puerto:http://api.openweathermap.org/data/2...=metric&appid= Ruta: Atributos: Cookies: User Agent: Cuenta atrás:10 Tipo Mime: Archivo de salida: Confiar en cualquier Certificado:Apagado Continuar Tarea Tras Error:Encendido ]
A5: JavaScriptlet [ Código:json = global('HTTPD');
obj = JSON.parse(json);

var lugar = obj.city.name;

var ahora = Math.round(obj.list[0].temp.day);
var minnoche = Math.round(obj.list[0].temp.min);
var maxdia = Math.round(obj.list[0].temp.max);
var noche = Math.round(obj.list[0].temp.night);
var tarde = Math.round(obj.list[0].temp.eve);
var mañana = Math.round(obj.list[0].temp.morn);

var presion = Math.round(obj.list[0].pressure);
var humedad = obj.list[0].humidity;

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

var velocidad = Math.round(obj.list[0].speed);
var direccion = obj.list[0].deg;
var nubes = obj.list[0].clouds; Librerías: Salida Automática:Encendido Cuenta atrás (segundos):45 ]

Aquí dejo mi tarea. Ahora me gustaría saber qué es cada cosa. Porque estoy hecho un lío. Porque la predicción no la veo.

Sí pongo %Mindia o %Maxdia, perfecto, pero si pongo %mindia o %maxdia no hay tu tía. Porque las demás variables son locales.


Pero estoy contento!
__________________
Si la educación te parece cara, prueba con la ignorancia.
Responder Con Cita
  #69  
Viejo 26/02/17, 18:49:15
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
Prueba a guardar los datos en una variable local p.e. %prevision dándole sentido para ser leído:
Establecer Variable %prevision A:"Previsión metereológica para %lugar. Temperatura actual de %hora grados. Máxima de %maxdia grados. Humedad del %humedad. etc etc"

Y, a continuación, metes una acción Decir y, en texto, escribes %prevision y disfruta!

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 26/02/17 a las 18:51:34.
Responder Con Cita
  #70  
Viejo 26/02/17, 20:45:35
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
Aquí dejo mi tarea. Ahora me gustaría saber qué es cada cosa. Porque estoy hecho un lío.
Esto es muy sorprendente: ¿haces una tarea y no sabes qué es cada cosa que has puesto? ¿Estás programando a lo loco para ver si suena la flauta de casualidad?

Para que sepas lo que es cada cosa, y por qué se hace cada cosa... tienes que hacer lo siguiente, como ya te dije:

A) Haz un esquema previo de la tarea, o un diagrama de flujo, o un diagrama o un borrador (llámalo como quieras).

B) Haz una lista detallada de las variables que vas a usar, con sus nombres y pensando bien la información que contendrá cada variable.

Hasta que no tengas esos dos pasos, no deberías comenzar a codificar las acciones de la tarea definitiva. Puedes hacer pequeñas tareas de prueba para ir viendo cómo resolver uno u otro paso, pero eso serían solo partes del aprendizaje, no la tarea final.

Hay quien tiene suficiente organización mental como para hacer los pasos A y B (esquema y variables) en su propia cabeza, sin necesidad de ponerlos por escrito. Esas personas pueden comenzar a codificar acciones desde el primer momento. Pero esas personas nunca dirán que "me gustaría saber qué es cada cosa, estoy hecho un lío".

Tú no tienes esa facilidad para organizarte mentalmente, y es por eso que necesitas concretar el plan paso a paso y poniéndolo todo por escrito. Pero tienes serias dificultades para hacerlo de forma disciplinada, te vence el impulso y las ganas de llegar a la meta. Vale, también es posible ir improvisando y haciendo las cosas al tun tun (ensayo y error), pero eso no es lo que pedías en el primer post de este hilo. Céntrate porfa. Y ten paciencia. Verás que el resultado es mejor.
Creo.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
Gracias de parte de:
  #71  
Viejo 26/02/17, 21:10:02
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
Quizás no me he explicado bien!

No me refería al tema de codificar. Jolín, me siento mal por no haber dado más detalles.

Me refería a qué es cada cosa. Me explico:

var lugar = obj.city.name;
Yo sé que esto de refiere al lugar donde estoy.

Ahora bien, esta línea es muy ambigua
var ahora = Math.round(obj.list[0].temp.day);
A qué se refiere? A la temperatura actual? La temperatura media del día?

var minnoche = Math.round(obj.list[0].temp.min); Esta la tengo clara.
var maxdia = Math.round(obj.list[0].temp.max); Esta también.
var noche = Math.round(obj.list[0].temp.night); Esta habla de noche. Pero de qué noche? La actual? La de ayer? De la que viene? Lo mismo para las de abajo.
var tarde = Math.round(obj.list[0].temp.eve);
var mañana = Math.round(obj.list[0].temp.morn);

var presion = Math.round(obj.list[0].pressure); Esta la sé.
var humedad = obj.list[0].humidity; Esta también la sé.

var tiempo = obj.list[0].weather[0].description; Esta es la predicción? El estado del cielo?

var velocidad = Math.round(obj.list[0].speed); velocidad del viento
var direccion = obj.list[0].deg; dirección de las nubes.
var nubes = obj.list[0].clouds; cantidad de nubes.

Pregunto esto porque antes de ponerme a hacer más tarea, quiero tener bien claro lo que es cada cosa.

He aprendido mucho gracias a vuestra ayuda! Eso es impagable! Ahora falta aún mucho por hacer!

Un saludo y te pido disculpas @Caravantes por no haberme explicado lo bastante bien.

Un saludo!
__________________
Si la educación te parece cara, prueba con la ignorancia.
Responder Con Cita
Gracias de parte de:
  #72  
Viejo 26/02/17, 21:14:30
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
En %direccion tienes la dirección del viento (0° = Norte) !

Enviat des del meu Nexus 5 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
  #73  
Viejo 26/02/17, 21:28:27
Array

[xs_avatar]
Xcso Xcso no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Localización: Zierzoland
Mensajes: 111
Modelo de smartphone: Nokia 3650
Tu operador: Jazztel
El problema de openweather y de otras es de donde saca la info de la estación más cercana, un ejemplo:

Para Moncofar ¿Lo saca de Castellon de la Plana?

https://openweathermap.org/weatherma...0.2348&zoom=10

https://openweathermap.org/city/2513700

La api da 100% humedad mientras en la consulta da el dato correcto.

Un saludo.

Última edición por Xcso Día 26/02/17 a las 21:30:00. Razón: Añadir + info
Responder Con Cita
  #74  
Viejo 26/02/17, 21:30:58
Array

[xs_avatar]
WillyWeb WillyWeb está en línea ahora
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
Aquí dejo mi tarea. Ahora me gustaría saber qué es cada cosa. Porque estoy hecho un lío. Porque la predicción no la veo.
Lo primero es que suscribo hasta la última palabra de Caravantes. Te puede el ansia por ver el resultado final y no dedicas el tiempo suficiente a entender cada parte de una tarea. Paciencia compañero, aprender a programar es un proceso que lleva su tiempo.

Por el API que estás usando la predicción es todo. Para las condiciones actuales tendrías que haber usado otro API.

Sobre tus preguntas, las respuestas deberían estar aquí...

http://www.openweathermap.org/forecast16#JSON

Y si el inglés no es tu fuerte...

https://translate.google.es/#auto/es
__________________
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
  #75  
Viejo 27/02/17, 09:09:36
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
Buenos días!

@Xcso, parece ser que sí. Imagino que irá parejo al nivel poblacional. A más población=más estaciones.

@Caravantes y @WillyWeb. No os imagináis la admiración que os tengo. Y tenéis (casi) toda la razón.

No sé si será por tener la autoestima informática baja, pero siento que soy un analfabeto. Y para superar ese analfabetismo, tengo que aplicarme más para tratar de, no llegar a vuestro nivel (muy difícil), pero sí tratar de aprender para no entorpecer vuestra magnífica labor.

Como he comentado en alguna ocasión, tengo una sordera importante, pero mira, los "profesionales médicos" dijeron que nunca hablaría, ni escribiría ni leería. Y aquí me tenéis. Dando por saco (por no decir otra cosa).

Entonces, esto forja el carácter, quieras o no. Para mí, la palabra "imposible" no existe. Para mí, que me digan "no podrás", es gasolina para mí.

Y para que veáis lo cabezón que soy, aquí dejo tarea que he hace un rato desde 0. He cometido fallos (sí, soy muy de error y ensayo), pero los he subsanado haciendo el árbol y escuadriñando el código. Veréis que no es el mismo de ayer.

Un saludo!

0Openweather (12)
A1: Obtener ubicación [ Origen:Red datos Cuenta atrás (segundos):10 Continuar tarea inmediatamente:Apagado Mantener Seguimiento:Apagado Continuar Tarea Tras Error:Encendido ]
A2: Establecer variable [ Nombre:%pos A:%LOCN Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A3: Separar variable [ Nombre:%pos Separador:, Eliminar base:Apagado ]
A4: HTTP Get [ Servidor:Puerto:http://api.openweathermap.org/data/2...947cf05acce72f Ruta: Atributos: Cookies: User Agent: Cuenta atrás:10 Tipo Mime: Archivo de salida: Confiar en cualquier Certificado:Apagado Continuar Tarea Tras Error:Encendido ]
A5: JavaScriptlet [ Código:json = global('HTTPD');
obj = JSON.parse(json);

var lugar = obj.city.name;

var ahora = Math.round(obj.list[0].main.temp);
var minnoche = Math.round(obj.list[0].main.temp.min);
var maxdia = Math.round(obj.list[0].main.temp.max);
var presion = Math.round(obj.list[0].main.pressure);
var nivel = Math.round(obj.list[0].main.sea_level);
var humedad = obj.list[0].main.humidity;
var tiempokf = obj.list[0].main.temp_kf;

var descripcion = obj.list[0].weather[0].description;
var nubes = obj.list[0].clouds;
var viento = obj.list[0].wind;
var velviento = obj.list[0].wind.speed;
var dirviento = obj.list[0].wind.deg;

var lluvia = obj.list[0].rain; Librerías: Salida Automática:Encendido Cuenta atrás (segundos):45 ]
A6: [x] Pop-Up [ Título: Texto:Estoy en %lugar Imagen de fondo: Disposición:Popup Cuenta atrás (segundos):3 Mostrar sobre bloqueo pantalla:Encendido ]
A7: [x] Esperar [ MS:573 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A8: [x] Pop-Up [ Título: Texto:La temperatura es %ahora Imagen de fondo: Disposición:Popup Cuenta atrás (segundos):3 Mostrar sobre bloqueo pantalla:Encendido ]
A9: [x] Esperar [ MS:573 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A10: [x] Pop-Up [ Título: Texto:La temperatura mínima es %MinDia Imagen de fondo: Disposición:Popup Cuenta atrás (segundos):3 Mostrar sobre bloqueo pantalla:Encendido ]
A11: [x] Esperar [ MS:573 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A12: [x] Pop-Up [ Título: Texto:La temperatura máxima es %Maia Imagen de fondo: Disposición:Popup Cuenta atrás (segundos):3 Mostrar sobre bloqueo pantalla:Encendido ]
A13: [x] Esperar [ MS:573 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A14: [x] Pop-Up [ Título: Texto:La presión atmosférica es de %presion Imagen de fondo: Disposición:Popup Cuenta atrás (segundos):3 Mostrar sobre bloqueo pantalla:Encendido ]
A15: [x] Esperar [ MS:573 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A16: [x] Pop-Up [ Título: Texto:Estás a %nivel metros sobre el nivel del mar. Imagen de fondo: Disposición:Popup Cuenta atrás (segundos):3 Mostrar sobre bloqueo pantalla:Encendido ]
A17: [x] Esperar [ MS:573 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A18: [x] Pop-Up [ Título: Texto:La humedad es de %humedad Imagen de fondo: Disposición:Popup Cuenta atrás (segundos):3 Mostrar sobre bloqueo pantalla:Encendido ]
A19: [x] Esperar [ MS:573 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A20: [x] Pop-Up [ Título: Texto:%tiempokf Imagen de fondo: Disposición:Popup Cuenta atrás (segundos):3 Mostrar sobre bloqueo pantalla:Encendido ]
A21: [x] Esperar [ MS:573 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A22: [x] Pop-Up [ Título: Texto:El %Descripcion Imagen de fondo: Disposición:Popup Cuenta atrás (segundos):3 Mostrar sobre bloqueo pantalla:Encendido ]
A23: [x] Esperar [ MS:573 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A24: [x] Pop-Up [ Título: Texto:%nubes Imagen de fondo: Disposición:Popup Cuenta atrás (segundos):3 Mostrar sobre bloqueo pantalla:Encendido ]
A25: [x] Esperar [ MS:573 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A26: Pop-Up [ Título: Texto:%viento Imagen de fondo: Disposición:Popup Cuenta atrás (segundos):3 Mostrar sobre bloqueo pantalla:Encendido ]
A27: [x] Esperar [ MS:573 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A28: [x] Pop-Up [ Título: Texto:La velocida....
__________________
Si la educación te parece cara, prueba con la ignorancia.
Responder Con Cita
  #76  
Viejo 27/02/17, 15:07:43
Array

[xs_avatar]
WillyWeb WillyWeb está en línea ahora
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
Caravantes y WillyWeb. No os imagináis la admiración que os tengo. Y tenéis (casi) toda la razón.
Por la parte que me toca, muchas gracias. Particularmente nunca he pretendido reconocimiento ni creo que lo merezca. Estoy aquí por "deporte" y ayudo en lo que puedo, nada más.

 Cita: Originalmente Escrito por Mitrhandir Ver Mensaje
... Para mí, la palabra "imposible" no existe. Para mí, que me digan "no podrás", es gasolina para mí.
Ya conocía la situación y tu determinación es admirable. Eso juega muy a tu favor, pero sólo con eso no es suficiente. Programar requiere, entre otras cosas, organización, método, disciplina y tiempo de estudio. Son cualidades que casi cualquiera pueden cultivar con la dedicación oportuna, y no creo que tú seas un excepción.

Y ahora te hablo con todo el cariño, no seas impaciente y haz un intento por organizar tus ideas antes de tirarte a la piscina. Es importante tener claro lo que se quiere hacer. Recuerda los consejos que te ha dado Caravantes, ya te he dicho que son oro puro.

 Cita: Originalmente Escrito por Mitrhandir Ver Mensaje
Y para que veáis lo cabezón que soy, aquí dejo tarea que he hace un rato desde 0. He cometido fallos (sí, soy muy de error y ensayo), pero los he subsanado haciendo el árbol y escudriñando el código. Veréis que no es el mismo de ayer.
Ok. Borrón y cuenta nueva. Ahora mismo no me puedo entretener, pero en un rato reviso esa tarea y te doy mis impresiones.
__________________
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
  #77  
Viejo 27/02/17, 17:07:26
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
aquí dejo tarea que he hace un rato desde 0.
En mi opinión, sería mejor que organizaras toda la información de salida en variables de una matriz, al estilo de lo siguiente:
Código:
Establecer variable %salida1 a La temperatura mínima es %MinDia
Establecer variable %salida2 a La temperatura máxima es %MaxDia
Establecer variable %salida3 a La presión atmosférica es de %presion
Establecer variable %salida4 a Estás a %nivel metros sobre el nivel del mar
etc.
Luego puedes hacer un bucle para concatenar todos esos resultados en una variable final conjunta y/o pasar cada elemento de la matriz por un PopUp dentro del bucle. Tras todo eso, finalmente podrás poner la acción Decir que vocalice de una sola vez esa variable final que ya contiene todo el texto.

Creo que hubiera sido preferible planificar previamente estos detalles, mediante un esquema de la tarea, como te sugerí mas de una vez.

Veamos otros problemillas:
[Nota: cuando el servidor del foro ve una letra x seguida de una letra D lo interpreta como una risa, y muestra el smiley . Eso hace que algunas variables o expresiones como %Max Dia (interpongo un espacio) sean mostradas como %Maia si no interpongo el espacio. La forma de evitar ese problema es utilizar el sistema CODE (código), como he hecho hace un momento. Aunque los siguientes párrafos no son código, tengo que seguir utilizando ese sistema CODE para que no veáis cosas raras, porque voy a seguir hablando de esa variable %Max Dia ]
Código:
- Estás utilizando algunas variables locales (%presion) y otras globales (%MaxDia).
Creo preferible usar solamente las locales,
no tienes necesidad de complicarte con las globales.

- Esa variable %MaxDia la escribes así (con algunas mayúsculas) en A12,
pero la escribes con minúsculas (maxdia) en el JavaScriplet de A5.
No va a funcionar, Tasker considera que son dos variables distintas.
Tienes que escribir siempre igual cada variable.

- En A10 haces un Pop-Up mostrando el contenido de la variable %MinDia,
pero esa variable no la has cargado previamente, no le has asignado ningún valor,
no aparece en otras acciones de la tarea.
Creo que minimizarías la probabilidad de algunos de estos errores si hicieras un listado preciso de las variables a usar, como te sugerí más de una vez.

Mitrhandir, entiendo perfectamente que puedas tener tus motivos o tu carácter, y que eso te lleve a hacer las cosas a tu manera, olvidando reiteradamente mis sugerencias (mis mensajes #3 #19 #70, por ejemplo), incluso a pesar de que Willy también avalaba mis propuestas (sus mensajes #16 #20 #76). Respeto tu manera de hacer. Entiende tú también que yo no tenga muchas ganas de seguir haciéndote sugerencias y aportaciones, tras haber visto que muchas veces han caído en saco roto. No estoy enfadado ni disgustado, en ninguna medida. Simplemente constato que tenemos dos maneras muy distintas de enfocar el asunto y me parece muy difícil coordinar ambas visiones.
[Si quieres leer un mensaje mío estando disgustado, mira aquí: http://www.htcmania.com/showpost.php...25&postcount=8 ]
Mitrhandir, te pido que sigas participando en el foro igual que hasta ahora, o como mejor te parezca. Me incomodaría que no lo hicieras, porque creo que tu presencia enriquece el foro y creo que tu comportamiento no es ningún problema para el colectivo; solo es un desencuentro personal entre tú y yo. Creo que la mejor forma de resolverlo es que yo deje de responder (quizá no totalmente) en las consultas que tú hagas. Buena suerte.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
  #78  
Viejo 27/02/17, 18:56:00
Array

[xs_avatar]
WillyWeb WillyWeb está en línea ahora
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
Esta es tu nueva propuesta...

 Cita: Originalmente Escrito por Mitrhandir Ver Mensaje
Código:
0Openweather (12)
	A1: Obtener ubicación [ Origen:Red datos Cuenta atrás (segundos):10 Continuar tarea inmediatamente:Apagado Mantener Seguimiento:Apagado Continuar Tarea Tras Error:Encendido ] 
	A2: Establecer variable [ Nombre:%pos A:%LOCN Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] 
	A3: Separar variable [ Nombre:%pos Separador:, Eliminar base:Apagado ] 
	A4: HTTP Get [ Servidor:Puerto:http://api.openweathermap.org/data/2...947cf05acce72f Ruta: Atributos: Cookies: User Agent: Cuenta atrás:10 Tipo Mime: Archivo de salida: Confiar en cualquier Certificado:Apagado Continuar Tarea Tras Error:Encendido ] 
	A5: JavaScriptlet [ Código:json = global('HTTPD');
obj = JSON.parse(json);

var lugar = obj.city.name;

var ahora = Math.round(obj.list[0].main.temp);
var minnoche = Math.round(obj.list[0].main.temp.min); 
var maxdia = Math.round(obj.list[0].main.temp.max);
var presion = Math.round(obj.list[0].main.pressure);
var nivel = Math.round(obj.list[0].main.sea_level);
var humedad = obj.list[0].main.humidity;
var tiempokf = obj.list[0].main.temp_kf;

var descripcion = obj.list[0].weather[0].description;
var nubes = obj.list[0].clouds;
var viento = obj.list[0].wind;
var velviento = obj.list[0].wind.speed;
var dirviento = obj.list[0].wind.deg;
Parece que esta vez has usado el API "5 day / 3 hour forecast". En estas páginas están los detalles de lo que ofrece...

http://www.openweathermap.org/forecast5
http://www.openweathermap.org/weather-data
http://www.openweathermap.org/weather-conditions

Lo que has hecho no está mal del todo, pero creo que se puede organizar un poco mejor para que sea más fácil de mantener/entender.

Obtener la ubicación

Código:
A1: Obtener ubicación [ Origen:Red datos Continuar tarea inmediatamente:Encendido ] 
A2: Establecer variable [ Nombre:%locn A:%LOCN ] 
A3: Separar variable [ Nombre:%locn Separador:, ]
Con eso tenemos %locn1 con la latitud y %locn2 con la longitud de las coordenadas del dispositivo. La idea es usar esa variables en el sitio adecuado de la llamada al API. En tu propuesta creas unas variables equivalente y luego no las usas (pones unas coordenadas fijas). Y atento al "continuar tarea inmediatamente". Este tipo de ubicación no requiere tiempo extra para conseguir fijar una posición, al menos en las versiones de Android que la he probado (4.2 y 5.x.x). Si no te funciona así quita esa marca y ajusta el tiempo a 10 segundos (el mínimo posible).

Consultar el API

Código:
A4: HTTP Get [ Servidor: Puerto:api.openweathermap.org
			Ruta: data/2.5/forecast
			Atributos:	lat=%locn1
					lon=%locn2
					cnt=1
					lang=es
					units=metric
					appid=93dc7ed2abd2de8255098818c88cbd6b ]
El resultado de esa consulta (un archivo en formato JSON) se almacena automáticamente en la variable global %HTTPD.

Procesar el JSON

Código:
A5: JavaScriptlet [ Código:<JS> Librerías: Salida Automática:Encendido Cuenta atrás (segundos):45 ]

Y en <JS> metes esto...

//DATOS DEL API

json=global('HTTPD');
json=json.replace(/3h/g,'hhh');
obj=JSON.parse(json);

var city=obj.city.name;
var lat=obj.city.coord.lat;
var lon=obj.city.coord.lon;
var country=obj.city.country;
var population=obj.city.population;

lm=obj.list[0].main;
var temp=lm.temp;
var temp_min=lm.temp_min;
var temp_max=lm.temp_max;
var pressure=lm.pressure;
var humidity=lm.humidity;

lw=obj.list[0].weather[0];
var weather=lw.main;
var description=lw.description;
var icon=lw.icon;

l0=obj.list[0];

var dt_seg=l0.dt;
var dt_txt=l0.dt_txt;

var wind_speed=l0.wind.speed;
var wind_deg=l0.wind.deg;

var clouds=l0.clouds.all;

try {var rain=l0.rain.hhh;}
catch(err) {var rain='0';}

try {var snow=l0.snow.hhh;}
catch(err) {var snow='0';}

//DATOS PROCESADOS

var tact=Math.round(temp);
var tmin=Math.round(temp_min);
var tmax=Math.round(temp_max);

var press=Math.round(pressure);
var humed=Math.round(humidity);

var icono='http://openweathermap.org/img/w/'+icon+'.png';

var wind_kxh=Math.round(wind_speed/1000*3600);

dirs='norte,nornordeste,nordeste,estenordeste,este,estesudeste,sudeste,sudsudeste,sur,sudsudoeste,sudoeste,oesudoeste,oeste,oesnoroeste,noroeste,nornoroeste,norte'.split(',');
dir=Math.round(wind_deg/22.5);
var wind_dir=dirs[dir];
Con eso tienes los valores más relevantes del JSON disponibles en la tarea para que los uses de la forma que te parezca. Además de los datos originales también tienes otros "procesados" a partir de ellos. Todas las variables definidas en el código JS con la instrucción "var" están disponibles en la tarea de Tasker como variables locales.

Sobre esto unas aclaraciones...

He usado nombres de variables semejantes a las propiedades del JSON para mantener la coherencia. Lo de "minnoche" y "maxdia" da a entender un uso de esos valores que no aparece en la documentación. También has mezclado variables locales con globales, y en algunos casos las usas sin darles valor previamente (por eso te fallan cosas).

He observado que "JSON.parse()" no acepta nombres de propiedades que comienzan con un número. Para solucionarlo he añadido esa instrucción "replace" que cambia los "3h" por "hhh" (esos "3h" aparecen como parte del dato de lluvia o nieve).

Los datos de lluvia y nieve (rain y snow) no aparecen siempre. He añadido un pequeño control de errores para evitar que el código se pare en esos casos.

Componer la frase final

El contenido final de esa frase es cosa tuya. Aquí está mi propuesta...
Se prevé %description en %city. La temperatura es de %tact grados aunque puede variar de %tmin a %tmax. La humedad es del %humidity por ciento. Sopla viendo del %wind_dir a %wind_kxh kilómetros hora.
# Posibles mejoras #
  • Procesar la variable %wind_speed para decidir si se añade esa información a la salida (con poco viento se podría quitar).
  • Procesar la variable %wind_deg para convertirla a puntos cardinales (N, S, E, O) <<< realizado
  • Procesar %rain, %snow y %clouds por si aportan algo interesante (eso requiere hacer pruebas y estudiar la documentación).
  • Crear una notificación permanente con los datos más relevantes y el %icon de la previsión.
  • Añadir a la frase la hora para la que se ha hecho la predicción (%dt_txt).

...

Contando con que añadas una acción más para "decir" la frase final la tarea no necesita más de 6 acciones. Parafraseando al genial René Lavand ...

" "

... creo que, no se puede hacerlo más fácil.
__________________
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 04/03/17 a las 09:39:46. Razón: Añadidos en rojo y aclaraciones varias
Responder Con Cita
Gracias de parte de:
  #79  
Viejo 27/02/17, 19:04:17
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
@Caravantes! Ni se te ocurra dejar de decirme las cosas! Pero qué desencuentro hombre? Por mi parte yo estoy encantado contigo! Reconozco muy a mi pesar que tengo esa manía/defecto de ir a mi p... bola , pero quiero llegar a un acuerdo contigo. Yo me comprometo a hacer todo lo que me dices, y tú sigues la voz de mi conciencia. Ok?

Me fastidiaría y mucho que dejaras de "darme" collejas. Soy un ansias y estoy dispuesto a cambiar.

Sobre lo que comentas de las variables, las quiero hacer locales, pero en concreto %Max dia y %Min dia sólo salen correctamente en el pop-up así (mayúsculas). Tendré que borrar en el apartado "variables" esas variables.

Hacemos trato?
__________________
Si la educación te parece cara, prueba con la ignorancia.
Responder Con Cita


  #80  
Viejo 27/02/17, 19:44:59
Array

[xs_avatar]
Xcso Xcso no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Localización: Zierzoland
Mensajes: 111
Modelo de smartphone: Nokia 3650
Tu operador: Jazztel
 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
...

Contando con que añadas una acción más para "decir" la frase final la tarea no necesita más de 6 acciones. Parafraseando al genial René Lavand ...

" "

... creo que, no se puede hacerlo más fácil.
Grande Rene Lavand que pena que nos dejó, soy un apasionado a la magia y ese video es un clásico de la cartomagia.

Un saludo.
Responder Con Cita
Respuesta

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



Hora actual: 21:16:13 (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 / 邮件联系 /