IotHub M2M
  1. Docs M2M
IotHub M2M
  • API
    • M2M
      • Solicitações
        • Criar Solicitação
        • Cancelar Solicitação
      • Dispositivos
        • Atualizar Atributos de Dispositivos
        • Atualizar Atributos de um Dispositivo
  • Docs M2M
    • 1.Integração M2M
    • 2.O que mudou
    • 3.Autenticação da API
    • 4.Operações de Entrada
    • 5.Operações de Saída
    • 6. Guia de configuração IoT Hub com M2M
  1. Docs M2M

5.Operações de Saída

A seguir, estão os detalhes das operações de integração que resultarão em chamadas para a API da M2M, referentes as mudanças nos dispositivos ou ao cadastro dos pontos no sistema da Exati. Os detalhes desta seção foram descritos com base na documentação fornecida pela M2M de sua própria API, denominada Nox Manager.

Autenticação#

Processo de verificação da identidade do cliente para autorização de acesso aos recursos da API Nox Manager. Necessário para realização de qualquer outra chamada da API. Esta autenticação utiliza o método de proteção utilizando de token Bearer JWT que expira após 60 minutos.
MétodoPOST
Endpoint[URL_M2M]/account/login
Content-Typeapplication/json

Corpo da Requisição#

Abaixo, a tabela apresenta os campos que serão enviados na requisição desta operação, no formato JSON:
CampoTipoDescrição
idInteiroCódigo único representando o identificador do cliente
usuarioStringString representando o usuário do cliente. Previamente compartilhado
senhaStringString representando a senha do cliente. Previamente compartilhada

Retorno da Requisição#

CódigoDescrição
200Usuário logado com sucesso
404Login inválido
500Outros erros

Exemplo da requisição#

curl -u user:password -X POST "https://[URL-M2M]/account/login" \
     -H "Content-Type: application/json" \
     -d '{
          "senha":"senha",
          "usuario":"usuario",
          "id":0
        }'

Cadastro do Ponto IP#

Chamada referente à instalação de um NOX em um ponto de iluminação pública (luminária). Não é permitida a instalação de um NOX já instalado em outro ponto ou instalar um novo NOX em um ponto que já possui outro NOX instalado. Necessário realizar ação de substituição ou remoção para realizar os processos descritos anteriormente.
MétodoPOST
Endpoint[URL_M2M]/ponto-de-iluminacao
Content-Typeapplication/json

Corpo da Requisição#

Abaixo, a tabela apresenta os campos que serão enviados na requisição desta operação, no formato JSON:
CampoTipoDescrição
idPontoServico *StringIdentificador único do ponto
idNox*StringCódigo de identificação do material que representa o controlador NOX. Deve corresponder a uma string numérica de 7 dígitos
tensaoLuminariaStringTensão da luminária que contém o NOX
potenciaLuminariaStringPotência da luminária que contém o NOX
fabricanteStringNome do fabricante da luminária que contém o NOX
modeloStringDescrição da luminária que contém o NOX
logradouroStringNome do logradouro do ponto de serviço
cepStringCEP do ponto de serviço
bairroStringBairro do ponto de serviço
numeroStringNúmero local do ponto de serviço
num_identificacao *StringCódigo da plaqueta de identificação do ponto de serviço
latitudeStringLatitude do ponto de serviço
longitudeStringLongitude do ponto de serviço
dat_Evento *StringData da última manutenção que modificou alguma das informações relevantes à integração. Formato: yyyy-MM-dd’T’HH:mm:ss.SSS'Z'
Observação: Os campos marcados com "*" são campos obrigatórios para a requisição.

Retorno da Requisição#

CódigoDescrição
200Instalação realizada com sucesso: Nox - XXXXXXX Plaqueta - XXXXX ID Ponto de Serviço - XXXXX
401Acesso não permitido ao usuário ou usuário não logado
403Erro: Somente um Nox sem instalação pode ser instalado; o Nox XXXXXXX está com sua instalação ativa
404Erro: Nox inexistente: XXXXXXX
500Outros erros no cadastro

