Menu

#3 Adicionando Recursos, Bug BCHARGE ocilando.

2.0
closed
nobody
None
2019-06-09
2018-02-08
No

Parabéns pelo projeto e quero agradecer a todos desenvolvedores que fizeram parte deste projeto.
Tenho o Backup UPS BZ1500PBI-BR e na interface grafica do software da APC aparece algumas informações que no "apcaccess" não aparece.

Eu não conheço nada de C, mas tentei adicionar alguns recursos (fuçando)

Adicionei as linhas abaixo, no arquivo "brazildriver.c"

bool BrazilUpsDriver::get_capabilities()
{
    Dmsg(50, "get_capabilities()\n");
    write_lock(_ups);
    .
    .
    .
    _ups->UPS_Cap[CI_LoadApparent] = TRUE;
    _ups->UPS_Cap[CI_OutputCurrent] = TRUE;
    _ups->UPS_Cap[CI_NomApparent] = TRUE;
    .
    .
    .

Consegui adicionar os valores de OUTCURNT, porem os valores de NOMAPNT e LOADAPNT ficam zerados, acredito que não está processando essas informações.

Essas informações aparecem no software da APC.
Apparent Power
Real Power
Power Factor

Seria possivel adicionar esse recuros?

Um outro ponto:
Acredito que seja um BUG.. mas a carga da Bateria fica ocilando nos valores de 50% e 100%.
O meu Nobreak tem uma semana de uso e no software da APC não acontece isso, então acredito se seja algum problema de codigo.

Agradeço pelo tempo dedicado ao projeto.

Discussion

  • Wagner Popov dos Santos

    Excelente observações Levi!

    A sua observação final quanto a carga da bateria é válida. Esse comportamento é proposital, mas é questionável. Quando o nobreak informa ao apcctrl que a bateria está sendo carregada, o apcctrl informa que a carga da bateria é de 50%. Isso foi feito assim porque não temos a informação quanto a carga real da bateria quando o nobreak está conectado a rede elétrica, já que o nobreak só informa a tensão da bateria em carregamento ou flutuação. Mas ler a tensão da bateria quando ela está sendo carregada é na verdade igual a ler a tensão do carregador de bateria e não da bateria propriamente, portanto, estipulei que a carga da bateria devia ser admitida como sendo de apenas 50%, afinal, seria melhor ter o computador desligando corretamente antes da hora do que dar uma estimativa de tempo de carga maior do que realmente é. Já quando a bateria está em modo de flutuação (que é a maior parte do tempo) ele informa que a carga da bateria é de 100%. Nesse modo a bateria de chumbo-ácido é constantemente carregada para compensar o descarregamento natural. Portanto, nos dois modos, carregamento e flutuação, nós só tempos acesso a tensão da bateria, que é na verdade a tensão do carregador da bateria.

    Acredito que durante a operação do seu nobreak ele está oscilando entre o carregamento e a flutuação, por isso os valores de carga da bateria estão oscilando. Isso tem causado algum problema?

    Quanto a implementação, você está no caminho certo. Só faltou alterar as funções read_static_data e read_volatile_data para atualizar essas informações. Vou implementar isso aqui e testar.

     
  • Levi Pereira

    Levi Pereira - 2018-02-08

    Não está causando nenhum problema, eu utilizo o software home-assistant na minha estrutura de IOT aqui e casa e e vi o grafico ocilando, então isso se dá quando esta carregando. Existe algum status quando a bateria está carregando?

    Eu recebo alerta quando a bateria esta abaixo de um threshold então vou ignorar o numero 50% e assim consigo resolver o problema.

    A informação do consumo é importante porque quero monitorar a eficiencia do consumo (power factor) e quantidade de WATTS somando quantidade de KWh está sendo utilizado por mês pelos equipamentos conectado a este NOBREAK.

    O ideal para mim "sendo egoista :-)" , seria ter um item que mostrasse a quantidade de WATTS dos ultimos 5 minutos, sendo assim poderia coletar essa informação a cada 5 minutos e somar para obter a quantidade de watts utilizadas no dia ou no mês. Para evitar ficar lendo o apcaccess a cada 1 segundo.

    Agradeço a atenção.
    Se eu puder contribuir com alguma ajuda só dizer.

     
    • Wagner Popov dos Santos

      Eu não utilizaria o nobreak como um equipamento de medição. As informações que o nobreak envia não tem esse nível de precisão. O nobreak informa os valores da tensão de saída, corrente de saída e da potência real. Ocorre com alguma frequência da potência aparente (medida em VA, multiplicando os valores de tensão de saída e corrente de saída) ser menor que a potência real (medida em Watts). Isso não é matematicamente possível. Então, esses valores que o nobreak informa são bem imprecisos.

      Mas caso você queira fazer isso, a melhor forma é alterar o arquivo apcctrl/src/reports.c na linha 158. Nesse ponto ele escreve no arquivo /var/log/syslog. Você pode incluir outros parâmetros e depois fazer um parser do syslog.

      A formatação dos dados que são escritos é baseado na função printf da lib stdio. Dá uma olhada no link http://www.cplusplus.com/reference/cstdio/printf/

       
      • Wagner Popov dos Santos

        No código do apcctrl ele compara se o valor da potência real está maior que a potência aparente. Se isso ocorrer, ele ajusta o valor da potência real igual a potência aparente. Por isso você não verá esse comportamento errático nos dados no apcaccess.

         
      • Levi Pereira

        Levi Pereira - 2018-02-08

        Valeu pela dica.
        Já monitoro a energia utilizando o "energy monitor", em relação ao nobreak eu não preciso de precisão, mas noção de quanto aproximadamente ele esta consumindo.. eu coloquei um alicate amperimetro na tomada e estou verificando se os valores chegam proximos se for aceitavel vou utilizar os dados do nobreak, mas se forem muito diferentes eu descarto eles.

         
        • Wagner Popov dos Santos

          Legal. Depois me envia o resultado? Valeu!

           
  • Wagner Popov dos Santos

    Levi, já publiquei a nova release (0.8.15) com suas sugestões.

    abraço,
    Wagner

     
  • Levi Pereira

    Levi Pereira - 2018-02-08

    Obrigado,
    Abcs

     
  • Levi Pereira

    Levi Pereira - 2018-02-08

    Perfeito.

    APC      : 001,037,0919
    DATE     : 2018-02-08 15:33:35 -0200
    HOSTNAME : rpi-model3
    VERSION  : 0.8.15 (February 08 2018) debian
    UPSNAME  : BackUPS1500
    CABLE    : Custom Cable Simple
    DRIVER   : BRAZIL UPS Driver
    UPSMODE  : Stand Alone
    STARTTIME: 2018-02-08 15:33:10 -0200
    MODEL    : APC Brazil BackUPS 1500 (code 190)
    STATUS   : ONLINE
    LINEV    : 221.8 Volts
    LOADPCT  : 25.1 Percent
    LOADAPNT : 12.7 Percent
    BCHARGE  : 100.0 Percent
    TIMELEFT : 8.9 Minutes
    MBATTCHG : -1 Percent
    MINTIMEL : -1 Minutes
    MAXTIME  : 0 Seconds
    MAXLINEV : 253.0 Volts
    MINLINEV : 187.0 Volts
    OUTPUTV  : 126.7 Volts
    ITEMP    : 0.0 C
    BATTV    : 27.1 Volts
    LINEFREQ : 59.0 Hz
    OUTCURNT : 1.50 Amps
    LASTXFER : No transfers since turnon
    NUMXFERS : 0
    TONBATT  : 0 Seconds
    CUMONBATT: 0 Seconds
    XOFFBATT : N/A
    STATFLAG : 0x04000008
    NOMOUTV  : 115 Volts
    NOMINV   : 220 Volts
    NOMBATTV : 24.0 Volts
    NOMPOWER : 825 Watts
    NOMAPNT  : 1500 VA
    END APC  : 2018-02-08 15:33:35 -0200
    
     
  • Levi Pereira

    Levi Pereira - 2019-04-24

    Opa blz

    Seria possivel adicionar 2 recursos.
    1. Watts/Hora.. que seria ROUND (( NOMPOWER / LOADPCT ) * 100)).
    2. BCHARGE poderia usar o valor de BATTV para fazer o calculo conforme abaixo.
    https://imgur.com/a/0g7bqb9
    No caso de 24v apenas multiplicar.

     

    Last edit: Levi Pereira 2019-04-24
  • Wagner Popov dos Santos

    Levi, implementei o cálculo automátivo de potência de saída. Por enquanto, só testei no Debian. Mas a versão para Windows já está disponível.

    Já em relação ao cálculo da bateria, isso é muito mais complexo que a imagem que você enviou. Se tiver interesse, dê uma olhada no arquivo brazilbattery.c

    Outra característica que influencia muito o cálculo é a precisão do conversor analógico digital embutido no nobreak. As medidas são discretas, variando de alguns mili Volts. Por exemplo, o nobreak informa que a bateria está com 11,8V. O próximo valor, inferior, é de 11,7Volts. Se o valor estiver variando nesse limiar, o cálculo de autonomia terá uma variação de alguns minutos.

    A mesma obsservação se aplica com as outras variáveis.

    Sem contar que o nobreak informa que a potência aparente (medida em VA) é, muitas vezes, menor que a potência real (medida emWatts). Isso demonstra que o equipamento não tem nenhuma qualidade técnica quanto a confiabilidade dos dados informados.

    Att,
    Wagner

     
  • Wagner Popov dos Santos

    • status: open --> closed
     
  • Levi Pereira

    Levi Pereira - 2019-06-09

    Obrigado vou verificar

     

Log in to post a comment.