Pluviómetro Auriol -
hvalentim - 16-09-2015
Bom Dia,
Com a chegada da chuva dei-me conta de um problema com o meu pluviómetro Auriol.
Apesar de no ecrã do WeatherDuino RX surgir bem o valor em mm/m2, essa informação aparentemente não é passada ao Weewx (do "tail -f /var/log/syslog"):
restx: OWM: data: {'wind_speed': '3.9', 'wind_dir': '218', 'name': 'Mata dos Medos', 'dewpoint': '291.4', 'temp': '18.6', 'uv': '0.00', 'long': '-9.4203', 'humidity': '98', 'pressure': '1004.968', 'rain_24h': '0.00', 'lat': '38.1607', 'rain_1h': '0.00', 'alt': '206.0', 'lum': '0.00', 'rain_today': '1.00', 'wind_gust': '7.2'}
Só o valor "rain today" surge.
A versão do software usada é a 1.4_b037
RE: Pluviómetro Auriol -
werk_ag - 16-09-2015
Olá, bom dia
Talvez por não conheçer bem o Weewx, não terei entendido bem o problema que reporta. O Weewx não lhe está a mostrar o total diário de precipitação, ou outro valor que seria suposto ser mostrado?
O valor que lhe aparece no display em mm/m2, corresponde ao Rain Today, que, pelo que me diz é recebido pelo Weewx.
Se possível, dê-me mais alguns pormenores da situação que verifica.
Editado:
Estive a verificar os dados na sua página, e pareceu-me que de facto o Weewx não está a processar o Total Diário de precipitação. Verifiquei tambem que está registado no dia 14 de Junho 2015 um total de precipitação muito elevado, possivelmente de quando inicializou o seu sistema, talvez o problema possa estar relacionado.
RE: Pluviómetro Auriol -
hvalentim - 16-09-2015
Daquilo que julgo entender o Weewx está a "receber" os valores da RainRate e da 'rain_today' [neste momento: '2.80' (que dá certo com a consola Auriol 2,8*1,25=3,5]. Mas não está a receber os outros valores (ou recebe-os ou entende-los como 0).
Na base de dados local ele guarda a rainRate mas a rain surge sempre a 0.
No cálculo dos dados enviados para o WU ele (ou o próprio WU?) calcula/estima um valor de chuva a partir não sei se da taxa de precipitação se da rain_total (só para que se perceba pq é que aí surge um valor para a chuva e localmente/no sítio não)
RE: Pluviómetro Auriol -
werk_ag - 16-09-2015
Existe alguma possibilidades de colocar aqui um extracto dos dados na db do Weewx, com identificação dos campos?
Do lado do WeatherDuino só vejo uma possibilidade, e a mesma pode ser descartada fazendo um "Factory Reset" (com o Weewx desligado, prima o botão de pressão por mais de 5 segundos).
RE: Pluviómetro Auriol -
hvalentim - 17-09-2015
O ficheiro pedido está em anexo.
Ainda há não muito tempo fiz um
factory reset (inadvertidamente) e não parece ter adiantado.
Depois de passar os olhos pela documentação ocorre-me a
eventualidade (e o caso é particular, não encontro precedentes de aplicação de correcções na chuva por um utilizador do
driver Vantage) de o problema estar em haver erro na forma como estava a fazer a conversão do
bucket tip de 2 para 2,5mm usando:
[StdCalibrate]
[[Corrections]]
rain = 1.25 * rain
rainRate = 1.25 * rainRate
É possível que ao invés de aplicar a conversão ao "rain" a deva aplicar a qualquer um destes (ou a todos):
Daily Rain This value is sent as number of rain clicks. (0.2mm or 0.01in)
Last 15-min Rain This value is sent as number of rain clicks. (0.2mm or 0.01in)
Last Hour Rain This value is sent as number of rain clicks. (0.2mm or 0.01in)
Daily ET This value is sent as the 1000th of an inch.
Last 24-Hour Rain This value is sent as number of rain clicks. (0.2mm or 0.01in)
São todos fornecidos no LOOP e registados no Arquivo?
Pergunto pq o WeeWX tem duas formas possíveis de obter os dados para registo (
record_generation):
http://www.weewx.com/docs/usersguide.htm#StdArchive
Calcula ele próprio do LOOP ou vai buscar o registo arquivado pela própria estação.
Numa terceira variante usa o arquivo mas considera o LOOP para os máximos e mínimos.
Para despiste, para já removi o factor de correcção da chuva.
EDITADO: Parece que o "Rainfall" é parte do Arquivo mas não do Loop. Como eu estava o usar
record_generation=software é bem possível que o "rain = 1.25 * rain" estivesse a "forçar" um resultado 0...
RE: Pluviómetro Auriol -
werk_ag - 17-09-2015
Quote:Ainda há não muito tempo fiz um factory reset (inadvertidamente) e não parece ter adiantado.
Isto seria uma hipotese remota, e fiz referencia a ela, apenas para descartar essa possivel hipotese.
Quote:[StdCalibrate]
[[Corrections]]
rain = 1.25 * rain
rainRate = 1.25 * rainRate
É possível que ao invés de aplicar a conversão ao "rain" a deva aplicar a qualquer um destes (ou a todos):
Daily Rain This value is sent as number of rain clicks. (0.2mm or 0.01in)
Last 15-min Rain This value is sent as number of rain clicks. (0.2mm or 0.01in)
Last Hour Rain This value is sent as number of rain clicks. (0.2mm or 0.01in)
Daily ET This value is sent as the 1000th of an inch.
Last 24-Hour Rain This value is sent as number of rain clicks. (0.2mm or 0.01in)
Parece-me que está a aplicar o multiplicador no local correcto.
Não deverá aplicá-lo em nenhum dos outros.
Quote:São todos fornecidos no LOOP e registados no Arquivo?
O LOOP contem apenas o Rain Rate (por hora), Day Rain e Year Rain, valores sempre em numero de cliques.
http://www.davisnet.com/support/weather/download/VantageSerialProtocolDocs_v261.pdf
No arquivo (registado no logger), apenas são gravados o Rain Rate, e o numero de cliques ocurridos no periodo correspondente ao arquivo.
Quote:Pergunto pq o WeeWX tem duas formas possíveis de obter os dados para registo (record_generation): http://www.weewx.com/docs/usersguide.htm#StdArchive
Sobre isto, poderá tentar mudar o valor por defeito, de hardware para software, talvez seja mesmo a solução.
Dos dados da db, não tirei nenhuma conclusão pois pensava que o valar total da precipitação acumulada era tambem guardado na base de dados.
Algures em algum lugar o Weewx, deve guardar esse valor. A minha suspeita é que esse valor por alguma razão tenha sido inicializado com um valor incorrecto. Não sei como o Weewx faz esses cálculos, com o Cumulos é muito fácil ver nos logs, como são inicializados os valores da preciptação total.
Infelizmente de momento não tenho o Linux instalado para poder correr o Weewx. Talvez consiga instalá-lo no próximo fim de semana.
RE: Pluviómetro Auriol -
hvalentim - 17-09-2015
Depois de testes eis o apurado.
O QUE APARENTEMENTE FUNCIONA BEM:
# This section can adjust data using calibration expressions.
[StdCalibrate]
[[Corrections]]
# For each type, an arbitrary calibration expression can be given.
# It should be in the units defined in the StdConvert section.
# AURIOL RAINMETER SPECIFIC VALUES
rain = 1.25 * rain
rainRate = 1.25 * rainRate
# FINEOFFSET WIND INSTRUMENTS SPECIFIC VALUES
windSpeed = windSpeed * 0.448
windGust = windGust * 0.448
# This section controls the origin of derived values.
[StdWXCalculate]
# Derived quantities are calculated by this service. Possible values are:
# hardware - use the value provided by hardware
# software - use the value calculated by weewx
# prefer_hardware - use value provide by hardware if available,
# otherwise use value calculated by weewx
rainRate = prefer_hardware
# This section is for configuring the archive service.
[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
# How long to wait (in seconds) before processing new archive data. Must
# be greater than zero.
archive_delay = 15
# If possible, new archive records are downloaded from the station
# hardware. If the hardware does not support this, then new archive
# records will be generated in software.
# Set the following to "software" to force software record generation.
record_generation = hardware
# Whether to include LOOP data in hi/low statistics
loop_hilo = True
O QUE FUNCIONA MAL:
record_generation = software -> invariavelmente regista a rainRate mas não a rain
Isto é estranho porque na documentação o autor demonstra conhecimento e compatibilidade como construções caseiras emulando uma Davis SEM Logger, recomendando que nesse caso se use a opção "software" (como é que nesse caso a rain é calculada?)
É possível tentar contornar isto definindo nas Corrections algo como: rain = rainRate / 5
Seria no entanto necessário entender como o Weewx calcula a rainRate a partir dos dados no loop para perceber se pode ser uma constante ou uma valor calculado usando eventualmente outras variáveis.
Tendo mudado o processo de geração do arquivo (i.e, de introdução dos valores na base de dados do Weewx) para a recuperação dos dados a partir do hardware perdi o registo do valor da temperatura da caixa externa que estava a mapear como soilTemp1.
Dúvida: é possível modificar o software WeatherDuino para gravar o soilTemp1 no arquivo?
PS: No WeeWX para apagar valores erróneos e regenerar as estatísticas, é uma questão de editar a base de dados usando o
sqlitebrowser e depois usar a ferramenta incluida com o programa:
wee_database --drop-daily
wee_database --backfill-daily
Tanto quanto entendo o programa mantém tabelas com os registos máximos, mínimos e acumulados por dia que depois consulta para gerar os gráficos e as stats.
RE: Pluviómetro Auriol -
werk_ag - 17-09-2015
(17-09-2015, 14:06)hvalentim Wrote: O QUE FUNCIONA MAL:
record_generation = software -> invariavelmente regista a rainRate mas não a rain
Isto é estranho porque na documentação o autor demonstra conhecimento e compatibilidade como construções caseiras emulando uma Davis SEM Logger, recomendando que nesse caso se use a opção "software" (como é que nesse caso a rain é calculada?)
Talvez seja apenas um problema de interpretação, é que o WeatherDuino Pro2 emula uma Davis COM Logger.
Quote:É possível tentar contornar isto definindo nas Corrections algo como: rain = rainRate / 5
O RainFall Rate não pode ser obtido simplesmente a partir do valor da rain, pois ele involve o factor tempo. Isto é, é calculado medindo o tempo que decorre entre cada clique.
Mas pelo que me diz, deixando as definições do record_generation em modo standard, ou seja hardware, não precisa se preocupar com isso, pois o WeeewX vai usar o valor do RainFall rate fornecido pela estação (WeatherDuino Pro2).
Mas creio que percebi, porque pretende manter o record_generation em modo software: Por causa da alteração que fez para ter o soilTemp1, certo?
Quote:Dúvida: é possível modificar o software WeatherDuino para gravar o soilTemp1 no arquivo?
Sim é, e isso irá resolver-lhe o problema do SoilTemp1.

Terei todo o gosto em ajudá-lo com isso em privado.
RE: Pluviómetro Auriol -
hvalentim - 17-09-2015
(17-09-2015, 16:58)Werk_AG Wrote: Talvez seja apenas um problema de interpretação, é que o WeatherDuino Pro2 emula uma Davis COM Logger.
Depois do "desafio" de soldar a memória eu não me ia esquecer disso.
Quote:O RainFall Rate não pode ser obtido simplesmente a partir do valor da rain, pois ele involve o factor tempo. Isto é, é calculado medindo o tempo que decorre entre cada clique.
Justamente. Nos casos em que a emulação é "sem" o dito a única forma possível de obter os dados é através do LOOP. Nesse caso, como é que eles fazem? Presumo que conhecendo a variação entre LOOPS com o acumulado por ex. diário e sabendo o respectivo
timestamp, é possível inferi-lo.
Quote:porque pretende manter o record_generation em modo software: Por causa da alteração que fez para ter o soilTemp1, certo?
Não pretendo. Já mudei para o modo hardware. Estava a usar o software por causa do registo da temperatura da box externa via o soilTemp, sim.
Quote:Dúvida: é possível modificar o software WeatherDuino para gravar o soilTemp1 no arquivo?
Sim é, e isso irá resolver-lhe o problema do SoilTemp1. 
Terei todo o gosto em ajudá-lo com isso em privado.
OK. Obrigado.
RE: Pluviómetro Auriol (funcionamento c/ WeeWX) -
hvalentim - 12-10-2015
COMO É CALCULADA A RAIN A PARTIR DO LOOP PELO WEEWX?
RESPOSTA: A PARTIR DO DIFERENCIAL NO TOTAL MENSAL.
Excerto do ficheiro do driver - vantage.py (é possível
aceder à totalidade do código do ficheiro no GitHub >>)):
Code:
# Because the Davis stations do not offer bucket tips in LOOP data, we
# must calculate it by looking for changes in rain totals. This won't
# work for the very first rain packet.
if self.save_monthRain is None:
delta = None
else:
delta = loop_packet['monthRain']-self.save_monthRain
# If the difference is negative, we're at the beginning of a month.
if delta < 0: delta = None
loop_packet['rain'] = delta
self.save_monthRain = loop_packet['monthRain']
return loop_packet
Julgo que se retira daqui uma
conclusão em como para conseguir obter a chuva a partir do LOOP c/ o WeeWX ou bem:
a) se modifica o WeatherDuino para enviar também o valor do monthRain
b) se tenta modificar o WeeWX para fazer as contas a partir do yearRain
Da consulta do ficheiro também se infere que para o total acumulado da chuva no dia bater certo
via LOOP (software mode), com implicações por exempo nos valores reportados ao WunderGround, é preciso adicionar a seguinte calibração (acabo de confirmar que funciona):
# This section can adjust data using calibration expressions.
[StdCalibrate]
[[Corrections]]
dayRain = dayRain * 1.25
Basicamente o programa parece aceitar a aplicação de correcções a qualquer dos valores do LOOP.
A depressão no gráfico supra demostra como, por razões de actualização de software que o Werk_AG conhece, tendo passado do modo de geração a partir de hardware (do arquivo do WeatherDuino) ao modo de geração a partir do Loop (software) na ausência do dayRain = dayRain * 1.25 o valor reportado desceu de 2.3 para 1.8, tendo a ele voltado depois da aplicação do factor de correcção.