Exemplo da requisição#

curl -u user:password -X POST "https://[URL-M2M]/ponto-de-iluminacao" \
     -H "Content-Type: application/json" \
     -d '{
          "numero":"",
          "bairro":"Bairro Teste",
          "latitude":"-9.400654000000000000000000",
          "idNox":"02003492",
          "num_identificacao":"37382",
          "modelo":"Tipo de Lâmpada: LED, Potência da Lâmpada: 150.0, Potência de Reator: 0.0",
          "cep":"",
          "idPontoServico":"37382",
          "logradouro":"Estr. Teste",
          "fabricante":"",
          "potenciaLuminaria":"150",
          "dat_Evento":"2023-06-15T00:00:00.000Z",
          "tensaoLuminaria":"0",
          "longitude":"-40.479137000000000000000000"
        }'  

Edição do Ponto IP#

Chamada referente à edição dos dados cadastrais de um ponto de iluminação pública. Os dados editados são todos exceto idNox, idPontoServico, num_identificacao e dat_Evento.
MétodoPATCH
Endpoint[URL_M2M]/ponto-de-iluminacao
Content-Typeapplication/json

Corpo da Requisição#

Abaixo, a tabela apresenta os campos que serão enviados na requisição desta operação, no formato JSON:
CampoTipoDescrição
idPontoServico *StringIdentificador único do ponto
idNox*StringCódigo de identificação do material que representa o controlador NOX. Deve corresponder a uma string numérica de 7 dígitos
tensaoLuminariaStringTensão da luminária que contém o NOX
potenciaLuminariaStringPotência da luminária que contém o NOX
fabricanteStringNome do fabricante da luminária que contém o NOX
modeloStringDescrição da luminária que contém o NOX
logradouroStringNome do logradouro do ponto de serviço
cepStringCEP do ponto de serviço
bairroStringBairro do ponto de serviço
numeroStringNúmero local do ponto de serviço
num_identificacao *StringCódigo da plaqueta de identificação do ponto de serviço
latitudeStringLatitude do ponto de serviço
longitudeStringLongitude do ponto de serviço
dat_Evento *StringData da última manutenção que modificou alguma das informações relevantes à integração. Formato: yyyy-MM-dd’T’HH:mm:ss.SSS'Z'
Observação: Os campos marcados com "*" são campos obrigatórios para a requisição.

Retorno da Requisição#

CódigoDescrição
200Instalação editada com sucesso: Nox - XXXXXXX Plaqueta - XXXXX ID Ponto de Serviço - XXXXX
401Acesso não permitido ao usuário ou usuário não logado
403Relação ponto de iluminação, NOX e código não condizentes com o mesmo ponto
404Ponto de iluminação ou NOX não encontrados
500Outros erros

Exemplo da requisição#

curl -u user:password -X PATCH "https://[URL-M2M]/ponto-de-iluminacao" \
     -H "Content-Type: application/json" \
     -d '{
          "numero":"",
          "bairro":"Vila teste",
          "latitude":"-9.374851000000000000000000",
          "idNox":"02004090",
          "num_identificacao":"0036067",
          "modelo":"Tipo de Lâmpada: LED, Potência da Lâmpada: 160.0, Potência de Reator: 0.0",
          "cep":"",
          "idPontoServico":"36067",
          "logradouro":"Avenida Teste",
          "fabricante":"",
          "potenciaLuminaria":"160",
          "dat_Evento":"2022-06-21T00:00:00.000Z",
          "tensaoLuminaria":"0",
          "longitude":"-40.508221000000000000000000"
        }'  

Substituição de NOX em Ponto de IP#

Chamada referente à substituição de um NOX por outro em um ponto de iluminação pública (luminária).
MétodoPOST
Endpoint[URL_M2M]/ponto-de-iluminacao/troca
Content-Typeapplication/json

Corpo da Requisição#

