Para evitar SPAM as primeiras publicações de cada usuário são moderadas e portanto podem demorar algumas horas até serem liberadas para visualização por outros usuários
Após efetuar o cadastro no fórum você DEVE CLICAR no LINK enviado por E-MAIL para ativar a conta, verifique na sua pasta de SPAM caso não encontre a mensagem .
Depois que coloquei um carregador fixo e conectado em casa fiz a integração com o sistema solar para recarga
A forma de fazer essa integração vai depender do carregador que você possui e seu sistema de controle
Utilizei a integração do Home Assistant com a API JuiceBox
Aprendi que alguns veículos tratam melhor o ajuste de limite de corrente do que outros
o Bolt quando conectado em um carregador que indica correntes de até 10A assume que esse carregador é um carregador de baixa potencia e não aceita quando o carregador indica que pode fornecer corrente maior
Por isso sempre deixo a corrente minima para inicio de carga como 12A
Configuração do Home Assistant para receber novos limites e passar para API Juicenet
Script que faz a chamada no formato correto e dentro dos limites, se fizer a chamada com valores fora do limite a integração para de funcionar corretamente
payload = data.get('payload')
entity = data.get('entity_id')
oldStateObj = hass.states.get(entity)
newValue = int(payload)
if 'min' in oldStateObj.attributes:
newValue = max(oldStateObj.attributes['min'], newValue)
if 'max' in oldStateObj.attributes:
newValue = min(oldStateObj.attributes['max'], newValue)
data = { "entity_id" : entity, "value" : int(newValue) }
hass.services.call("number","set_value", data , False)
A parte que define o tratamento ficou simples, mas depende de cada ambiente portanto não vou colocar o código aqui, mas explicar o que é feito
A cada 3 minutos (isso dá tempo para estabilizar o sistema)
Se não está carregando coloco limite de carga para 12A
Se esta carregando
se está injetando energia na rede mando aumentar a corrente limite de carga pelo numero que esta injetando (se passar do permitido o script do Home Assistant controla)
se está consumindo da rede, mando reduzir a corrente limite de carga do numero que está recebendo
Dessa forma o processo de carga tenta utilizar o máximo possível de energia solar durante a carga, tenho uma configuração de valor minimo, dessa forma posso garantir a recarga sempre, normalmente deixo em 6A mas quando preciso de uma carga mais rápida só preciso ajustar esse limite inferior
Estou migrando totalmente o sistema de controle do carregador para o Home Assistant então aqui vou colocar como está ficando (atualmente já estou utilizando isso por pelo menos 1 mês) :
Um critério que mudei em relação a versão inicial foi a corrente limite de standby
agora deixo com valor igual ao máximo pois minha instalação suporta e se perder a conectividade com o carregador ele vai ficar oferecer uma possibilidade de carga mais rápida e posso ajustar pelo limite do carro
Para não ficar carregando a noite quando não preciso da carga rapidamente ajusto o temporizador do carro para carregar somente durante o dia
assim posso utilizar mais do período de geração solar
o carregador que utilizo não tem opção de pausar a recarga via API utilizada no Home Assistant
Um sensor template que calcula a corrente que pode ser disponibilizada ou reduzida do carregador
- sensor:
- name: "Corrente Disponível EVSE"
unique_id: evse_available_amps
# O meu medidor somente mostra sinal na potencia em watts
# o carregador esta ligado entre as fases 1 e 2
# Então determina quando pode ajustar pela fase que tem menor "folga" a que vai ter potencia maior
# A tensão pode variar mas utiliza aqui um valor fixo como referencia para facilitar
# Se a potencia for positiva significa que não tem folga então a corrente disponível fica negativa
# Se a potencia for negativa significa que tem folga e a corrente disponível fica positiva
state: >-
{%- set watts = max(states.sensor.fase_1_quadro_entrada.state | int,states.sensor.fase_2_quadro_entrada.state | int) -%}
{%- set amps = (watts / -127) -%}
{{- amps -}}
alias: EVSE - Controle de Corrente
description: >-
A cada 3 minutos para não ficar alterando muito e dar tempo para estabilizar
as mudanças maiores
Alem do delay entre os dados medidos (medidor de energia, carregador) existem
variações constantes no consumo da casa (maquina de lavar, secar, forno entre
outros equipamentos)
45 segundos para dar tempo de receber as atualizações dos medidores de energia
que atualiza até uns 20 segundos
Se o carro ficar muito tempo com plugged significa que provavelmente terminou
a carga entao considera como standby para retornar a corrente padrao
Isso é útil no caso do juicebox que frequentemente tem perdido a conexao com
os servidores, dessa forma vai tentar deixar com corrente de standby para o
próximo uso com corrente maxima mesmo que não retorne a conexão
trigger:
- platform: time_pattern
seconds: "45"
minutes: /3
- platform: state
entity_id:
- input_number.cfg_evse_maximo
- input_number.cfg_evse_standby
- input_number.cfg_evse_minimo
for:
hours: 0
minutes: 0
seconds: 30
condition: []
action:
- service: python_script.evse_control_limits
metadata: {}
data:
minCurrent: "{{ states('input_number.cfg_evse_minimo') }}"
maxCurrent: "{{ states('input_number.cfg_evse_maximo') }}"
standbyCurrent: "{{ states('input_number.cfg_evse_standby') }}"
availableCurrent: "{{ states('sensor.corrente_disponivel_evse') }}"
chargingState: >-
{{ 'standby' if
(is_state('sensor.juicenet_q12l12_charging_status','plugged')) and
(now() > (states.sensor.juicenet_q12l12_charging_status.last_changed +
timedelta(hours=1))) else
states('sensor.juicenet_q12l12_charging_status') }}
chargingCurrent: "{{ states('sensor.juicenet_q12l12_amps') }}"
chargingTime: "{{ states('sensor.juicenet_q12l12_charge_time') }}"
limitEntity: number.juicenet_q12l12_amperage_limit
debug: 0
mode: single
Script que segue a lógica já indicada anteriormente
#
# Configuration Parameters
# minCurrent - minimum Current (default 6)
# maxCurrent - maximum Current (default 32)
# standbyCurrent - standby Current (default 12)
# Bolt with not allow to go over 10A if started with less than 11A
# minChargingTime - minimum ChargingTime (seconds) to make adjusts (default 180)
#
#
# Control Parameters
# availableCurrent - available Current (positive can use more, negative reduce from charging)
#
#
# EVSE - Parameters
# chargingState - current EVSE state ('charging' and 'standby' considered)
# chargingTime - charging time in seconds
# chargingCurrent - current being used
# limitEntity - entity that controls de current limit
#
def get_or_default(name, defaultValue):
value = data.get(name)
if value is None:
return defaultValue
return value
minCurrent = int(get_or_default('minCurrent', 6))
maxCurrent = int(get_or_default('maxCurrent', 32))
standbyCurrent = int(get_or_default('standbyCurrent', 12))
availableCurrent = float(get_or_default('availableCurrent', 0))
minChargingTime = int(get_or_default('minChargingTime', 180))
#
chargingState = get_or_default('chargingState', 'standby')
chargingTime = int(get_or_default('chargingTime', 0))
chargingCurrent = float(get_or_default('chargingCurrent', 0))
limitEntity = get_or_default('limitEntity', '')
stateObject = hass.states.get(limitEntity)
currentLimit = int(stateObject.state)
if (chargingState == 'standby'):
newLimit = standbyCurrent
elif (chargingState == 'charging'):
if (chargingTime > minChargingTime):
newLimit = chargingCurrent + availableCurrent
else:
newLimit = currentLimit
# Apply configured limits
newLimit = min( max(minCurrent, newLimit), maxCurrent)
if int(get_or_default('debug', 0)) > 0:
logger.error(data)
logger.error("state = " + chargingState + "current=" + str(chargingCurrent) + " currentLimit = " + str(currentLimit) + " newLimit = " + str(newLimit))
logger.error(stateObject)
if (newLimit != 0) and (newLimit != currentLimit):
# if entity has limits apply this limits also
tmpLimit = newLimit
if 'min' in stateObject.attributes:
tmpLimit = max(stateObject.attributes['min'], tmpLimit)
if 'max' in stateObject.attributes:
tmpLimit = min(stateObject.attributes['max'], tmpLimit)
if (tmpLimit != currentLimit):
serviceData = { "entity_id" : limitEntity, "value" : int(tmpLimit) }
hass.services.call("number","set_value", serviceData , False)
else:
logger.info("Limit not changed because of entity limits : newLimit=" + str(newLimit) + " " + str(stateObject))
exemplo de corrente em comparação com a potência gerada pelo sistema solar em um dia nublado com várias nuvens
é importante lembrar também que existem outros equipamentos no imóvel sendo utilizados e com isso a variação da corrente não acompanha totalmente a geração solar
Screenshot_2024-01-29_16-39-20.jpg (23.44 KiB) Exibido 115 vezes