rva (4 hrs)
Od roku 2013 mám v elektrárně zapojený mppt regulátor EPSolar E-Tracer ET6415N. Nějak jsem nenašel jak z něj dostat data do Home Assistant, tak teď byl čas a do záporného vodiče k baterii jsem nabastlil z šuplíkových zásob měření proudu pomocí INA226.
Bočník FL-2.png
ESP32 C3 supermini.png
INA226.png
Měření proudu pomocí INA226.jpg
Z modulu INA226 jsem vyletoval měřící rezistor R100, protože kdyby tam zůstal, ovlivňoval by nenulový odpor přívodních vodičů od bočníku měření. Napětí jsem neměřil (INA226 je jen do 36 V a musel bych použít dělič napětí) a beru ho z jedné JK-BMS.
Modul ESP32 přes USB kabel zprovozním pro ESPHome https://web.esphome.io/, nastavím wifi přístup do LAN. HA modul automaticky najde, tak do něj už přes OTA pošlu konfiguraci
substitutions:
name: epsolar
friendly_name: EPSolar
device_description: "Monitorování proudu z regulátoru EPSolar do baterie pomocí bočníku 200A/75mV a proudového snímače INA226 na modulu ESP_C3_supermini"
esphome:
name: ${name}
friendly_name: ${friendly_name}
comment: ${device_description}
min_version: 2024.6.0
name_add_mac_suffix: false
project:
name: esphome.web
version: '1.0'
esp32:
board: esp32-c3-devkitm-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "sKO4uDPmtEW/YFjLeRuYpHHmhj1GtjEcfawXPartls4="
ota:
- platform: esphome
password: "69c4937c61fe3a36730ca8709fee20e3"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Optional manual IP
manual_ip:
static_ip: 192.168.0.122
gateway: 192.168.0.1
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Epsolar Hotspot"
password: "Epsolar"
# V HA se pak k položkám "edit" a "logs" objeví položka "visit", kde se po kliknutí otevře stránka esphome daného zařízení
web_server:
port: 80
captive_portal:
#i2c
#Configuration variables:
# sda (Optional, Pin): The pin for the data line of the I²C bus. Defaults to the default of your board (usually GPIO21 for ESP32 and GPIO4 for ESP8266).
# scl (Optional, Pin): The pin for the clock line of the I²C bus. Defaults to the default of your board (usually GPIO22 for ESP32 and GPIO5 for ESP8266).
# scan (Optional, boolean): If ESPHome should do a search of the I²C address space on startup. Defaults to true.
# frequency (Optional, float): Set the frequency the I²C bus should operate on. Defaults to 50kHz. Values are 10kHz, 50kHz, 100kHz, 200kHz, … 800kHz
# timeout (Optional, Time): Set the I²C bus timeout. Defaults to the framework defaults (100us on esp32 with esp-idf, 50ms on esp32 with Arduino, 1s on esp8266 and 1s on rp2040). Maximum on esp-idf is 13ms.
# id (Optional, ID): Manually specify the ID for this I²C bus if you need multiple I²C buses.
i2c:
- id: bus_a
sda: GPIO6
scl: GPIO7
scan: true
# - id: bus_b
# sda: GPIOXX
# scl: GPIOXX
# scan: true
#ina226
#Configuration variables:
# address (Optional, integer): Manually specify the I²C address of the sensor. Defaults to 0x40.
# shunt_resistance (Optional, float): The value of the shunt resistor on the board for current calculation. Defaults to 0.1 ohm.
# max_current (Optional, float): The maximum current you are expecting. ESPHome will use this to configure the sensor optimally. Defaults to 3.2A.
# adc_time (Optional, Time or both of the following nested options): The time in microseconds to perform a single ADC conversion. Defaults to 1100us. Valid values are 140us, 204us, 332us, 588us, 1100us, 2116us, 4156us, 8244us.
# voltage (Required, Time) ADC conversion time for Bus Voltage
# current (Required, Time) ADC conversion time for Shunt Voltage (Current measurement)
# adc_averaging (Optional, integer): Selects ADC sample averaging count. Defaults to 4. Valid values are 1, 4, 16, 64, 128, 256, 512, 1024.
# update_interval (Optional, Time): The interval to check the sensor. Defaults to 60s.
#
#Sensors
#The component offers four sensors. You can configure all or any subset of them. Each configured sensor is reported separately on each update_interval. The name option is required for each sensor configured. All other options from Sensor.
# current (Optional): Calculated current output, Amperes.
# power (Optional): Calculated power output, Watts.
# bus_voltage (Optional): Bus voltage output (voltage of the high side contact), Volts.
# shunt_voltage (Optional): Shunt voltage (voltage across the shunt resistor) value of the sensor, Volts.
sensor:
- platform: ina226
address: 0x40
# ina226 proud počítá z rozdílu napětí na bočníku. Pro lepší přesnost a rozlišení je vhodné volit bočník tak, aby napětí na něm nebylo moc malé (a samozřejmě nepřesáhlo dovolené napětí čipu)
# Tady měřím proudy bočníkem 75 mV /200 A = 0.000375 Ohm a původní odpor 0.1 Ohm jsem vyletoval.
# Rozsah regulátoru je 0 - 60 A 60/200*75=22.5 mV.
# INA226 měří napětí bočníku do -82 - + 82 mV
shunt_resistance: 0.000375 ohm
max_current: 60A
# adc time used for both, Bus Voltage and Shunt Voltage
adc_time: 8244us
adc_averaging: 64
update_interval: 10s
current:
name: "EPSolar INA226 Current"
power:
name: "EPSolar INA226 Power"
bus_voltage:
name: "EPSolar INA226 Bus Voltage"
shunt_voltage:
name: "EPSolar INA226 Shunt Voltage"
Modul pak funguje a na jeho webovské stránce 192.168.0.122 vidím:
EPSolar.png
Pro korektní výpočet výkonu doplním do HA configuration.yaml
template:
- sensor:
#Výpočet fv výkonu regulátoru EPSolar jako proud bočníkem * napětí baterie
#Proud je měřen pomocí INA226 a za napětí se bere napětí měřené JK-BMS na baterii u elektrárny 315 Ah
- name: "EPSolar power"
state: "{{
(states('sensor.esp32_c3_supermini9_total_voltage'))|round (3)
*(states('sensor.epsolar_epsolar_ina226_current')|round (4))
*(-1)
}}"
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
A zobrazím si to třeba jako další zdroj v Grafana:
EPSolar - grafana.png
Nebo třeba v denním přehledu výroby z fv panelů:
EPSolar výroba.png
Původně jsem data o výrobě elektrárny sledoval na AC a DC elektroměrech a jednou za čas jejich hodnoty opsal do excelu.
Teď už zbývá jen spotřeba DC spotřebičů (hlavně DC podlahového topení) - asi opět pomocí INA226. Pak už bude vše v HA, elektroměry budu moci demontovat a elektrárně ubude něco drátů.