Abaixo, a tabela apresenta os campos que serão enviados na requisição desta operação, no formato JSON:
CampoTipoDescrição
idPontoServico *StringIdentificador único do ponto
idNox*StringCódigo de identificação do material que representa o controlador NOX. Deve corresponder a uma string numérica de 7 dígitos
idNoxTroca *StringCódigo de identificação do material que representa o controlador NOX que será instalado na substituição. Deve corresponder a uma string numérica de 7 dígitos
num_identificacao *StringCódigo da plaqueta de identificação do ponto de serviço
dat_Evento *StringData da última manutenção que modificou alguma das informações relevantes à integração. Formato: yyyy-MM-dd’T’HH:mm:ss.SSS'Z'
Observação: Os campos marcados com "*" são campos obrigatórios para a requisição.

Retorno da Requisição#

CódigoDescrição
200Troca realizada com sucesso: Nox Antigo - XXXXXXX Nox Novo - XXXXXXX Plaqueta - XXXXX ID Ponto de Serviço - XXXXX
401Acesso não permitido ao usuário ou usuário não logado
403Erro: O Nox de troca (XXXXXXX) já está instalado
404Ponto de iluminação ou NOX não encontrados
500Outros erros

Exemplo da requisição#

curl -u user:password -X POST "https://[URL-M2M]/ponto-de-iluminacao/troca" \
     -H "Content-Type: application/json" \
     -d '{
          "numero":"",
          "bairro":"Vila Teste",
          "latitude":"-9.377359000000000000000000",
          "idNox":"02002986",
          "num_identificacao":"0037249",
          "modelo":"Tipo de Lâmpada: LED, Potência da Lâmpada: 120.0",
          "cep":"",
          "idPontoServico":"37249",
          "logradouro":"Avenida Teste",
          "idNoxTroca":"01000274",
          "fabricante":"",
          "potenciaLuminaria":"120",
          "dat_Evento":"2024-01-21T18:46:00.000Z",
          "tensaoLuminaria":"0",
          "longitude":"-40.487027000000000000000000"
        }'

Remoção de NOX de Ponto de IP#

Chamada referente à remoção de um NOX de um ponto de iluminação pública. Este ponto após ser removido é configurado como desativado.
MétodoPOST
Endpoint[URL_M2M]/ponto-de-iluminacao/retirar
Content-Typeapplication/json

Corpo da Requisição#

Abaixo, a tabela apresenta os campos que serão enviados na requisição desta operação, no formato JSON:
CampoTipoDescrição
idPontoServico *StringIdentificador único do ponto
idNox*StringCódigo de identificação do material que representa o controlador NOX. Deve corresponder a uma string numérica de 7 dígitos
num_identificacao *StringCódigo da plaqueta de identificação do ponto de serviço
dat_Evento *StringData da última manutenção que modificou alguma das informações relevantes à integração. Formato: yyyy-MM-dd’T’HH:mm:ss.SSS'Z'
Observação: Os campos marcados com "*" são campos obrigatórios para a requisição.

Retorno da Requisição#

CódigoDescrição
200Ponto de serviço desativado com sucesso: ID Ponto de Serviço - XXXXX Plaqueta - XXXXXXX
401Acesso não permitido ao usuário ou usuário não logado
403Ponto de iluminação ou NOX não instalados em conjunto
404Ponto de iluminação ou NOX não encontrados
500Outros erros

Exemplo da requisição#

curl -u user:password -X POST "https://[URL-M2M]/ponto-de-iluminacao/retirar" \
     -H "Content-Type: application/json" \
     -d '{
           "idPontoServico": "string",
           "idNox": 2147483647,
           "num_identificacao": "string",
           "dat_Evento": "2024-12-20T23:32:34.574Z"
         }'

Consulta de Ponto de IP#

Chamada referente à consulta de um NOX através do código único de integração.
MétodoGET
Endpoint[URL_M2M]/ponto-de-iluminacao/{idPontoServico}
Content-Type-

Corpo da Requisição#

A requisição não precisa de um payload.

Parâmetros da URI#

