domingo, 3 de enero de 2016

Página para la generación de scripts para la sindicación de Feeds RSS

2016-1-3.
He encontrado la siguiente página Web para la generación de scripts y poder incluirlos en página web. Así podré tener los titulares de un blog por ejemplo. En mi caso mi blog en el que llevo todo lo referente a mi estación meteorológica y todo lo que relacionado con ella.
La dirección de la web es la siguiente:
http://rss.sindicacion.net/

Modificación de la ubicación de la página WEB

2016-1-3. Cambio de la ubicación de los archivos de la página WEB.
Para minimizar los accesos a la tarjeta SD de la Raspberry pi, redirecciono la generación de los archivos del programa weewx al directorio /mnt/var/www/ del disco duro.
Para no tocaar la configuración del servidor Apache creo un enlace simbólico del archivo /var/www/weewx a la ubicación de los archivos de la página web /mnt/var/www/ para que se sirva la página web.
La dirección de acceso a la página web sigue siendo la misma.

sábado, 2 de enero de 2016

Parada de Weewx por base de datos ocupada

2016-1-2.
Trasteando con la base datos he provocado que el programa se parara debido a que al intentar acceder a la base de datos, esta se encontraba bloqueada por el programa SqliteBrowser que era con el que estaba visualizando los registros.
Por tanto cada vez que se abra la base de datos hay que parar el programa.
Este es el error que ha dado en el archivo weewx.log:
Jan  2 10:55:37 raspberrypi weewx[22893]: engine: Shutting down StdReport thread
Jan  2 10:55:37 raspberrypi weewx[22893]: engine: Caught database OperationalError: database is locked
Jan  2 10:55:37 raspberrypi weewx[22893]:     ****  Waiting 2 minutes then retrying...
Jan  2 10:57:38 raspberrypi weewx[22893]: engine: retrying...
Jan  2 10:57:38 raspberrypi weewx[22893]: engine: Using configuration file /etc/weewx/weewx.conf
Jan  2 10:57:38 raspberrypi weewx[22893]: engine: Loading station type FineOffsetUSB (weewx.drivers.fousb)
Jan  2 10:57:38 raspberrypi weewx[22893]: fousb: driver version is 1.8
Jan  2 10:57:38 raspberrypi weewx[22893]: fousb: polling mode is ADAPTIVE
Jan  2 10:57:38 raspberrypi weewx[22893]: fousb: found station on USB bus=001 device=005
Jan  2 10:57:38 raspberrypi weewx[22893]: engine: StdConvert target unit is 0x1
Jan  2 10:57:38 raspberrypi weewx[22893]: engine: Archive will use data binding wx_binding
Jan  2 10:57:38 raspberrypi weewx[22893]: engine: Record generation will be attempted in 'hardware'
Jan  2 10:57:39 raspberrypi weewx[22893]: engine: Using archive interval of 300 seconds
Jan  2 10:57:44 raspberrypi weewx[22893]: engine: Caught unrecoverable exception in engine:
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****  database is locked
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****  Traceback (most recent call last):
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****    File "/usr/share/weewx/weewx/engine.py", line 842, in main
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****      engine = EngineClass(config_dict)
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****    File "/usr/share/weewx/weewx/engine.py", line 75, in __init__
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****      self.loadServices(config_dict)
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****    File "/usr/share/weewx/weewx/engine.py", line 136, in loadServices
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****      self.service_obj.append(weeutil.weeutil._get_object(svc)(self, config_dict))
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****    File "/usr/share/weewx/weewx/engine.py", line 504, in __init__
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****      self.setup_database(config_dict)
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****    File "/usr/share/weewx/weewx/engine.py", line 602, in setup_database
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****      dbmanager = self.engine.db_binder.get_manager(self.data_binding, initialize=True)
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****    File "/usr/share/weewx/weewx/manager.py", line 824, in get_manager
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****      self.manager_cache[data_binding] = open_manager(manager_dict, initialize)
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****    File "/usr/share/weewx/weewx/manager.py", line 973, in open_manager
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****      manager_dict['schema'])
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****    File "/usr/share/weewx/weewx/manager.py", line 137, in open_with_create
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****      dbmanager = cls(connection, table_name=table_name, schema=schema)
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****    File "/usr/share/weewx/weewx/manager.py", line 1108, in __init__
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****      super(DaySummaryManager, self).__init__(connection, table_name, schema)
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****    File "/usr/share/weewx/weewx/manager.py", line 69, in __init__
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****      self.sqlkeys = self.connection.columnsOf(self.table_name)
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****    File "/usr/share/weewx/weedb/sqlite.py", line 154, in columnsOf
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****      column_list = [row[1] for row in self.genSchemaOf(table)]
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****    File "/usr/share/weewx/weedb/sqlite.py", line 143, in genSchemaOf
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****      for row in self.connection.execute("""PRAGMA table_info(%s);""" % table):
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****  OperationalError: database is locked
Jan  2 10:57:44 raspberrypi weewx[22893]:     ****  Exiting.

