Como interpretar corretamente as leituras do meu contador com o HA?

Liguei Hoje para a E-Redes.

O que me disseram era que iam ter em consideração o injetado na rede de 15 em 15 minutos. Fiquei a entender o mesmo.

Por outro lado exportei os poucos dados que tenho no portal da E-Redes e comparei com os meus cálculos de consumo da rede (com HA) e batem certo com o valor. Apenas comparei dois dias. São poucos dados (ainda).

Vou esperar por ter mais dados do meu lado (HA a calcular) e pelos dados da E-Redes e ainda a fatura do comercializador.

Por agora verifiquei que o contador (pelo que parece) não soma o valor injetado ao valor consumido da rede, o que é bom.

Basta que me façam uma redução no valor final de KWh com base no injetado que já fico a ganhar.

Por agora o meu objetivo ao nível do HA é guardar os dados diários de injeção e produção solar.

Bem vindo! Acho que a solução passa por colher, minuto à minuto, os dados do contador da E-redes pois o InfluxDB só guarda um dado quando ele tem valor diferente do anterior pelo que não faria a base de dados crescer muito. Digo isto porque não consegues sincronizar o Tasmota para fazer as leituras exatamente nos 0, 15, 30 e 45 minutos de cada hora (veja nos outros posts o feedback do @nikito7).

A colher minuto à minuto, então é fazer um query mensal ao InfluxDB a pedir a diferença entre a última e primeira leitura de cada 15 minutos e guardar o resultado em MariaDB.

Eu já estou com quase tudo feito para fazer isto a utilizar Node Red. Atualmente faço só a contagem do mês mas para alterar para os 15 minutos seria muito simples.

Depois era criar mais um painel no Node Red que fizesse o cálculo da diferença à cada 15 minutos, por tarifa, e somar o total. Acho que só assim conseguiríamos verificar se o valor comunicado ao fornecedor/comprador de energia estava correto. Melhor, só assim conseguiríamos fazer o HA nos dar uma ideia de quanto iríamos pagar e quanto iríamos receber. Digo “ideia” porque, a colher dados de 15 em 15 minutos, não sincronizados com que a E-redes faz, pode sempre dar resultados diferentes.

Próximos passos? Eu posso partilhar o que fiz e colhermos ajuda comunitária. Por exemplo, em apenas uma dica o @nikito7 poupou-me dias de pesquisa para resolver um problema que, embora simples (aumentar a resolução da medida para ter mais entradas no InfluxDB), só quem tem experiência nisto nos ajudaria tão rápido.

Provavelmente daria com templates

Não faço ideia de qual a maneira mais eficiente no HA

Em bash script seria algo simples

Mas basicamente todos os 15min tens de fazer os calculos necessários e escrever na base de dados ou via input_number

  • import
  • export
  • saldo
  • excedente para venda

Tendo os sensores a funcionar

Podiam ser usados normalmente, no utility_meter etc

Primeiro deixa-me esclarecer que eu não sou programador… Entretanto, amei o Node Red porque, até mesmo uma besta que nem eu, consegue lá programar algumas coisas.

Há um node avançado de cron que te permite o disparo preciso numa determinada hora/minuto. Depois pões uma função que cria o query no InfluxDB, concatenas o resultado para outra função que cria o “insert” do resultado no MariaDB. Isto seria o processamento do dia-a-dia, de 15 em 15 minutos.

Depois teríamos de ter um outro esquema no Node Red que leria as entradas no MariaDB e fazia os cálculos.

Não sei se há forma mais simples de fazer…

Idealmente isso seria feito no tasmota, mas ainda é mais dificil

Há quem tenha o diario, mensal etc

Basta ver no site do tasmota

Por outro lado nem todos usam tasmota

Se sabes usar queries é o mais simples

O problema para mim é guardar o valor de à 15min atrás

Num bash script uso variaveis
Import_new e import_old…

Isto não é impossivel, apenas ainda ninguém domina o assunto :rofl:

Para ser mais exacto é preciso usar o relógio do contador

O meu já tem mais de 1min de diferença