CampoTipoDescrição
idPontoServico *StringCódigo único de cadastro do ponto
Observação: Os campos marcados com "*" são campos obrigatórios para a requisição.

Retorno da Requisição#

CódigoDescriçãoDados retorno
200Ponto de serviço desativado com sucesso: ID Ponto de Serviço - XXXXX Plaqueta - XXXXXXX{"idPontoServico", “idNox”, “idNoxNovo", "tensaoLuminaria", "potenciaLuminaria", "fabricante", “modelo", "logradouro", "num_identificacao", "latitude", "longitude", "dat_Evento" }
401Acesso não permitido ao usuário ou usuário não logado
404Ponto não encontradoNenhum Ponto de Iluminação com instalação ativa foi encontrado com a chave fornecida
500Outros erros

Exemplo da requisição#

curl -u user:password -X GET "https://[URL-M2M]/ponto-de-iluminacao/38801"

Validação NOX#

Chamada referente à verificação de disponibilidade/existência de um NOX por meio de seu código.
MétodoGET
Endpoint[URL_M2M]/validaNox/{Val_Id}
Content-Type-

Corpo da Requisição#

A requisição não precisa de um payload.

Parâmetros da URI#

CampoTipoDescrição
Val_Id *StringCódigo único de cadastro do dispositivo NOX
Observação: Os campos marcados com "*" são campos obrigatórios para a requisição.

Retorno da Requisição#

CódigoDescrição
200O nox existe e está disponível
OutroQualquer outra resposta significa que o nox não existe ou não está disponível

Exemplo da requisição#

curl -u user:password -X GET "https://[URL-M2M]/validaNox/1"

Keep Alive#

Chamada referente à verificação de disponibilidade da API da M2M.
MétodoGET
Endpoint[URL_M2M]/keepalive
Content-Type-

Corpo da Requisição#

A requisição não precisa de um payload.

Retorno da Requisição#

CódigoDescrição
200O serviço está disponível
OutroQualquer outra resposta significa que o serviço não está disponível ou não está funcionando

Exemplo da requisição#

curl -u user:password -X GET "https://[URL-M2M]/keepalive"

Consultar indicador SIVI#

Chamada referente à consulta ao indicador SIVI de telegestão.
MétodoGET
Endpoint[URL_M2M]/IndicadorSIVI
Content-Type-

Corpo da Requisição#

A requisição não precisa de um payload.

Parâmetros da URI#

CampoTipoDescrição
Cod_Descricao_Grupo *InteiroCódigo de descrição do grupo. Para este indicador, o valor deve ser sempre 254
dataIniDateString representando a data de início do período de consulta. A data deve estar no formato yyyy-MM-dd
dataFimDateString representando a data final do período de consulta. A data deve estar no formato yyyy-MM-dd
Observação: Os campos marcados com "*" são campos obrigatórios para a requisição.

Retorno da requisição#

CódigoDescrição
200Consulta bem sucedida. São retornados os dados da consulta como no exemplo abaixo
OutroQualquer outra resposta é um erro, e a consulta não foi bem sucedida

Exemplo de requisição#

curl -u user:password -X GET "https://[URL-M2M]/IndicadorSIVI?Cod_Descricao_Grupo=254&dataIni=2024-01-01&dataFim=2024-01-31"

Exemplo Corpo da Resposta#

200 - OK
{
  "dsc_Grupo":”Instalados”,
  "cod_Grupo": 41,
  "totalPontos": 22320,
  "data_Inicial": "2024-01-01T00:00:00",
  "data_Final": "2024-01-02T00:00:00",
  "nota": 0.75,
  "indice_Geral": 0.921369,
  “indicadoresSivi”: [
      {
          “indice”: 0.9319,
          “pontos”: 20801,
          “dataHora”: “01/01/2024 00:00:00”
      },
      {
          “indice”: 0.93181,
          “pontos”: 20798,
          “dataHora”: “01/01/2024 01:00:00”
      }
  ]
}

Consultar indicador SITO#