Quedó resuelto con un arranque del programa Weewx de nuevo.
sudo /etc/init.d/weewx start

Tal como arrancó el programa actualizó la base de datos con todos los registros pendientes desde que se paró el programa.


viernes, 1 de enero de 2016

Administrador de bases de datos SQLITE

2016-1-1. Instalación de SqliteBrowser.
Para la administración de la base de datos de Weewx he instalado el administrador de bases de datos Sqlite SqliteBrowser.
El comando como siempre es:
sudo apt-get install sqlitebrowser

El programa se abre en entorno gráfico por lo que hay que acceder a la Raspberry en entorno gráfico.
Desde mi Mac, las opciones para ello pueden ser:

  1. Acceso remoto de Windows, instalando el servidor Remote Desktop Protocol XRDP en Raspberry y el cliente de Conexión de Acceso Remoto para Mac.
  2. Acceso VNC, instalando el Servidor TightVncserver en Raspberry y el cliente VNC viewer en Mac.
  3. Acceso X11 con la aplicación XQuartz de Mac OSX.
La diferencia es que las dos opciones primeras lo que hacen es arrancar el escritorio en la Raspberry y te la traen a tu escritorio local, mientras que la aplicación X11 es un protocolo nativo de Linux y se trata de un servidor de ventanas, por lo que lo único que te traen a tu escritorio local es la aplicación que tu arranques, no el escritorio completo de Raspbian. Por tanto para el tema de la carga aplicada a la pequeña Raspberry le viene mejor esta última, así como para la transmisión de datos por línea que será menor también.



Archivos Log's en Raspberry. Apache2 y Weewx

2016-1-1. Para minimizar los accesos continuos sobre la SD de la Raspberry, dirigí el archivado de los archivos Log's de las aplicaciones Apache y Weewx al disco duro que tengo instalado en un puerto Usb de la Raspberry. Este lo tengo montado en /mnt/var/log/
A día de hoy el archivado se está realizando correctamente en el disco duro.

-rw-r--r-- 1 root adm  1228789 ene  1 17:06 weewx.log
-rw-r--r-- 1 root root 406596 ene  1 16:55 access.log
..etc.

Modificación rango de temperatura Weewx.conf, apartado StdQc

2016-1-1. Debido a la recepción errónea esporádica de valores extremos de temperatura, modifico el rango de temperatura en el archivo weewx.conf en su apartado de control de calidad StdQc.
dejo los valores acotados entre -10º y 49º de mínimo y máximo. Considero que en esta localización nunca debemos de superar esos márgenes por lo que no son aceptables valores como los que sin saber porque mi estación manda esporádicamente. Espero que con esta modificación queden resueltos estos errores. De momento no se como afectará esta modificación al funcionamiento del programa.
La modificación queda como a continuación:
El valor original de temperatura mínima era de -40ºF, que son -40ºC. Lo dejo en 14ºF que son -10ºC. El resto queda tal como estaba.
#   This section is for quality control checks. If units are not specified,
#   values must be in the units defined in the StdConvert section.

[StdQC]

    [[MinMax]]
        barometer = 26, 32.5, inHg
        outTemp = 14, 120, degree_F
        inTemp = 10, 120, degree_F
        outHumidity = 0, 100
        inHumidity = 0, 100

        windSpeed = 0, 120, mile_per_hour


Imagen que muestra el error esporádico que recibo:

Incidencia en la garita de platos.

2016-1-1. La pintura no ha agarrado bien y se está yendo.
Bueno pues lo que me temía está ocurriendo antes de lo que me esperaba, bueno no tan antes. A la primera de cambio, sufriendo la intemperie y con una lluvia de lo mas ligera y sin apenas viento, el plato superior ya está empezando a descascarillarse. Ya tiene una superficie notable sin pintura.
Esto no tiene mas remedio que volver a desmontar y retomar la pintura con otra forma de aplicación que garantice su agarre o con otra imprimación. Ya lo veremos.
En definitiva, el tema de la pintura fracaso absoluto.