Eseguire Weewx su OpenWRT

Prerequisiti

Questa è una guida per eseguire Weewx su OpenWRT con una stazione meteo Oregon Scientific WMR200.

  • OpenWRT Chaos Calmer 15.05

  • Circa 10 Mb di spazio libero (una volta compilati, installati e rimossi i pacchetti sorgente, occuperanno circa 7 Mb)

  • Pacchetti dal repository tramite webui o ssh opkg:

    • python-light
    • libusb-1.0
    • openssh-sftp-server (opzionale, fornisce l'accesso SFTP, utile per la modifica dei file)

  • Pacchetti Python dal repository:

    • python-distutils
    • python-codecs
    • python-openssl
    • python-logging
    • python-email
    • python-decimal
    • python-ctypes
    • python-sqlite3

  • Pacchetti Python dalla sorgente (cioè non nel repository) "python setup.py install" (non provengono dal sito dev, per non usare https in wget):

    • configobj: http://pypi.upc.edu/mirror/configobj/configobj-5.0.6.tar.gz
    • six: http://pkgs.fedoraproject.org/repo/pkgs/python-six/six-1.10.0.tar.gz/34eed507548117b2ab523ab14b2f8b55/six-1.10.0.tar.gz
    • pyusb: http://internode.dl.sourceforge.net/project/pyusb/PyUSB%201.0/1.0.0/pyusb-1.0.0.tar.gz

  • Codice sorgente di Weewx, sezione Installare con setup.py nella Guida all'installazione (una volta installato puoi risparmiare circa 1 MB eliminando le cartelle di esempi, documentazione e skin)

Configurazione Weewx

In weewx.conf ho disabilitato i report per salvare l'installazione di altri pacchetti:

report_services = weewx.engine.StdPrint

Aggiungi la sezione driver:

[WMR200]
    # This section is for the Oregon Scientific WMR200
    
    # The station model, e.g., WMR200, WMR200A, Radio Shack W200
    model = WMR200
    
    # The driver to use:
    driver = weewx.drivers.wmr200
    
    archive_interval = 300

Quindi forza l'intervallo di archiviazione per l'impostazione della tua stazione, nelle sezioni [WMR200] e [StdArchive]:

[StdArchive]
    
    # If the station hardware supports data logging then the archive interval
    # will be downloaded from the station. Otherwise, specify it (in seconds).
    archive_interval = 300

Quindi per correggere l'errore con il driver di back-end mancante è necessario aiutare il file del driver /home/weewx/bin/weewx/drivers/wmr200.py a trovare il driver USB installato:

import usb

import usb.backend.libusb1
backend = usb.backend.libusb1.get_backend(find_library=lambda x: "/usr/lib/libusb-1.0.so")

Il problema sopra descritto e la correzione non si applicano solo al file wmr200.py ma sembra rilevante per tutti i driver basati su USB. Sicuramente vale anche per il driver fousb.py che supporta un'enorme varietà di stazioni meteorologiche prodotte da Fine Offset.

Ora dovrebbe funzionare. Puoi monitorare il registro di sistema per i messaggi Weewx in ssh -> "logread -f"

Script Init

Ho aggiunto questo script init di avvio: /etc/init.d/weewxd

#!/bin/sh /etc/rc.common
# Simple weewkd initd for openwrt
# Note paths used if different.
# www.httech.com.au

START=99
STOP=99

start() {        
        logger "starting weewx"
        # commands to launch application
        /home/weewx/bin/weewxd --daemon /home/weewx/weewx.conf
}       

stop() {          
        logger "stopping weewx"
        # commands to kill application 
        kill -9 `cat /var/run/weewx.pid`        
}

restart() {          
        logger "restarting weewx"
        # commands to kill application 
        kill -HUP `cat /var/run/weewx.pid`
        /home/weewx/bin/weewxd --daemon /home/weewx/weewx.conf
}
Crediti: Hayden Thring, Autore: BernieHD