Chamada referente à consulta ao indicador SITO de telegestão.
MétodoGET
Endpoint[URL_M2M]/IndicadorSITO
Content-Type-

Corpo da Requisição#

A requisição não precisa de um payload.

Parâmetros da URI#

CampoTipoDescrição
dataIniDateString representando a data de início do período de consulta. A data deve estar no formato yyyy-MM-dd
dataFimDateString representando a data final do período de consulta. A data deve estar no formato yyyy-MM-dd

Retorno da requisição#

CódigoDescrição
200Consulta bem sucedida. São retornados os dados da consulta como no exemplo abaixo
OutroQualquer outra resposta é um erro, e a consulta não foi bem sucedida

Exemplo de requisição#

curl -u user:password -X GET "https://[URL-M2M]/IndicadorSITO?dataIni=2024-01-01&dataFim=2024-01-31"

Exemplo Corpo da Resposta#

200 - OK
{
  "data_Inicial": "2024-01-01T00:00:00",
  "data_Final": "2024-01-02T00:00:00",
  "nota":1.0,
  "indice_Geral": 1.0,
  “historicoOperacoes”: [
      {
          “val_data”: ”01/01/2024 00:00:00”,
          “val_hora”: 0,
          “indiceIndividual”: 1.0
      },
      {
          “val_data”: “01/01/2024 00:00:00”,
          “val_hora”: 1,
          “indiceIndividual”: 1.0
      }
  ]
}

Consultar indicador SITI#

Chamada referente à consulta ao indicador SITI de telegestão.
MétodoGET
Endpoint[URL_M2M]/IndicadorSITI
Content-Type-

Corpo da Requisição#

A requisição não precisa de um payload.

Retorno da requisição#

CódigoDescrição
200Consulta bem sucedida. São retornados os dados da consulta como no exemplo abaixo
OutroQualquer outra resposta é um erro, e a consulta não foi bem sucedida

Exemplo da requisição#

curl -u user:password -X GET "https://[URL-M2M]/IndicadorSITI"

Exemplo Corpo da Resposta#

200 - OK
{
  "dsc_Comando":”Operação por Fotocélula”,
  "data_Inicial": "2024-01-01T00:00:00",
  "nota": 0.75,
  "indice_Geral": 0.9479,
  “pontos_OK”: 346,
  "totalPontos": 22320,
  “indicadoresSITI”: [
      {
          “val_Id”: 700006,
          “status”: “OK”,
          “data_Envio”: “2023-06-27T19:27:31.473”,
          “data_Resposta”: “2023-06-27T19:28:52.82”,
          “tempo_Segundos”: 78.347
      },
      {
          “val_Id”: 700062,
          “status”: “OK”,
          “data_Envio”: “2023-06-27T19:27:34.493”,
          “data_Resposta”: “2023-06-27T19:27:46.147”,
          “tempo_Segundos”: 11.654
      }
  ]
}

Encerrar solicitação#

Chamada a API da M2M para encerrar as solicitações abertas no sistema da Exati.
MétodoPOST
Endpoint[URL_M2M]/service-order/exati/encerra
Content-Typeapplication/json

Corpo da Requisição#

Abaixo, a tabela apresenta os campos que serão enviados na requisição desta operação, no formato JSON:
CampoTipoDescrição
operacaoStringTipo de operação da requisição, que neste caso é “encerra”
origemStringCódigo de origem da ocorrência externa cadastrada na tela de Origens ocorrência externa no sistema da Exati
id_protocoloIntegerIdentificação do protocolo
justificativaStringString de descrição do motivo de encerramento da solicitação

Exemplo da requisição#

curl -u user:password -X POST "https://[URL-M2M]/service-order/exati/encerra" \
     -H "Content-Type: application/json" \
     -d '{
           "operacao": "encerra",
           "id_protocolo": 1,
           "justificativa": "teste",
           "origem": "tg"
         }'
Modified at 2025-02-26 20:32:17
Previous
4.Operações de Entrada
Next
6. Guia de configuração IoT Hub com M2M