|
||
|
![]() |
![]() |
Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Tarea que te dice el tiempo y temperatura
Este es el primer perfil que comparto, espero que os sea de utilidad
En primer lugar dar las gracias a aemet, dado que ellos son los proveedores de la información que vamos a extraer y aprovechar Os adjunto el archivo xml (creo que he hecho bien la exportación) para que podáis importarlo aunque tendréis que modificarlo dado que si no os informará del tiempo en Valencia, que es donde yo vivo https://docs.google.com/file/d/0B3UD...it?usp=sharing Esta tarea la tengo asignada a un evento para que cuando apago la alarma del despertador por las mañanas, automáticamente me diga el tiempo y temperatura que hará ese día pero modificándola podéis extraer mucha mas información, probabilidad de lluvia, cota de nieve, información sobre el viento, sensación térmica, humedad y no solo del día en actual sino también de varios días posteriores Estoy dándole vueltas para que también me diga las tareas que tengo para ese día, pero no tengo mucho tiempo, no se si al final lo conseguiré Al lío 1. Establecer variable , %FECHAREV a %DATE, con esto a la variable FECHAREV le asignamos el día de hoy 2. Separar variable , %FECHAREV separador -, con esto creamos tres variables FECHAREV1, FECHAREV2 Y FECHAREV3 las cuales tienen respectivamente el día mes y año actual 3. HTTP Get www.aemet.es/xml/municipios/localidad_46250.xml, Tipo Mime text/xml, aquí estamos obteniendo los datos para la ciudad de Valencia, si quereis los datos para otra ciudad tenéis que entrar en la página de aemet y buscar el municipio que queráis, os saldrá en la pantalla "descargar xml de la predicción detallada de ...." Captura de pantalla 2013-03-10 a las 10.38.37.png en ese enlace os saldrá Captura de pantalla 2013-03-10 a las 10.39.03.png y la dirección que aparece en la barra del navegador es la correspondiente a vuestra ciudad y que tenéis que poner en vez de .......localidad_46250.xml que os indico arriba. Todo lo que veis en pantalla es información que se puede tratar 4. Establecer variable %HTTPD %result, toda la información obtenida anteriormente se la asignamos a %result para tratarla 5. Separar variable %result <prediccion>, estamos separando %result en dos variables %result1 y %result2, %result1 tiene todo el texto antes de <prediccion> y %result2 el posterior 6. Separar variable %result2 <dia fecha="%FECHAREV3-%FECHAREV2-%FECHAREV1">, estoy separando la variable %result2 por el día que me interesa, aquí creamos dos variables mas %result21 y %result22 con el texto antes y después del separador que le hemos indicado 7. Separar variable %result22 descripción=", lo mismo de antes volvemos a crear dos variables %result221, %result222, %result223, .... 8. Separar variables %result222 ", idem, volvemos a crear dos variables %result 2221 y %result 2222 9. Separar variable %result223 ", idem 10. Decir "El tiempo por la mañana será %result2221 y por la tarde %result 2231, después de estar separando variables ya nos puede decir el tiempo de hoy 11. Separar variable %result227 <maxima>, obtenemos variables %result2271, %result2272, .... 12. Separar variable %result2272 </maxima>, idem 13. Separar variable %result 22722 </minima>, idem 14. Separar variable %result227221 <minima>, idem 15. Decir "La temperatura máxima será de %result22721 grados y la mínima de %result2272212" Y ya está, realmente lo que tenéis que comprender es que todo el texto que obtenemos en el punto dos se lo asignamos a la variable %result Cuando separamos una variable, se crean tantas variables como separadores tenga el texto, por ejemplo, tenemos una variable que se llama %texto en el que se repite diez veces la letra ñ, cuando separemos esa variable se crearán 11 variables nuevas %texto1, %texto2, %texto3, ... Por eso sabiendo la información que obtenemos y separando variables a nuestro gusto podemos obtener información del viento, humedad, sensación térmica Como consejo, y como es facil perderse con tanto separación de variables, os podeis crear una notificación para que os vaya informando de los valores de %result... Espero que la explicación haya sido comprensible y con un poco de trabajo personalizarla a vuestro gusto si es que no queréis dejarla como está, a mi cada mañana cuando apago el despertador el movil me dice el tiempo y mi mujer se cachondea |
Los siguientes 12 usuarios han agradecido a Alfahuir su comentario: | ||
|
#2
|
||||
|
||||
Unas sugerencias y añadidos para poder mejorar esta tarea.
Se le podria añadir que te dijese los datos de la localidad en la que estes en ese momento?? es decir, que te geolocalice. Y que además te diga el nombre de la ciudad, algo asi como: "En la ciudad de Valencia está soleado por la mañana y nublado por la tarde." No se si me he llegado a explicar bien ![]() |
#3
|
||||
|
||||
Se le podria añadir que te dijese los datos de la localidad en la que estes en ese momento?? es decir, que te geolocalice. Y que además te diga el nombre de la ciudad, algo asi como: "En la ciudad de Valencia está soleado por la mañana y nublado por la tarde."
![]() El otro problema es que Aemet solo te da la predicción para los municipios más importantes. Por ejemplo, para la provincia de Valencia solo contempla 20 municipios http://www.aemet.es/es/eltiempo/pred...unicipios?p=46 Pero en esa provincia hay más de 260 municipios. ¿Que ha de hacer la tarea cuando estemos en un municipio no referenciado por Aemet? Lo ideal sería que la tarea diese la información meteorológica del municipio más cercano que sí esté referenciado en Aemet, pero eso ya me parece muy desproporcionado (prácticamente imposible) para una tarea de Tasker. Saludos.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
#4
|
||||
|
||||
En Tasker se puede Geolocalizar, pero el resultado obtenido son unas coordenadas (latitud y longitud). Saber a qué provincia y/o municipio corresponden esas coordenadas ya es algo mucho más complejo, yo no sé hacerlo y no me parece fácil. Si alguien puede ayudar con este detalle que diga cómo se puede conseguir, me vendría bien para otro perfil distinto que estoy preparando y ya comentaré en su momento.
El otro problema es que Aemet solo te da la predicción para los municipios más importantes. Por ejemplo, para la provincia de Valencia solo contempla 20 municipios http://www.aemet.es/es/eltiempo/pred...unicipios?p=46 Pero en esa provincia hay más de 260 municipios. ¿Que ha de hacer la tarea cuando estemos en un municipio no referenciado por Aemet? Lo ideal sería que la tarea diese la información meteorológica del municipio más cercano que sí esté referenciado en Aemet, pero eso ya me parece muy desproporcionado (prácticamente imposible) para una tarea de Tasker. Saludos. ![]() Poniendo al principio la condicionante "Si" coincide con geolocalización hacer tal tarea. Tambien se puede poner una tarea que si no coincide, que no haga nada y que no diga el tiempo. |
#5
|
||||
|
||||
Estuve pensando inicialmente cuando creé la tarea en esa posibilidad (geolocalización y que te diera el tiempo de tu posición) pero como dice Caravantes es un poco dificil
La opción que me pareció mas factible fue una correspondencia con códigos postales pero el archivo de aemet de donde sacamos la información no coincide, si obtenemos http://www.aemet.es/xml/municipios/localidad_46009.xml, este código postal debería pertenecer a Valencia pero sin embargo es de Albalat dels Sorells, SI que coinciden los dos primeros números que te localiza por provincia pero dentro de la provincia los tres números siguientes desconozco que serie siguen Si se me ocurriera algo os lo haría saber |
#6
|
||||
|
||||
Se podría crear una base de datos pero hay ¡¡8116 municipios!!
Menuda tarea |
#7
|
||||
|
||||
http://www.aemet.es/xml/municipios/localidad_46001.xml En cambio, para correos, 46001 es el código postal del barrio central de Valencia. Aunque se pudiera conseguir una base de datos con todos los códigos de Aemet, sigo sin entender cómo podemos relacionar las coordenadas que nos da el GPS con esos códigos de municipio (o con los códigos postales).
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Última edición por Caravantes Día 19/03/13 a las 09:45:13. |
#8
|
||||
|
||||
Ok, según lo veo yo tenemos dos problemas:
1. traducción de latitud y longitud a códigos postales 2. equivalencia de dicho código postal con los códigos de aemet Para la primera cuestión hay servicios (me imagino que activos y gratuitos, aunque no lo se cierto) que de internet y mediante un HTTP Get (como nuestra tarea) o un HTTP Post podríamos obtener dicha equivalencia, habría que jugar con el tipo de archivo obtenido, tratar dicha información, ver si la API es libre de ser utilizada o si es de pago,... en fin, complicado pero creo que no imposible, solo es cuestión de tiempo y ponerse a ello Si pruebas el enlace de geonames y cambias la latitud y la longitud, verás que obtienes un archivo xml en el que hay un código postal, habría que hacer pruebas para comprobar la fiabilidad, pero aquí tenemos una posible solución al primero de los problemas La segunda cuestión sería la creación de una tabla de datos para dicha equivalencia o algo parecido |
Gracias de parte de: | ||
#9
|
||||
|
||||
Obtención del código postal a partir de nuestra dirección gps
No me ha dado tiempo de probarla mucho pero creo que funciona bien 1. Establecer variable %direccgps a %LOC 2. HTTP Get http://maps.google.com/maps/api/geoc...tlon=direccgps, en tipo MIME ponemos text/xml 3. Establecer variable %cpostal a %HTTPD 4. Separar variable %cpostal separador <formatted_address> 5. Separar variable %cpostal2 separador , 6. Sección de variable %cpostal23 desde 1 longitud 6 Y ya está, tenemos en %cpostal23 el código postal de nuestra ubicación Necesito hacer pruebas, pero creo que funciona Además en %cpostal21 tenemos la calle de nuestra ubicación y en %cpostal 22 el número de la calle y desglosando mas el archivo xml podemos obtener información de la comunidad autónoma, barrio, pais, ciudad Solo me queda la duda de que pasaria si la ejecutáramos en medio del campo, si sería fiable dicho código postal |
Gracias de parte de: | ||
#10
|
||||
|
||||
Me equivoque al transcribir el punto 2 lo correcto es:
2. HTTP Get maps.google.com/maps/api/geocode/xml?sensor=true&latlng=%direccgps |
#11
|
||||
|
||||
Pues no, tal y como está tiene algún fallo, es lo que pasa por hacer las cosas rápidas
Cuando lo tenga pulido lo volveré a subir, en todo caso el problema está en cruzar la información del código postal con el código de aemet, es un trabajón relacionar la base de datos de aemet salvo que se hiciera de otra manera que ahora no se me ocurre |
Gracias de parte de: | ||
#12
|
||||
|
||||
Re: Tarea que te dice el tiempo y temperatura
Pues que pena. A ver si lo consigues porque estaría de lujo. Yo es que en este tema de Tasker estoy pez.
Enviado desde mi GT-N7000 usando Tapatalk 2
__________________
Fdo: Mlesir. Miembro del equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969
|
#13
|
||||
|
||||
Pues no, tal y como está tiene algún fallo, es lo que pasa por hacer las cosas rápidas. Cuando lo tenga pulido lo volveré a subir, en todo caso el problema está en cruzar la información del código postal con el código de aemet, es un trabajón relacionar la base de datos de aemet salvo que se hiciera de otra manera que ahora no se me ocurre
![]() 1 Obtener ubicación, GPS 2 HTTP Get maps.google.com/maps/api/geocode/xml?sensor=true&latlng=%LOC 3 Establecer variable %info a %HTTPD 4 Separar variable %info , separador </formatted_address> 5 Separar variable %info1 , separador <formatted_address> 6 Notificación %info12 Vamos a comprobar algunos pasos de este proceso mediante un ejemplo. 1 Supongamos que estamos en el centro de Valencia, concretamente en la calle Poeta Querol, número 10. Fijaros que la siguiente URL hace referencia a esa calle y esa ciudad, y vemos el mapa de ese lugar https://maps.google.es/maps?num=50&h...,+10,+valencia 2 Si estamos en ese lugar y el GPS funciona bien, en %LOC obtendremos las coordenadas siguientes u otras muy similares %LOC=39.471475,-0.374344 El siguiente enlace lleva esas coordenadas y podemos comprobar que el mapa muestra el mismo lugar de antes https://maps.google.com/maps?q=39.471475,-0.374344 3 Comprobemos ahora la URL consultada por la tarea, utilizando esas coordenadas, y veamos que información nos muestra el documento obtenido maps.google.com/maps/api/geocode/xml?sensor=true&latlng=39.471475,-0.374344 En ese documento podemos leer lo siguiente (cerca del principio, probablemente se muestre en la quinta línea): <formatted_address>Calle Poeta Querol, 10, 46002 Valencia, España</formatted_address> Esa información ("Calle Poeta Querol, 10, 46002 Valencia, España") es la que nos mostraría la notificación de Tasker si hubieramos ejecutado la tarea estando en ese lugar. De forma parecida se podría obtener cualquier otro dato del documento, desde la abreviatura de la ciudad hasta el nombre de la comunidad autónoma o cualquier otra cosa. Solo hay que jugar sucesivamente con la acción Separar variable, como ya hemos aprendido. > Solo me queda la duda de que pasaría si la ejecutáramos en medio del campo Probemos. ¿Te parece bien en el centro de La Albufera? No hay nada en dos kilómetros a la redonda https://maps.google.com/maps?q=39.337218,-0.355937 En el mapa que vemos ahí, la flecha verde señala el lugar correspondiente a las coordenadas de la URL. Además, Google nos dice que el punto "conocido" más cercano (a unos dos kilómetros) es la carretera CV-500, señalada con una marca de color rosa. ¿Qué pasa si nuestra tarea le pide a Google los datos correspondientes al centro de La Albubera? maps.google.com/maps/api/geocode/xml?sensor=true&latlng=39.337218,-0.355937 Ya puedes ver que Google no nos devuelve los datos de La Albufera sino de la carretera CV-500, 12, 46012 Valencia, España , incluyendo un código postal 46012. Conclusión: Todo esto resulta vistoso y molón pero no hay que perder de vista estas imprecisiones y otros posibles errores. Por ejemplo, en la tarea conviene meter algunos controles adicionales, para verificar que el GPS ha conseguido obtener unas coordenadas. En ese caso %LOC dará una coincidencia positiva con *,* También podemos comprobar que se ha conseguido una exitosa consulta a la base de datos. En ese caso %info dará coincidencias positivas con *GeocodeResponse* y también con *</formatted_address>* Si alguna de estas comprobaciones falla ya podemos desistir porque será imposible obtener el dato que buscábamos. Ahora unas preguntas para Alfahuir o para cualquier otro. Además de la base de datos de Aemet y de esta base de datos de Google con información geográfica... ¿Conocéis otras bases de datos públicas que podamos consultar? ¿Sabéis si hay algún índice de ellas? Saludos.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
Gracias de parte de: | ||
#14
|
||||
|
||||
Caravantes por desgracia no tengo ninguna parte que falte, a lo que me refería es a lo siguiente:
Aunque aparentemente funciona bien he encontrado tres problemas 1. En vez de utilizar %LOC se debería usar %LOCN, como %LOC nos da la información de la última ubicación gps obtenida, si esta tiene algún tiempo o estamos a cubierto, nos dará unas coordenadas incorrectas, y como esta tarea está diseñada para obtener un código postal, me parece mas rápido y seguro obtener las coordenadas de %LOCN, en todo caso en función al uso que se le de se pude personalizar, yo utilizaría esta tarea para que me dijera el tiempo después de despertarme y la última ubicación gps puede ser erronea 2. el punto 6 de la tarea que puse era "Sección de variable %cpostal23 desde 1 longitud 6" y debería ser "Sección de variable %cpostal23 desde 2 longitud 6", simplemente para tener el código postal sin un espacio en blanco delante 3. Si pruebas estas coordenadas gps: 39.479077,-0.37519, verás que nos dá la dirección PERO el código postal lo pone (si separamos por comas) en segunda posición cuando la tarea está diseñada para que lo coja de la tercera posición. Me imagino que esto ocurrirá en muy contadas ocasiones, puede ser que solo ocurra en monumentos importantes pero hay que añadir pasos en nuestra tarea para que si no encuentra el código postal en la tercera posición se vaya a buscarla a la posición segunda Desconozco las páginas de internet de las que podemos extraer información, simplemente cuando necesito algo lo busco, es un poco complicado porque hay poca información y casi toda en inglés |
Gracias de parte de: | ||
#15
|
||||
|
||||
Pues creo que ya está terminado y funcionando (salvo algún error que pueda quedar)
La tarea te dice el tiempo y temperatura del municipio en el que estás o en el mas cercano dado que aemet solo tiene unos 8000 municipios. Os adjunto la tarea para poder importarla dado que tiene 65 pasos y un archivo txt (para copiarlo al directorio raiz del télefono) donde están las correlaciones de los códigos postales con los códigos aemet https://docs.google.com/file/d/0B3UD...it?usp=sharing https://docs.google.com/file/d/0B3UD...it?usp=sharing El archivo txt tenéis que copiarlo al móvil y saber la carpeta para poder acceder a el desde tasker 1: HTTP Get [ Servidor:Puerto:maps.google.com/maps/api/geocode/xml?sensor=true&latlng=%LOCN Tipo Mime:text/xml] 2: Establecer variable [ Nombre:%datos A:%HTTPD ] 3: Separar variable [ Nombre:%datos Separador:, ] 4: Sección de Variable [ Nombre:%datos2 Desde:2 Longitud:5 Encajar:Encendido ] 5: Sección de Variable [ Nombre:%datos3 Desde:2 Longitud:5 Encajar:Apagado ] 6: Establecer variable [ Nombre:%codigop A:%datos2 Calcular:Encendido ] Si (if) [ %datos2 > 999 ] 7: Establecer variable [ Nombre:%codigop A:%datos3 Calcular:Encendido ] Si (if) [ %datos3 > 999 ] 8: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 02003 ] 9: Ir a acción [ Tipo:Número Acción Nímero:48 Etiqueta: ] Si (if) [ %codigop ~ 03014 ] 10: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 05210 ] 11: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 07010 ] 12: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 08019 ] 13: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 09219 ] 14: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 09292 ] 15: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 10110 ] 16: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 11012 ] 17: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 12122 ] 18: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 16043 ] 19: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 19143 ] 20: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 19196 ] 21: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 22213 ] 22: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 24132 ] 23: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 24145 ] 24: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 24151 ] 25: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 25193 ] 26: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 35016 ] 27: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 37117 ] 28: Ir a acción [ Tipo:Número Acción Número:44 Etiqueta: ] Si (if) [ %codigop ~ 37129 ] 29: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 37185 ] 30: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 42132 ] 31: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 44222 ] 32: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 45183 ] 33: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 46109 ] 34: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 46181 ] 35: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 47155 ] 36: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 49121 ] 37: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 51001 ] 38: Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigop ~ 52001 ] 39: Leer Archivo [ Archivo:cp-6g.txt A la variable:%lista ] 40: Separar variable [ Nombre:%lista Separador:%codigop ] 41: Establecer variable [ Nombre:%contador A:2 Calcular:Encendido ] 42: Sección de Variable [ Nombre:%lista(%contador) Desde:7 Longitud:5 Encajar:Apagado Almacenar Resultado en:%temp ] 43: Si (if) [ %temp ~ ----- ] 44: Sumar a variable [ Nombre:%contador Valor:1 ] 45: Ir a acción [ Tipo:Número Acción Número:42 E ] 46: Fin si (End if) 47: Si (if) [ %contador > 99999 ] 48: Establecer variable [ Nombre:%temp A:%codigop Calcular:Apagado Añadir:Apagado ] 49: Fin si (End if) 50: HTTP Get [ Servidor:Puerto:www.aemet.es/xml/municipios/localidad_%temp.xml Tipo Mime:text/xml ] 51: Establecer variable [ Nombre:%FECHAREV A:%DATE ] 52: Separar variable [ Nombre:%FECHAREV Separador:- ] 53: Establecer variable [ Nombre:%result A:%HTTPD Añadir:Encendido ] 54: Separar variable [ Nombre:%result Separador:<prediccion> Eliminar base:Encendido ] 55: Separar variable [ Nombre:%result2 Separador:<dia fecha="%FECHAREV3-%FECHAREV2-%FECHAREV1"> ] 56: Separar variable [ Nombre:%result22 Separador:descripcion=" ] 57: Separar variable [ Nombre:%result222 Separador:" ] 58: Separar variable [ Nombre:%result223 Separador:" ] 59: Separar variable [ Nombre:%result227 Separador:<maxima> ] 60: Separar variable [ Nombre:%result2272 Separador:</maxima> ] 61: Separar variable [ Nombre:%result22722 Separador:</minima> ] 62: Separar variable [ Nombre:%result227221 Separador:<minima> ] 63: Separar variable [ Nombre:%result1 Separador:<nombre> ] 64: Separar variable [ Nombre:%result12 Separador:</nombre> ] 65: Decir [ Texto:Tiempo para %result121. Por la mañana %result2221 y por la tarde %result2231. La temperatura máxima será de %result22721 grados y la mínima de %result2272212 Motor: Voz:com.google.android.tts:spa-esp Stream:3 Tono:6 Velocidad:5 ] Pues ahí va mi tocho En el paso 39, tendréis que modificarlo según la ruta del archivo txt El archivo txt contiene en la primera columna los códigos postales y en la segunda su correlación con los códigos ine. Si quereis que para determinado código postal os de el tiempo de otro municipio cercano solo tenéis que poner el código ine después del código postal |
Los siguientes 6 usuarios han agradecido a Alfahuir su comentario: | ||
#16
|
||||
|
||||
¿Como te has currado el fichero de códigos? Creo que sería bueno que nos explicases un poco la tarea, no hace falta que sea acción por acción pero sí comentando lo que se consigue con cada grupo de acciones. ¿Se admiten sugerencias? Tengo dos. Creo que las acciones 8 a 39 podrían simplificarse de la forma siguiente: A) Establecer variable %codigosespeciales a .02003.03014.05210.07010.08019.09219.09292.10110.1 1012.12122.16043.19143.19196.22213.24132.24145.241 51.25193.35016.37117.37129.37185.42132.44222.45183 .46109.46181.47155.49121.51001.52001. B) Ir a acción [ Tipo:Número Acción Número:48 Etiqueta: ] Si (if) [ %codigosespeciales ~ *%codigop* ] Es preferible no usar acciones del tipo de “Ir a acción número 48” porque es poco descriptivo y porque puede fallar si luego insertas o suprimes algunas de las acciones previas a la 48. Es mejor poner (en la acción 48) una etiqueta del tipo “YaTengoElMunicipio” o cualquier otra cosa similar, y luego usar saltos a esa etiqueta, se entiende mucho mejor y no falla aunque se cambie la numeración de las acciones.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
#17
|
||||
|
||||
Claro que se aceptan sugerencias, de hecho me parecen correctas las tuyas dado que simplifican la tarea.
Respecto al fichero de códigos que me preguntas, después de mucho buscar por internet, dentro de aemet, página de correos, ine, etc... creo que fue del ine (miré en tantos sitios que no me acuerdo muy bien) de donde saqué un archivo txt de casi 600 Mb con varios millones de lineas en el cual y escondido dentro de cada fila entre otra información estaban los códigos postales y códigos ine. Era un fichero con las calles de españa. Primero y como era tan grande y los programas de edición no lo cogían tuve que partirlo en 6 pedazos para empezar a trabajarlo con el excel e ir reduciéndolo a lo que se quedó, algo mas de 14000 lineas y 250 Kb, costó un poco pero hacerlo a mano hubiera sido morirse. La explicación de la tarea es la siguiente: Los pasos del 1 al 7 es la obtención del código postal de la ubicación donde te encuentras, aquí el problema es que dentro del fichero que obtenemos hay una linea que nos informa de la dirección la cual separamos por comas. El código postal casi siempre sale en la posición tercera pero a veces sale en la posición segunda. Además la posición segunda muchas veces da el número de la calle y por eso hay que marcar encajar en el punto 4 de la tarea, si no daba error al estarle pidiendo nosotros 5 caracteres y darnos solo 2 por ejemplo Los puntos 8 a 49 de la tarea es la búsqueda de la equivalencia del código postal con el código de aemet en el fichero adjunto, aquí podemos tener dos problemas: el primero que coincidan los números del código postal y código ine y por eso hice los pasos del 8 al 38 y el segundo problema es que hay que hacer la búsqueda en la primera columna (nosotros buscamos la coincidencia de 5 números dentro del fichero pero a veces el primer resultado que encontraba eran los 5 números de la segunda columna) por eso tuve que hacer un bucle, tareas 41 a 46 hasta que la fila que encontrara fuera la correcta y entonces obtuviéramos el código ine, hay una variable %contador que va aumentando en una posición hasta que encontramos la fila correcta Los pasos 50 al 65 son, una vez tenemos el código ine correspondiente a nuestra ubicación, la obtención del fichero del tiempo de aemet y extraer la información que nos pueda interesar, está mejor explicado en el primer post de este tema donde estaba la versión simplificada de esta tarea |
#18
|
||||
|
||||
...Los puntos 8 a 49 de la tarea es la búsqueda de la equivalencia del código postal con el código de aemet en el fichero adjunto, aquí podemos tener dos problemas: el primero que coincidan los números del código postal y código ine y por eso hice los pasos del 8 al 38 y el segundo problema es que hay que hacer la búsqueda en la primera columna (nosotros buscamos la coincidencia de 5 números dentro del fichero pero a veces el primer resultado que encontraba eran los 5 números de la segunda columna) por eso tuve que hacer un bucle, tareas 41 a 46 hasta que la fila que encontrara fuera la correcta y entonces obtuviéramos el código ine, hay una variable %contador que va aumentando en una posición hasta que encontramos la fila correcta...
![]() En segundo lugar veo conveniente hacer algunas modificaciones a ese archivo de conversión de códigos, añadiendo una marca de comienzo de registro, otra marca de final de registro y rediciendo los seis guiones (de separación de campos) a un solo guión. Queda del siguiente modo. $01520-01059! $02001-02003! $02002-02003! $02003-02003! $02004-02003! De esta forma, cuando busquemos el código postal podemos anteponerle el carácter $ de comienzo de registro y posponerle el guión, para estar seguros de que lo va a encontrar en la primera columna y nunca en la segunda. Si esa operación la hacemos por medio de la acción separar variable (usando como separador $%codigop-) la acción siguiente puede obtener directamente el código INE-Aemet en las 5 primeras posiciones de la variable2, del siguiente modo Sección de Variable [ Nombre:%lista2 Desde:1 Longitud:5... ] Una ventaja lateral es que el fichero de conversión de códigos resulta algo más pequeño, por la omisión de cinco guiones. Quien quiera cogerlo puede descargarlo directamente de https://dl.dropbox.com/u/12112413/cp-ine.txt (Ojo: le he cambiado el nombre ligeramente para que no se confunda con el otro, hay que tenerlo en cuenta modificando la tarea para que use un fichero u otro). Cuando vaya codificando y afinando la tarea, si se me ocurre algo más ya lo pondré en otro mensaje. Saludos.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
#19
|
||||
|
||||
Buenas.
Hay un par de bugs en vuestro código. La fecha devuelta por %DATE es del tipo mes-dia-año y aemet espera año-mes-dia. Por lo tanto, la linea: 55: Separar variable [ Nombre:%result2 Separador:<dia fecha="%FECHAREV3-%FECHAREV2-%FECHAREV1"> ] deberia ser <dia fecha="%FECHAREV3-%FECHAREV1-%FECHAREV2"> Es decir, que el día y el mes estaban intercambiados. A parte. %DATE devuelve los dias tal cual y aemet espera que si el día tiene un solo dígito salga "04" en ves de "4". Esto se soluciona con un VARIABLE SEARCH REPLACE. cambiando la variable %FECHAREV1 y 2 con el pattern-match "\b[0-9]\b" (quitando las comillas) a 0%FECHAREV1 y 0%FECHAREV2 respectivamente. Espero haberme explicado. No me ha quedado claro si la lista de códigos ine vs postales es para toda españa. Alguna idea por si vamos al extrangero? |
|
#20
|
||||
|
||||
Ahh y solo un detalle.
Es bueno hacer un VARIABLE CLEAR para todas las variables que hemos usado antes. Para las variables a las que les hemos hecho SPLIT, basta con hacer un VARIABLE CLEAR de NOMBREVARIABLE* (notese asterisco) habilitando el pattern match. Un saludo! |
![]() |
![]() |
||||||
|