----- EXEMPLO 1 -----------
// Radar de Sao Roque

local var1 = media('Radar_morasseia')

if var1 >= 0  and var1 < 2.5 then
    return 0
elseif var1 >= 2.5  and var1 < 4.5 then
    return 1
elseif var1 >= 4.5  and var1 < 12.5 then
    return 2
elseif var1 >= 12.5  and var1 < 120 then
    return 3
else 
    return 4
end

----------------- EXEMPLO 2 -----------
// Hdroestimador

local var1 = media('hidrocptec')


if var1 >= 0  and var1 < 2.5 then
    return 0
elseif var1 >= 2.5  and var1 < 4.5 then
    return 2
elseif var1 >= 4.5  and var1 < 12.5 then
    return 1
elseif var1 >= 12.5  and var1 < 120 then
    return 3
else 
    return 4
end






REGRAS PCD

if linhas_anteriores[-1] == nil then
     return nil
end

local pluvioAnterior = linhas_anteriores[-1].pluvio
local pluvioProximo = proxima_linha.pluvio
local pluvio = pluvioProximo - pluvioAnterior

local tsAnterior = linhas_anteriores[-1].timestamp
local tsProximo = proxima_linha.timestamp
local diferencaTempo = tsProximo - tsAnterior

local txpluvio = pluvio /(diferencaTempo.em_minutos)

return {pluvio = pluvio, txpluvio = txpluvio}





if proxima_linha.pluvio == nil then
	-- A PCD n�o informou "pluvio" desta vez. N�o vamos fazer a coleta.
	return nil
elseif coletas_anteriores[-1] == nil then
	-- N�o foi realizada nenhuma coleta ainda.
	-- Copiar o valor da linha:
	-- (N�o temos como calcular a taxa de chuva, ent�o vamos defini-la
	-- como zero.)
	return {pluvio = proxima_linha.pluvio, txpluvio = 0}
else
	-- Verificar se esta coleta vai "virar" o dia:
	if coletas_anteriores[-1].timestamp.dia == proxima_linha.timestamp.dia then
		-- N�o vai virar.
		-- Pega o �ltimo valor de "pluvio" dispon�vel no arquivo:
		local ultimoPluvio, ultimoTS = ultimo_valor(linhas_anteriores, 'pluvio')
		if ultimoPluvio == nil then
			ultimoPluvio = 0
		end
		if ultimoTS == nil then
			ultimoTS = coletas_anteriores[-1].timestamp
		end
		
		-- Calcula a diferen�a entre "pluvio"s; este � o valor de chuva
		-- acumulada.
		local dPluvio = proxima_linha.pluvio - ultimoPluvio
		
		-- Calcula a chuva acumulada pela diferen�a de tempo; esta �
		-- taxa de chuva:
		local txPluvio = dPluvio / (proxima_linha.timestamp - ultimoTS).em_horas
		
		return {pluvio = dPluvio, txpluvio = txPluvio}
	else
		-- Vai virar o dia.
		-- Isto significa que ocorreu esvaziamento do pluvi�metro,
		-- e temos que manter o valor da linha.
		-- (Para a taxa de chuva, vamos copiar o valor da �ltima
		--  coleta.)
		return {pluvio = proxima_linha.pluvio,
		        txpluvio = coletas_anteriores[-1].txpluvio}
	end
end




Vou lhe mostrar uma analise que eu uso aqui e que ja testei. Nela a chuva acumulada eh obtida fazendo-se uma media da chuva acumulada de todas as PCDs que influenciam um poligono. Voce pode tentar adaptar este algoritmo para o seu problema. Segue a analise: 

------------------------------------------------------------------------------------------- 
local chuvaAcumulada = 0 

local pcds = influencia_pcd('PCD') 
for i, v in ipairs(pcds) do 
    chuvaAcumulada = chuvaAcumulada + ( soma_historico_pcd('PCD', 'pluvio', v, 24) ) / #pcds 
end 

local prev24h = maximo_eta('ETA20km', 24) 

print(nome, ' ',chuvaAcumulada, ' ', prev24h) 

