superintendência comercial da distribuição - copel - companhia … · etc 3.17 data nome/tel....

24
ETC 3.17 - PROTOCOLO PARA COLETA DE SISTEMAS DE INFORMAÇÕES DE MEDIDORES novembro/2019 Superintendência Comercial da Distribuição DEPARTAMENTO DE MEDIÇÃO DA DISTRIBUIÇÃO CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet

Upload: others

Post on 25-Feb-2021

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17 - PROTOCOLO PARA COLETADE SISTEMAS DE INFORMAÇÕES DE

MEDIDORES

novembro/2019

Superintendência Comercial daDistribuição

DEPARTAMENTO DE MEDIÇÃO DA DISTRIBUIÇÃO

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet

Page 2: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17

HISTÓRICO DE REVISÃO

Informações sobre qualquer modificação neste documento

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 2-21

Page 3: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17

Data Nome/Tel. Itens alterados

maio/2016Marcio

41-3230-8500Elaboração desta Especificação.

OUTUBRO/2017Rodrigo

41-3310-5286Acréscimo do Status sem energia pag. 6

novembro/2018Rodrigo

41-3310-5286Acréscimo de tipos de comando e subcomando pag. 5

novembro/2019Rodrigo

41-3310-5286Corrigido zeros à esquerda de tipos de comando e subcomando pag. 5

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 3-21

Page 4: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17

SUMÁRIO

1 - PROTOCOLO1.1 - Composição1.2 - Conceitos1.3 - Descrição do protocolo1.4 - Exemplos do protocolo2 – Código JAVA de exemplo de receptor de protocolo2.1 – Main. Java2.2 - Tarefa.java2.3 - Protocolo.java

DESCRIÇÃOEste documento especifica o protocolo de comunicação a ser utilizado nos sistemasautomáticos de leitura de medidores de energia das unidades do Grupo B.

1 - PROTOCOLO

1.1 - ComposiçãoO protocolo é composto por 31 bytes expressos em pares de dígitos hexadecimais ou decimais, totalizando 62 dígitos ou caracteres.

Por que 1 byte = 2 caracteres hexadecimais?1 byte = 8 bits = 2^8 = 2562 hex = 2 * 4 bits = 2^4 * 2^4 = 16 * 16 = 256

1.2 - Conceitos1. MSB (Most Significant Byte): Referente à ordem dos bytes, onde neste caso o bytemais significativo é apresentado primeiro (da esquerda para direita), ou seja, na ordemdireta;

2. LSB (Least Significant Byte): Neste caso o byte menos significativo é apresentadoprimeiro, ou seja, a sequência natural dos dados ficam da direita para a esquerda, naordem inversa;

3. Hexadecimal: Número de base 16, apresentado utilizando notação com o prefixo“0x”;

4. Conversão do dado real para o protocolo: Se for necessário converter parahexadecimal, sempre realizar esta operação primeiro. Caso seja necessário inverter(LSB), realize esta operação somente após a conversão (se houver) para hexadecimal;

5. Conversão do protocolo para o dado real: Se for necessário inverter (LSB), semprerealizar esta operação primeiro. Caso seja necessário converter de hexadecimal paradecimal, realize esta operação somente após a inversão (se houver).

6. NIO (número interno operacional) é o nome utilizado na Copel para o medidor.

7. Concentrador: Elemento da rede de comunicação responsável pela concentraçãodas leituras dos medidores e envio ao MDM (banco de dados).

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 4-21

Page 5: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17

1.3 - Descrição do protocolo

O concentrador de dados será o responsável por fazer a ponte entre a rede ethernet e arede de comunicação com os medidores. O concentrador funcionará como umrepassador de informações para o banco de dados. Deve ser definido um endereço(IP/PORTA) para comunicação com o servidor (o concentrador deverá ter a capacidadede hospedar um servidor de páginas HTTP para esta configuração) que, por sua vez,deve escutar esta porta esperando os dados do concentrador. Toda vez que oconcentrador tiver uma informação nova ela será encaminhada para o servidor quedeverá descompactar/interpretar o pacote e salvar os dados.

