Skip to main content
Version: 1.12.3

Integração com DAMS

Acesso e envio de leituras automatizadas

Essa seção tem como objetivo instruir os clientes do DAMS sobre o envio de dados de leituras automatizadas de instrumentos para a API da Fractal.

Os métodos GET e POST estão disponíveis para obter e salvar os dados, respectivamente. No POST, os dados devem ser enviados em um JSON, cujos campos estarão detalhados a seguir.

Headers: nas requisições HTTP será necessário enviar os headers Authorization e User-Agent. Para maiores informações, veja abaixo os tópicos Authorization e User-Agent.

Campos do JSON

A tabela a seguir apresenta os campos que compõem o JSON para envio de dados ao servidor, bem como os tipos de dados esperados, a informação que o campo representa e se o campo é ou não obrigatório. Caso falte algum campo obrigatório ou o tipo de dado enviado seja diferente do esperado, provavelmente ocorrerá um erro e os dados não serão salvos.

CampoInformaçãoTipoObrigatório?
id_varID da variávelintSim
id_damID da barragemintSim
id_ins¹ID do instrumentointNão
instrument_name¹ID do instrumentointNão
reading_datetimeData e hora da leiturastringSim
value²Valor da leiturafloatSim
id_uni³Id da unidade de medidaintNão
unit_name³Sigla da unidade de medidastringNão

¹ Deve-se informar o identificador único do instrumento (id_ins) ou o nome do instrumento (instrument_name). Não é necessário informar ambos. Caso ambos sejam informados, o valor de id_ins vai ser considerado em detrimento ao valor de instrument_name. Além disso, há casos de leituras não associadas a instrumentos, como por exemplo, “nível de reservatório” e “nível de jusante”, quando tanto id_ins quanto instrument_name não devem ser preenchidos.

² Deve-se informar um valor numérico. Em caso de ser um valor decimal, a sua fração deve ser separada por ponto.

³ Deve-se informar o identificador único da unidade de medida (id_uni) ou o nome / abreviação da unidade de medida (unit_name). Não é necessário informar ambos. Caso ambos sejam informados, o valor de id_uni vai ser considerado em detrimento ao valor de unit_name.

Authorization

