| Type: | Package |
| Title: | Weather Radar Monitoring and 'Telegram' Alerts for Agriculture Research |
| Version: | 0.1.1 |
| Description: | Provides tools to download, process, and analyze real-time meteorological radar images from Simepar (Paraná, Brazil) https://www.simepar.br/simepar/radar_msc. Designed to support the 'Rede Agropesquisa' hydrological monitoring, it includes functions to detect rainfall intensity based on Red, Green, and Blue (RGB) color values within predefined circular study areas. Features automated integration with the 'Telegram Bot API' https://core.telegram.org/bots/api to send spatialized image alerts and an interactive 'shiny' dashboard for easy configuration and continuous weather tracking. |
| License: | GPL-3 |
| Encoding: | UTF-8 |
| Language: | pt-BR |
| RoxygenNote: | 7.3.3 |
| Imports: | httr, magick, shiny, bslib |
| URL: | https://github.com/santoshbdias/RedeAgroRadar |
| BugReports: | https://github.com/santoshbdias/RedeAgroRadar/issues |
| NeedsCompilation: | no |
| Packaged: | 2026-03-12 18:59:50 UTC; SantosHBDias |
| Author: | Santos Henrique Brant Dias
|
| Maintainer: | Santos Henrique Brant Dias <santoshbdias@gmail.com> |
| Repository: | CRAN |
| Date/Publication: | 2026-03-17 19:10:26 UTC |
Iniciar o Painel de Monitoramento da 'RedeAgro' ('RedeAgroRadar')
Description
Lanca um aplicativo 'shiny' interativo para configurar e monitorar dados de radares meteorologicos da Rede Agropesquisa (Paraná). O painel permite buscar grupos na API do 'Telegram' (https://core.telegram.org/bots/api), testar o radar em tempo real e ativar um "robô" de monitoramento que roda a cada 10 minutos para enviar alertas baseados na intensidade da chuva.
Usage
Run_Monitor_RedeAgro(
Token = "",
chatID = "",
limites_personalizados = list(vr = 70, vb = 25, ar = 65, ab = 33)
)
Arguments
Token |
String de texto. O token de API gerado pelo '@BotFather' no 'Telegram'. Pode ser deixado em branco e preenchido diretamente na interface web. |
chatID |
String de texto. O ID do grupo ou chat do 'Telegram' que recebera os alertas. Pode ser deixado em branco e pesquisado via painel. |
limites_personalizados |
Lista nomeada. Define os limites globais de
gatilho para os canais Red e Blue lidos do radar. Espera-se os elementos:
|
Details
O aplicativo possui duas abas principais:
-
Configuracao do Telegram: Para conectar um bot, buscar o ID do chat alvo e estabelecer a ponte de comunicacao.
-
Painel de Controle: Permite definir a cidade monitorada, raio de analise em pixels, acionar o robo de envio de alertas ou fazer testes de radar de forma manual.
Value
Inicia uma interface web no navegador padrao rodando o app 'shiny'. A funcao nao retorna um objeto do R para o console.
Note
Para que a execucao automatica funcione perfeitamente, e imprescindivel
que as funcoes internas auxiliares (analisar_radar_PR,
executar_alerta_telegram, gerar_imagem_radar e
status_diario) estejam carregadas no mesmo ambiente.
Examples
# Todos os exemplos que abrem servidores locais (como o 'shiny') devem
# estar dentro de if(interactive()) para nao travarem os testes de servidores.
if (interactive()) {
# Exemplo 1: Iniciar o aplicativo sem credenciais iniciais
Run_Monitor_RedeAgro()
# Exemplo 2: Iniciar com Token e ChatID pre-configurados para teste
Run_Monitor_RedeAgro(
Token = "123456:ABC-DEF15858ghIkl-zyx57W2v1u12345ew11",
chatID = "-10686784567890",
limites_personalizados = list(vr = 80, vb = 20, ar = 60, ab = 30)
)
}
Analisar a Cor Média em uma Região Circular do Radar
Description
Esta função baixa a imagem atual do radar meteorológico do Paraná e extrai os valores médios dos canais RGB (Red, Green, Blue) em uma área circular ao redor de uma coordenada específica (cidade ou ponto de interesse).
Usage
analisar_radar_PR(
mega = "PresidenteCasteloBranco",
raio = 50,
coords_custom = NULL
)
Arguments
mega |
Caractere. Nome da cidade ou ponto de interesse. Padrão é |
raio |
Numérico. Raio em pixels da área circular a ser analisada ao redor do ponto central. Padrão é 50. |
coords_custom |
Lista nomeada opcional. Permite definir coordenadas customizadas
com valores de |
Details
A função depende de baixar_radar_PR() para obter a imagem de satélite
do 'Simepar'. A varredura dos pixels é feita utilizando coordenadas polares
para cobrir a área definida pelo raio estipulado.
Value
Retorna uma lista nomeada contendo os valores numéricos médios de R,
G e B, além do número total de pixels validados (n_pixels).
Caso a imagem não possa ser baixada, retorna FALSE.
Examples
# Analisar a chuva na regiao de Cianorte com raio padrao (50px)
resultado <- analisar_radar_PR(mega = "Cianorte")
# Verifica se o resultado e uma lista (garante que baixou a imagem sem erro de internet)
if (is.list(resultado)) {
print(resultado$R) # Valor do canal Vermelho (chuva forte)
}
# Analisar com um raio maior (salvando em variavel para evitar impressoes soltas)
res_ponta_grossa <- analisar_radar_PR(mega = "PontaGrossa", raio = 80)
# Inserir uma cidade que nao esta na lista padrao
novas_coords <- list("Cascavel" = list(x = 250, y = 310))
res_cascavel <- analisar_radar_PR(mega = "Cascavel", raio = 50,
coords_custom = novas_coords)
Baixar Imagem do Radar Meteorológico do Paraná ('Simepar')
Description
Faz o download da imagem mais recente do radar meteorológico do Paraná, disponibilizada publicamente peloo 'Simepar' (https://www.simepar.br/simepar/radar_msc), e a carrega diretamente na memória do 'R' como um objeto de imagem.
Usage
baixar_radar_PR(
url = "https://lb01.simepar.br/riak/pgw-radar/product1.jpeg",
timeout = 10
)
Arguments
url |
Caractere. String contendo a URL direta da imagem. O padrão aponta para o produto atual de radar do 'Simepar'. |
timeout |
Numérico. Tempo máximo de espera em segundos pela resposta do servidor antes de cancelar a operação. Padrão é 10. |
Details
A função realiza uma requisição HTTP GET utilizando cabeçalhos (headers)
customizados para evitar bloqueios do servidor. O carregamento é feito diretamente
na memória (em formato raw), sem a necessidade de gravar arquivos temporários
no disco, o que otimiza a performance. Inclui também uma trava de tempo (timeout)
para evitar travamentos infinitos caso o servidor do radar esteja fora do ar,
uma prática exigida pelas políticas do 'CRAN'.
Value
Retorna um objeto de imagem da classe magick-image. Em caso de falha
na conexão, esgotamento do tempo limite (timeout) ou erro de formatação,
retorna NULL e exibe uma mensagem de alerta.
Examples
# Baixar a imagem atual do radar com timeout padrao (10s)
radar_img <- baixar_radar_PR()
# Exibir a imagem no painel de plots, se o download foi bem-sucedido
if (!is.null(radar_img)) {
plot(radar_img)
}
# Tentar baixar com um timeout maior caso a internet esteja lenta
radar_img_lento <- baixar_radar_PR(timeout = 20)
Avalia Radar e Dispara Alerta Fotográfico via Telegram
Description
Avalia os valores médios de cor (RGB) de uma imagem de radar para uma determinada região. Se os valores ultrapassarem os limites pré-estabelecidos para chuva leve (amarelo) ou forte (vermelho), a função gera uma imagem do radar e a envia como alerta em um grupo do Telegram.
Usage
executar_alerta_telegram(
mega = "Cianorte",
chat_id,
bot_token,
raio = 50,
vermelho = c(70, 25),
amarelo = c(65, 33),
coords_custom = NULL
)
Arguments
mega |
Caractere. Nome da cidade ou ponto de interesse (ex: "Cianorte"). Padrão é "Cianorte". |
chat_id |
Caractere ou Numérico. ID do grupo/chat de destino no Telegram. Obrigatório. |
bot_token |
Caractere. Token do bot gerado pelo @BotFather. Obrigatório. |
raio |
Numérico. Raio de análise ao redor das coordenadas centrais em pixels. Padrão é 50. |
vermelho |
Vetor numérico de tamanho 2. Valores limite para considerar chuva forte.
O primeiro valor é o mínimo para o canal Red (R), o segundo é o máximo para o canal Blue (B). Padrão é |
amarelo |
Vetor numérico de tamanho 2. Valores limite para considerar chuva leve.
Padrão é |
coords_custom |
Lista nomeada opcional com valores de |
Details
A função depende das rotinas auxiliares analisar_radar_PR()
e gerar_imagem_radar() para extrair as cores e montar o mapa.
A comunicação com a API do Telegram é feita via requisição HTTP POST.
Value
Retorna invisivelmente TRUE se um alerta de chuva foi disparado com sucesso, ou FALSE se não houver condição de alerta.
Examples
if (interactive()) {
# Exemplo necessita de token e chatID 'Telegram'
executar_alerta_telegram(
mega = "Cianorte",
chat_id = "-1001951367890",
bot_token = "SEU_TOKEN_AQUI",
raio = 50,
vermelho = c(80, 20),
amarelo = c(60, 40)
)
}
Gerar Imagem do Radar Meteorológico com Marcações Circulares
Description
Esta função baixa a imagem do radar meteorológico do Paraná (ou utiliza uma já fornecida) e adiciona marcações circulares (raio de análise) ao redor das coordenadas de uma cidade ou ponto de interesse específico.
Usage
gerar_imagem_radar(
cidade,
raio,
img_radar = NULL,
coords_custom = NULL,
caminho_salvar = NULL
)
Arguments
cidade |
Caractere. Nome da cidade ou ponto de interesse (ex: "Cianorte").
Deve corresponder a uma chave na lista de coordenadas interna ou em |
raio |
Numérico. Raio da área de análise em pixels que será desenhado na imagem. |
img_radar |
Objeto |
coords_custom |
Lista nomeada opcional. Permite adicionar novas coordenadas além das
predefinidas. Formato esperado: |
caminho_salvar |
Caractere opcional. Caminho completo (incluindo o nome do arquivo e
extensão .png) para salvar a imagem gerada. Se |
Value
Retorna um objeto de imagem do 'magick' (magick-image) com as marcações
desenhadas, ou NULL em caso de falha na obtenção da imagem.
Como efeito colateral, salva a imagem gerada no disco.
Examples
# Gerar imagem para Cianorte com raio de 50 pixels (salva automaticamente em tempfile)
img_cianorte <- gerar_imagem_radar(cidade = "Cianorte", raio = 50)
# Adicionar uma nova cidade e salvar em um caminho temporario seguro para o 'CRAN'
novas_coords <- list("Londrina" = list(x = 520, y = 175))
caminho_teste <- tempfile(fileext = ".png")
img_londrina <- gerar_imagem_radar(
cidade = "Londrina",
raio = 50,
coords_custom = novas_coords,
caminho_salvar = caminho_teste
)
Envia Mensagem de Status com Imagem do Radar Meteorológico via Telegram
Description
Esta função captura a imagem atual do radar meteorológico do Paraná e a envia para um chat do Telegram, servindo como um "sinal de vida" diário para indicar que o sistema de monitoramento está ativo e operando corretamente.
Usage
status_diario(
bot_token,
chat_id,
hora_alerta = NULL,
mensagem = paste0("Mensagem diaria de status. ",
"Sistema de alerta meteorologico ativo e a funcionar perfeitamente.")
)
Arguments
bot_token |
Caractere. Token de autenticação do bot do Telegram (fornecido pelo @BotFather). |
chat_id |
Caractere ou Numérico. ID do chat ou grupo do Telegram de destino. |
hora_alerta |
Caractere opcional. Horário programado para envio no formato "HH:MM".
Se |
mensagem |
Caractere. Texto da legenda que acompanhará a imagem. O padrão é uma mensagem confirmando que o sistema está ativo. |
Details
A função depende de baixar_radar_PR() para obter a imagem atual. O arquivo
é salvo em um diretório temporário e apagado automaticamente após o envio ou em
caso de erro, respeitando as políticas do CRAN para manipulação de arquivos.
A comunicação com o Telegram tem um timeout de segurança de 15 segundos.
Value
Retorna um valor lógico de forma invisível: TRUE para sucesso no envio,
ou FALSE para falha (seja por erro de download, rede ou na API do Telegram).
Examples
if (interactive()) {
# Exemplo necessita de token e chatID 'Telegram'
# Enviar apenas se o horario local for exatamente 13:00
status_diario(
bot_token = "SEU_TOKEN_AQUI",
chat_id = "-1001234567890",
hora_alerta = "13:00",
mensagem = "Teste manual de status do radar."
)
}