Função Informar Dados

Este pacote é enviado pelo concentrador toda vez que o mesmo recebe o consumo de algumequipamento ou quando detecta falta de energia no concentrador de dados. Ele serve parainformar ao servidor o status de um consumidor específico.

Rede Sequência Comando Sub-comando

ID Leitura Status

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Longitude(inteiro)

Longitude (decimal) Longitude(sinal)

Latitude(inteiro)

Latitude (decimal) Latitude(sinal)

16 17 18 19 20 21 22 23 24 25

Nº do Equipamento

26 27 28 29 30

Rede: descreve o número da rede em que o concentrador está trabalhando, como existeapenas um concentrador por rede este campo descreve de qual concentrador o pacote foienviado;

Sequência: Número que indica a "comunicação" à qual o pacote se refere. Caso opacote seja a resposta do concentrador ao servidor este campo deve conter o mesmonúmero enviado pelo servidor na requisição do mesmo, caso contrário (pacote gerado demaneira ativa para o servidor) o campo deverá conter zero (0);

Comando: 01 – Dados de informação;

Sub-comando: 01 – Informação do equipamento com o ID do campo “ID” tipo de leitura descrito na tabela 1;

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 5-21

Page 6: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17

TABELA 1

SUBCOMANDO Índice01 CON02 kWh Total03 kWh Ponta04 kWh Reservado05 kWh Fora ponta06 kWh Tarifa D07 kvarh-ind Total08 kvarh-ind Ponta09 kvarh-ind Reservado0A kvarh-ind Fora Ponta0B kvarh-ind Tarifa D0C kvarh-cap Total0D kvarh-cap Ponta0E kvarh-cap Reservado0F kvarh-cap Fora Ponta10 kvarh-cap Tarifa D51 kWh reverso Total52 kWh reverso Ponta53 kWh reverso Reservado54 kWh reverso Fora ponta55 kWh reverso Tarifa D56 kvarh-ind reverso Total57 kvarh-ind reverso Ponta58 kvarh-ind reverso Reservado59 kvarh-ind reverso Fora Ponta5A kvarh-ind reverso Tarifa D5B kvarh-cap reverso Total5C kvarh-cap reverso Ponta5D kvarh-cap reverso Reservado5E kvarh-cap reverso Fora Ponta5F kvarh-cap reverso Tarifa D

ID: descreve o número de identificação do equipamento que enviou o pacote, para sistemas com um equipamento por consumidor este campo descreve a quem pertence à leitura;

Leitura: descreve o consumo ativo de cada consumidor. Os dados são enviados no padrão BCD, por exemplo:

Campo “Leitura” = 12 34 56 78 09

Consumo = 0978563412 W ou 978563,412 KW

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 6-21

Page 7: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17

Status: Indica o status do consumidor em questão – Em condições normais deve serpreenchido com zeros – no caso de falta de energia no concentrador o status deve serpreenchido com o número 0x01 e os dados repetidos da última transmissão a cada 5segundos até que retorne a energia ou acabe a bateria do concentrador;

Longitude Inteiro: Parte inteira da Longitude;

Longitude Decimal: Parte decimal da Longitude. Está no formato Little Endian e o valor está alinhado à esquerda, com 6 casas. Exemplo:

Para uma longitude 120,1:

Longitude decimal = 100000 = 0x0186A0(hexa)

No pacote será:

Byte 17 18 19

Valor A0 86 01

Longitude sinal: Indicação de positivo ou negativo do dado de Longitude

0 – positivo,

1 – negativo;

Latitude Inteiro: Parte inteira da Latitude

Latitude Decimal: Parte decimal da Latitude. Está no formato Little Endian e o valor está alinhado à esquerda, com 6 casas. Exemplo:

Para uma latitude 50,0454:

Latitude decimal = 045400 = 45400 = 0x00B158(hexa)