A API utiliza o header HTTP “Authorization” para autenticar o usuário que está enviando dados, por isso chamadas que não contenham um token válido serão recusadas pelo servidor (ver seção “Códigos de Erro – Problemas com envio de dados (POST)”.

O valor enviado no header deve ser "Basic " + funcao_base64_para_codificar ('<login> :<token>').

As imagens abaixo exemplificam o processo através da geração de um header fictício via um script em Python.

alt text

alt text

User-Agent

Além do header “Authorization” é necessário enviar o header “User-Agent” para que os sistemas de segurança da Fractal não bloqueiem as chamadas feitas ao servidor. Uma sugestão de valor para o header é “Mozilla/5.0 (compatible;)”

Variáveis

Esta tabela apresenta as principais variáveis do sistema, que indicam qual leitura está sendo feita por cada instrumento. O valor da coluna Id equivale ao campo id_var do JSON de envio de dados (POST) e de retorno de dados (GET).

Caso seja necessário dispor de outras possibilidades de variáveis, entre em contato com o setor de desenvolvimento da Fractal para maiores esclarecimentos.

IdNome
1Leitura 1 do instrumento (L1)
2Leitura 2 do instrumento (L2), caso o instrumento tenha ao menos 2 leituras
3Leitura 3 do instrumento (L3), caso o instrumento tenha ao menos 3 leituras
4Leitura 4 do instrumento (L4), caso o instrumento tenha ao menos 4 leituras
6Nível Do Reservatório
33Nível De Jusante
76Temperatura

Unidades de medida

Esta tabela apresenta as unidades de medida do sistema e seus respectivos identificadores únicos (IDs) e siglas, que são necessários no envio de dados. O valor da coluna Id equivale ao campo id_uni e o valor da coluna Sigla equivale ao valor de unit_name do JSON de envio de dados (POST) e de retorno de dados (GET).

IdUnidadeSigla
1Metrosm
2Centímetroscm
3Milímetrosmm
4Kgf/cm²Kgf/cm²
5Metros Acima do Nível do Marmanm
6Litros/segundosL/s
7Graus°C
8MCAmca
9MicrosiemensµS
10MilisiemensmS
11MicrostreinµE
12HertzHz
13MicrosegundoµS
14Quilograma força/centímetro cúbicokgf/cm3
15Metros cúbicos/segundom³/s
16Segundosseg
17LitrosL
18DigitsHz²x10-³
19BarBAR

Códigos de Erro – Problemas no envio de dados

A tabela a seguir apresenta alguns dos erros mais frequentes ao enviar dados via API, além de explicar a causa provável e sugerir uma solução.

Código HTTPCausa provávelCorreção
400Falta de algum campo obrigatório no JSON ou tipo de dado incorretoLer mensagem de erro do objeto response para descobrir o que está errado
401Falta do header “Authorization”Adicionar o header à request
403Header “Authorization” inválidoConferir as credenciais utilizadas na geração do token
500Instabilidade no servidor ou problemas no códigoSe o problema persistir, entre em contato com a equipe de desenvolvimento da Fractal, enviando o JSON utilizado no envio dos dados

Se o problema persistir, entre em contato com a equipe de desenvolvimento da Fractal, enviando o JSON utilizado no envio dos dados

Exemplos

Nesta seção será apresentado um exemplo de envio de dados via API.

A ferramenta utilizada para realizar as chamadas é a extensão “Thunder Client” do editor de texto “Visual Studio Code”.

alt text

O JSON para envio de dados possui um único campo chamado “data”, que recebe um array de leituras. Por isso, não é necessário fazer um POST para cada leitura, basta agrupá-las em um array e realizar uma única chamada. Cada POST pode receber até 300 leituras, retornando uma mensagem de erro caso esse limite seja ultrapassado.

Outro aspecto que merece destaque é que dois registros foram enviados nessa chamada, sendo que o primeiro utilizou os campos “id_ins” e “id_uni” para informar instrumento e unidade de medida, enquanto no segundo foram utilizados os campos “instrument_name” e “unit_name” para o mesmo propósito.

Acesso as campanhas do DAMS App

Este documento contém as especificações técnicas de acesso aos dados das campanhas feitas através do DAMS App e enviadas ao SIGA.

Utilização da API da Fractal

Authorization

A API da Fractal utiliza o header HTTP Authorization para autenticar o usuário que está realizando as chamadas. Por isso chamadas que não contenham um header válido serão recusadas pelo servidor.

O valor enviado no header Authorization segue os padrões de HTTP Basic Authorization. Por isso, este cabeçalho deve ser conter “Basic <authorization>”, sendo <authorization> o resultado da codificação de <login>:<token>, conforme exemplo em Python a seguir.

alt text

alt text

User-Agent

Além do header “Authorization” é necessário enviar o header “User-Agent” para que os sistemas de segurança da Fractal não bloqueiem as chamadas feitas ao servidor. Uma sugestão de valor para o header é “ Mozilla/5.0 (compatible;)”

Resultados Esperados

A tabela a seguir apresenta os campos que compõem o JSON de resposta do GET descrito acima.

CampoInformação
ownerCliente do DAMS
barragemApelido da barragem
data_nivel_reservatorioData de leitura do nível do reservatório, em formato timestamp
data_vazao_defluenteData de leitura da vazão defluente, em formato timestamp
app_versionVersão do DAMS App utilizada na campanha
dados idIdentificador único do dado
nome_serviçoNome completo da campanha (serviço + campanha)
type_equipoNome do tipo do instrumento lido
nomeNome do instrumento
descricaoDescrição do instrumento
dataData de envio da leitura do instrumento em formato timestamp
data_inicio_leituraData de leitura do nível do reservatório, em formato timestamp
nome_leituristaNome do leiturista
leitura_valorValor da leitura do primeiro campo do instrumento
leitura_p2_valorValor da leitura do segundo campo do instrumento, se houver
leitura_p3_valorValor da leitura do terceiro campo do instrumento, se houver
leitura_p4_valorValor da leitura do quarto campo do instrumento, se houver
observacoesObservações feitas pelo leiturista
ocorrenciasOcorrências indicadas pelo leiturista
manutencaoManutenções indicadas pelo leiturista
manu_descricaoDescrição complementar das manutenções indicadas pelo leiturista
path_fotosCampo interno do SIGA. Desconsidere este campo.
status_qr_codeStatus do QR code indicado pelo leiturista
status_leituraStatus da leitura
posicao_xPosição X (longitude) do instrumento
posicao_yPosição Y (latitude) do instrumento
unidade_leitura_realizadaUnidade de medida da leitura realizada
forma_leitura_realizadaForma da leitura realizada
n_fotosNúmero de fotos enviadas com a campanha
data_nivel_jusanteData de leitura do nível de jusante, em formato timestamp
nivel_reservatorioValor do nível do reservatório, em metros
vazao_afluenteValor da vazão afluente, em m³/s
campanhaNome da campanha
leituristaNome do leiturista
nivel_jusanteValor do nível de jusante, em metros.
serviceNome completo da campanha (serviço + campanha)
supervisor_emailEmail do supervisor do serviço
vazao_defluenteValor da vazão defluente, em m³/s
data_vazao_afluenteData de leitura da vazão afluente, em formato timestamp
data_campanhaData de agendamento para a campanha, em formato timestamp
supervisorNome do supervisor

Resultados Inesperados

A tabela a seguir apresenta o código de erro mais frequente ao buscar dados via API, além de explicar a causa provável e sugerir uma solução.

Código HTTPCausa provávelCorreção
401Usuário e/ou Token inválidosCorrija as credenciais, conforme instruções da seção “Authorization”
403Sem permissão para acessar e/ou executar chamadaCorrija as credenciais, conforme instruções da seção “Authorization”
500Instabilidade no servidor ou problemas na montagem da chamada GETEntre em contato com a equipe da Fractal para maiores informações