Organized files into folders, so that you can simply add a few lines to your YAML file and ESPHome will automatically download the files from this repo and use them when compiling your firmware. Tested with ESPHome 2023.8.2
Add this towards the top of your YAML file:
external_components:
- source:
type: git
url: https://github.com/gfalgiano/lc709203f
components: [ lc709203f ]
In addition to the instructions below, you may need to add this to your YAML file:
i2c:
id: bus_a
This is an attempt to add wrappers to the code provided by EzSBC in https://github.com/EzSBC/ESP32_Bat_Pro by adding required functions and renaming some subroutines. These were modelled on the esphome ads1115 and ina219 components
captured with mosquitto_sub -F "%I %t %p" -v -t ezmin/debug
...
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:119]: LC709203F:
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:120]: Address: 0x0B
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:126]: Update Interval: 30.0s
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:128]: Cell Voltage 'ezmin battery V'
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:128]: Unit of Measurement: 'V'
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:128]: Accuracy Decimals: 2
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:129]: Cell Rem Pct 'ezmin battery lvl'
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:129]: Unit of Measurement: '%'
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:129]: Accuracy Decimals: 1
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:130]: Cell StateCharge 'ezmin cell charge'
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:130]: Unit of Measurement: '%'
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:130]: Accuracy Decimals: 0
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:131]: IC version 'ezmin ic'
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:131]: Unit of Measurement: ''
2021-04-04T11:38:24-0400 ezmin/debug [C][lc709203f.sensor:131]: Accuracy Decimals: 0
...
2021-04-04T11:38:42-0400 ezmin/debug [D][lc709203f.sensor:092]: Got Battery values: cellVoltage_mV=4149 cellRemainingPercent10=964 cellStateOfCharge=96 ic=0x2717
2021-04-04T11:38:42-0400 ezmin/debug [D][sensor:092]: 'ezmin battery V': Sending state 4.14900 V with 2 decimals of accuracy
2021-04-04T11:38:42-0400 ezmin/debug [D][sensor:092]: 'ezmin battery lvl': Sending state 96.40000 % with 1 decimals of accuracy
2021-04-04T11:38:42-0400 ezmin/debug [D][sensor:092]: 'ezmin ic': Sending state 10007.00000 with 0 decimals of accuracy
2021-04-04T11:38:42-0400 ezmin/debug [D][sensor:092]: 'ezmin cell charge': Sending state 96.00000 % with 0 decimals of accuracy
2021-04-04T11:39:23-0400 ezmin/debug [I][deep_sleep:067]: Beginning Deep Sleep
...
works to retreive these 4 values. I have hard coded my battery config in setup routine
- revised [ESPHOME]/custom_components/lc709203f/lc709203f.h
- revised [ESPHOME]/custom_components/lc709203f/lc709203f.cpp
- revised [ESPHOME]/custom_components/lc709203f/sensor.py
switch:
- platform: gpio
pin:
number: GPIO16
inverted: true
name: "${devicename} ledr"
id: ${devicename}_ledr
- platform: gpio
pin:
number: GPIO17
inverted: true
name: "${devicename} ledb"
id: ${devicename}_ledb
- platform: gpio
pin:
number: GPIO18
inverted: true
name: "${devicename} ledg"
id: ${devicename}_ledg
- platform: lc709203f
address: "0x0B"
i2c_id: bus_a
battery_voltage:
name: "${devicename} battery V"
battery_level:
name: "${devicename} battery lvl"
icversion:
name: "${devicename} ic"
cell_charge:
name: "${devicename} cell charge"
update_interval: 30s
- accept config for setPowerMode, setCellCapacity, setCellProfile ( to replace hard coded setup )
- accept value for lc709203f_current_direction_t mentioned at : https://github.com/RIOT-OS/RIOT/blob/df3ab9f16135dca610d81c0286eb23791170b21d/drivers/include/lc709203f.h
- TODO low priority because no resource/application for me---------------------
- capture values for getThermistorBeta, getCellTemperature
- accept config for setThermistorB, setTemperatureMode, setAlarmRSOC, setAlarmVoltage