No pacote será:

Byte 22 23 24

Valor 58 B1 00

Latitude sinal: Indicação de positivo ou negativo do dado de Latitude0 – positivo,1 – negativo;

Número do Equipamento: Descreve o número único que identifica o consumidor. Os dados são enviados no padrão BCD, por exemplo:

Campo “Número do Equipamento” = 78 56 34 12 00

Equipamento = 0012345678

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 7-21

Page 8: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17

Fluxo da informação

Neste caso a comunicação será iniciada ativamente pelo concentrador. Ele irá abrir umacomunicação em um IP/PORTA especifico (no caso o do servidor no qual a aplicaçãoestá rodando) segundo o protocolo TCP/IP e enviar o pacote de “Informar Dados”.

Tendo como base a premissa de que o concentrador vai apenas informar os dados e nãoirá se preocupar com a recepção deles pela aplicação, já que o servidor não vairesponder nada ao concentrador após receber os dados do mesmo e o próprio protocoloTCP/IP possui garantia de entrega, o campo “Sequência” não possui sentido e serápreenchido com zeros (0). Possibilitando desta forma uma diferenciação (casonecessário) dos pacotes enviados de forma ativa do concentrador daqueles enviadoscomo resposta à requisição do servidor (previstos para futuras aplicações).

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 8-21

Page 9: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.171.4 - Exemplos do protocolo

Exemplos do protocolo (índice de 0 até 30, com 31 bytes no total)

Caso 1

Rede Sequência Comando

Subcomando

ID Leitura Status

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

02 59 00 00 00 00 01 01 03 99 00 90 23 15 00 00

Longitude (inteiro)

Longitude (decimal) Longitude (sinal)

Latitude(inteiro)

Latitude (decimal) Latitude (sinal)

Nº do Equipamento

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

00 00 00 00 00 00 00 00 00 00 23 06 74 12 03

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 9-21

Page 10: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17

Detalhamento do protocolo caso 1

Tipo de dado Posição/índice Ordem Métrica Entrada Saída

Rede 0 e 1 MSB (direta) Hexadecimal 0x0259 601

Sequência 2, 3, 4 e 5 MSB (direta) Hexadecimal 0x00000000 0

Comando 6 MSB (direta) Hexadecimal 0x01 1

Subcomando 7 MSB (direta) Hexadecimal 0x01 1

Id 8 e 9 MSB (direta) Hexadecimal 0x0399 921

Leitura 10, 11, 12, 13 e 14 LSB (inversa) Decimal 0090231500 0015239000 (15239 kWh)

Status 15 MSB (direta) Hexadecimal 0x00 0

Longitude (inteiro) 16 MSB (direta) Hexadecimal 0x00 0

Longitude (decimal) 17, 18 e 19 LSB (inversa) Hexadecimal 0x000000 0

Longitude (sinal) 20 MSB (direta) Decimal 00 + (positivo)

Latitude (inteiro) 21 MSB (direta) Hexadecimal 0x00 0

Latitude (decimal) 22, 23 e 24 LSB (inversa) Hexadecimal 0x000000 0

Latitude (sinal) 25 MSB (direta) Decimal 00 + (positivo)