local chuvaTotal = chuvaAcumulada + prev24h 

if chuvaTotal < 30 then 
   return 0 
elseif chuvaTotal < 50 then 
   return 1 
elseif chuvaTotal < 80 then 
   return 2 
elseif chuvaTotal < 110 then 
   return 3 
else 
   return 4 
end 
------------------------------------------------------------------------------------------- 


Um exemplo para o operador prec_historico_grid: 
- Vamos supor que foram coletados em um ponto da grade os seguintes valores de intensidade de chuva para uma fonte de dados chamada "hidro": 
12:00 ----- 10mm/h 
12:15 ----- 20mm/h 
12:45 ----- 30mm/h 
13:00 ----- qualquer outro valor 

Supondo que agora sao 13:00 e a ultima coleta foi a de 13 horas, ao aplicar o operador prec_historico_grid('hidro', 1), o valor obtido para este ponto sera: 
= (10 x 0,25) + (20 x 0,5) + (30 x 0,25) 

Ou seja, o algoritmo considera que choveu 10mm/h entre 12:00 e 12:15; choveu 20mm/h entre 12:15 e 12:45; e choveu 30mm/h entre 12:45 e 13:00. 
Neste caso, a unidade da resposta esta em "mm". Por causa do calculo que eh feito internamente eu disse que o resultado so tera sentido se os valores de entrada estiverem em alguma unidade/hora. Observe tambem que a ultima coleta eh descartada no calculo da soma. 
Outra caracteristica eh que esta soma eh feita para cada ponto da grade e o valor retornado por este operador eh o valor maximo encontrado no raster resultante para o limite do poligono. 

Em um exemplo de analise que rodei aqui, calculo a chuva acumulada nas ultimas 72 horas, utilizando dado do hidroestimador: 
--------------------------------------------------------------------------- 
local max_prec = prec_historico_grid('hidro', 72) or 0 

if max_prec < 30 then 
return 0 -- Normal 
elseif max_prec < 60 then 
return 1 -- Observacao 
elseif max_prec < 90 then 
return 2 -- Atencao 
elseif max_prec < 120 then 
return 3 -- Alerta 
else 
return 4 -- Alerta maximo 
end 
--------------------------------------------------------------------------- 




------------------------------------------------------------------------
if proxima_linha.pluvio == nil then
	-- A PCD no informou "pluvio" desta vez. No vamos fazer a coleta.
	return nil
else
	if coletas_anteriores[-1] ~= nil  then
		-- Pega o ltimo valor de "pluvio" disponvel no arquivo:
		local ultimoPluvio = ultimo_valor(linhas_anteriores, 'pluvio')
		if ultimoPluvio == nil then
			ultimoPluvio = 0
		end
		
		local prec = proxima_linha.pluvio - ultimoPluvio		
		
		--eliminar ruidos
		if prec < 0 or prec > 200 then
			return {pluvio = 0}
		else
			return {pluvio = prec}
		end
	else
		return {pluvio = proxima_linha.pluvio}
	end	
end
------------------------------------------------------------------------

> > 
> > > SERVIDOR => 200.137.4.175
> > 
> > > 
> > 
> > > CONTA => ddpi
> > 
> > > 
> > 
> > > Senha  =>  mtv.0789
> > 
> > > 
> > 
> >  
> > 



----------------------------------------------------------------------
local chuvaAcumulada = 0

local pcds = influencia_pcd('PCD')
for i, v in ipairs(pcds) do
	chuvaAcumulada = chuvaAcumulada + ( soma_historico_pcd('PCD', 'pluvio', v, 24) ) / #pcds end

local prev24h = maximo_eta('ETA20km', 24)

print(nome, ' ',chuvaAcumulada, ' ', prev24h)

local chuvaTotal = chuvaAcumulada + prev24h

if chuvaTotal < 30 then
      return 0
elseif chuvaTotal < 50 then
      return 1
elseif chuvaTotal < 80 then
      return 2
elseif chuvaTotal < 110 then
      return 3
else
      return 4
end
----------------------------------------------------------------------


