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.

La classe de calibration par défaut fait deux choses:
  1. Générer pression atmosphérique relative.

  2. Retirer les valeurs invalides de direction du vent.

Toute calibration utilisateur que vous écrivez doit également faire ceci.

É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.

Créez un fichier texte dans votre répertoire modules, par exemple, Calib.py et copiez-y le texte suivant:

class Calib(object):
    def __init__(self, status):
        self.pressure_offset = eval(status.get('fixed', 'pressure offset'))
    def calib(self, raw):
        result = dict(raw)
        # sanitise data
        if result['wind_dir'] is not None and result['wind_dir'] >= 16:
            result['wind_dir'] = None
        # calculate relative pressure
        result['rel_pressure'] = raw['abs_pressure'] + self.pressure_offset
        return result

La classe Calib a deux méthodes. Calib.__init__() est le constructeur et est un bon endroit pour mettre toutes les constantes nécessaires. :py: meth:Calib.calib génère un ensemble unique de données ‘calibrées’ à partir d’un seul ensemble de données ‘brutes’. Il y a quelques règles à suivre lors de l’écriture de cette méthode:

  • 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, status)

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

DefaultCalib(status)

Classe de calibration par défaut

class pywws.calib.DefaultCalib(status)[source]

Classe de calibration par défaut

Cette classe définit la pression relative, en utilisant un décalage de pression lues à partir de la station météorologique, et ‘normalise’ la valeur de la direction du vent. C’est la calibration strictement minimale nécessaire.

calib(raw)[source]
class pywws.calib.Calib(params, status)[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