pywws.calib

Calibre les données brutes de la station météo

Ce module permet d’ajuster les données brutes de la station météo dans le cadre de l’étape de “traitement” (voir pywws.Process ). Par exemple, si vous avez installé un entonnoir pour doubler votre zone de collecte du pluviomètre, vous pouvez écrire une routine de calibration pour doubler la valeur de pluie.

The default calibration generates the relative atmospheric pressure. Any user calibration you write must also do this.

Écrire votre module de calibration

Tout d’abord, décider où vous voulez garder votre module. Comme vos gabarits texte et graphe, il est préférable de le garder séparé du code pywws, de sorte qu’il n’est pas affecté par les mises à jour de pywws. Je suggère la création d’un répertoire modules au même endroit que votre répertoire templates.

You could start by copying one of the example calibration modules, or you can create a plain text file in your modules directory, e.g. calib.py and copy the following text into it:

class Calib(object):
    def __init__(self, params, stored_data):
        self.pressure_offset = eval(params.get('config', 'pressure offset'))

    def calib(self, raw):
        result = dict(raw)
        # calculate relative pressure
        result['rel_pressure'] = result['abs_pressure'] + self.pressure_offset
        return result

The Calib class has two methods. Calib.__init__() is the constructor and is a good place to set any constants you need. It is passed a reference to the raw data storage which can be useful for advanced tasks such as spike removal. Calib.calib() generates a single set of “calibrated” data from a single set of “raw” data. There are a few rules to follow when writing this method:

  • Assurez-vous d’inclure la ligne result = dict(raw), qui permet de copier toutes les données brutes à votre résultat, au début.
  • Ne modifiez pas les données brutes.
  • Assurez-vous que vous définissez result['rel_pressure'].
  • N’oubliez pas de retourner (return) le résultat à la fin.

Lorsque vous avez fini d’écrire votre module de calibration vous pouvez demander à pywws de l’utiliser en mettant son emplacement dans votre fichier weather.ini. Il va dans les sections [paths], comme le montre l’exemple ci-dessous:

[paths]
work = /tmp/weather
templates = /home/jim/weather/templates/
graph_templates = /home/jim/weather/graph_templates/
user_calib = /home/jim/weather/modules/usercalib

Notez que la valeur de user_calib ne doit pas inclure le .py à la fin du nom de fichier.

Classes

Calib(params, stored_data) Classe qui implémente la calibration par défaut ou la calibration par l’utilisateur.
DefaultCalib(params, stored_data) Classe de calibration par défaut
class pywws.calib.DefaultCalib(params, stored_data)[source]

Classe de calibration par défaut

This class sets the relative pressure, using a pressure offset originally read from the weather station. This is the bare minimum “calibration” required.

calib(raw)[source]
class pywws.calib.Calib(params, stored_data)[source]

Classe qui implémente la calibration par défaut ou la calibration par l’utilisateur.

D’autres modules pywws utilisent cette méthode pour créer un objet de calibration. Le constructeur crée soit un objet de calibration par défaut ou un objet de calibration utilisateur, en fonction de la valeur user_calib dans la section [paths] du paramètre params. Il adopte alors la méthode de calibration de l’objet :py: meth:calib comme sien.

calibrator = None

Commentaires et questions? SVP, abonnez-vous à la liste pywws http://groups.google.com/group/pywws et faites-vous entendre.