Nº do equipamento 26, 27, 28, 29 e 30 LSB (inversa Decimal 2306741203 312740623

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 10-21

Page 11: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17

Caso 2:

Rede Sequência Comando

Subcomando

ID Leitura Status

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

02 58 00 00 00 00 01 01 00 2C 00 90 72 11 00 00

Longitude (inteiro)

Longitude (decimal) Longitude (sinal)

Latitude(inteiro)

Latitude (decimal) Latitude (sinal)

Nº do Equipamento

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

31 F4 2D 05 01 19 69 9A 06 01 03 02 83 10 03

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 11-21

Page 12: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17

Detalhamento do caso 2

Tipo de dado Posição/índice Ordem Métrica Entrada Saída

Rede 0 e 1 MSB (direta) Hexadecimal 0x0258 600

Sequência 2, 3, 4 e 5 MSB (direta) Hexadecimal 0x00000000 0

Comando 6 MSB (direta) Hexadecimal 0x01 1

Subcomando 7 MSB (direta) Hexadecimal 0x01 1

Id 8 e 9 MSB (direta) Hexadecimal 0x002C 44

Leitura 10, 11, 12, 13 e 14 LSB (inversa) Decimal 0090721100 0011729000 (11729 kWh)

Status 15 MSB (direta) Hexadecimal 0x00 0

Longitude (inteiro) 16 MSB (direta) Hexadecimal 0x31 49

Longitude (decimal) 17, 18 e 19 LSB (inversa) Hexadecimal 0xF42D05 339444

Longitude (sinal) 20 MSB (direta) Decimal 01 - (negativo)

Latitude (inteiro) 21 MSB (direta) Hexadecimal 0x19 25

Latitude (decimal) 22, 23 e 24 LSB (inversa) Hexadecimal 0x699A06 432745

Latitude (sinal) 25 MSB (direta) Decimal 01 - (negativo)

Nº do equipamento 26, 27, 28, 29 e 30 LSB (inversa Decimal 0302831003 310830203

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 12-21

Page 13: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17

2 - Código JAVA de exemplo de receptor de protocolo

2.1 - Main.java

package com.copel.telemedicao;

import java.io.IOException;import java.net.BindException;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;

import org.apache.log4j.Logger;

/** * @author C047267 * */public class Main {

private static final Logger log = Logger.getLogger(Main.class);

private static final int PORTA = 12345;

public static void main(String[] args) {

try { final ServerSocket serverSocket = new ServerSocket(PORTA); new Thread("portListener") { public void run() { try { log.info("Escutando na porta " + serverSocket.getLocalPort() + " ..."); Socket socket = null; while ((socket = serverSocket.accept()) != null) { log.info("Conectado! - " + socket.toString()); ExecutorService es = Executors .newSingleThreadExecutor();

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 13-21

Page 14: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17 es.submit(new Tarefa(socket)); } } catch (Exception e) { log.error(e); } finally { if (!serverSocket.isClosed()) { try { serverSocket.close(); log.info("Fechando porta: " + serverSocket.getLocalPort() + " ..."); } catch (IOException e) { log.error(e); } } } }; }.start(); } catch (BindException be) { log.error("Porta " + PORTA + " ja em uso! ", be); } catch (Exception e) { log.error(e); } }

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 14-21

Page 15: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17

2.2 - Tarefa.java

package com.copel.telemedicao;

import java.io.IOException;import java.net.Socket;

import org.apache.log4j.Logger;

/** * @author C047267 * */public class Tarefa implements Runnable {

private final Socket socket; private final static Logger log = Logger.getLogger(Tarefa.class); private final static char[] hexArray = "0123456789ABCDEF".toCharArray();

public Tarefa(Socket socket) { this.socket = socket; }

@Override public void run() { log.info("Entrou na tarefa! " + socket.toString()); int lido = -1; byte[] buffer = new byte[31 * 256]; byte[] arrayDados = null;

try { while ((lido = socket.getInputStream().read(buffer)) > -1) { arrayDados = new byte[lido]; System.arraycopy(buffer, 0, arrayDados, 0, lido);

/** * Neste ponto o protocolo pode ser utilizado de diversas * maneiras diferentes. O array de bytes foi transformado em uma * unica string, em array de pares de string (hexadecimal

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 15-21

Page 16: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17 * literal), e depois montado um objeto. */ log.info("Array de bytes (em decimal): " + printarArrayDeBytes(arrayDados)); String umaStringSo = bytesToHex(arrayDados); log.info("String unica: " + umaStringSo);

if (umaStringSo.length() == 62) { try { String[] arrayDeParesDeString = umaStringSo .split("(?<=\\G.{2})"); log.info("Array de pares (hex): " + printarArrayDePares(arrayDeParesDeString)); Protocolo protocolo = new Protocolo( arrayDeParesDeString); log.info("Objeto montado: " + protocolo.toString()); } catch (NumberFormatException nfe) { log.error("Erro ao montar o protocolo, dados invalidos: " + umaStringSo + ": " + nfe.getMessage()); } } else { throw new Exception( "Protocolo com tamanho diferente de 31 bytes!"); }

} } catch (Exception e) { log.error("Erro ao receber/enviar leitura: " + bytesToHex(arrayDados) + " " + e.getMessage()); } finally { try { socket.close(); log.info("Desconectado! " + socket.toString()); } catch (IOException e) { log.error("Erro ao fechar o socket: " + e.getMessage()); }

} }

private static String bytesToHex(byte[] bytes) {

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 16-21

Page 17: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17 char[] hexChars = new char[bytes.length * 2]; for (int j = 0; j < bytes.length; j++) { int v = bytes[j] & 0xFF; hexChars[j * 2] = hexArray[v >>> 4]; hexChars[j * 2 + 1] = hexArray[v & 0x0F]; } return new String(hexChars); }

private static String printarArrayDeBytes(byte[] arrayDeBytes) { StringBuilder sb = new StringBuilder(); for (byte b : arrayDeBytes) { int i = b; if (i < 0) { i = 256 + i; } sb.append(i).append(" "); } return sb.toString().trim(); }

private static String printarArrayDePares(String[] arrayDeParesDeString) { StringBuilder sb = new StringBuilder(); for (String s : arrayDeParesDeString) { sb.append(s).append(" "); } return sb.toString().trim(); }

}

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 17-21

Page 18: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.172.3 - Protocolo.java

package com.copel.telemedicao;

import java.io.Serializable;

/** * @author C047267 * */public class Protocolo implements Serializable{ //serial random private static final long serialVersionUID = -549593122530022285L; private int rede; private int sequencia; private int comando; private int subcomando; private int id; private int leitura; private int status; private double latitude; private double longitude; private long nio; public Protocolo() { } public Protocolo(String[] protocolo) throws NumberFormatException { rede = Integer.parseInt(protocolo[0] + protocolo[1], 16); sequencia = Integer.parseInt(protocolo[2] + protocolo[3] + protocolo[4] + protocolo[5], 16); comando = Integer.parseInt(protocolo[6], 16); subcomando = Integer.parseInt(protocolo[7], 16); id = Integer.parseInt(protocolo[8] + protocolo[9], 16); //LSB -> Inverter a ordem dos bytes //Apos a inversao, foram removidas as 3 ultimas casas para converter Wh em kWh leitura = Integer.parseInt((protocolo[14] + protocolo[13] + protocolo[12] + protocolo[11] + protocolo[10]).substring(0, 7));

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 18-21

Page 19: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17 status = Integer.parseInt(protocolo[15], 16); //Longitude recebido por partes int longitudeInteiro = Integer.parseInt(protocolo[16], 16); //LSB -> Inverter a ordem dos bytes e depois converter o hexadecimal int longitudeDecimal = Integer.parseInt(protocolo[19] + protocolo[18] + protocolo[17], 16); if ((longitudeDecimal > 0) || (longitudeInteiro > 0)) { longitude = (double) longitudeInteiro + (longitudeDecimal * 0.000001); if (Integer.parseInt(protocolo[20]) == 1) { longitude = longitude * -1; } } else { longitude = 0d; } //Para a latitude sao as mesmas regras da longitude int latitudeInteiro = Integer.parseInt(protocolo[21], 16); int latitudeDecimal = Integer.parseInt(protocolo[24] + protocolo[23] + protocolo[22], 16); if ((latitudeDecimal > 0) || (latitudeInteiro > 0)) { latitude = (double) latitudeInteiro + (latitudeDecimal * 0.000001); if (Integer.parseInt(protocolo[25]) == 1) { latitude = latitude * -1; } } else { latitude = 0d; } nio = Long.parseLong(protocolo[30] + protocolo[29] + protocolo[28] + protocolo[27] + protocolo[26]); }

public int getRede() { return rede; }

public void setRede(int rede) { this.rede = rede; }

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 19-21

Page 20: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17 public int getSequencia() { return sequencia; }

public void setSequencia(int sequencia) { this.sequencia = sequencia; }

public int getComando() { return comando; }

public void setComando(int comando) { this.comando = comando; }

public int getSubcomando() { return subcomando; }

public void setSubcomando(int subcomando) { this.subcomando = subcomando; }

public int getId() { return id; }

public void setId(int id) { this.id = id; }

public int getLeitura() { return leitura; }

public void setLeitura(int leitura) { this.leitura = leitura; }

public int getStatus() {

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 20-21

Page 21: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17 return status; }

public void setStatus(int status) { this.status = status; }

public double getLatitude() { return latitude; }

public void setLatitude(double latitude) { this.latitude = latitude; }

public double getLongitude() { return longitude; }

public void setLongitude(double longitude) { this.longitude = longitude; }

public long getNio() { return nio; }

public void setNio(long nio) { this.nio = nio; }

@Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("Protocolo [rede="); builder.append(rede); builder.append(", sequencia="); builder.append(sequencia); builder.append(", comando="); builder.append(comando); builder.append(", subcomando=");

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 21-21

Page 22: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17 builder.append(subcomando); builder.append(", id="); builder.append(id); builder.append(", leitura="); builder.append(leitura); builder.append(", status="); builder.append(status); builder.append(", latitude="); builder.append(latitude); builder.append(", longitude="); builder.append(longitude); builder.append(", nio="); builder.append(nio); builder.append("]"); return builder.toString(); }

}

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 22-21

Page 23: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.172.4 - log4j.properties

# Root logger optionlog4j.rootLogger=INFO, stdout, file

# Redirect log messages to consolelog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss,SSS} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.log4j.appender.file=org.apache.log4j.RollingFileAppenderlog4j.appender.file.File=c:/logs/telemedicao.loglog4j.appender.FILE.ImmediateFlush=truelog4j.appender.file.MaxFileSize=10MBlog4j.appender.file.MaxBackupIndex=10log4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss,SSS} %-5p %c{1}:%L - %m%n

TestePara utilizar a aplicação telemedicao.jar, via prompt, terminal ou similar, executar o comando:

java -jar telemedicao.jar

A aplicação irá reservar a porta 12345 para ela. Caso a porta esteja ocupada, ela não funcionará.

Para simular o envio dos pacotes de protocolo, pode ser utilizado o aplicativo TCP Test Tool.

Exemplo:mensagem padrão:

rede sequencia co su ident leitura st lo.ngitude + la.titude + nio do medidor00 05 00 00 00 00 01 01 01 01 00 50 21 00 00 00 19 08 09 06 01 31 09 41 04 01 63 06 64 51 03>> Sendo que seus dados são: >> rede=5, sequencia=0, comando=1, subcomando=1, id=257, leitura=215, status=0, latitude=-31.278793, longitude=-19.395528, nio=0351640663

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 23-21

Page 24: Superintendência Comercial da Distribuição - Copel - Companhia … · ETC 3.17 Data Nome/Tel. Itens alterados maio/2016 Marcio 41-3230-8500 Elaboração desta Especificação

ETC 3.17

No TCP test tool: Visualização no MDM:

Log do MDC: 23/05/2018 13:56:47,259 INFO Tarefa:147 - Retorno: HTTP/1.1 200 OK | Gravando leitura nobanco! dia anterior: ProtocoloDado [rede=5, sequencia=0, comando=1, subcomando=1,id=257, leitura=215, status=0, latitude=-31.278793, longitude=-19.395528, nio=0351640663] |Tempo 0.434s

CÓPIA NÃO CONTROLADA – Verificar versão atualizada na Internet 24-21