# Copyright (c) 2026 Meteo Ponte San Nicoḷ. Tutti i diritti riservati.
#
# Questo plugin consente di calcolare il parametro "ETRate", ossia l'intensità  oraria dell'evapotraspirazione, espressa in in/h, cm/h o mm/h a seconda del tipo di unità in uso.
#
# Requisiti:
#    1. Weewx 4.2 o successivi
#    2. Radiazione solare rilevata
#    3. Evapotraspirazione (parametro "ET") rilevato
#
# Istruzioni per l'installazione:
#    1. Fermare il processo "weewxd" (a seconda del metodo di installazione)
#    2. Inserire questo file nella cartella bin/user
#    3. Nel file configurazione weewx.conf, sottosezione [Engine][[Services]], aggiungere "ETRateService" alla riga "process_services", subito dopo StdWXCalculate. Ad esempio:
#
#        [Engine]
#            [[Services]]
#                process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, weewx.engine.StdQC, weewx.wxservices.StdWXCalculate, user.etrate.ETRateService
#
#    4. Riavviare il processo "weewxd"

import weewx
import weewx.units
weewx.units.obs_group_dict['ETRate'] = 'group_rainrate'

from weewx.engine import StdService

class ETRateService(StdService):

    def __init__(self, engine, config_dict):
        super(ETRateService, self).__init__(engine, config_dict)

        self.bind(weewx.NEW_ARCHIVE_RECORD, self.new_archive_record)

    def new_archive_record(self, event): 
        if event.record.get('ET') is not None:
            et = event.record.get('ET')
            interval = event.record.get('interval')
            event.record['ETRate'] = et / (interval * 60) * 3600
        else:
            event.record['ETRate'] = None