Meteoclimatic
Software => WeatherLink => Mensaje iniciado por: PIN en 09 de Diciembre de 2021, 11:00:56
-
Hola, haber si alguien me puede decirme si se puede hacer, que el archivo downld02.txt no aparezca la temperatura interior, humedad interior.
Un saludo
-
Buenos días PIN
Que yo sepa, el archivo "downld02.txt" no puede configurarse para elegir el tipo de parámetros que deben aparecer.
Weathelink solo permite generarlo o no hacerlo; por defecto viene desactivado, así que debemos activarlo.
Si no es indiscreción. ¿porqué tienes interés en que no aparezcan los valores del interior?. Supongo que si quieres realizar gráficos interactivos con dicho archivo: https://forum.meteoclimatic.net/index.php/topic,1308.0.html (https://forum.meteoclimatic.net/index.php/topic,1308.0.html), puedes elegir las variables que te puedan interesar.
En fin, si explicas la razón, quizás podamos ayudarte mejor
Saludos desde San Sebastián
-
La razón es que eso datos de interior no valen para nada, lo único que puede valer es para saber lo que lo ven la temperatura, humedad, etc. que tengo en casa.
-
Si entiendo bien. parece ser que no te interesa que nadie vea tus datos del interior; o sea que, supongo, los estás publicando o los quieres publicar.
Si ese es el caso, muy probablemente habría alguna manera de "tratar" ese archivo de texto, suponiendo que está en la web (sería interesante conocer su dirección)-
Otra posibilidad que te da Weatherlink, es el producir tu propio archivo de texto con las variables que desees:
|pagenameYday|tagsydaywl|!
|versionYday|3.00 2015-03-29 17:00:00 BETA|!
|dateYday|<!--date-->|!
|timeYday|<!--time-->|!
|fromtempYday|<!--tempUnit-->|!
|tempMinYday|<!--lowOutsideTemp-->|!
|tempMinYdayTime|<!--lowOutsideTempTime-->|!
|tempMaxYday|<!--hiOutsideTemp-->|!
|tempMaxYdayTime|<!--hiOutsideTempTime-->|!
|dewpMinYday|<!--lowDewpoint-->|!
|dewpMinYdayTime|<!--lowDewpointTime-->|!
|dewpMaxYday|<!--hiDewpoint-->|!
|dewpMaxYdayTime|<!--hiDewpointTime-->|!
|heatMaxYday|<!--hiHeatindex-->|!
|heatMaxYdayTime|<!--hiHeatindexTime-->|!
|chilMinYday|<!--lowWindchill-->]|!
|chilMinYdayTime|<!--lowWindchillTime-->|!
|frombaroYday|<!--barUnit-->|!
|baroMinYday|<!--lowBarometer-->|!
|baroMinYdayTime|<!--lowBarometerTime-->|!
|baroMaxYday|<!--hiBarometer-->|!
|baroMaxYdayTime|<!--hiBarometerTime-->|!
|humiMinYday|<!--lowHumidity-->|!
|humiMinYdayTime|<!--lowHumTime-->|!
|humiMaxYday|<!--hiHumidity-->|!
|humiMaxYdayTime|<!--hiHumTime-->|!
|fromrainYday|<!--rainUnit-->|!
|rainRateMaxYday|<!--hiRainRate-->|!
|rainYday|<!--dailyRain-->|!
|etYday|<!--dailyEt-->|!
|fromwindYday|<!--windUnit-->|!
|gustMaxYday|<!--hiWindSpeed-->|!
|gustMaxYTime|<!--hiWindSpeedTime-->|!
|uvMaxYday|<!--hiUV-->|!
|uvMaxYdayTime|<!--hiUVTime-->|!
|solarMaxYday|<!--hiSolarRad-->|!
|solarMaxYdayTime|<!--hiSolarRadTime-->|!
|soilTempMaxYday|<!--hiSoilTemp1-->#<!--hiSoilTemp2-->#<!--hiSoilTemp3-->#<!--hiSoilTemp4-->|!
|soilTempMaxYdayTime|<!--hiSoilTempTime1-->#<!--hiSoilTempTime2-->#<!--hiSoilTempTime3-->#<!--hiSoilTempTime4-->|!
|soilTempMinYday|<!--lowSoilTemp1-->#<!--lowSoilTemp2-->#<!--lowSoilTemp3-->#<!--lowSoilTemp4-->|!
|soilTempMinYdayTime|<!--lowSoilTempTime1-->#<!--lowSoilTempTime2-->#<!--lowSoilTempTime3-->#<!--lowSoilTempTime4-->|!
|soilMoistMaxYday|<!--hiSoilMoist1-->#<!--hiSoilMoist2-->#<!--hiSoilMoist3-->#<!--hiSoilMoist4-->|!
|soilMoistMaxYdayTime|<!--hiSoilMoistTime1-->#<!--hiSoilMoistTime2-->#<!--hiSoilMoistTime3-->#<!--hiSoilMoistTime4-->|!
|soilMoistMinYday|<!--lowSoilMoist1-->#<!--lowSoilMoist2-->#<!--lowSoilMoist3-->#<!--lowSoilMoist4-->|!
|soilMoistMinYdayTime|<!--lowSoilMoistTime1-->#<!--lowSoilMoistTime2-->#<!--lowSoilMoistTime3-->#<!--lowSoilMoistTime4-->|!
-
Bueno, como sabéis yo soy mucho de PHP *-* *-*
Puedes hacer dos cosas, presentar el archivo en PHP quitando esas columnas o convertirlo a otro archivo de texto con un cron que no las tenga.
Posibilidades hay, lo que no se puede es que WL no las genere en él.
-
jmviper y eso como lo podría yo hacerlo.
-
jmviper lo ha clavado
dale un poco de tiempo y tendrás la solución jjjjjj
Queda esa otra opción de crear un archivo .htx empleando los tags de Weatherlink, el programa se encarga de "traducirlos" por sus valores reales en cada ciclo.
-
Queda esa otra opción de crear un archivo .htx empleando los tags de Weatherlink, el programa se encarga de "traducirlos" por sus valores reales en cada ciclo.
Hola kocher
Pero.... solo pondrá una línea no ?? no los últimos dos días.
El script que he creado es este:
<?php
$archivo = file('downld02.txt');
$res = "";
foreach ($archivo as $datos){
$parte1 = substr($datos, 0, 187);
$parte2 = substr($datos, 230);
$res .= $parte1.$parte2;
}
echo '<pre>',$res,'</pre>';
file_put_contents('downld02mod.txt', $res);
?>
Sencillo, lo que hace es "quitar" la parte que no queramos (en este caso lo que lleva In en la cabecera). Para ello he puesto en mi servidor el archivo original (es antiguo jejeje):
https://www.meteoarchena.es/downld02.txt
Y cuando se ejecuta el script aparte de aparecer en pantalla el resultado se crea el archivo sin esos valores que se pone en:
https://www.meteoarchena.es/downld02mod.txt
Si no se quiere presentar se comenta la línea del echo (poner // delante) y si no se quiere grabar a otro archivo se comenta la última.
O sea, que creamos un archivo php en nuestro servidor con el nombre que queramos donde ponemos ese script y si lo ejecutamos nos sale en pantalla sin esos valores y/o lo guardamos en otro archivo. Resulta obvio que si queremos reemplazarlo le ponemos a la última línea el mismo nombre del archivo.
Consideraciones:
El archivo de WL tendrá que estar en el mismo directorio que el script o se pone la ruta en la primera línea donde está el nombre.
El archivo que he usado es el mío y tiene valores de radiación solar y UV. Si el que se maneja no tiene esos valores entonces hay que cambiar el comienzo y longitud de $parte1 y $parte2 ya que no sería igual.
Ejecutarlo en el servidor sería cuestión de crear, como he dicho un cron (una tarea repetida cada X tiempo). En este caso sería llamar al script en el servidor. Cumulus MX o WD pueden realizar llamadas http para llamarlo y que ese ejecute, si no se tendría que echar mano de powershell o algo así en Windows y ejecutarlo con el programador de tareas de Windows cada X tiempo.
-
apla3
Brillante (como siempre) jjj
-
Son cosas "sencillicas" *+* *+*
-
como siempre un crack
-
je je "sencillicas" …
A mí siempre me ha parecido muy divertido el poder "modelar" los archivos de texto situados en nuestra web; creo que este tema se merecería un hilo específico para que, el que tenga interés pueda adentrarse en la "magia" de PHP.
Por lo que creo, lo que consigues, es (contando los espacios desde el comienzo de la primera línea de cabecera) crear el primer bloque de texto hasta la posición que nos interesa (eliminando el resto) y lo denominas con el nombre de variable $parte1; a continuación, en $parte2 haces lo mismo, creando otro bloque a partir de la zona eliminada hasta el final.
A continuación y dado que tenemos 2 bloque de texto, los concatenas (unes) en la línea de código $res .= $parte1.$parte2;.
Por cierto, me ha quedado la duda sobre $res .=, ¿es correcto?
Seguro que he metido la pata pero, es como más se aprende je je
Efectivamente, creo que deberíamos iniciar un apartado en el foro para enseñar a trastear en PHP
-
Efectivamente kocher, has dado en el clavo en todo.
Tengo un terrible defecto con los scripts y es que nunca los comento, eso me cuesta luego que cuando da la lata alguno que hice hace tiempo tenga que estar tirando del hilo e investigando su ejecución. Por eso es bueno, si lo haces para otros comentar las líneas para que sepan su funcionamiento. Tú como ya sabes de esto algo *-* *-* lo has pillado a la primera.
Sí, la idea es cortar dos bloques, los que nos interesan, y después unirlos para que quede uno solo. $res .= concatena texto en cada ciclo del loop foreach para ir poniendo las líneas modificadas y hacerlo en su totalidad. Solo se puede hacer con texto (strings), si lo haces con números (una suma acumulativa) así te suelta error el intérprete de PHP. Para ello se debe de usar el comando +=, por ejemplo $res += $valor irá sumando el valor de $valor en cada iteración del loop. Con eso por ejemplo se suma la lluvia del día. De igual manera -= restará, *= multiplicará y /= dividirá.
PHP ya lleva muchos años y a nivel de procesar texto es de los más completos a nivel de servidor y muchas más cosas (tiene muchísimas funciones predefinidas para cada tipo de valor) y aunque su principal cometido es "preprocesar" el código dentro de sus etiquetas en el servidor para entregarlo al cliente (navegador) que solicita la página la verdad es que yo lo utilizo mucho en local (llamando a su intérprete php.exe) para modificar el texto que quiera (de los logs de los programas meteo), crear jsons, crear informes NOAA a partir de esos logs etc etc, las posibilidades son enooooormes y sabiendo más o menos lo básico puedes hacer ya cosas de esas.
Efectivamente, creo que deberíamos iniciar un apartado en el foro para enseñar a trastear en PHP
Sin problemas, cuándo empezamos ?? *+* *+* Yo aporto mi granito de arena y sé que hay gente como a PIN, a ti y a otros que les gusta trastear con él y hacer cosas.
Saludos
-
Perfectamente explicado todo
Muchísimas gracias jmviper
En cuanto a lo de "trastear" en PHP, podemos iniciar con algunos "trucos" enfocados a modificar archivos de texto (eliminar determinadas filas, columnas …)
Obtener datos de un archivo de texto para ingresarlos en una tabla de una base de datos, eliminando caracteres que no nos interesen ..
A ver que se nos ocurre y empezamos
-
Yo me apuntaría, para aprender manejar php, seria una muy buena idea.
-
A ver que se nos ocurre y empezamos
Yo los scripts que hago los hago para mis necesidades *-* pero sí se pueden empezar temas sobre manipular archivos de texto.
Lo que se os ocurra disparad ;)
-
Perdona jmviper, a mi no me sale como el tuyo me quita ET Samp Tx Recept , he puesto varias medidas y nada, a que puede ser debido.
https://ontinareltiempo.webcindario.com/downl08.txt
-
Ya dije que si no tienes datos en él de radiación solar/UV las longitudes cambian porque no so las mismas columnas. Ponme enlace al original o adjúntalo aquí mismo.
-
Este es el original
https://ontinareltiempo.webcindario.com/downld08.txt
-
Prueba estas partes:
$parte1 = substr($datos, 0, 137);
$parte2 = substr($datos, 175);
Los dos números de la primera parte significan desde la posición 0 hasta la columna 137 y el de la segunda desde la columna 175 hasta el final (no ponemos segundo número).
He quitado todas las columnas con In
In EMC es Equilibrium moisture content y viene a ser un índice de humedad para la madera (supongo que para cosas de riego o riesgo de incendio) e In Air Density es la densidad del aire interior. Si esos dos índices te interesan prueba a poner 155 en la parte2.
-
Como siempre gracias por tu gran ayuda.