Meteoclimatic

Software => WeeWX => Mensaje iniciado por: MeteoGombrèn en 29 de Enero del 2021, 11:32:38 am

Título: Parametro para .xml (data hora Local)
Publicado por: MeteoGombrèn en 29 de Enero del 2021, 11:32:38 am
Buenas compañeros,

Tengo tanto la Raspi como el Weewx en formato hora UTC, per necessito enviar un .xml

donde un parametro es la current hora local, y no consigo encontrar el codigo para hacerlo.

Opción1: Codigo que me genere la current hora local o Opción2: sumar +1h a la UTC (current.dateTime)

Gracias por vuestro tiempo, conocimientos, y colaboración.

Saludos.
Título: Re:Parametro para .xml (data hora Local)
Publicado por: jmviper en 29 de Enero del 2021, 15:36:07 pm
Hola

Weewx genera las plantillas con un módulo python llamado Cheetah. Es un módulo que rellena páginas web y yo no entiendo mucho de él pero viendo un poco su documentación (https://cheetahtemplate.org/index.html) tiene algún comando que te puede ayudar, por ejemplo el comando #include (https://cheetahtemplate.org/users_guide/output.html#include)

Ese comando incluye el contenido de un archivo de texto externo.

La idea sería la de crear un script bash que pusiera la fecha en un archivo de texto  y que se generase cada vez que weewx genere el xml.

Por ejemplo creas donde tienes la plantilla del xml en el skin que te lo crea un archivo llamado ponerfecha.sh y pones esto en su interior:

Código: [Seleccionar]

#!/bin/bash

fechalocal=$(TZ=":Europe/Madrid" date "+%d-%m-%Y %H:%M")
echo $fechalocal > /etc/weewx/skins/tuskin/fechalocal.txt


Le das permisos de ejecución con sudo chmod +x /etc/weewx/skins/tuskin/ponerfecha.sh

Y entras en el crontab de root con sudo crontab -e y añades una línea al final con el intervalo deseado para ejecutar el script.

Por ejemplo */5 * * * * /etc/weewx/skins/tuskin/ponerfecha.sh generará cada 5 minutos el archivo con fecha local en /etc/weewx/skins/tuskin/fechalocal.txt

Nota que he puesto en las rutas tuskin que tendrás que cambiar por el nombre del skin que uses (Seasons, Sofaskin, NeoWX etc)

Una vez que se esté creando editas la plantilla del xml cambiando $current.dateTime.format("%d-%m-%Y %H:%M") por #include "fechalocal.txt"

Ya digo que quizás hay otros modos que sabrán quien sepa de todo eso pero creo que funcionará porque lo he probado  *+* *+*

Saludos
Título: Re:Parametro para .xml (data hora Local)
Publicado por: zapal en 29 de Enero del 2021, 20:50:58 pm
 apla3 apla3 apla3

Me anoto el #include

gracias paisano


Edito para comentar que lo he probado pero no me funciona, el script si obiamente, pero al generar la plantilla xml me da error. Dentro de una estructura xml
Código: [Seleccionar]
<?xml version="1.0" encoding="utf-8"?>
<pruebas_XML_V1>
<autor>yo mismo</autor>
<estacion>mi estacion</estacion>
<codigoestacion>001</codigoestacion>
<fecha>$current.dateTime.format("%d/%m/%Y")</fecha> #include "fechalocal.txt"
<hora>$current.dateTime.format("%H:%M")</hora> #include "horalocal.txt"


Se entiende que sustituyo la negrita por lo que hay a la izquierda en negrita y en ambos ficheros existe el dato solicitado.

EDITO de nuevo para comentar que si funciona, pero no metido entre las etiquetas del XML. Mañana le echaré otro rato.
Título: Re:Parametro para .xml (data hora Local)
Publicado por: jmviper en 29 de Enero del 2021, 23:46:09 pm
Buffff se nota que he dejado Python de lado

Lo siento, estoy por borrar mi primer mensaje jejejeje…. bueno no... eso tiene fácil solución y es cerrar con # así se quedaría como <fecha>#include "fechalocal.txt"#</fecha>

Mis pruebas las he hecho sin estar entre etiquetas y por eso no daba error pero en cuanto se las he puesto weewx se ha empezado a quejar y a poner mensajes en rojo  *+* *+*

En serio, esta tarde estaba en otra cosa y no recordaba bien que trabajar con Cheetah es trabajar con Python así que esta noche me he centrado y va mejor la cosa  *-* *-*

Ponemos esto en la plantilla que vayamos a usar:

Código: [Seleccionar]
#from datetime import datetime
#import pytz
#set horalocal = pytz.timezone("US/Eastern")
#set horalocal = datetime.now(horalocal)
<fecha>$horalocal.strftime("%d-%m-%Y %H:%M")</fecha>

con eso Cheetah ejecuta código Python pero a su manera ya que es un módulo del mismo y tiene sus propios métodos, propiedades etc etc así que por ejemplo para definir una variable con Cheetah ponemos set delante de ella. Después la variable se llama con el signo de dólar delante.

En el trozo de código que he puesto para la plantilla del XML que rellene Cheetah (weewx) se llama al módulo pytz de Python que opera con fechas igual que otros módulos.
Seguramente no lo tengamos instalado por lo que lo instalamos con python -m pip install pytz yo lo hago como root y no sé si como usuario hay que hacerlo con sudo delante, no recuerdo porque siempre trabajo en mi Orange Pi como root.

Eso sí, python será el mismo que use weewx, si tenemos los últimos weewx será python3. Es algo lioso ya que todo depende de cómo se llame a python en /usr/bin, por ejemplo:

root@orangepipc:~# ls -l /usr/bin/python*
lrwxrwxrwx 1 root root       7 oct  3 08:03 /usr/bin/python -> python3
lrwxrwxrwx 1 root root      25 may  1  2020 /usr/bin/python3 -> /etc/alternatives/python3
-rwxr-xr-x 2 root root 3538304 jul 25  2020 /usr/bin/python3.7
lrwxrwxrwx 1 root root      36 jul 25  2020 /usr/bin/python3.7-config -> arm-linux-gnueabihf-python3.7-config
-rwxr-xr-x 2 root root 3538304 jul 25  2020 /usr/bin/python3.7m
lrwxrwxrwx 1 root root      37 jul 25  2020 /usr/bin/python3.7m-config -> arm-linux-gnueabihf-python3.7m-config
lrwxrwxrwx 1 root root      16 mar 26  2019 /usr/bin/python3-config -> python3.7-config
lrwxrwxrwx 1 root root      10 mar 26  2019 /usr/bin/python3m -> python3.7m
lrwxrwxrwx 1 root root      17 mar 26  2019 /usr/bin/python3m-config -> python3.7m-config

están los symlinks (enlaces simbólicos o en Windows accesos directos  *+* *+*). En mi caso solo tengo python3.7 y lo puedo llamar como python, python3 y python3.7

En fin, que saludos paisano y perdón por las molestias ocasionadas  *+* *+*
Título: Re:Parametro para .xml (data hora Local)
Publicado por: MeteoGombrèn en 01 de Febrero del 2021, 20:34:43 pm
BUFFF  apla3 apla3 apla3 apla3 apla3 apla3 apla3 apla3

Buenas jmviper, Muchissimas gracias,

pues telita con el tema no!!!!! Yo que pensava que con cambiar UN PELÍN el codigo de dateTime ya estaria solucionado  :;

perdona por no haver  respondido antes, he estado liao estos días.

lo provaré y te digo alguna cosita,

lo que mas me gusta de todo esto es que aprendo un montón de vuestra sabiduria   O0

Gracias
Título: Re:Parametro para .xml (data hora Local)
Publicado por: jmviper en 01 de Febrero del 2021, 23:09:44 pm
Ya contarás  :)

Saludos