Ou em vez de 0 15 30 45, adaptar

Ainda não fiz mas estou a pensar fazer o seguinte:

Criar utility meter de 15 minutos
Usar o last_reset para obter a data e hora de reset, e usar o last_value para guardar o valor.

Ainda não sei como, mas será algo assim em NR.

1 Curtiu

Se alinhares em utilizar InfluxDB para registo do que vem via MQTT e MariaDB para guardar o fornecido e consumido em ponta, cheio e vazio, à cada 15 minutos, eu acho que amanhã posso publicar aqui como fazê-lo.

Como óbvio, alguém mais com interesse? Posso mesmo montar um totorial (simples) de como fazê-lo.

2 Curtiram

Basta o last_period do import e do export

Depois algo a criar um counter novo/incrementar

Saldo = import - export

If Saldo < 0 … saldo * -1 >>> counter upac excedente

If Saldo > 0 … saldo >>> counter upac import

Acho que o cálculo é mais complicado. Veja o Excel abaixo:

O Consumo é igual o consumo menos a produção;
A produção é igual a produção menos o consumo;
Quando o resultado da subtração for negativo, então deve ser considerado zero;
O consumo e produção mensal seria o somatório respetivo da coluna C e da D;
Há ainda que ponderar a soma dentro do horário de cada tarifa.

Podem dar-me o vosso feedback se concordam que este seria o cálculo correto?

Penso que não será assim tão simples.

Para que não existam equívocos penso ser super importante (de forma a melhorar a comunicação) definir conceitos.
Assim proponho alguns antes de iniciar as análises aos cálculos:

Valor de produção: valor que o sistema solar (ou outro tipo) está a produzir. Se for em W será potencia instantânea, se for em KWh será energia de produção.

Valor de consumo da casa/apartamento: valor que a casa está efetivamente a consumir (soma dos consumos dos equipamentos ligados). Pode ser consumir através da rede, do sistema solar ou ambos.

Valor injetado na rede: valor que estamos a injetar na rede. Se for em W será potência instantânea, se KWh será energia injetada. Neste caso não existe consumo da rede, uma vez que o valor de consumo da casa é inferior À produção.
(Este valor, se em KWh, será semelhante ao que aparece no site da E-Redes na aba consumos, com a designação: “Dados de Produção KW”).

Valor consumido da rede: valor que estamos a consumira rede. Se for em W será potência instantânea, se KWh será energia consumida.

Após isso podemos ter os mesmos valores calculados de 15 em 15 minutos, diariamente. mensalmente, anualmente, etc.

No meu caso, tenho estes conceitos implementados com o HA:

Um Shelly EM com duas pinças. Sistema monofásico:

  1. Pinça ligada entre a casa e o contador. Esta pinça dá os dados de consumo e injeção da Rede. De consumo se valor em W for positivo e injeção se negativo. (Nota importante: valores entre a minha casa e a Rede eletrica).

Daqui obtenho dois valores com o HA:

  • Valor de consumo da casa (consumido da Rede) -
      consumo_geral_potencia_instantanea:
        friendly_name: "Consumo Geral - Watts da Rede"
        unit_of_measurement: 'W'
        value_template: >
          {% if states('sensor.potencia_instantanea_geral') | int > 0 %}
            {{ states('sensor.potencia_instantanea_geral') }}
          {% else -%}
            0
          {% endif %}
# o sensor sensor.potencia_instantanea_geral é o meu sensor da pinça do Shelly (dá valores positivos e negativos)
  • Valor injetado na rede -
      injecao_potencia_instantanea:
        friendly_name: "Injeção Rede Watts"
        unit_of_measurement: 'W'
        value_template: >
          {% if states('sensor.potencia_instantanea_geral') | int < 0 %}
            {{ states('sensor.potencia_instantanea_geral') | float * -1 }}
          {% else -%}
            0
          {% endif %}
  1. A segunda Pinça do mesmo Shelly EM está ligada no fio da fase que liga o Inversor ao me QE (existem pessoas a usar o Shelly 1PM, dados do inversor, etc).

Após ter estes 3 dados criei um novo sensor para me calcular a potência instantânea de consumo da casa:

      consumo_instantaneo_casa:
        friendly_name: "Consumo instantâneo Casa"
        value_template: >-
          {{ states('sensor.producao_solar_instantanea') | float + states('sensor.potencia_instantanea_geral') | float | round(2) }}
        unit_of_measurement: 'W'
# Nota: O sensor sensor.potencia_instantanea_geral tem valores positivos e negativos. Não é template. É o valor que está a passar na Pinça do Shelly EM entre a minha casa e a Rede

Com estes 4 sensores a funcionar, usei a - platform: integration para criar os respetivos sensores de energia (KWh).
Após isto tenho tudo pronto para fazer os utility meter.

Os valores que eu referia eram aqueles que coletamos diretamente do contador da E-redes via ESP-12E/Tasmota. Neste caso eles são sempre o acumulado em kWh e são sempre os valores reais de consumo ou de fornecimento. Denotar que estes valores são irrefutáveis já que o contador é legalmente homologado para este fim. De notar que quem produz energia, e fez a MCP, tem de obrigatoriamente ter o contador E-redes bidirecional.

Se a ideia é ter o HA a nos dar previsão real de custo/ganho de energia elétrica, o valor instantâneo de consumo, coletado por um outro dispositivo qualquer que não seja o contador da E-redes, deveria ser utilizado apenas para apresentação gráfica em tempo real do consumo, mas não deveria ser utilizado para cálculo de consumo/produção pois, de certo, a E-redes não relevará qualquer outra medição que fizermos.

Daí a minha ideia de colher o valor dos contadores à cada 15 minutos e metê-los no MariaDB para ficar com o histórico horário. Depois utilizar o que está no MariaDB para calcular a diferença, dentro dos 15 minutos, entre consumo e prdução, gerando assim o que acho deveria ser reportado pela E-redes ao teu fornecedor/comprador de energia. Como óbvio, colher os dados via Shelly pode sempre ser feito para outros fins ou para aqueles que não têm produção e ou contador bidirecional.

Como sempre, eu posso estar pecando em algum conceito que deixei passar ao lado… Diante do que digo acima, o que acham?

Consegues obter esses valores via porta HAN?

Relativamente a ter outro equipamento a medir, concordo em parte contigo. A parte que concordo é que apenas os valores do contador servem para qualquer efeito. A outra que não concordo é de termos valores sejam eles provenientes do contador ou outro equipamento de medição. Na prática vai dar ao mesmo (nenhum serve para ir discutir com a E-Redes). Pode eventualmente ser mais aproximado teres os dados da porta HAN. Mas considerando que basta uma falha durante o restart do HA, vais dar falhas de valores em ambos os casos.

Eu com o método acima, tenho um cálculo aproximado ao da E-Redes que apenas serve para fazer uma simulação dos consumos, poupanças, etc…

Sim, tiro os seguintes valores do meu contador via porta HAN:

Ainda neste assunto, eu receio que as contagens de consumo feito via um medidor “simples” de corrente não reflita a realidade porque não contempla o fator de potência. Já tentei, por duas vezes, abordar o tema aqui no fórum mas parece-me que não consegui convencer ao grupo a importância do fator de potência.

Caso tenham curiosidade em entender o que digo, vejam a explicação (em português brasileiro) do que é, e como afeta, o fator de potência nas vossas medidas, cablagem, etc. Quem tiver uma pequena noção do teorema de Pitágoras pode iniciar o vídeo aos 8:12 minutos.

Mas esses não são os dados de 15 e 15 minutos que o contador envia para a E-Redes.
Terás sempre que fazer cálculos para os obter.

Os dados obtidos do contador têm mais casas decimais ou apenas 2?

Relativamente à questão da importância do fator de potência e precisão das leituras/cálculos, no .3u caso acho que posso desprezar as diferenças.

Já tenho o Shelly a medir os consumos à mais de um ano. O Erro que tenho tido entre os valores calculados pelo HA e os das leituras da E-Redes tem sido inferior a 1%. No meu caso tenho valores de consumo acima de 400 KWh no Verão. Cheguei a ter meses com mais de 1000 KWh.

O que é mesmo importante para mim é poder saber qual é o valor aproximado que estou a poupar tendo os painéis. Coisa que com os dados da E-Redes ou Contador não conseguimos obter porque falta a essa equação o valor de produção e ou valor real de consumo da casa.

Espero, quando receber a próxima fatura (primeira após ter os painéis) conseguir ajudar na interpretação dos valores reportados da E-Redes ao Comercializador, principalmente porque eu não tenho contrato de venda de excessos.

O contador so envia a energia importada e exportada a cada 15 minutos.

O calculo dos 15 minutos é supostamente feito no servidor.


Input Numbers

{
                "min": 0.0,
                "max": 9999999.0,
                "name": "UPAC Import",
                "icon": "mdi:flash",
                "mode": "box",
                "step": 0.001,
                "unit_of_measurement": "kWh",
                "id": "upac_import"
            },
            {
                "min": 0.0,
                "max": 9999999.0,
                "name": "UPAC Export",
                "icon": "mdi:flash",
                "mode": "box",
                "step": 0.001,
                "unit_of_measurement": "kWh",
                "id": "upac_export"
            }

Utility Meter

Post abaixo 

Automação

Post abaixo

Se funcionar, por fim é só usar os input_numbers em vez dos dados do contador, em tudo o resto

1 Curtiu
  utm_upac_pre_import:
    source: sensor.eb3_import
    cycle: quarter-hourly

  utm_upac_pre_export:
    source: sensor.fake_export_kwh
    cycle: quarter-hourly

  utm_upac_import_daily:
    source: input_number.upac_import
    cycle: daily

  utm_upac_import_monthly:
    source: input_number.upac_import
    cycle: monthly
alias: UPAC Update
description: 'UPAC Counters'
trigger:
  - platform: time_pattern
    hours: '*'
    minutes: '1'
  - platform: time_pattern
    hours: '*'
    minutes: '16'
  - platform: time_pattern
    hours: '*'
    minutes: '31'
  - platform: time_pattern
    hours: '*'
    minutes: '46'
condition: []
action:
  - service: input_number.set_value
    target:
      entity_id: input_number.upac_import
    data:
      value: >
        {% set counter = states('input_number.upac_import') %}
        {% set import = state_attr('sensor.utm_upac_pre_import', 'last_period')|float %}
        {% set export = state_attr('sensor.utm_upac_pre_export', 'last_period')|float %}
        {% set saldo = (import - export)|float %}
        {% if saldo > 0 %}
          {{ (counter|float + saldo)|float|round(2) }}
        {% else %}
          {{ counter|float }}
        {% endif %}
  - service: input_number.set_value
    target:
      entity_id: input_number.upac_export
    data:
      value: >
        {% set counter = states('input_number.upac_export') %} 
        {% set import = state_attr('sensor.utm_upac_pre_import', 'last_period')|float %}
        {% set export = state_attr('sensor.utm_upac_pre_export', 'last_period')|float %}
        {% set saldo = (import - export)|float %}
        {% if saldo < 0 %}
          {{ (counter|float + (saldo * -1))|float|round(2) }}
        {% else %}
          {{ counter|float }}
        {% endif %}
mode: single

Sendo o meu solar fake, até dava para simular se compensa meter painéis :joy:

Acho que estamos todos enganados… A unidade de medida utilizada pela E-redes é o kWh. O cálculo entre fornecimento e consumo e vice-versa, daquilo que entendi, é feito pelo subtrair de quantos kWh produziste e quantos kWh consumistes e vice-versa. Fiz toda a programação para fazer este cálculo e cheguei a conclusão que, se não estives a produzir mais do que 4kWh, o resultado será sempre zero. Para que em 15 minutos tu produzas algo igual ou maior que 1kWh, então tens de estar a produzir 4kWh ou mais. Em resumo, o princípio de computar a diferença entre consumo e produção só altera o resultado de quem produz mais que 4kWh.

Espero comentários da comunidade…


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade