├── .github └── FUNDING.yml ├── HomeAssistant_Dashboards ├── YamBMS_HA_Dashboard_DEMO.yaml ├── YamBMS_HA_Dashboard_JK_RS485_3xBMS.yaml ├── YamBMS_HA_Dashboard_JK_RS485_7xBMS.yaml ├── YamBMS_HA_Dashboard_JK_UART-GPS_BLE_3xBMS.yaml └── YamBMS_HA_Dashboard_without_BMS.yaml ├── LICENSE ├── README.md ├── YamBMS_LP_DEMO.yaml ├── YamBMS_LP_DEYE-PCS_CAN.yaml ├── YamBMS_LP_JK-PB_RS485_Modbus.yaml ├── YamBMS_LP_PVbrain2.yaml ├── YamBMS_Local_Packages_example.yaml ├── YamBMS_RP_DEMO.yaml ├── YamBMS_RP_JK-B_RS485_Modbus.yaml ├── YamBMS_RP_JK-PB_RS485_Modbus.yaml ├── YamBMS_RP_PVbrain2.yaml ├── YamBMS_Remote_Packages_example.yaml ├── configuration_examples ├── LP_BMS_example_JBD_UART_BLE.yaml ├── LP_BMS_example_JK_BLE.yaml ├── LP_BMS_example_JK_RS485_Modbus_mode2.yaml ├── LP_BMS_example_JK_UART_4G-GPS.yaml ├── LP_BMS_example_SEPLOS_V1_V2_RS485.yaml ├── LP_example_multi-node_YamBMS_modbus_client.yaml ├── LP_example_multi-node_YamBMS_modbus_server_1.yaml ├── LP_example_multi-node_YamBMS_modbus_server_2.yaml ├── RP_BMS_example_JBD_UART_BLE.yaml ├── RP_BMS_example_JK_BLE.yaml ├── RP_BMS_example_JK_RS485_Modbus_mode2.yaml ├── RP_BMS_example_JK_UART_4G-GPS.yaml ├── RP_BMS_example_SEPLOS_V1_V2_RS485.yaml ├── RP_example_multi-node_YamBMS_modbus_client.yaml ├── RP_example_multi-node_YamBMS_modbus_server_1.yaml └── RP_example_multi-node_YamBMS_modbus_server_2.yaml ├── documents ├── BMS LV CAN Protocol │ ├── 06-02-01-PTC-Luxpower Battery communication CAN Protocol_V04.2_20240313.pdf │ ├── BMS_Protocol _CAN_Hybrid_EN_V1.0.pdf │ ├── CAN-Bus-protocol-DEYE-low-voltage-V1.2-20180408.pdf │ ├── CAN-Bus-protocol-PYLON-low-voltage-V1.2-20180408.pdf │ ├── Growatt-BMS-CAN-Bus-protocol-low-voltage-V1.04-1-translate.pdf │ ├── Growatt-BMS-CAN-Bus-protocol-low-voltage-V1.04-1.pdf │ ├── Master-LV-communication-guide-EN-8000.pdf │ ├── SEPLOS BMS CAN Protocoll V1.0.pdf │ ├── SMA CAN Protocol Mapping.pdf │ ├── SMA CAN protocol.pdf │ └── Sol-Ark CAN Bus Protocol V1.3.pdf ├── README │ ├── BMS_JK-B.md │ ├── BMS_JK-PB.md │ ├── BMS_JK_RS485_DISPLAY.md │ ├── CANBUS_protocol.md │ ├── Charging_logic.md │ ├── Galvanic_isolation.md │ ├── Installation_procedure.md │ ├── Schematic_and_setup_instructions.md │ ├── Shunt_Victron_SmartShunt.md │ ├── Supported_devices.md │ ├── Supported_devices_Build_your_own_PCB.md │ ├── Supported_devices_M5Stack_AtomS3.md │ ├── Troubleshooting.md │ ├── YamBMS_behavior.md │ ├── YamBMS_functions.md │ ├── YamBMS_main_YAML_HowTo.md │ └── YamBMS_multi-node_RS485_modbus_solution.md └── RS485 protocol │ ├── Jikong BMS RS485 modbus protocol V1.1.pdf │ ├── RS485-protocol-pylon-low-voltage-V3.3-20180821.pdf │ └── Shoto RS485 Modbus protocol V1.2.pdf ├── firmware └── YamBMS_DEMO_ESP32.factory.bin ├── images ├── Auto_Charge_Voltage_Logic_Flowchart.png ├── BMC_QR.png ├── BMS_JK-PB_Inverter_BMS.png ├── BMS_JK-PB_communication_board.png ├── BMS_JK-PB_communication_connectors.jpg ├── BMS_JK_RS485_Modbus_protocol.png ├── BMS_JK_RS485_adapter.png ├── CAN_Protocol_Table.png ├── CAN_Transceiver_M5Stack_Atomic_CAN_Base.png ├── CAN_Transceiver_M5Stack_CAN_Unit.png ├── CAN_Transceiver_MCP2515.png ├── CAN_Transceiver_SN65HVD230.jpg ├── CAN_Transceiver_TJA1050.png ├── CAN_Transceiver_TJA1051.jpg ├── DC-DC_3V3-to-3V3_isolator.png ├── ESPHome_Web_Server.png ├── HA_Dashboard.png ├── JK-BMS_24S_GPS_port.png ├── MCU_AtomS3.png ├── MCU_AtomS3R.png ├── MCU_AtomS3_Lite.png ├── MCU_AtomS3_Lite_schematic.png ├── MCU_AtomS3_schematic.jpg ├── MCU_ESP32-C3_ETH01-EVO.png ├── MCU_ESP32-DevKit-V1.jpg ├── MCU_ESP32-DevKit-V1_pinout.png ├── MCU_ESP32-DevKitC_espBerry_2-CH-CAN.png ├── MCU_ESP32-EVB.jpg ├── MCU_ESP32-S3-DevKitC-1.png ├── MCU_ESP32-S3-DevKitC-1_pinout.png ├── MCU_ESP32-S3_LilyGo-T-Connect.jpg ├── MCU_ESP32_LilyGo-T-CAN485.jpg ├── MCU_ESP32_LilyGo-T-CAN485_overview.jpg ├── PCB_ESP32_JK-BMS-CAN_Prototype.jpg ├── PCB_ESP32_JK-BMS-CAN_Prototype.png ├── PCB_ESP32_JK-BMS-CAN_powered_by_JK-BMS.png ├── RJ45-Pinout-T568A.jpg ├── RJ45-Pinout-T568B.jpg ├── RS485_Module_HCMODU0081_Diagram.png ├── RS485_Transceiver_M5stack_SKU-U094_RS485_Isolated_Unit.png ├── RS485_Transceiver_MAX485_TALK_PIN_board.jpg ├── RS485_Transceiver_Two-way_Converter.jpg ├── RS485_Transceiver_isolated_high_speed_dual_board.png ├── Solution_M5stack_AtomS3_CAN_base_RS485_unit.png ├── UART-TTL_isolator_1.png ├── UART-TTL_isolator_2.png ├── Victron_SmartShunt_App_00_Local.jpg ├── Victron_SmartShunt_App_01_Settings.png ├── Victron_SmartShunt_App_02_ProductInfo.png ├── Victron_SmartShunt_App_03_EncryptionData.png ├── YamBMS_Auto_CVL_CCL_DCL.png ├── YamBMS_BMS_alarms.png ├── YamBMS_CANBUS_Protocol.png ├── YamBMS_CANBUS_Status.png ├── YamBMS_Charge_Discharge_switch.png ├── YamBMS_Charging_Logic_Diagram.png ├── YamBMS_Charging_Settings.png ├── YamBMS_Combine_Status.png ├── YamBMS_Combine_switch.png ├── YamBMS_Cut-Off_Charging_Logic_Diagram.png ├── YamBMS_Cut-Off_Charging_Logic_for_LFP_Equation.png ├── YamBMS_Diagnostic.png ├── YamBMS_HA_Dashboard.png ├── YamBMS_Inverter_Heartbeat.png ├── YamBMS_JK-PB_RS485_Sniffer_Broadcast.png ├── YamBMS_LFP_Cut-Off_Values.png ├── YamBMS_LTO_Cut-Off_Values.png ├── YamBMS_Li-ion_Cut-Off_Values.png ├── YamBMS_Max_Current_PCT.png ├── YamBMS_New_version.png ├── YamBMS_ReBulk.png ├── YamBMS_Request_Force_Charge.png ├── YamBMS_Requested_Values.png ├── YamBMS_multi-node_RS485_modbus.png ├── YamBMS_packaged_version.png └── lovelace-cards-contribution.png ├── packages ├── base │ ├── device_base.yaml │ ├── device_base_ethernet.yaml │ ├── device_base_wifi.yaml │ ├── device_debug_ESP32-S3.yaml │ ├── device_debug_ESP32.yaml │ ├── device_modbus.yaml │ └── device_modbus_expander.yaml ├── bms │ ├── bms_base.yaml │ ├── bms_battery_soh.yaml │ ├── bms_combine.yaml │ ├── bms_combine_DEYE_CAN_module_full.yaml │ ├── bms_combine_DEYE_CAN_module_minimal.yaml │ ├── bms_combine_FAKE.yaml │ ├── bms_combine_JBD_BLE_full.yaml │ ├── bms_combine_JBD_UART_full.yaml │ ├── bms_combine_JK_BLE_V14_full.yaml │ ├── bms_combine_JK_BLE_full.yaml │ ├── bms_combine_JK_BLE_minimal.yaml │ ├── bms_combine_JK_BLE_standard.yaml │ ├── bms_combine_JK_RS485_DISPLAY_full.yaml │ ├── bms_combine_JK_RS485_Modbus_JK-B_standard.yaml │ ├── bms_combine_JK_RS485_Modbus_bms_full.yaml │ ├── bms_combine_JK_RS485_Modbus_bms_minimal.yaml │ ├── bms_combine_JK_RS485_Modbus_bms_standard.yaml │ ├── bms_combine_JK_RS485_Modbus_sniffer.yaml │ ├── bms_combine_JK_RS485_Modbus_sniffer_talk_pin.yaml │ ├── bms_combine_JK_UART_4G-GPS_full.yaml │ ├── bms_combine_JK_UART_4G-GPS_minimal.yaml │ ├── bms_combine_SEPLOS_V1_V2_RS485_bms_full.yaml │ ├── bms_combine_SEPLOS_V1_V2_RS485_modbus.yaml │ ├── bms_combine_modbus_client.yaml │ ├── bms_errors_bitmask_DEYE_CAN.yaml │ ├── bms_errors_bitmask_JBD.yaml │ ├── bms_errors_bitmask_JK_BLE.yaml │ ├── bms_errors_bitmask_JK_RS485_Modbus.yaml │ ├── bms_errors_bitmask_JK_UART_4G-GPS.yaml │ ├── bms_modbus_DEYE_CAN_module_full.yaml │ ├── bms_modbus_FAKE.yaml │ ├── bms_modbus_JBD_UART_full.yaml │ ├── bms_modbus_JK_BLE_standard.yaml │ ├── bms_modbus_JK_RS485_Modbus_bms_standard.yaml │ ├── bms_modbus_JK_UART_4G-GPS_full.yaml │ ├── bms_modbus_server.yaml │ ├── bms_options_charging_logic.yaml │ ├── bms_sensors_DEYE_CAN_module_full.yaml │ ├── bms_sensors_DEYE_CAN_module_minimal.yaml │ ├── bms_sensors_DEYE_CAN_top_full.yaml │ ├── bms_sensors_DEYE_CAN_top_minimal.yaml │ ├── bms_sensors_FAKE.yaml │ ├── bms_sensors_JBD_BLE_full.yaml │ ├── bms_sensors_JBD_UART_full.yaml │ ├── bms_sensors_JK_BLE_standard.yaml │ ├── bms_sensors_JK_RS485_Modbus_JK-B_standard.yaml │ ├── bms_sensors_JK_RS485_Modbus_bms_full.yaml │ ├── bms_sensors_JK_RS485_Modbus_bms_standard.yaml │ ├── bms_sensors_JK_UART_4G-GPS_full.yaml │ ├── bms_temperature_sensor_2.yaml │ ├── bms_temperature_sensor_4.yaml │ ├── bms_temperature_sensor_5.yaml │ └── bms_temperature_sensor_6.yaml ├── board │ ├── board_ESP32-C3_DevKitM-1.yaml │ ├── board_ESP32-C3_ETH01-EVO.yaml │ ├── board_ESP32-S3_AtomS3-Lite.yaml │ ├── board_ESP32-S3_AtomS3.yaml │ ├── board_ESP32-S3_AtomS3R.yaml │ ├── board_ESP32-S3_AtomS3_WOD.yaml │ ├── board_ESP32-S3_AtomS3_ili9xxx.yaml │ ├── board_ESP32-S3_DevKitC-1.yaml │ ├── board_ESP32-S3_DevKitC-1_LED-38.yaml │ ├── board_ESP32-S3_DevKitC-1_LED-48.yaml │ ├── board_ESP32-S3_DevKitC-1_PVbrain2.yaml │ ├── board_ESP32-S3_LilyGo-T-Connect.yaml │ ├── board_ESP32-S3_Touch-LCD-4.3.yaml │ ├── board_ESP32-S3_Touch-LCD-7.yaml │ ├── board_ESP32-S3_XIAO.yaml │ ├── board_ESP32_Atom-Lite.yaml │ ├── board_ESP32_Atom-Matrix.yaml │ ├── board_ESP32_DevKit-V1.yaml │ ├── board_ESP32_DevKitC_espBerry_2-CH-CAN.yaml │ ├── board_ESP32_EVB.yaml │ ├── board_ESP32_Generic.yaml │ ├── board_ESP32_LilyGo-T-CAN485.yaml │ ├── board_options_captive_portal.yaml │ ├── board_options_cpu_freq_240_esp32-s3.yaml │ ├── board_options_cpu_freq_240_esp32.yaml │ ├── board_options_display_128x128.yaml │ ├── board_options_itf_canbus_esp32_can.yaml │ ├── board_options_itf_canbus_mcp2515.yaml │ ├── board_options_itf_uart_esp_1.yaml │ ├── board_options_itf_uart_esp_2.yaml │ ├── board_options_itf_uart_esp_3.yaml │ ├── board_options_psram_settings.yaml │ └── board_options_rgb_led_status.yaml ├── shunt │ ├── shunt_base.yaml │ ├── shunt_combine.yaml │ ├── shunt_combine_FAKE.yaml │ ├── shunt_combine_Junctek_KHF_UART.yaml │ ├── shunt_combine_Victron_SmartShunt_BLE.yaml │ ├── shunt_combine_Victron_SmartShunt_BLE_connect.yaml │ ├── shunt_combine_Victron_SmartShunt_UART.yaml │ ├── shunt_combine_Victron_SmartShunt_UART_expander.yaml │ ├── shunt_combine_modbus_client.yaml │ ├── shunt_modbus_Junctek_KHF_UART.yaml │ ├── shunt_modbus_Victron_SmartShunt_BLE.yaml │ ├── shunt_modbus_Victron_SmartShunt_UART.yaml │ ├── shunt_modbus_Victron_SmartShunt_UART_minimal.yaml │ ├── shunt_modbus_server.yaml │ ├── shunt_sensors_Junctek_KHF_UART.yaml │ ├── shunt_sensors_Victron_SmartShunt_BLE.yaml │ ├── shunt_sensors_Victron_SmartShunt_UART.yaml │ └── shunt_sensors_Victron_SmartShunt_UART_minimal.yaml └── yambms │ ├── yambms.yaml │ ├── yambms_auto_ccl.yaml │ ├── yambms_auto_cvl.yaml │ ├── yambms_auto_dcl.yaml │ ├── yambms_canbus.yaml │ ├── yambms_combine.yaml │ ├── yambms_custom.yaml │ └── yambms_service.yaml ├── pvbrain2 ├── base │ ├── device_base.yaml │ ├── device_bus_i2c0.yaml │ ├── device_bus_one_wire.yaml │ ├── device_bus_spi1.yaml │ ├── device_canbus_esp32can.yaml │ ├── device_canbus_mcp2515.yaml │ ├── device_debug.yaml │ ├── device_psram_settings.yaml │ ├── device_sx1509.yaml │ ├── device_uart_esp.yaml │ ├── device_wk2168_i2c.yaml │ └── device_wk2168_spi.yaml └── environmental │ ├── bme280 │ └── device_bme_280.yaml │ ├── bmp280 │ └── device_bmp_280.yaml │ ├── dallas │ └── device_dallas.yaml │ ├── light │ ├── device_ws2812b.yaml │ └── effects │ │ ├── addressable_monoled.yaml │ │ └── monochrome.yaml │ └── rtttl │ └── rtttl_buzzer.yaml ├── secrets.yaml ├── yambms_config.yaml └── yambms_custom.yaml /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | buy_me_a_coffee: sleeper85 2 | -------------------------------------------------------------------------------- /configuration_examples/LP_BMS_example_JBD_UART_BLE.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.5.5 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | ############################ Local Packages Example ############################ 21 | 22 | # This is not a working YAML but just code ready to copy into your main YAML. 23 | 24 | ################################################################################ 25 | 26 | packages: 27 | 28 | bms1: !include 29 | file: packages/bms/bms_combine_JBD_UART_full.yaml 30 | vars: 31 | bms_id: '1' # must be a number 32 | bms_name: 'BMS 1' 33 | bms_uart_id: 'uart_esp_1' 34 | bms_rx_timeout: '150ms' 35 | # Required settings cannot be retrieved from BMS 36 | # These values ​​must match your BMS settings 37 | # LFP values example 38 | bms_max_charge_current: '100' # A. Used to calculate maximum charge current 39 | bms_max_discharge_current: '100' # A. Used to calculate maximum discharge current 40 | bms_cell_ovp: '3.650' # V. Used by 'Auto CCL' functions 41 | bms_cell_uvp: '2.800' # V. Used by 'Auto DCL' functions and to calculate maximum discharge voltage 42 | bms_balance_trigger_voltage: '0.010' # V. Used by 'Auto CVL' functions 43 | # Maximum cell charging cycles is used to calculate the battey SoH. 44 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 45 | bms_cell_max_cycles: '6000.0' 46 | 47 | bms2: !include 48 | file: packages/bms/bms_combine_JBD_BLE_full.yaml 49 | vars: 50 | bms_id: '2' # must be a number 51 | bms_name: 'BMS 2' 52 | bms_ble_mac_address: 'C8:47:8C:10:7E:AA' # Your MAC address 53 | # Required settings cannot be retrieved from BMS 54 | # These values ​​must match your BMS settings 55 | # LFP values example 56 | bms_max_charge_current: '100' # A. Used to calculate maximum charge current 57 | bms_max_discharge_current: '100' # A. Used to calculate maximum discharge current 58 | bms_cell_ovp: '3.650' # V. Used by 'Auto CCL' functions 59 | bms_cell_uvp: '2.800' # V. Used by 'Auto DCL' functions and to calculate maximum discharge voltage 60 | bms_balance_trigger_voltage: '0.010' # V. Used by 'Auto CVL' functions 61 | # Maximum cell charging cycles is used to calculate the battey SoH. 62 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 63 | bms_cell_max_cycles: '6000.0' 64 | -------------------------------------------------------------------------------- /configuration_examples/LP_BMS_example_JK_BLE.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.5.5 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | ############################ Local Packages Example ############################ 21 | 22 | # This is not a working YAML but just code ready to copy into your main YAML. 23 | 24 | ################################################################################ 25 | 26 | packages: 27 | 28 | bms1: !include 29 | file: packages/bms/bms_combine_JK_BLE_standard.yaml 30 | vars: 31 | bms_id: '1' # must be a number 32 | bms_name: 'JK-BMS 1' 33 | bms_ble_protocol_version: 'JK02_32S' # JK02_24S < hardware version 11.0 >= JK02_32S 34 | bms_ble_mac_address: 'C8:47:8C:10:7E:AA' 35 | # Maximum cell charging cycles is used to calculate the battey SoH. 36 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 37 | bms_cell_max_cycles: '6000.0' 38 | 39 | bms2: !include 40 | file: packages/bms/bms_combine_JK_BLE_standard.yaml 41 | vars: 42 | bms_id: '2' # must be a number 43 | bms_name: 'JK-BMS 2' 44 | bms_ble_protocol_version: 'JK02_32S' # JK02_24S < hardware version 11.0 >= JK02_32S 45 | bms_ble_mac_address: 'C8:47:8C:EE:16:EA' 46 | # Maximum cell charging cycles is used to calculate the battey SoH. 47 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 48 | bms_cell_max_cycles: '6000.0' 49 | -------------------------------------------------------------------------------- /configuration_examples/LP_BMS_example_JK_UART_4G-GPS.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.5.5 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | ############################ Local Packages Example ############################ 21 | 22 | # This is not a working YAML but just code ready to copy into your main YAML. 23 | 24 | ################################################################################ 25 | 26 | packages: 27 | 28 | bms1: !include 29 | file: packages/bms/bms_combine_JK_UART_4G-GPS_full.yaml 30 | vars: 31 | bms_id: '1' # must be a number 32 | bms_name: 'JK-BMS 1' 33 | bms_uart_id: 'uart_esp_1' 34 | # Maximum cell charging cycles is used to calculate the battey SoH. 35 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 36 | bms_cell_max_cycles: '6000.0' 37 | 38 | bms2: !include 39 | file: packages/bms/bms_combine_JK_UART_4G-GPS_full.yaml 40 | vars: 41 | bms_id: '2' # must be a number 42 | bms_name: 'JK-BMS 2' 43 | bms_uart_id: 'uart_esp_2' 44 | # Maximum cell charging cycles is used to calculate the battey SoH. 45 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 46 | bms_cell_max_cycles: '6000.0' 47 | -------------------------------------------------------------------------------- /configuration_examples/LP_example_multi-node_YamBMS_modbus_server_1.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.5.5 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | ############################ Local Packages Example ############################ 21 | 22 | # This is not a working YAML but just code ready to copy into your main YAML. 23 | 24 | ################################################################################ 25 | 26 | substitutions: 27 | modbus_update_interval: '5s' # frequency with which BMS/Shunt modbus servers are queried 28 | modbus_baud_rate: '19200' # 9600 / 19200 / 11520 29 | modbus_command_throttle: '0ms' # minimum time in between 2 requests to the device 30 | modbus_send_wait_time: '250ms' # time in milliseconds before the next ModBUS command is sent if an answer from a previous command is pending 31 | 32 | packages: 33 | 34 | modbus: !include 35 | file: packages/base/device_modbus.yaml 36 | vars: 37 | modbus_role: 'server' # client / server 38 | modbus_uart_id: 'uart_esp_1' # RS485 board 39 | 40 | shunt1: !include 41 | file: packages/shunt/shunt_modbus_Victron_SmartShunt_UART.yaml 42 | vars: 43 | shunt_id: '1' # must be a number 44 | shunt_name: 'Shunt 1' 45 | shunt_uart_id: 'uart_esp_2' 46 | 47 | bms1: !include 48 | file: packages/bms/bms_modbus_JK_UART_4G-GPS_full.yaml 49 | vars: 50 | bms_id: '1' # must be a number 51 | bms_name: 'JK-BMS 1' 52 | bms_uart_id: 'uart_esp_3' 53 | # Maximum cell charging cycles is used to calculate the battey SoH. 54 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 55 | bms_cell_max_cycles: '6000.0' -------------------------------------------------------------------------------- /configuration_examples/LP_example_multi-node_YamBMS_modbus_server_2.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.5.5 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | ############################ Local Packages Example ############################ 21 | 22 | # This is not a working YAML but just code ready to copy into your main YAML. 23 | 24 | ################################################################################ 25 | 26 | substitutions: 27 | modbus_update_interval: '5s' # frequency with which BMS/Shunt modbus servers are queried 28 | modbus_baud_rate: '19200' # 9600 / 19200 / 11520 29 | modbus_command_throttle: '0ms' # minimum time in between 2 requests to the device 30 | modbus_send_wait_time: '250ms' # time in milliseconds before the next ModBUS command is sent if an answer from a previous command is pending 31 | 32 | packages: 33 | 34 | modbus: !include 35 | file: packages/base/device_modbus.yaml 36 | vars: 37 | modbus_role: 'server' # client / server 38 | modbus_uart_id: 'uart_esp_1' # RS485 board 39 | 40 | bms2: !include 41 | file: packages/bms/bms_modbus_JK_BLE_standard.yaml 42 | vars: 43 | bms_id: '2' # must be a number, also represents the modbus server number ! 44 | bms_name: 'JK-BMS 2' 45 | bms_ble_protocol_version: JK02_32S # JK02_24S < hardware version 11.0 >= JK02_32S 46 | bms_ble_mac_address: C8:47:8C:10:7E:AA 47 | # Maximum cell charging cycles is used to calculate the battey SoH. 48 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 49 | bms_cell_max_cycles: '6000.0' 50 | 51 | bms3: !include 52 | file: packages/bms/bms_modbus_JK_BLE_standard.yaml 53 | vars: 54 | bms_id: '3' # must be a number, also represents the modbus server number ! 55 | bms_name: 'JK-BMS 3' 56 | bms_ble_protocol_version: JK02_32S # JK02_24S < hardware version 11.0 >= JK02_32S 57 | bms_ble_mac_address: C8:47:8C:EE:16:EA 58 | # Maximum cell charging cycles is used to calculate the battey SoH. 59 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 60 | bms_cell_max_cycles: '6000.0' 61 | -------------------------------------------------------------------------------- /configuration_examples/RP_BMS_example_JBD_UART_BLE.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.5.5 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | ############################ Remote Packages Example ########################### 21 | 22 | # This is not a working YAML but just code ready to copy into your main YAML. 23 | 24 | ################################################################################ 25 | 26 | packages: 27 | 28 | bms: 29 | url: https://github.com/Sleeper85/esphome-yambms 30 | ref: main 31 | refresh: 0s 32 | files: 33 | # BMS 1 34 | - path: 'packages/bms/bms_combine_JBD_UART_full.yaml' 35 | vars: 36 | bms_id: '1' # must be a number 37 | bms_name: 'BMS 1' 38 | bms_uart_id: 'uart_esp_1' 39 | bms_rx_timeout: '150ms' 40 | # Required settings cannot be retrieved from BMS 41 | # These values ​​must match your BMS settings 42 | # LFP values example 43 | bms_max_charge_current: '100' # A. Used to calculate maximum charge current 44 | bms_max_discharge_current: '100' # A. Used to calculate maximum discharge current 45 | bms_cell_ovp: '3.650' # V. Used by 'Auto CCL' functions 46 | bms_cell_uvp: '2.800' # V. Used by 'Auto DCL' functions and to calculate maximum discharge voltage 47 | bms_balance_trigger_voltage: '0.010' # V. Used by 'Auto CVL' functions 48 | # Maximum cell charging cycles is used to calculate the battey SoH. 49 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 50 | bms_cell_max_cycles: '6000.0' 51 | # BMS 2 52 | - path: 'packages/bms/bms_combine_JBD_BLE_full.yaml' 53 | vars: 54 | bms_id: '2' # must be a number 55 | bms_name: 'BMS 2' 56 | bms_ble_mac_address: 'C8:47:8C:10:7E:AA' # Your MAC address 57 | # Required settings cannot be retrieved from BMS 58 | # These values ​​must match your BMS settings 59 | # LFP values example 60 | bms_max_charge_current: '100' # A. Used to calculate maximum charge current 61 | bms_max_discharge_current: '100' # A. Used to calculate maximum discharge current 62 | bms_cell_ovp: '3.650' # V. Used by 'Auto CCL' functions 63 | bms_cell_uvp: '2.800' # V. Used by 'Auto DCL' functions and to calculate maximum discharge voltage 64 | bms_balance_trigger_voltage: '0.010' # V. Used by 'Auto CVL' functions 65 | # Maximum cell charging cycles is used to calculate the battey SoH. 66 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 67 | bms_cell_max_cycles: '6000.0' 68 | -------------------------------------------------------------------------------- /configuration_examples/RP_BMS_example_JK_BLE.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.5.5 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | ############################ Remote Packages Example ########################### 21 | 22 | # This is not a working YAML but just code ready to copy into your main YAML. 23 | 24 | ################################################################################ 25 | 26 | packages: 27 | 28 | bms: 29 | url: https://github.com/Sleeper85/esphome-yambms 30 | ref: main 31 | refresh: 0s 32 | files: 33 | # BMS 1 34 | - path: 'packages/bms/bms_combine_JK_BLE_standard.yaml' 35 | vars: 36 | bms_id: '1' # must be a number 37 | bms_name: 'JK-BMS 1' 38 | bms_ble_protocol_version: 'JK02_32S' # JK02_24S < hardware version 11.0 >= JK02_32S 39 | bms_ble_mac_address: 'C8:47:8C:10:7E:AA' 40 | # Maximum cell charging cycles is used to calculate the battey SoH. 41 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 42 | bms_cell_max_cycles: '6000.0' 43 | # BMS 2 44 | - path: 'packages/bms/bms_combine_JK_BLE_standard.yaml' 45 | vars: 46 | bms_id: '2' # must be a number 47 | bms_name: 'JK-BMS 2' 48 | bms_ble_protocol_version: 'JK02_32S' # JK02_24S < hardware version 11.0 >= JK02_32S 49 | bms_ble_mac_address: 'C8:47:8C:EE:16:EA' 50 | # Maximum cell charging cycles is used to calculate the battey SoH. 51 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 52 | bms_cell_max_cycles: '6000.0' 53 | -------------------------------------------------------------------------------- /configuration_examples/RP_BMS_example_JK_UART_4G-GPS.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.5.5 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | ############################ Remote Packages Example ########################### 21 | 22 | # This is not a working YAML but just code ready to copy into your main YAML. 23 | 24 | ################################################################################ 25 | 26 | packages: 27 | 28 | bms: 29 | url: https://github.com/Sleeper85/esphome-yambms 30 | ref: main 31 | refresh: 0s 32 | files: 33 | # BMS 1 34 | - path: 'packages/bms/bms_combine_JK_UART_4G-GPS_full.yaml' 35 | vars: 36 | bms_id: '1' # must be a number 37 | bms_name: 'JK-BMS 1' 38 | bms_uart_id: 'uart_esp_1' 39 | # Maximum cell charging cycles is used to calculate the battey SoH. 40 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 41 | bms_cell_max_cycles: '6000.0' 42 | # BMS 2 43 | - path: 'packages/bms/bms_combine_JK_UART_4G-GPS_full.yaml' 44 | vars: 45 | bms_id: '2' # must be a number 46 | bms_name: 'JK-BMS 2' 47 | bms_uart_id: 'uart_esp_2' 48 | # Maximum cell charging cycles is used to calculate the battey SoH. 49 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 50 | bms_cell_max_cycles: '6000.0' 51 | -------------------------------------------------------------------------------- /configuration_examples/RP_example_multi-node_YamBMS_modbus_server_1.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.5.5 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | ############################ Remote Packages Example ########################### 21 | 22 | # This is not a working YAML but just code ready to copy into your main YAML. 23 | 24 | ################################################################################ 25 | 26 | substitutions: 27 | modbus_update_interval: '5s' # frequency with which BMS/Shunt modbus servers are queried 28 | modbus_baud_rate: '19200' # 9600 / 19200 / 11520 29 | modbus_command_throttle: '0ms' # minimum time in between 2 requests to the device 30 | modbus_send_wait_time: '250ms' # time in milliseconds before the next ModBUS command is sent if an answer from a previous command is pending 31 | 32 | packages: 33 | 34 | yambms_modbus_server: 35 | url: https://github.com/Sleeper85/esphome-yambms 36 | ref: main 37 | refresh: 0s 38 | files: 39 | # Modbus server 40 | - path: 'packages/base/device_modbus.yaml' 41 | vars: 42 | modbus_role: 'server' # client / server 43 | modbus_uart_id: 'uart_esp_1' # RS485 board 44 | # Shunt 1 45 | - path: 'packages/shunt/shunt_modbus_Victron_SmartShunt_UART.yaml' 46 | vars: 47 | shunt_id: '1' # must be a number 48 | shunt_name: 'Shunt 1' 49 | shunt_uart_id: 'uart_esp_2' 50 | # BMS 1 51 | - path: 'packages/bms/bms_modbus_JK_UART_4G-GPS_full.yaml' 52 | vars: 53 | bms_id: '1' # must be a number 54 | bms_name: 'JK-BMS 1' 55 | bms_uart_id: 'uart_esp_3' 56 | # Maximum cell charging cycles is used to calculate the battey SoH. 57 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 58 | bms_cell_max_cycles: '6000.0' 59 | -------------------------------------------------------------------------------- /configuration_examples/RP_example_multi-node_YamBMS_modbus_server_2.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.5.5 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | ############################ Remote Packages Example ########################### 21 | 22 | # This is not a working YAML but just code ready to copy into your main YAML. 23 | 24 | ################################################################################ 25 | 26 | substitutions: 27 | modbus_update_interval: '5s' # frequency with which BMS/Shunt modbus servers are queried 28 | modbus_baud_rate: '19200' # 9600 / 19200 / 11520 29 | modbus_command_throttle: '0ms' # minimum time in between 2 requests to the device 30 | modbus_send_wait_time: '250ms' # time in milliseconds before the next ModBUS command is sent if an answer from a previous command is pending 31 | 32 | packages: 33 | 34 | yambms_modbus_server: 35 | url: https://github.com/Sleeper85/esphome-yambms 36 | ref: main 37 | refresh: 0s 38 | files: 39 | # Modbus server 40 | - path: 'packages/base/device_modbus.yaml' 41 | vars: 42 | modbus_role: 'server' # client / server 43 | modbus_uart_id: 'uart_esp_1' # RS485 board 44 | # BMS 2 45 | - path: 'packages/bms/bms_modbus_JK_BLE_standard.yaml' 46 | vars: 47 | bms_id: '2' # must be a number, also represents the modbus server number ! 48 | bms_name: 'JK-BMS 2' 49 | bms_ble_protocol_version: JK02_32S # JK02_24S < hardware version 11.0 >= JK02_32S 50 | bms_ble_mac_address: C8:47:8C:10:7E:AA 51 | # Maximum cell charging cycles is used to calculate the battey SoH. 52 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 53 | bms_cell_max_cycles: '6000.0' 54 | # BMS 3 55 | - path: 'packages/bms/bms_modbus_JK_BLE_standard.yaml' 56 | vars: 57 | bms_id: '3' # must be a number, also represents the modbus server number ! 58 | bms_name: 'JK-BMS 3' 59 | bms_ble_protocol_version: JK02_32S # JK02_24S < hardware version 11.0 >= JK02_32S 60 | bms_ble_mac_address: C8:47:8C:EE:16:EA 61 | # Maximum cell charging cycles is used to calculate the battey SoH. 62 | # MB31=8000.0, LF280K v3=8000.0, LF280K v2=6000.0, LF280=3000.0 (decimal is required) 63 | bms_cell_max_cycles: '6000.0' 64 | -------------------------------------------------------------------------------- /documents/BMS LV CAN Protocol/06-02-01-PTC-Luxpower Battery communication CAN Protocol_V04.2_20240313.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/documents/BMS LV CAN Protocol/06-02-01-PTC-Luxpower Battery communication CAN Protocol_V04.2_20240313.pdf -------------------------------------------------------------------------------- /documents/BMS LV CAN Protocol/BMS_Protocol _CAN_Hybrid_EN_V1.0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/documents/BMS LV CAN Protocol/BMS_Protocol _CAN_Hybrid_EN_V1.0.pdf -------------------------------------------------------------------------------- /documents/BMS LV CAN Protocol/CAN-Bus-protocol-DEYE-low-voltage-V1.2-20180408.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/documents/BMS LV CAN Protocol/CAN-Bus-protocol-DEYE-low-voltage-V1.2-20180408.pdf -------------------------------------------------------------------------------- /documents/BMS LV CAN Protocol/CAN-Bus-protocol-PYLON-low-voltage-V1.2-20180408.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/documents/BMS LV CAN Protocol/CAN-Bus-protocol-PYLON-low-voltage-V1.2-20180408.pdf -------------------------------------------------------------------------------- /documents/BMS LV CAN Protocol/Growatt-BMS-CAN-Bus-protocol-low-voltage-V1.04-1-translate.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/documents/BMS LV CAN Protocol/Growatt-BMS-CAN-Bus-protocol-low-voltage-V1.04-1-translate.pdf -------------------------------------------------------------------------------- /documents/BMS LV CAN Protocol/Growatt-BMS-CAN-Bus-protocol-low-voltage-V1.04-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/documents/BMS LV CAN Protocol/Growatt-BMS-CAN-Bus-protocol-low-voltage-V1.04-1.pdf -------------------------------------------------------------------------------- /documents/BMS LV CAN Protocol/Master-LV-communication-guide-EN-8000.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/documents/BMS LV CAN Protocol/Master-LV-communication-guide-EN-8000.pdf -------------------------------------------------------------------------------- /documents/BMS LV CAN Protocol/SEPLOS BMS CAN Protocoll V1.0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/documents/BMS LV CAN Protocol/SEPLOS BMS CAN Protocoll V1.0.pdf -------------------------------------------------------------------------------- /documents/BMS LV CAN Protocol/SMA CAN Protocol Mapping.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/documents/BMS LV CAN Protocol/SMA CAN Protocol Mapping.pdf -------------------------------------------------------------------------------- /documents/BMS LV CAN Protocol/SMA CAN protocol.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/documents/BMS LV CAN Protocol/SMA CAN protocol.pdf -------------------------------------------------------------------------------- /documents/BMS LV CAN Protocol/Sol-Ark CAN Bus Protocol V1.3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/documents/BMS LV CAN Protocol/Sol-Ark CAN Bus Protocol V1.3.pdf -------------------------------------------------------------------------------- /documents/README/BMS_JK_RS485_DISPLAY.md: -------------------------------------------------------------------------------- 1 | # YamBMS - JK RS485 DISPLAY 2 | 3 | [![Badge License: GPLv3](https://img.shields.io/badge/License-GPLv3-brightgreen.svg)](https://www.gnu.org/licenses/gpl-3.0) 4 | [![Badge Version](https://img.shields.io/github/v/release/Sleeper85/esphome-yambms?include_prereleases&color=yellow&logo=DocuSign&logoColor=white)](https://github.com/Sleeper85/esphome-yambms/releases/latest) 5 | ![GitHub stars](https://img.shields.io/github/stars/Sleeper85/esphome-yambms) 6 | ![GitHub forks](https://img.shields.io/github/forks/Sleeper85/esphome-yambms) 7 | ![GitHub watchers](https://img.shields.io/github/watchers/Sleeper85/esphome-yambms) 8 | 9 | > [!IMPORTANT] 10 | > The most important thing for proper functioning of YamBMS is that **the voltage of your BMS is well calibrated**. 11 | > YamBMS logic is based on the `min_cell_voltage` and `max_cell_voltage` voltages of your BMS. 12 | 13 | ## External component 14 | 15 | [esphome-jk-bms](https://github.com/syssi/esphome-jk-bms) by [@syssi](https://github.com/syssi) 16 | 17 | ## Schematic and setup instructions 18 | 19 | > [!CAUTION] 20 | > The `jk_bms_display` component does not provide all the information needed for an optimal operation of `YamBMS`. 21 | > The missing information has been added in the code by fixed values. 22 | > e.g. it's not possible to know if the BMS is `online` or if the BMS is `equalizing` the cells. 23 | 24 | ### JK-B2A8S20P 25 | 26 | ``` 27 | 28 | │ JK-B2A8S20P │ 29 | │ │ 30 | │ Temp CAN GPS Display Balancer │ 31 | └──[oooo]──[ooo]──[oooo]──[oooooo]──[oooooooooo]──┘ 32 | ││││││ 33 | │││││└─ K- 34 | ││││└── K+ 35 | │││└─── GND ( not common with B- , isolated ? ) 36 | ││└──── B 37 | │└───── A 38 | └────── VCC = +/- 11.5V 39 | ``` 40 | 41 | ### JK-BD6A2xS10P and JK-BxA24SxxP 42 | 43 | ``` 44 | 45 | │ JK-BD6A2xS10P, JK-BxA24SxxP │ 46 | │ │ 47 | │ CAN GPS Display Heat │ 48 | └────[ooo]─[oooo]───[oooooo]───[ooooooo]──────────┘ 49 | ││││││ 50 | │││││└─ VCC ┌───────────────┐ ┌─────────────────┐ 51 | ││││└── A ────────│A+ GND│────────│GND │ 52 | │││└─── B ────────│B- RS485 RXD│────────│RX ESP32/ │ 53 | ││└──── GND │ to TTL TXD│ │TX ESP8266 GND│────── 54 | │└───── K+ │ module VCC│────────│5V VCC│────── 55 | └────── K- └───────────────┘ └─────────────────┘ 56 | ``` 57 | 58 | ### Power Button 59 | 60 | ``` 61 | K- o-------[ 100kΩ ]-----o / 62 | /---| 63 | K+ o---------------------o/ 64 | ``` -------------------------------------------------------------------------------- /documents/README/CANBUS_protocol.md: -------------------------------------------------------------------------------- 1 | # YamBMS - CAN bus protocol 2 | 3 | [![Badge License: GPLv3](https://img.shields.io/badge/License-GPLv3-brightgreen.svg)](https://www.gnu.org/licenses/gpl-3.0) 4 | [![Badge Version](https://img.shields.io/github/v/release/Sleeper85/esphome-yambms?include_prereleases&color=yellow&logo=DocuSign&logoColor=white)](https://github.com/Sleeper85/esphome-yambms/releases/latest) 5 | ![GitHub stars](https://img.shields.io/github/stars/Sleeper85/esphome-yambms) 6 | ![GitHub forks](https://img.shields.io/github/forks/Sleeper85/esphome-yambms) 7 | ![GitHub watchers](https://img.shields.io/github/watchers/Sleeper85/esphome-yambms) 8 | 9 | ## CAN bus protocol table 10 | 11 | ![Image](../../images/CAN_Protocol_Table.png "ANBUS protocol table") 12 | 13 | Note: the following IDs are not implemented: 0x35B, 0x360, 0x378, 0x380 and 0x381. -------------------------------------------------------------------------------- /documents/README/Charging_logic.md: -------------------------------------------------------------------------------- 1 | # YamBMS - Charging Logic 2 | 3 | [![Badge License: GPLv3](https://img.shields.io/badge/License-GPLv3-brightgreen.svg)](https://www.gnu.org/licenses/gpl-3.0) 4 | [![Badge Version](https://img.shields.io/github/v/release/Sleeper85/esphome-yambms?include_prereleases&color=yellow&logo=DocuSign&logoColor=white)](https://github.com/Sleeper85/esphome-yambms/releases/latest) 5 | ![GitHub stars](https://img.shields.io/github/stars/Sleeper85/esphome-yambms) 6 | ![GitHub forks](https://img.shields.io/github/forks/Sleeper85/esphome-yambms) 7 | ![GitHub watchers](https://img.shields.io/github/watchers/Sleeper85/esphome-yambms) 8 | 9 | > [!NOTE] 10 | > Please read the documentation regarding the [charging settings](YamBMS_functions.md#charging-settings). 11 | 12 | ## Charging Logic Diagram 13 | 14 | The charging voltage and current correspond to the default values in the YAML script and can be modified. 15 | 16 | ![Image](../../images/YamBMS_Charging_Logic_Diagram.png "YamBMS Charging Logic") 17 | 18 | ## Cut-Off Charging Logic Equation 19 | 20 | Source: [Charging Marine Lithium Battery Banks](https://nordkyndesign.com/charging-marine-lithium-battery-banks) 21 | 22 | Special thanks to [@shvmm](https://github.com/shvmm) for creating the equations. 23 | 24 | Note: The equations below are valid for other chemistries like Li-ion and LTO but with other CVmin and CVmax values. 25 | 26 | ![Image](../../images/YamBMS_Cut-Off_Charging_Logic_for_LFP_Equation.png "JK-BMS-CAN Cut-Off Charging Logic_for LFP Equation") 27 | 28 | ## Cut-Off Charging Logic Diagram (what's happening in the yellow diamond) 29 | 30 | Note: The diagram below is valid for other chemistries like Li-ion and LTO but with other CVmin and CVmax values. 31 | 32 | ![Image](../../images/YamBMS_Cut-Off_Charging_Logic_Diagram.png "YamBMS Cut-Off Charging Logic Diagram") 33 | 34 | ## LFP Cut-Off Values 35 | 36 | - Nominal : 3.20 V 37 | - CV min : 3.37 V 38 | - CV max : 3.65 V 39 | 40 | ![Image](../../images/YamBMS_LFP_Cut-Off_Values.png "LFP Cut-Off Values") 41 | 42 | ## Li-ion Cut-Off Values 43 | 44 | - Nominal : 3.60 V 45 | - CV min : 3.90 V 46 | - CV max : 4.20 V 47 | 48 | ![Image](../../images/YamBMS_Li-ion_Cut-Off_Values.png "Li-ion Cut-Off Values") 49 | 50 | ## LTO Cut-Off Values 51 | 52 | - Nominal : 2.40 V 53 | - CV min : 2.55 V 54 | - CV max : 2.85 V 55 | 56 | ![Image](../../images/YamBMS_LTO_Cut-Off_Values.png "LTO Cut-Off Value") 57 | -------------------------------------------------------------------------------- /documents/README/Galvanic_isolation.md: -------------------------------------------------------------------------------- 1 | # YamBMS - Galvanic isolation 2 | 3 | [![Badge License: GPLv3](https://img.shields.io/badge/License-GPLv3-brightgreen.svg)](https://www.gnu.org/licenses/gpl-3.0) 4 | [![Badge Version](https://img.shields.io/github/v/release/Sleeper85/esphome-yambms?include_prereleases&color=yellow&logo=DocuSign&logoColor=white)](https://github.com/Sleeper85/esphome-yambms/releases/latest) 5 | ![GitHub stars](https://img.shields.io/github/stars/Sleeper85/esphome-yambms) 6 | ![GitHub forks](https://img.shields.io/github/forks/Sleeper85/esphome-yambms) 7 | ![GitHub watchers](https://img.shields.io/github/watchers/Sleeper85/esphome-yambms) 8 | 9 | ## Galvanic isolation of the `UART-TTL` connection 10 | 11 | > [!CAUTION] 12 | > `V1` and `V2` (3V3 or 5V) must be isolated and cannot come from the same source. `V1` can be powered by the device or the `3V3` of the ESP32 via a `DC-DC isolator` (**B0303S = 3V3-to-3V3**), `V2` (ESP32 side) is powered directly by the `3V3` of the ESP32. 13 | 14 | ``` 15 | ┌─────────────┐ ┌──────────┐ ┌───────────┐ 16 | │ | 3V3/5V--V1>│ |TX-------AI>│ ISOLATOR │>BO-------RX>| | 19 | │ │<----GND---->│ │<----GND---->| | 20 | └─────────────┘ └──────────┘ └───────────┘ 21 | ``` 22 | 23 | Here are some components available on the market allowing you to set up galvanic isolation. The `UART-TTL isolator 2` seems a little better isolated with more space below the chip. 24 | 25 | * [UART-TTL isolator 1](https://a.aliexpress.com/_EuXszn7) 26 | * [UART-TTL isolator 2](https://a.aliexpress.com/_EItDRvX) 27 | * [DC-DC isolator](https://a.aliexpress.com/_EIsPAoh) 28 | 29 | ![Image](../../images/UART-TTL_isolator_1.png "UART-TTL isolator example") 30 | 31 | | [UART-TTL isolator](https://a.aliexpress.com/_EItDRvX) | [DC-DC isolator](https://a.aliexpress.com/_EIsPAoh) | 32 | | --- | --- | 33 | | | | 34 | 35 | ### Another solution would be the use of M5Stack's isolated RS485 unit. 36 | 37 | | [M5Stack RS485 unit (isolated)](https://docs.m5stack.com/en/unit/iso485) | 38 | | --- | 39 | | | 40 | -------------------------------------------------------------------------------- /documents/README/Schematic_and_setup_instructions.md: -------------------------------------------------------------------------------- 1 | # YamBMS - Schematic and setup instructions 2 | 3 | [![Badge License: GPLv3](https://img.shields.io/badge/License-GPLv3-brightgreen.svg)](https://www.gnu.org/licenses/gpl-3.0) 4 | [![Badge Version](https://img.shields.io/github/v/release/Sleeper85/esphome-yambms?include_prereleases&color=yellow&logo=DocuSign&logoColor=white)](https://github.com/Sleeper85/esphome-yambms/releases/latest) 5 | ![GitHub stars](https://img.shields.io/github/stars/Sleeper85/esphome-yambms) 6 | ![GitHub forks](https://img.shields.io/github/forks/Sleeper85/esphome-yambms) 7 | ![GitHub watchers](https://img.shields.io/github/watchers/Sleeper85/esphome-yambms) 8 | 9 | ## Contents 10 | 11 | 1) [Galvanic isolation](Galvanic_isolation.md) 12 | 2) [JK-B BMS](BMS_JK-B.md) 13 | 3) [JK-PB BMS](BMS_JK-PB.md) 14 | 4) [JK RS485 DISPLAY](BMS_JK_RS485_DISPLAY.md) 15 | 5) [Victron SmartShunt](Shunt_Victron_SmartShunt.md) 16 | -------------------------------------------------------------------------------- /documents/README/Shunt_Victron_SmartShunt.md: -------------------------------------------------------------------------------- 1 | # Victron SmartShunt 2 | 3 | [![Badge License: GPLv3](https://img.shields.io/badge/License-GPLv3-brightgreen.svg)](https://www.gnu.org/licenses/gpl-3.0) 4 | [![Badge Version](https://img.shields.io/github/v/release/Sleeper85/esphome-yambms?include_prereleases&color=yellow&logo=DocuSign&logoColor=white)](https://github.com/Sleeper85/esphome-yambms/releases/latest) 5 | ![GitHub stars](https://img.shields.io/github/stars/Sleeper85/esphome-yambms) 6 | ![GitHub forks](https://img.shields.io/github/forks/Sleeper85/esphome-yambms) 7 | ![GitHub watchers](https://img.shields.io/github/watchers/Sleeper85/esphome-yambms) 8 | 9 | ## UART : Schematic 10 | 11 | > [!CAUTION] 12 | > [Please read this page about setting up galvanic isolation of the `UART-TTL` connection.](Galvanic_isolation.md) 13 | 14 | > [!TIP] 15 | > If you are unsure about to pin order please measure the voltage between GND and VCC (5V). If you measure a positive voltage you know the position of VCC and GND! 16 | 17 | ``` 18 | ┌─────────────────┐ ┌──────────┐ ┌───────────┐ 19 | │ 5V o│<----5V---V1>│ || | 20 | │ Victron RX o│<---------AO<│ UART-TTL │---------AI>│ ISOLATOR │>BO-------RX>| | 22 | │ GND o│<----GND---->│ │<----GND---->| | 23 | └─────────────────┘ └──────────┘ └───────────┘ 24 | 25 | # UART-TTL VE.Direct port (JST-PH 2.0mm pinch) 26 | ┌─── ─────── ────┐ 27 | │ │ 28 | │ O O O O │ 29 | │GND RX TX VCC │ 30 | └────────────────┘ 31 | │ │ │ └ 5V 32 | │ │ └──── TX to TTL-isolator AI (input) 33 | │ └──────── RX to TTL-isolator AO (output) 34 | └──────────── GND to TTL-isolator GND 35 | 36 | ``` 37 | 38 | ## Bluetooth : How to retrieve MAC address and encryption key 39 | 40 | To connect to your Victron device with BLE component you must have two information : 41 | 42 | - `mac_address` - Bluetooth mac address of device. 43 | - `encryption_key` - AES encryption key. 44 | 45 | Use [VictronConnect App v5.93](https://www.victronenergy.com/live/victronconnect:beta) (or later) released on 2023-08-25. 46 | 47 | Connect to the SmartShunt via Bluetooth under the `Local` tab. 48 | 49 | ![VictronConnect App Local page](../../images/Victron_SmartShunt_App_00_Local.jpg) 50 | ![VictronConnect App Settings page](../../images/Victron_SmartShunt_App_01_Settings.png) 51 | ![VictronConnect App Product info page](../../images/Victron_SmartShunt_App_02_ProductInfo.png) 52 | ![VictronConnect App Instant readout encryption data](../../images/Victron_SmartShunt_App_03_EncryptionData.png) 53 | 54 | 1. Open `Settings` of Device. 55 | 2. Open `Product Info` page. 56 | 3. Ensure `Instant readout via Bluetooth` is enabled. 57 | 4. Bottom of page press `SHOW` for Instant readout details Encryption data. 58 | 59 | When connected to the device via VictronConnect App no Instant readout (Bluetooth advertising) data is generated. 60 | -------------------------------------------------------------------------------- /documents/README/Supported_devices_Build_your_own_PCB.md: -------------------------------------------------------------------------------- 1 | # YamBMS - ESP32 or ESP32-S3 2 | 3 | [![Badge License: GPLv3](https://img.shields.io/badge/License-GPLv3-brightgreen.svg)](https://www.gnu.org/licenses/gpl-3.0) 4 | [![Badge Version](https://img.shields.io/github/v/release/Sleeper85/esphome-yambms?include_prereleases&color=yellow&logo=DocuSign&logoColor=white)](https://github.com/Sleeper85/esphome-yambms/releases/latest) 5 | ![GitHub stars](https://img.shields.io/github/stars/Sleeper85/esphome-yambms) 6 | ![GitHub forks](https://img.shields.io/github/forks/Sleeper85/esphome-yambms) 7 | ![GitHub watchers](https://img.shields.io/github/watchers/Sleeper85/esphome-yambms) 8 | 9 | > [!IMPORTANT] 10 | > BMS monitoring with `UART` or `RS485` is recommended. 11 | 12 | ## Number of BMS supported 13 | 14 | * 2x BMS with `Bluetooth` (BLE stack consumes significant amount of RAM on device and can cause crash and reboot) 15 | * 3x `JK-B` BMS with `UART/RS485` 16 | * several `JK-PB` BMS with `RS485` (already tested with 7 BMS) 17 | 18 | Note: these are theoretical limits, not all combinations have been tested. 19 | 20 | ## UART/IO Expander 21 | 22 | It would be possible to add one or more [WK2168 4x UART expander](https://esphome.io/components/weikai.html) to increase the number of BMS monitored with `UART`. 23 | 24 | ## Build your own PCB 25 | 26 | > [!CAUTION] 27 | > The `GND` of the `JK-B GPS port` is directly connected with the `B-` of your battery. Even if your BMS is in protection or stopped you can measure the `full voltage` between this `GND` and `B+`. This therefore presents a risk of `bypass` of the BMS `P-` and can be dangerous if the GND of your ESP32 is connected to the GND of your inverter or a measurement shunt for example. 28 | > I therefore strongly advise you to achieve [galvanic isolation](BMS_JK-B_UART_solution.md#galvanic-isolation-of-the-uart-ttl-connection) between your ESP32 and the `UART-TTL` of the `JK-B GPS port`. 29 | 30 | This is an example of an `ESP32 DevKit V1` 30 pin board powered by the `JK-B` BMS. **This example uses an RS485 board for the `multi-node` solution which is not mandatory.** 31 | 32 | ![Image](../../images/PCB_ESP32_JK-BMS-CAN_powered_by_JK-BMS.png "PCB ESP32 JK-BMS-CAN powered by JK-BMS") 33 | 34 | ![Image](../../images/PCB_ESP32_JK-BMS-CAN_Prototype.png "PCB ESP32 JK-BMS-CAN powered by JK-BMS") 35 | -------------------------------------------------------------------------------- /documents/README/Troubleshooting.md: -------------------------------------------------------------------------------- 1 | # Troubleshooting 2 | 3 | [![Badge License: GPLv3](https://img.shields.io/badge/License-GPLv3-brightgreen.svg)](https://www.gnu.org/licenses/gpl-3.0) 4 | [![Badge Version](https://img.shields.io/github/v/release/Sleeper85/esphome-yambms?include_prereleases&color=yellow&logo=DocuSign&logoColor=white)](https://github.com/Sleeper85/esphome-yambms/releases/latest) 5 | ![GitHub stars](https://img.shields.io/github/stars/Sleeper85/esphome-yambms) 6 | ![GitHub forks](https://img.shields.io/github/forks/Sleeper85/esphome-yambms) 7 | ![GitHub watchers](https://img.shields.io/github/watchers/Sleeper85/esphome-yambms) 8 | 9 | ## UART logging 10 | 11 | ### Default UART GPIOs 12 | 13 | The table below shows you the default UART GPIOs as well as the default logger hardware output. 14 | 15 | When declaring a UART you can choose other GPIOs but keep in mind that you can declare max `3 UARTs` with an ESP32. If not needed, I will not use the GPIOs used for `UART0` because those are the GPIOs used to flash the ESP32 from USB. 16 | 17 | | Board | UART0 | UART1 | UART2 | USB_CDC | USB_SERIAL_JTAG | Default logger HW | 18 | | ----- | ----- | ----- | ----- | ------- | --------------- | ----------------- | 19 | | ESP32 | TX: 1, RX: 3 | TX: 10, RX: 9 | TX: 17, RX: 16 | N/A | N/A | UART0 | 20 | | ESP32-C3 | TX: 21, RX: 20 | Undefined | N/A | N/A | 18/19 | USB_SERIAL_JTAG | 21 | | ESP32-S2 | TX: 43, RX: 44 | TX: 17, RX: 18 | N/A | 19/20 | N/A | USB_CDC | 22 | | ESP32-S3 | TX: 43, RX: 44 | TX: 17, RX: 18 | Undefined | 19/20 | 19/20 | USB_SERIAL_JTAG | 23 | 24 | ### Change the default logger UART output 25 | 26 | You are using an `ESP32-S3`, by default the logs are sent to the USB port labeled `USB` this corresponds to `USB_SERIAL_JTAG`. 27 | If you want to flash the code and receive the logs on the port labeled `UART`, the option below allows you to choose the hardware that `logger` should use. 28 | 29 | ```YAML 30 | logger: 31 | hardware_uart: UART0 # UART0 / USB_SERIAL_JTAG 32 | ``` 33 | 34 | ### Don't use UART logging 35 | 36 | > [!CAUTION] 37 | > Using `wk2168` and `canbus` (esp32can platform) components together is problematic and creates a boot loop (tested on ESP32-S3). 38 | > Using `baud_rate: 0` avoids this problem. 39 | 40 | By default an ESP32 has `3 UARTs`, one of which is used for the logger output. The option below allows you to free the UART used by `logger` so that you can use it and assign new GPIOs to it. 41 | 42 | ```YAML 43 | logger: 44 | baud_rate: 0 45 | ``` 46 | -------------------------------------------------------------------------------- /documents/README/YamBMS_multi-node_RS485_modbus_solution.md: -------------------------------------------------------------------------------- 1 | # YamBMS - JK-PB BMS RS485 Solution 2 | 3 | [![Badge License: GPLv3](https://img.shields.io/badge/License-GPLv3-brightgreen.svg)](https://www.gnu.org/licenses/gpl-3.0) 4 | [![Badge Version](https://img.shields.io/github/v/release/Sleeper85/esphome-yambms?include_prereleases&color=yellow&logo=DocuSign&logoColor=white)](https://github.com/Sleeper85/esphome-yambms/releases/latest) 5 | ![GitHub stars](https://img.shields.io/github/stars/Sleeper85/esphome-yambms) 6 | ![GitHub forks](https://img.shields.io/github/forks/Sleeper85/esphome-yambms) 7 | ![GitHub watchers](https://img.shields.io/github/watchers/Sleeper85/esphome-yambms) 8 | 9 | ## Titre 10 | 11 | Each shunt/bms turns into a modbus server with its own address. The max number of BMS per ESP32 (UART/BLE) is 2 but you can use one ESP32 per battery if you want. -------------------------------------------------------------------------------- /documents/RS485 protocol/Jikong BMS RS485 modbus protocol V1.1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/documents/RS485 protocol/Jikong BMS RS485 modbus protocol V1.1.pdf -------------------------------------------------------------------------------- /documents/RS485 protocol/RS485-protocol-pylon-low-voltage-V3.3-20180821.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/documents/RS485 protocol/RS485-protocol-pylon-low-voltage-V3.3-20180821.pdf -------------------------------------------------------------------------------- /documents/RS485 protocol/Shoto RS485 Modbus protocol V1.2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/documents/RS485 protocol/Shoto RS485 Modbus protocol V1.2.pdf -------------------------------------------------------------------------------- /firmware/YamBMS_DEMO_ESP32.factory.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/firmware/YamBMS_DEMO_ESP32.factory.bin -------------------------------------------------------------------------------- /images/Auto_Charge_Voltage_Logic_Flowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/Auto_Charge_Voltage_Logic_Flowchart.png -------------------------------------------------------------------------------- /images/BMC_QR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/BMC_QR.png -------------------------------------------------------------------------------- /images/BMS_JK-PB_Inverter_BMS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/BMS_JK-PB_Inverter_BMS.png -------------------------------------------------------------------------------- /images/BMS_JK-PB_communication_board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/BMS_JK-PB_communication_board.png -------------------------------------------------------------------------------- /images/BMS_JK-PB_communication_connectors.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/BMS_JK-PB_communication_connectors.jpg -------------------------------------------------------------------------------- /images/BMS_JK_RS485_Modbus_protocol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/BMS_JK_RS485_Modbus_protocol.png -------------------------------------------------------------------------------- /images/BMS_JK_RS485_adapter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/BMS_JK_RS485_adapter.png -------------------------------------------------------------------------------- /images/CAN_Protocol_Table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/CAN_Protocol_Table.png -------------------------------------------------------------------------------- /images/CAN_Transceiver_M5Stack_Atomic_CAN_Base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/CAN_Transceiver_M5Stack_Atomic_CAN_Base.png -------------------------------------------------------------------------------- /images/CAN_Transceiver_M5Stack_CAN_Unit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/CAN_Transceiver_M5Stack_CAN_Unit.png -------------------------------------------------------------------------------- /images/CAN_Transceiver_MCP2515.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/CAN_Transceiver_MCP2515.png -------------------------------------------------------------------------------- /images/CAN_Transceiver_SN65HVD230.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/CAN_Transceiver_SN65HVD230.jpg -------------------------------------------------------------------------------- /images/CAN_Transceiver_TJA1050.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/CAN_Transceiver_TJA1050.png -------------------------------------------------------------------------------- /images/CAN_Transceiver_TJA1051.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/CAN_Transceiver_TJA1051.jpg -------------------------------------------------------------------------------- /images/DC-DC_3V3-to-3V3_isolator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/DC-DC_3V3-to-3V3_isolator.png -------------------------------------------------------------------------------- /images/ESPHome_Web_Server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/ESPHome_Web_Server.png -------------------------------------------------------------------------------- /images/HA_Dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/HA_Dashboard.png -------------------------------------------------------------------------------- /images/JK-BMS_24S_GPS_port.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/JK-BMS_24S_GPS_port.png -------------------------------------------------------------------------------- /images/MCU_AtomS3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_AtomS3.png -------------------------------------------------------------------------------- /images/MCU_AtomS3R.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_AtomS3R.png -------------------------------------------------------------------------------- /images/MCU_AtomS3_Lite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_AtomS3_Lite.png -------------------------------------------------------------------------------- /images/MCU_AtomS3_Lite_schematic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_AtomS3_Lite_schematic.png -------------------------------------------------------------------------------- /images/MCU_AtomS3_schematic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_AtomS3_schematic.jpg -------------------------------------------------------------------------------- /images/MCU_ESP32-C3_ETH01-EVO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_ESP32-C3_ETH01-EVO.png -------------------------------------------------------------------------------- /images/MCU_ESP32-DevKit-V1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_ESP32-DevKit-V1.jpg -------------------------------------------------------------------------------- /images/MCU_ESP32-DevKit-V1_pinout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_ESP32-DevKit-V1_pinout.png -------------------------------------------------------------------------------- /images/MCU_ESP32-DevKitC_espBerry_2-CH-CAN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_ESP32-DevKitC_espBerry_2-CH-CAN.png -------------------------------------------------------------------------------- /images/MCU_ESP32-EVB.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_ESP32-EVB.jpg -------------------------------------------------------------------------------- /images/MCU_ESP32-S3-DevKitC-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_ESP32-S3-DevKitC-1.png -------------------------------------------------------------------------------- /images/MCU_ESP32-S3-DevKitC-1_pinout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_ESP32-S3-DevKitC-1_pinout.png -------------------------------------------------------------------------------- /images/MCU_ESP32-S3_LilyGo-T-Connect.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_ESP32-S3_LilyGo-T-Connect.jpg -------------------------------------------------------------------------------- /images/MCU_ESP32_LilyGo-T-CAN485.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_ESP32_LilyGo-T-CAN485.jpg -------------------------------------------------------------------------------- /images/MCU_ESP32_LilyGo-T-CAN485_overview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/MCU_ESP32_LilyGo-T-CAN485_overview.jpg -------------------------------------------------------------------------------- /images/PCB_ESP32_JK-BMS-CAN_Prototype.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/PCB_ESP32_JK-BMS-CAN_Prototype.jpg -------------------------------------------------------------------------------- /images/PCB_ESP32_JK-BMS-CAN_Prototype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/PCB_ESP32_JK-BMS-CAN_Prototype.png -------------------------------------------------------------------------------- /images/PCB_ESP32_JK-BMS-CAN_powered_by_JK-BMS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/PCB_ESP32_JK-BMS-CAN_powered_by_JK-BMS.png -------------------------------------------------------------------------------- /images/RJ45-Pinout-T568A.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/RJ45-Pinout-T568A.jpg -------------------------------------------------------------------------------- /images/RJ45-Pinout-T568B.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/RJ45-Pinout-T568B.jpg -------------------------------------------------------------------------------- /images/RS485_Module_HCMODU0081_Diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/RS485_Module_HCMODU0081_Diagram.png -------------------------------------------------------------------------------- /images/RS485_Transceiver_M5stack_SKU-U094_RS485_Isolated_Unit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/RS485_Transceiver_M5stack_SKU-U094_RS485_Isolated_Unit.png -------------------------------------------------------------------------------- /images/RS485_Transceiver_MAX485_TALK_PIN_board.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/RS485_Transceiver_MAX485_TALK_PIN_board.jpg -------------------------------------------------------------------------------- /images/RS485_Transceiver_Two-way_Converter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/RS485_Transceiver_Two-way_Converter.jpg -------------------------------------------------------------------------------- /images/RS485_Transceiver_isolated_high_speed_dual_board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/RS485_Transceiver_isolated_high_speed_dual_board.png -------------------------------------------------------------------------------- /images/Solution_M5stack_AtomS3_CAN_base_RS485_unit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/Solution_M5stack_AtomS3_CAN_base_RS485_unit.png -------------------------------------------------------------------------------- /images/UART-TTL_isolator_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/UART-TTL_isolator_1.png -------------------------------------------------------------------------------- /images/UART-TTL_isolator_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/UART-TTL_isolator_2.png -------------------------------------------------------------------------------- /images/Victron_SmartShunt_App_00_Local.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/Victron_SmartShunt_App_00_Local.jpg -------------------------------------------------------------------------------- /images/Victron_SmartShunt_App_01_Settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/Victron_SmartShunt_App_01_Settings.png -------------------------------------------------------------------------------- /images/Victron_SmartShunt_App_02_ProductInfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/Victron_SmartShunt_App_02_ProductInfo.png -------------------------------------------------------------------------------- /images/Victron_SmartShunt_App_03_EncryptionData.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/Victron_SmartShunt_App_03_EncryptionData.png -------------------------------------------------------------------------------- /images/YamBMS_Auto_CVL_CCL_DCL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_Auto_CVL_CCL_DCL.png -------------------------------------------------------------------------------- /images/YamBMS_BMS_alarms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_BMS_alarms.png -------------------------------------------------------------------------------- /images/YamBMS_CANBUS_Protocol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_CANBUS_Protocol.png -------------------------------------------------------------------------------- /images/YamBMS_CANBUS_Status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_CANBUS_Status.png -------------------------------------------------------------------------------- /images/YamBMS_Charge_Discharge_switch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_Charge_Discharge_switch.png -------------------------------------------------------------------------------- /images/YamBMS_Charging_Logic_Diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_Charging_Logic_Diagram.png -------------------------------------------------------------------------------- /images/YamBMS_Charging_Settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_Charging_Settings.png -------------------------------------------------------------------------------- /images/YamBMS_Combine_Status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_Combine_Status.png -------------------------------------------------------------------------------- /images/YamBMS_Combine_switch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_Combine_switch.png -------------------------------------------------------------------------------- /images/YamBMS_Cut-Off_Charging_Logic_Diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_Cut-Off_Charging_Logic_Diagram.png -------------------------------------------------------------------------------- /images/YamBMS_Cut-Off_Charging_Logic_for_LFP_Equation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_Cut-Off_Charging_Logic_for_LFP_Equation.png -------------------------------------------------------------------------------- /images/YamBMS_Diagnostic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_Diagnostic.png -------------------------------------------------------------------------------- /images/YamBMS_HA_Dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_HA_Dashboard.png -------------------------------------------------------------------------------- /images/YamBMS_Inverter_Heartbeat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_Inverter_Heartbeat.png -------------------------------------------------------------------------------- /images/YamBMS_JK-PB_RS485_Sniffer_Broadcast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_JK-PB_RS485_Sniffer_Broadcast.png -------------------------------------------------------------------------------- /images/YamBMS_LFP_Cut-Off_Values.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_LFP_Cut-Off_Values.png -------------------------------------------------------------------------------- /images/YamBMS_LTO_Cut-Off_Values.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_LTO_Cut-Off_Values.png -------------------------------------------------------------------------------- /images/YamBMS_Li-ion_Cut-Off_Values.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_Li-ion_Cut-Off_Values.png -------------------------------------------------------------------------------- /images/YamBMS_Max_Current_PCT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_Max_Current_PCT.png -------------------------------------------------------------------------------- /images/YamBMS_New_version.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_New_version.png -------------------------------------------------------------------------------- /images/YamBMS_ReBulk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_ReBulk.png -------------------------------------------------------------------------------- /images/YamBMS_Request_Force_Charge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_Request_Force_Charge.png -------------------------------------------------------------------------------- /images/YamBMS_Requested_Values.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_Requested_Values.png -------------------------------------------------------------------------------- /images/YamBMS_multi-node_RS485_modbus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_multi-node_RS485_modbus.png -------------------------------------------------------------------------------- /images/YamBMS_packaged_version.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/YamBMS_packaged_version.png -------------------------------------------------------------------------------- /images/lovelace-cards-contribution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sleeper85/esphome-yambms/c51e694197fe0813f47fceaab41ec193f06e5e4c/images/lovelace-cards-contribution.png -------------------------------------------------------------------------------- /packages/base/device_base_ethernet.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.01.20 2 | # Version : 1.5.3 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | text_sensor: 21 | # https://esphome.io/components/text_sensor/ethernet_info.html 22 | - platform: ethernet_info 23 | ip_address: 24 | name: ${name} ESP32 IP address 25 | id: esp32_ip_address 26 | dns_address: 27 | name: ${name} ESP32 DNS address 28 | id: esp32_dns_address 29 | mac_address: 30 | name: ${name} ESP32 MAC address 31 | id: esp32_mac_address 32 | -------------------------------------------------------------------------------- /packages/base/device_base_wifi.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.01.20 2 | # Version : 1.5.3 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | sensor: 21 | # https://esphome.io/components/sensor/wifi_signal 22 | - platform: wifi_signal 23 | name: ${name} ESP32 WiFi power 24 | id: esp32_wifi_power 25 | update_interval: 30s 26 | entity_category: diagnostic 27 | 28 | # Reports the WiFi signal strength in % 29 | - platform: template 30 | name: ${name} ESP32 WiFi power (%) 31 | id: esp32_wifi_power_percent 32 | update_interval: 30s 33 | unit_of_measurement: '%' 34 | icon: mdi:wifi 35 | entity_category: diagnostic 36 | accuracy_decimals: 0 37 | lambda: |- 38 | float wifi_power_dbm = id(esp32_wifi_power).state; 39 | return min(max(2 * (wifi_power_dbm + 100.0), 0.0), 100.0); 40 | 41 | text_sensor: 42 | # https://esphome.io/components/text_sensor/wifi_info 43 | - platform: wifi_info 44 | ip_address: 45 | name: ${name} ESP32 IP address 46 | id: esp32_ip_address 47 | ssid: 48 | name: ${name} ESP32 connected SSID 49 | id: esp32_connected_ssid 50 | bssid: 51 | name: ${name} ESP32 connected BSSID 52 | id: esp32_connected_bssid 53 | mac_address: 54 | name: ${name} ESP32 MAC address 55 | id: esp32_mac_address 56 | scan_results: 57 | name: ${name} ESP32 latest scan results 58 | id: esp32_latest_scan_results 59 | dns_address: 60 | name: ${name} ESP32 DNS address 61 | id: esp32_dns_address 62 | -------------------------------------------------------------------------------- /packages/base/device_debug_ESP32-S3.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.08.28 2 | # Version : 1.1.3 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | debug: 21 | update_interval: ${debug_update_interval} 22 | 23 | text_sensor: 24 | - platform: debug 25 | device: 26 | name: ${name} ${debug_name} Device info 27 | id: esp32_device_info 28 | reset_reason: 29 | name: ${name} ${debug_name} Reset reason 30 | id: esp32_reset_reason 31 | 32 | sensor: 33 | - platform: debug 34 | free: 35 | name: ${name} ${debug_name} Heap free 36 | id: esp32_heap_free 37 | block: 38 | name: ${name} ${debug_name} Heap max block 39 | id: esp32_heap_max_block 40 | psram: 41 | name: ${name} ${debug_name} Free PSRAM 42 | id: esp32_free_psram 43 | loop_time: 44 | name: ${name} ${debug_name} Loop time 45 | id: esp32_loop_time 46 | 47 | - platform: template 48 | name: ${name} ${debug_name} Heap free (%) 49 | id: esp32_heap_free_percent 50 | unit_of_measurement: '%' 51 | accuracy_decimals: 2 52 | icon: mdi:percent 53 | update_interval: ${debug_update_interval} 54 | entity_category: diagnostic 55 | # 524288 B (SRAM total) 56 | # 327680 B (DRAM usable) 57 | lambda: return ( id(esp32_heap_free).state * 100 / 327680 ); 58 | 59 | - platform: template 60 | name: ${name} ${debug_name} Heap max block (%) 61 | id: esp32_heap_max_block_percent 62 | unit_of_measurement: '%' 63 | accuracy_decimals: 2 64 | icon: mdi:percent 65 | update_interval: ${debug_update_interval} 66 | entity_category: diagnostic 67 | # 524288 B (SRAM total) 68 | # 327680 B (DRAM usable) 69 | lambda: return ( id(esp32_heap_max_block).state * 100 / 327680 ); 70 | 71 | - platform: template 72 | name: ${name} ${debug_name} Free PSRAM (%) 73 | id: esp32_free_psram_percent 74 | unit_of_measurement: '%' 75 | accuracy_decimals: 2 76 | icon: mdi:percent 77 | update_interval: ${debug_update_interval} 78 | entity_category: diagnostic 79 | lambda: return ( id(esp32_free_psram).state * 100 / ${debug_psram_size} ); // 8388608 80 | -------------------------------------------------------------------------------- /packages/base/device_debug_ESP32.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.08.28 2 | # Version : 1.1.3 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | debug: 21 | update_interval: ${debug_update_interval} 22 | 23 | text_sensor: 24 | - platform: debug 25 | device: 26 | name: ${name} ${debug_name} Device info 27 | id: esp32_device_info 28 | reset_reason: 29 | name: ${name} ${debug_name} Reset reason 30 | id: esp32_reset_reason 31 | 32 | sensor: 33 | - platform: debug 34 | free: 35 | name: ${name} ${debug_name} Heap free 36 | id: esp32_heap_free 37 | block: 38 | name: ${name} ${debug_name} Heap max block 39 | id: esp32_heap_max_block 40 | loop_time: 41 | name: ${name} ${debug_name} Loop time 42 | id: esp32_loop_time 43 | 44 | - platform: template 45 | name: ${name} ${debug_name} Heap free (%) 46 | id: esp32_heap_free_percent 47 | unit_of_measurement: '%' 48 | accuracy_decimals: 2 49 | icon: mdi:percent 50 | update_interval: ${debug_update_interval} 51 | entity_category: diagnostic 52 | # 524288 B (SRAM total) 53 | # 327680 B (DRAM usable) 54 | lambda: return ( id(esp32_heap_free).state * 100 / 327680 ); 55 | 56 | - platform: template 57 | name: ${name} ${debug_name} Heap max block (%) 58 | id: esp32_heap_max_block_percent 59 | unit_of_measurement: '%' 60 | accuracy_decimals: 2 61 | icon: mdi:percent 62 | update_interval: ${debug_update_interval} 63 | entity_category: diagnostic 64 | # 524288 B (SRAM total) 65 | # 327680 B (DRAM usable) 66 | lambda: return ( id(esp32_heap_max_block).state * 100 / 327680 ); 67 | -------------------------------------------------------------------------------- /packages/base/device_modbus.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.03.21 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | uart: 21 | - id: !extend ${modbus_uart_id} 22 | baud_rate: ${modbus_baud_rate} 23 | 24 | modbus: 25 | - uart_id: ${modbus_uart_id} 26 | id: modbus_${modbus_role} 27 | role: ${modbus_role} 28 | send_wait_time: ${modbus_send_wait_time} 29 | -------------------------------------------------------------------------------- /packages/base/device_modbus_expander.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.03.21 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | modbus: 21 | - uart_id: ${modbus_uart_id} 22 | id: modbus_${modbus_role} 23 | role: ${modbus_role} 24 | send_wait_time: ${modbus_send_wait_time} 25 | -------------------------------------------------------------------------------- /packages/bms/bms_base.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.04 2 | # Version : 1.2.2 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | sensor: 21 | # +--------------------------------------+ 22 | # | Total Daily Energy | 23 | # +--------------------------------------+ 24 | - platform: total_daily_energy 25 | name: "${name} ${bms_name} Daily Charging Energy" 26 | power_id: bms${bms_id}_charging_power 27 | unit_of_measurement: 'kWh' 28 | state_class: total_increasing 29 | device_class: energy 30 | accuracy_decimals: 3 31 | filters: 32 | # Multiplication factor from W to kW is 0.001 33 | - multiply: 0.001 34 | - platform: total_daily_energy 35 | name: "${name} ${bms_name} Daily Discharging Energy" 36 | power_id: bms${bms_id}_discharging_power 37 | unit_of_measurement: 'kWh' 38 | state_class: total_increasing 39 | device_class: energy 40 | accuracy_decimals: 3 41 | filters: 42 | # Multiplication factor from W to kW is 0.001 43 | - multiply: 0.001 44 | 45 | # +--------------------------------------+ 46 | # | Battery State of Charge (SOC) | 47 | # +--------------------------------------+ 48 | - platform: template 49 | name: ${name} ${bms_name} Battery SoC 50 | id: bms${bms_id}_battery_soc 51 | unit_of_measurement: "%" 52 | device_class: battery 53 | update_interval: ${bms_update_interval} 54 | accuracy_decimals: 0 55 | filters: 56 | - or: 57 | - throttle: 10s 58 | - delta: 1 59 | lambda: |- 60 | float soc = id(bms${bms_id}_state_of_charge).state; 61 | float min_cell_v = id(bms${bms_id}_min_cell_voltage).state; 62 | float cell_low_v = id(bms${bms_id}_cell_uvp).state + 0.2; 63 | 64 | if (min_cell_v <= cell_low_v) return 0; // Real 0% => return 0% 65 | else if (soc < 1) return 2; // False 0% => return 2% 66 | else return soc; // Else => return BMS SoC 67 | -------------------------------------------------------------------------------- /packages/bms/bms_battery_soh.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | sensor: 21 | # +--------------------------------------+ 22 | # | Battery State of Health (SOH) | 23 | # +--------------------------------------+ 24 | - platform: template 25 | name: ${name} ${bms_name} Battery SoH 26 | id: bms${bms_id}_battery_soh 27 | unit_of_measurement: "%" 28 | device_class: battery 29 | update_interval: ${bms_update_interval} 30 | accuracy_decimals: 0 31 | filters: 32 | - or: 33 | - throttle: 10s 34 | - delta: 1 35 | lambda: return round(((id(bms${bms_id}_charging_cycles).state/${bms_cell_max_cycles})-1)*-100); 36 | -------------------------------------------------------------------------------- /packages/bms/bms_combine_DEYE_CAN_module_full.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.14 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/GHswitt/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "DEYE" 22 | bms_protocol: "CAN" 23 | 24 | packages: 25 | bms_base: !include bms_base.yaml 26 | bms_combine: !include bms_combine.yaml 27 | bms_errors_bitmask: !include bms_errors_bitmask_DEYE_CAN.yaml 28 | bms_module: !include bms_sensors_DEYE_CAN_module_full.yaml 29 | -------------------------------------------------------------------------------- /packages/bms/bms_combine_DEYE_CAN_module_minimal.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.14 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/GHswitt/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "DEYE" 22 | bms_protocol: "CAN" 23 | 24 | packages: 25 | bms_base: !include bms_base.yaml 26 | bms_combine: !include bms_combine.yaml 27 | bms_errors_bitmask: !include bms_errors_bitmask_DEYE_CAN.yaml 28 | bms_module: !include bms_sensors_DEYE_CAN_module_minimal.yaml 29 | -------------------------------------------------------------------------------- /packages/bms/bms_combine_FAKE.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.12.23 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "Fake BMS" 22 | bms_protocol: "DEMO" 23 | 24 | packages: 25 | bms_sensors: !include bms_sensors_FAKE.yaml 26 | bms_combine: !include bms_combine.yaml 27 | -------------------------------------------------------------------------------- /packages/bms/bms_combine_JBD_BLE_full.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.01.28 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/syssi/esphome-jk-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "JBD" 22 | bms_protocol: "BLE" 23 | 24 | packages: 25 | bms_sensors: !include bms_sensors_JBD_BLE_full.yaml 26 | bms_combine: !include bms_combine.yaml 27 | -------------------------------------------------------------------------------- /packages/bms/bms_combine_JBD_UART_full.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.12.23 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/syssi/esphome-jk-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "JBD" 22 | bms_protocol: "UART" 23 | 24 | packages: 25 | bms_sensors: !include bms_sensors_JBD_UART_full.yaml 26 | bms_combine: !include bms_combine.yaml 27 | -------------------------------------------------------------------------------- /packages/bms/bms_combine_JK_BLE_standard.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.04.01 2 | # Version : 1.1.2 3 | # GitHub : https://github.com/syssi/esphome-jk-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "JK" 22 | bms_protocol: "BLE" 23 | 24 | packages: 25 | bms_sensors: !include bms_sensors_JK_BLE_standard.yaml 26 | bms_combine: !include bms_combine.yaml 27 | -------------------------------------------------------------------------------- /packages/bms/bms_combine_JK_RS485_Modbus_JK-B_standard.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.21 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/syssi/esphome-jk-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | packages: 21 | bms_sensors: !include bms_sensors_JK_RS485_Modbus_JK-B_standard.yaml 22 | bms_combine: !include bms_combine.yaml 23 | -------------------------------------------------------------------------------- /packages/bms/bms_combine_JK_RS485_Modbus_bms_full.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.1.2 3 | # GitHub : https://github.com/syssi/esphome-jk-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | packages: 21 | bms_sensors: !include bms_sensors_JK_RS485_Modbus_bms_full.yaml 22 | bms_combine: !include bms_combine.yaml 23 | -------------------------------------------------------------------------------- /packages/bms/bms_combine_JK_RS485_Modbus_bms_standard.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.1.2 3 | # GitHub : https://github.com/syssi/esphome-jk-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | packages: 21 | bms_sensors: !include bms_sensors_JK_RS485_Modbus_bms_standard.yaml 22 | bms_combine: !include bms_combine.yaml 23 | -------------------------------------------------------------------------------- /packages/bms/bms_combine_JK_RS485_Modbus_sniffer.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.2.8 3 | # GitHub : https://github.com/txubelaxu/esphome-jk-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "JK" 22 | bms_protocol: "RS485" 23 | 24 | logger: 25 | tx_buffer_size: 1024 26 | 27 | # +--------------------------------------+ 28 | # | Component settings | 29 | # +--------------------------------------+ 30 | 31 | external_components: 32 | - source: github://Sleeper85/esphome-components@main 33 | refresh: 0s 34 | components: [ jk_rs485_sniffer , jk_rs485_bms ] 35 | # - source: 36 | # type: local 37 | # path: ../esphome-components/components 38 | 39 | jk_rs485_sniffer: 40 | - id: ${sniffer_id} 41 | protocol_version: ${sniffer_protocol} 42 | rx_timeout: 500ms 43 | uart_id: ${sniffer_uart_id} 44 | 45 | # +--------------------------------------+ 46 | # | Component entities | 47 | # +--------------------------------------+ 48 | 49 | switch: 50 | - platform: template 51 | name: ${name} Broadcasting JK-PB settings to all BMS 52 | icon: "mdi:cast" 53 | restore_mode: RESTORE_DEFAULT_OFF 54 | optimistic: true 55 | entity_category: config 56 | turn_on_action: 57 | - lambda: id(${sniffer_id}).set_broadcast_changes_to_all_bms(true); 58 | turn_off_action: 59 | - lambda: id(${sniffer_id}).set_broadcast_changes_to_all_bms(false); 60 | -------------------------------------------------------------------------------- /packages/bms/bms_combine_JK_RS485_Modbus_sniffer_talk_pin.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.2.8 3 | # GitHub : https://github.com/txubelaxu/esphome-jk-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "JK" 22 | bms_protocol: "RS485" 23 | 24 | logger: 25 | tx_buffer_size: 1024 26 | 27 | # +--------------------------------------+ 28 | # | Component settings | 29 | # +--------------------------------------+ 30 | 31 | external_components: 32 | - source: github://Sleeper85/esphome-components@main 33 | refresh: 0s 34 | components: [ jk_rs485_sniffer , jk_rs485_bms ] 35 | # - source: 36 | # type: local 37 | # path: ../esphome-components/components 38 | 39 | jk_rs485_sniffer: 40 | - id: ${sniffer_id} 41 | protocol_version: ${sniffer_protocol} 42 | rx_timeout: 500ms 43 | uart_id: ${sniffer_uart_id} 44 | talk_pin: ${sniffer_talk_pin} 45 | 46 | # +--------------------------------------+ 47 | # | Component entities | 48 | # +--------------------------------------+ 49 | 50 | switch: 51 | - platform: template 52 | name: ${name} Broadcasting JK-PB settings to all BMS 53 | icon: "mdi:cast" 54 | restore_mode: RESTORE_DEFAULT_OFF 55 | optimistic: true 56 | entity_category: config 57 | turn_on_action: 58 | - lambda: id(${sniffer_id}).set_broadcast_changes_to_all_bms(true); 59 | turn_off_action: 60 | - lambda: id(${sniffer_id}).set_broadcast_changes_to_all_bms(false); 61 | -------------------------------------------------------------------------------- /packages/bms/bms_combine_JK_UART_4G-GPS_full.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.1.2 3 | # GitHub : https://github.com/syssi/esphome-jk-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "JK" 22 | bms_protocol: "UART 4G-GPS" 23 | 24 | packages: 25 | bms_sensors: !include bms_sensors_JK_UART_4G-GPS_full.yaml 26 | bms_combine: !include bms_combine.yaml 27 | -------------------------------------------------------------------------------- /packages/bms/bms_combine_SEPLOS_V1_V2_RS485_modbus.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.11.11 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/syssi/esphome-seplos-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "Seplos V1 V2" 22 | bms_protocol: "RS485" 23 | 24 | # +--------------------------------------+ 25 | # | Component settings | 26 | # +--------------------------------------+ 27 | 28 | external_components: 29 | - source: github://syssi/esphome-seplos-bms@main 30 | refresh: 0s 31 | 32 | uart: 33 | - id: !extend ${seplos_modbus_uart_id} 34 | baud_rate: ${seplos_modbus_baud_rate} 35 | 36 | seplos_modbus: 37 | id: ${seplos_modbus_id} 38 | uart_id: ${seplos_modbus_uart_id} 39 | rx_timeout: ${seplos_modbus_rx_timeout} 40 | -------------------------------------------------------------------------------- /packages/bms/bms_modbus_DEYE_CAN_module_full.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.22 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/syssi/esphome-jk-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "DEYE" 22 | bms_protocol: "CAN-Modbus" 23 | 24 | packages: 25 | bms_base: !include bms_base.yaml 26 | bms_sensors: !include bms_sensors_DEYE_CAN_module_full.yaml 27 | bms_errors_bitmask: !include bms_errors_bitmask_DEYE_CAN.yaml 28 | bms_combine: !include bms_modbus_server.yaml 29 | -------------------------------------------------------------------------------- /packages/bms/bms_modbus_FAKE.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.12.23 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "Fake BMS" 22 | bms_protocol: "DEMO-Modbus" 23 | 24 | packages: 25 | bms_sensors: !include bms_sensors_FAKE.yaml 26 | bms_combine: !include bms_modbus_server.yaml 27 | -------------------------------------------------------------------------------- /packages/bms/bms_modbus_JBD_UART_full.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.12.23 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/syssi/esphome-jk-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "JBD" 22 | bms_protocol: "UART-Modbus" 23 | 24 | packages: 25 | bms_sensors: !include bms_sensors_JBD_UART_full.yaml 26 | bms_combine: !include bms_modbus_server.yaml 27 | -------------------------------------------------------------------------------- /packages/bms/bms_modbus_JK_BLE_standard.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.1.2 3 | # GitHub : https://github.com/syssi/esphome-jk-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "JK" 22 | bms_protocol: "BLE-Modbus" 23 | 24 | packages: 25 | bms_sensors: !include bms_sensors_JK_BLE_standard.yaml 26 | bms_combine: !include bms_modbus_server.yaml 27 | -------------------------------------------------------------------------------- /packages/bms/bms_modbus_JK_RS485_Modbus_bms_standard.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.22 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/syssi/esphome-jk-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "JK" 22 | bms_protocol: "RS485-Modbus" 23 | 24 | packages: 25 | bms_sensors: !include bms_sensors_JK_RS485_Modbus_bms_standard.yaml 26 | bms_combine: !include bms_modbus_server.yaml 27 | -------------------------------------------------------------------------------- /packages/bms/bms_modbus_JK_UART_4G-GPS_full.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.1.2 3 | # GitHub : https://github.com/syssi/esphome-jk-bms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | bms_model: "JK" 22 | bms_protocol: "UART-Modbus" 23 | 24 | packages: 25 | bms_sensors: !include bms_sensors_JK_UART_4G-GPS_full.yaml 26 | bms_combine: !include bms_modbus_server.yaml 27 | -------------------------------------------------------------------------------- /packages/bms/bms_options_charging_logic.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.07 2 | # Version : 1.1.4 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | script: 21 | - id: bms${bms_id}_script_cutoff_timer 22 | then: 23 | - delay: ${bms_cutoff_timer} 24 | - switch.turn_off: bms${bms_id}_charge_switch 25 | - logger.log: "BMS ${bms_id} charge_switch Turn OFF" 26 | 27 | interval: 28 | - interval: ${bms_combine_interval} 29 | then: 30 | - lambda: |- 31 | id(${yambms_id}_bms_charging_logic) = true; 32 | 33 | // Charge switch `Turn ON` conditions (Charge switch OFF and ReBulk V.) 34 | if (!id(bms${bms_id}_charge_switch).state && (id(${yambms_id}_charge_status) == "EOC" || id(${yambms_id}_charge_status) == "Float")) 35 | { 36 | id(bms${bms_id}_charge_switch).turn_on(); 37 | ESP_LOGD("main", "BMS ${bms_id} charge_switch Turn ON"); 38 | } 39 | // Charge switch `Turn OFF` conditions 40 | else if (id(${yambms_id}_charge_status) == "Cut-Off") 41 | { 42 | // The cells are equalizing 43 | if (id(bms${bms_id}_equalizing).state) 44 | { 45 | // Stop cut-off timer 46 | if (id(bms${bms_id}_script_cutoff_timer).is_running()) id(bms${bms_id}_script_cutoff_timer).stop(); 47 | } 48 | // The cells are not equalizing and Cut-Off timer not running 49 | else if (!id(bms${bms_id}_script_cutoff_timer).is_running()) 50 | { 51 | // Start cut-off timer 52 | // If the conditions continue to be respected the `Charge switch` will be turned OFF 53 | id(bms${bms_id}_script_cutoff_timer).execute(); 54 | } 55 | } 56 | // Cut-off timer is running ? 57 | else if (id(bms${bms_id}_script_cutoff_timer).is_running()) 58 | { 59 | id(bms${bms_id}_script_cutoff_timer).stop(); // Stop cut-off timer 60 | } 61 | -------------------------------------------------------------------------------- /packages/board/board_ESP32-C3_DevKitM-1.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.2.8 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | board_chip: "ESP32-C3" 22 | board_name: "DevKitM-1" 23 | # Interfaces GPIOs 24 | # uart_esp_1 25 | tx_pin_1: '4' 26 | rx_pin_1: '5' 27 | # uart_esp_2 28 | tx_pin_2: '6' 29 | rx_pin_2: '7' 30 | # uart_esp_3 31 | tx_pin_3: '8' 32 | rx_pin_3: '9' 33 | # canbus_esp32_can (Atomic CAN base) 34 | tx_pin_4: '18' 35 | rx_pin_4: '19' 36 | # canbus_mcp2515 37 | spi_mosi_pin: '7' 38 | spi_miso_pin: '2' 39 | spi_clk_pin: '6' 40 | mcp2515_cs_pin: '10' 41 | 42 | packages: 43 | device_base: !include ../base/device_base.yaml 44 | device_base_wifi: !include ../base/device_base_wifi.yaml 45 | board_rgb_led: !include board_options_rgb_led_status.yaml 46 | 47 | esp32: 48 | board: esp32-c3-devkitm-1 49 | flash_size: 4MB # ajust according to your ESP32-C3 version 50 | framework: 51 | type: esp-idf 52 | 53 | esphome: 54 | platformio_options: 55 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 56 | 57 | wifi: 58 | id: my_network 59 | ssid: !secret wifi_ssid 60 | password: !secret wifi_password 61 | domain: !secret domain 62 | 63 | logger: 64 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 65 | hardware_uart: USB_SERIAL_JTAG 66 | 67 | light: 68 | # https://esphome.io/components/light/esp32_rmt_led_strip 69 | # ESP Light used to see the inverter heartbeat 70 | # Internal : only specifying an id without a name will implicitly set this to true. 71 | - platform: esp32_rmt_led_strip 72 | id: esp_light 73 | rgb_order: GRB 74 | pin: 8 75 | num_leds: 1 76 | # rmt_channel: 0 77 | chipset: ws2812 78 | entity_category: config 79 | default_transition_length: 0ms 80 | -------------------------------------------------------------------------------- /packages/board/board_ESP32-C3_ETH01-EVO.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.13 2 | # Version : 1.2.8 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | external_components: 21 | - source: github://pr#6861 22 | components: 23 | - ethernet 24 | 25 | substitutions: 26 | board_chip: "ESP32-C3" 27 | board_name: "ETH01-EVO" 28 | # Interfaces GPIOs 29 | # uart_esp_1 30 | tx_pin_1: '2' 31 | rx_pin_1: '5' 32 | # uart_esp_2 33 | tx_pin_2: '0' 34 | rx_pin_2: '1' 35 | # canbus_esp32_can 36 | tx_pin_4: '19' 37 | rx_pin_4: '18' 38 | 39 | packages: 40 | device_base: !include ../base/device_base.yaml 41 | device_base_ethernet: !include ../base/device_base_ethernet.yaml 42 | 43 | esp32: 44 | board: esp32-c3-devkitm-1 45 | variant: esp32c3 46 | # flash_size: 2MB 47 | framework: 48 | type: esp-idf 49 | version: latest 50 | 51 | esphome: 52 | platformio_options: 53 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 54 | 55 | ethernet: 56 | id: my_network 57 | type: DM9051 # W5500 58 | clk_pin: 7 59 | mosi_pin: 10 60 | miso_pin: 3 61 | cs_pin: 9 62 | interrupt_pin: 8 63 | reset_pin: 6 64 | clock_speed: 20MHz 65 | 66 | logger: 67 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 68 | 69 | # +--------------------------------------+ 70 | # | Inverter Heartbeat Light | 71 | # +--------------------------------------+ 72 | 73 | light: 74 | # ESP Light used to see the inverter heartbeat 75 | # Internal : only specifying an id without a name will implicitly set this to true. 76 | - platform: binary 77 | id: esp_light 78 | output: esp_output 79 | 80 | output: 81 | # ESP32 board without LED 82 | - platform: template 83 | id: esp_output 84 | type: binary 85 | write_action: 86 | - logger.log: "Inverter Heartbeat Output" 87 | #- lambda: C++ code; # action to be performed at each inverter heartbeat 88 | -------------------------------------------------------------------------------- /packages/board/board_ESP32-S3_AtomS3-Lite.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.2.7 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | board_chip: "ESP32-S3" 22 | board_name: "Atom S3 Lite" 23 | # Interfaces GPIOs 24 | # uart_esp_1 (Grove port) 25 | tx_pin_1: '2' 26 | rx_pin_1: '1' 27 | # uart_esp_2 28 | tx_pin_2: '7' 29 | rx_pin_2: '8' 30 | # uart_esp_3 31 | tx_pin_3: '38' 32 | rx_pin_3: '39' 33 | # canbus_esp32_can (Atomic CAN base) 34 | tx_pin_4: '5' 35 | rx_pin_4: '6' 36 | # canbus_mcp2515 37 | spi_mosi_pin: '7' 38 | spi_miso_pin: '8' 39 | spi_clk_pin: '38' 40 | mcp2515_cs_pin: '39' 41 | 42 | packages: 43 | device_base: !include ../base/device_base.yaml 44 | device_base_wifi: !include ../base/device_base_wifi.yaml 45 | device_cpu_freq_240: !include board_options_cpu_freq_240_esp32-s3.yaml 46 | board_rgb_led: !include board_options_rgb_led_status.yaml 47 | 48 | esp32: 49 | board: m5stack-atoms3 50 | variant: esp32s3 51 | framework: 52 | type: esp-idf 53 | 54 | esphome: 55 | platformio_options: 56 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 57 | 58 | wifi: 59 | id: my_network 60 | ssid: !secret wifi_ssid 61 | password: !secret wifi_password 62 | domain: !secret domain 63 | 64 | logger: 65 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 66 | hardware_uart: USB_SERIAL_JTAG 67 | 68 | light: 69 | # https://esphome.io/components/light/esp32_rmt_led_strip 70 | # ESP Light used to see the inverter heartbeat 71 | # Internal : only specifying an id without a name will implicitly set this to true. 72 | - platform: esp32_rmt_led_strip 73 | id: esp_light 74 | rgb_order: GRB 75 | pin: 35 76 | num_leds: 1 77 | # rmt_channel: 0 78 | chipset: ws2812 79 | entity_category: config 80 | default_transition_length: 0ms 81 | -------------------------------------------------------------------------------- /packages/board/board_ESP32-S3_DevKitC-1.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.07 2 | # Version : 1.2.9 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | board_chip: "ESP32-S3" 22 | board_name: "DevKitC-1" 23 | # Interfaces GPIOs 24 | # uart_esp_1 25 | tx_pin_1: '17' 26 | rx_pin_1: '18' 27 | # uart_esp_2 28 | tx_pin_2: '15' 29 | rx_pin_2: '16' 30 | # uart_esp_3 31 | tx_pin_3: '13' 32 | rx_pin_3: '14' 33 | # canbus_esp32_can 34 | tx_pin_4: '38' 35 | rx_pin_4: '39' 36 | # canbus_mcp2515 37 | spi_mosi_pin: '10' 38 | spi_miso_pin: '11' 39 | spi_clk_pin: '12' 40 | mcp2515_cs_pin: '9' 41 | 42 | packages: 43 | device_base: !include ../base/device_base.yaml 44 | device_base_wifi: !include ../base/device_base_wifi.yaml 45 | device_cpu_freq_240: !include board_options_cpu_freq_240_esp32-s3.yaml 46 | board_rgb_led: !include board_options_rgb_led_status.yaml 47 | # psram_settings: !include board_options_psram_settings.yaml 48 | 49 | esp32: 50 | board: esp32-s3-devkitc-1 51 | flash_size: 16MB # ajust according to your ESP32-S3 version 52 | framework: 53 | type: esp-idf 54 | 55 | esphome: 56 | platformio_options: 57 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 58 | 59 | # PSRAM activation with default options 60 | # psram: 61 | # mode: octal 62 | # speed: 80MHz 63 | 64 | wifi: 65 | id: my_network 66 | ssid: !secret wifi_ssid 67 | password: !secret wifi_password 68 | domain: !secret domain 69 | 70 | logger: 71 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 72 | hardware_uart: UART0 # UART0 / USB_SERIAL_JTAG 73 | 74 | light: 75 | # https://esphome.io/components/light/esp32_rmt_led_strip 76 | # ESP Light used to see the inverter heartbeat 77 | # Internal : only specifying an id without a name will implicitly set this to true. 78 | - platform: esp32_rmt_led_strip 79 | id: esp_light 80 | # name: ${name} ESP32 Light 81 | rgb_order: GRB 82 | pin: 48 83 | num_leds: 1 84 | # rmt_channel: 0 85 | chipset: ws2812 86 | entity_category: config 87 | default_transition_length: 0ms 88 | -------------------------------------------------------------------------------- /packages/board/board_ESP32-S3_DevKitC-1_LED-38.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.07 2 | # Version : 1.2.9 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | board_chip: "ESP32-S3" 22 | board_name: "DevKitC-1" 23 | # Interfaces GPIOs 24 | # uart_esp_1 25 | tx_pin_1: '17' 26 | rx_pin_1: '18' 27 | # uart_esp_2 28 | tx_pin_2: '15' 29 | rx_pin_2: '16' 30 | # uart_esp_3 31 | tx_pin_3: '4' 32 | rx_pin_3: '5' 33 | # canbus_esp32_can 34 | tx_pin_4: '39' 35 | rx_pin_4: '40' 36 | # canbus_mcp2515 37 | spi_mosi_pin: '11' 38 | spi_miso_pin: '13' 39 | spi_clk_pin: '12' 40 | mcp2515_cs_pin: '10' 41 | 42 | packages: 43 | device_base: !include ../base/device_base.yaml 44 | device_base_wifi: !include ../base/device_base_wifi.yaml 45 | device_cpu_freq_240: !include board_options_cpu_freq_240_esp32-s3.yaml 46 | board_rgb_led: !include board_options_rgb_led_status.yaml 47 | # psram_settings: !include board_options_psram_settings.yaml 48 | 49 | esp32: 50 | board: esp32-s3-devkitc-1 51 | flash_size: 16MB # ajust according to your ESP32-S3 version 52 | framework: 53 | type: esp-idf 54 | 55 | esphome: 56 | platformio_options: 57 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 58 | 59 | # PSRAM activation with default options 60 | # psram: 61 | # mode: octal 62 | # speed: 80MHz 63 | 64 | wifi: 65 | id: my_network 66 | ssid: !secret wifi_ssid 67 | password: !secret wifi_password 68 | domain: !secret domain 69 | 70 | logger: 71 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 72 | hardware_uart: UART0 # UART0 / USB_SERIAL_JTAG 73 | 74 | light: 75 | # https://esphome.io/components/light/esp32_rmt_led_strip 76 | # ESP Light used to see the inverter heartbeat 77 | # Internal : only specifying an id without a name will implicitly set this to true. 78 | - platform: esp32_rmt_led_strip 79 | id: esp_light 80 | # name: ${name} ESP32 Light 81 | rgb_order: GRB 82 | pin: 38 83 | num_leds: 1 84 | # rmt_channel: 0 85 | chipset: ws2812 86 | entity_category: config 87 | default_transition_length: 0ms 88 | -------------------------------------------------------------------------------- /packages/board/board_ESP32-S3_DevKitC-1_LED-48.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.07 2 | # Version : 1.2.9 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | board_chip: "ESP32-S3" 22 | board_name: "DevKitC-1" 23 | # Interfaces GPIOs 24 | # uart_esp_1 25 | tx_pin_1: '17' 26 | rx_pin_1: '18' 27 | # uart_esp_2 28 | tx_pin_2: '15' 29 | rx_pin_2: '16' 30 | # uart_esp_3 31 | tx_pin_3: '4' 32 | rx_pin_3: '5' 33 | # canbus_esp32_can 34 | tx_pin_4: '39' 35 | rx_pin_4: '40' 36 | # canbus_mcp2515 37 | spi_mosi_pin: '11' 38 | spi_miso_pin: '13' 39 | spi_clk_pin: '12' 40 | mcp2515_cs_pin: '10' 41 | 42 | packages: 43 | device_base: !include ../base/device_base.yaml 44 | device_base_wifi: !include ../base/device_base_wifi.yaml 45 | device_cpu_freq_240: !include board_options_cpu_freq_240_esp32-s3.yaml 46 | board_rgb_led: !include board_options_rgb_led_status.yaml 47 | # psram_settings: !include board_options_psram_settings.yaml 48 | 49 | esp32: 50 | board: esp32-s3-devkitc-1 51 | flash_size: 16MB # ajust according to your ESP32-S3 version 52 | framework: 53 | type: esp-idf 54 | 55 | esphome: 56 | platformio_options: 57 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 58 | 59 | # PSRAM activation with default options 60 | # psram: 61 | # mode: octal 62 | # speed: 80MHz 63 | 64 | wifi: 65 | id: my_network 66 | ssid: !secret wifi_ssid 67 | password: !secret wifi_password 68 | domain: !secret domain 69 | 70 | logger: 71 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 72 | hardware_uart: UART0 # UART0 / USB_SERIAL_JTAG 73 | 74 | light: 75 | # https://esphome.io/components/light/esp32_rmt_led_strip 76 | # ESP Light used to see the inverter heartbeat 77 | # Internal : only specifying an id without a name will implicitly set this to true. 78 | - platform: esp32_rmt_led_strip 79 | id: esp_light 80 | # name: ${name} ESP32 Light 81 | rgb_order: GRB 82 | pin: 48 83 | num_leds: 1 84 | # rmt_channel: 0 85 | chipset: ws2812 86 | entity_category: config 87 | default_transition_length: 0ms 88 | -------------------------------------------------------------------------------- /packages/board/board_ESP32-S3_DevKitC-1_PVbrain2.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.03.21 2 | # Version : 1.2.7 3 | # GitHub : https://github.com/SeByDocKy/pvbrain2 4 | 5 | substitutions: 6 | board_chip: "ESP32-S3" 7 | board_name: "PVbrain2" 8 | 9 | packages: 10 | device_base: !include ../base/device_base.yaml 11 | device_base_wifi: !include ../base/device_base_wifi.yaml 12 | device_cpu_freq_240: !include board_options_cpu_freq_240_esp32-s3.yaml 13 | board_rgb_led: !include board_options_rgb_led_status.yaml 14 | # psram: !include board_options_psram_settings.yaml 15 | 16 | esp32: 17 | board: esp32-s3-devkitc-1 18 | flash_size: 16MB # ajust according to your ESP32-S3 version 19 | framework: 20 | type: esp-idf 21 | 22 | esphome: 23 | platformio_options: 24 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 25 | 26 | # PSRAM activation with default options 27 | # psram: 28 | # mode: octal 29 | # speed: 80MHz 30 | 31 | wifi: 32 | id: my_network 33 | ssid: !secret wifi_ssid 34 | password: !secret wifi_password 35 | domain: !secret domain 36 | 37 | logger: 38 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 39 | hardware_uart: UART0 # UART0 / USB_SERIAL_JTAG 40 | 41 | light: 42 | # https://esphome.io/components/light/status_led 43 | - platform: status_led 44 | name: ${name}_led_light_1 45 | id: led_light_1 46 | pin: 1 47 | entity_category: config 48 | 49 | - platform: status_led 50 | name: ${name}_led_light_2 51 | id: led_light_2 52 | pin: 2 53 | entity_category: config 54 | 55 | # https://esphome.io/components/light/esp32_rmt_led_strip 56 | - platform: esp32_rmt_led_strip 57 | name: ${name}_on_board_light_io48 58 | id: esp_light 59 | rgb_order: GRB 60 | pin: 48 61 | num_leds: 1 62 | # rmt_channel: 0 63 | chipset: ws2812 64 | entity_category: config 65 | default_transition_length: 0ms 66 | -------------------------------------------------------------------------------- /packages/board/board_ESP32-S3_LilyGo-T-Connect.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.1.2 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | # https://github.com/Xinyuan-LilyGO/T-Connect 21 | 22 | substitutions: 23 | board_chip: "ESP32-S3" 24 | board_name: "LilyGo T-Connect" 25 | # uart_esp_1 26 | tx_pin_1: '4' 27 | rx_pin_1: '5' 28 | # uart_esp_2 29 | tx_pin_2: '6' 30 | rx_pin_2: '7' 31 | # uart_esp_3 32 | tx_pin_3: '17' 33 | rx_pin_3: '18' 34 | # canbus_esp32_can 35 | tx_pin_4: '9' 36 | rx_pin_4: '10' 37 | # canbus_mcp2515 38 | spi_mosi_pin: '11' 39 | spi_miso_pin: '13' 40 | spi_clk_pin: '12' 41 | mcp2515_cs_pin: '14' 42 | 43 | packages: 44 | device_base: !include ../base/device_base.yaml 45 | device_base_wifi: !include ../base/device_base_wifi.yaml 46 | device_cpu_freq_240: !include board_options_cpu_freq_240_esp32-s3.yaml 47 | board_rgb_led: !include board_options_rgb_led_status.yaml 48 | # psram: !include board_options_psram_settings.yaml 49 | 50 | esp32: 51 | board: esp32-s3-devkitc-1 52 | variant: esp32s3 53 | flash_size: 16MB # ajust according to your ESP32-S3 version 54 | framework: 55 | type: esp-idf 56 | 57 | esphome: 58 | platformio_options: 59 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 60 | 61 | # PSRAM activation with default options 62 | # psram: 63 | # mode: octal 64 | # speed: 80MHz 65 | 66 | wifi: 67 | id: my_network 68 | ssid: !secret wifi_ssid 69 | password: !secret wifi_password 70 | domain: !secret domain 71 | ap: 72 | 73 | logger: 74 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 75 | hardware_uart: USB_SERIAL_JTAG 76 | 77 | # SPI for LED strip APA102 78 | spi: 79 | - id: lilygo_spi_bus 80 | clk_pin: 3 81 | mosi_pin: 8 82 | 83 | light: 84 | # https://esphome.io/components/light/spi_led_strip.html 85 | # ESP Light used to see the inverter heartbeat 86 | # LilyGo T-Connect: APA102 chip - using spi library, 4 leds, data-IO8, clock-IO3 87 | - platform: spi_led_strip 88 | spi_id: lilygo_spi_bus 89 | id: esp_light 90 | num_leds: 4 91 | data_rate: 1MHz #default 1Mhz 92 | entity_category: config 93 | default_transition_length: 0ms 94 | -------------------------------------------------------------------------------- /packages/board/board_ESP32-S3_XIAO.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.1.3 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | board_chip: "ESP32-S3" 22 | board_name: "DevKitC-1" 23 | # uart_esp_1 24 | tx_pin_1: '1' 25 | rx_pin_1: '2' 26 | # uart_esp_2 27 | tx_pin_2: '3' 28 | rx_pin_2: '4' 29 | # uart_esp_3 30 | tx_pin_3: '5' 31 | rx_pin_3: '6' 32 | # canbus_esp32_can 33 | tx_pin_4: '7' 34 | rx_pin_4: '8' 35 | # canbus_mcp2515 36 | spi_mosi_pin: '3' 37 | spi_miso_pin: '4' 38 | spi_clk_pin: '5' 39 | mcp2515_cs_pin: '6' 40 | 41 | packages: 42 | device_base: !include ../base/device_base.yaml 43 | device_base_wifi: !include ../base/device_base_wifi.yaml 44 | device_cpu_freq_240: !include board_options_cpu_freq_240_esp32-s3.yaml 45 | # psram: !include board_options_psram_settings.yaml 46 | 47 | esp32: 48 | board: esp32-s3-devkitc-1 49 | flash_size: 8MB # adjust according to your ESP32-S3 version 50 | framework: 51 | type: esp-idf 52 | 53 | esphome: 54 | platformio_options: 55 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 56 | 57 | # PSRAM activation with default options 58 | # psram: 59 | # mode: octal 60 | # speed: 80MHz 61 | 62 | wifi: 63 | id: my_network 64 | ssid: !secret wifi_ssid 65 | password: !secret wifi_password 66 | domain: !secret domain 67 | 68 | logger: 69 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 70 | hardware_uart: USB_SERIAL_JTAG 71 | 72 | # +--------------------------------------+ 73 | # | Inverter Heartbeat Light | 74 | # +--------------------------------------+ 75 | 76 | light: 77 | # ESP Light used to see the inverter heartbeat 78 | # Internal : only specifying an id without a name will implicitly set this to true. 79 | - platform: binary 80 | output: esp_led 81 | id: esp_light 82 | 83 | output: 84 | # ESP LED 85 | - platform: gpio 86 | pin: 21 87 | id: esp_led 88 | inverted: true 89 | -------------------------------------------------------------------------------- /packages/board/board_ESP32_Atom-Lite.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.2.8 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | board_chip: "ESP32" 22 | board_name: "Atom Lite" 23 | # Interfaces GPIOs 24 | # uart_esp_1 (Grove port) 25 | tx_pin_1: '26' 26 | rx_pin_1: '32' 27 | # uart_esp_2 28 | tx_pin_2: '23' 29 | rx_pin_2: '33' 30 | # uart_esp_3 31 | tx_pin_3: '21' 32 | rx_pin_3: '25' 33 | # canbus_esp32_can (Atomic CAN base) 34 | tx_pin_4: '22' 35 | rx_pin_4: '19' 36 | # canbus_mcp2515 37 | spi_mosi_pin: '23' 38 | spi_miso_pin: '33' 39 | spi_clk_pin: '21' 40 | mcp2515_cs_pin: '25' 41 | 42 | packages: 43 | device_base: !include ../base/device_base.yaml 44 | device_base_wifi: !include ../base/device_base_wifi.yaml 45 | device_cpu_freq_240: !include board_options_cpu_freq_240_esp32.yaml 46 | board_rgb_led: !include board_options_rgb_led_status.yaml 47 | 48 | # Atom Lite - SKU:C008 49 | # https://docs.m5stack.com/en/core/ATOM%20Lite 50 | esp32: 51 | board: m5stack-atom 52 | framework: 53 | type: esp-idf 54 | 55 | esphome: 56 | platformio_options: 57 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 58 | 59 | wifi: 60 | id: my_network 61 | ssid: !secret wifi_ssid 62 | password: !secret wifi_password 63 | domain: !secret domain 64 | 65 | logger: 66 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 67 | 68 | light: 69 | # https://esphome.io/components/light/esp32_rmt_led_strip 70 | # ESP Light used to see the inverter heartbeat 71 | # Internal : only specifying an id without a name will implicitly set this to true. 72 | - platform: esp32_rmt_led_strip 73 | id: esp_light 74 | rgb_order: GRB 75 | pin: 27 76 | num_leds: 1 77 | # rmt_channel: 0 78 | chipset: ws2812 79 | entity_category: config 80 | default_transition_length: 0ms 81 | -------------------------------------------------------------------------------- /packages/board/board_ESP32_Atom-Matrix.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.2.8 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | board_chip: "ESP32" 22 | board_name: "Atom Matrix" 23 | # Interfaces GPIOs 24 | # uart_esp_1 (Grove port) 25 | tx_pin_1: '26' 26 | rx_pin_1: '32' 27 | # uart_esp_2 28 | tx_pin_2: '23' 29 | rx_pin_2: '33' 30 | # uart_esp_3 31 | tx_pin_3: '21' 32 | rx_pin_3: '25' 33 | # canbus_esp32_can (Atomic CAN base) 34 | tx_pin_4: '22' 35 | rx_pin_4: '19' 36 | # canbus_mcp2515 37 | spi_mosi_pin: '23' 38 | spi_miso_pin: '33' 39 | spi_clk_pin: '21' 40 | mcp2515_cs_pin: '25' 41 | 42 | packages: 43 | device_base: !include ../base/device_base.yaml 44 | device_base_wifi: !include ../base/device_base_wifi.yaml 45 | device_cpu_freq_240: !include board_options_cpu_freq_240_esp32.yaml 46 | board_rgb_led: !include board_options_rgb_led_status.yaml 47 | 48 | # Atom Matrix - SKU:C008-B 49 | # https://docs.m5stack.com/en/core/ATOM%20Matrix 50 | esp32: 51 | board: m5stack-atom 52 | framework: 53 | type: esp-idf 54 | 55 | esphome: 56 | platformio_options: 57 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 58 | 59 | wifi: 60 | id: my_network 61 | ssid: !secret wifi_ssid 62 | password: !secret wifi_password 63 | domain: !secret domain 64 | 65 | logger: 66 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 67 | 68 | light: 69 | # https://esphome.io/components/light/esp32_rmt_led_strip 70 | # ESP Light used to see the inverter heartbeat 71 | # Internal : only specifying an id without a name will implicitly set this to true. 72 | - platform: esp32_rmt_led_strip 73 | id: esp_light 74 | rgb_order: GRB 75 | pin: 27 76 | num_leds: 1 77 | # rmt_channel: 0 78 | chipset: ws2812 79 | entity_category: config 80 | default_transition_length: 0ms 81 | -------------------------------------------------------------------------------- /packages/board/board_ESP32_DevKit-V1.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.2.7 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | board_chip: "ESP32" 22 | board_name: "DevKit V1" 23 | # Interfaces GPIOs 24 | # uart_esp_1 25 | tx_pin_1: '17' 26 | rx_pin_1: '16' 27 | # uart_esp_2 28 | tx_pin_2: '19' 29 | rx_pin_2: '18' 30 | # uart_esp_3 31 | tx_pin_3: '26' 32 | rx_pin_3: '25' 33 | # canbus_esp32_can 34 | tx_pin_4: '23' 35 | rx_pin_4: '22' 36 | # canbus_mcp2515 37 | spi_mosi_pin: '13' 38 | spi_miso_pin: '12' 39 | spi_clk_pin: '14' 40 | mcp2515_cs_pin: '15' 41 | 42 | packages: 43 | device_base: !include ../base/device_base.yaml 44 | device_base_wifi: !include ../base/device_base_wifi.yaml 45 | device_cpu_freq_240: !include board_options_cpu_freq_240_esp32.yaml 46 | 47 | esp32: 48 | board: esp32doit-devkit-v1 49 | framework: 50 | type: esp-idf 51 | 52 | esphome: 53 | platformio_options: 54 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 55 | 56 | wifi: 57 | id: my_network 58 | ssid: !secret wifi_ssid 59 | password: !secret wifi_password 60 | domain: !secret domain 61 | 62 | logger: 63 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 64 | 65 | # +--------------------------------------+ 66 | # | Inverter Heartbeat Light | 67 | # +--------------------------------------+ 68 | 69 | light: 70 | # ESP Light used to see the inverter heartbeat 71 | # Internal : only specifying an id without a name will implicitly set this to true. 72 | - platform: binary 73 | output: esp_led 74 | id: esp_light 75 | 76 | output: 77 | # ESP LED 78 | - platform: gpio 79 | pin: 2 80 | id: esp_led 81 | inverted: true -------------------------------------------------------------------------------- /packages/board/board_ESP32_DevKitC_espBerry_2-CH-CAN.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.01.16 2 | # Version : 1.1.2 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | board_chip: "ESP32" 22 | board_name: "espBerry 2-CH-CAN" 23 | 24 | packages: 25 | device_base: !include ../base/device_base.yaml 26 | device_base_wifi: !include ../base/device_base_wifi.yaml 27 | device_cpu_freq_240: !include board_options_cpu_freq_240_esp32.yaml 28 | 29 | esp32: 30 | board: esp32dev 31 | framework: 32 | type: esp-idf 33 | 34 | esphome: 35 | platformio_options: 36 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 37 | 38 | wifi: 39 | id: my_network 40 | ssid: !secret wifi_ssid 41 | password: !secret wifi_password 42 | domain: !secret domain 43 | 44 | logger: 45 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 46 | 47 | # +--------------------------------------+ 48 | # | 2-CH CAN HAT related configuration | 49 | # +--------------------------------------+ 50 | 51 | # https://www.waveshare.com/wiki/2-CH_CAN_HAT 52 | 53 | # +--------------------------+ 54 | # | ESP32 PIN | HAT PIN | 55 | # +--------------------------+ 56 | # | MOSI | 23 | 19 | 57 | # | MISO | 19 | 21 | 58 | # | SCLK | 18 | 23 | 59 | # | CS_0 | 5 | 24 | 60 | # | CS_1 | 17 | 26 | 61 | # +--------------------------+ 62 | 63 | spi: 64 | # BUS SPI 1 65 | - id: bus_spi1 66 | mosi_pin: 23 67 | miso_pin: 19 68 | clk_pin: 18 69 | 70 | canbus: 71 | # CANBUS NODE 1 - CAN0 port 72 | - platform: mcp2515 73 | spi_id: bus_spi1 74 | id: canbus_node1 75 | cs_pin: 5 76 | can_id: 1 77 | bit_rate: 500kbps 78 | # CANBUS NODE 2 - CAN1 port 79 | - platform: mcp2515 80 | spi_id: bus_spi1 81 | id: canbus_node2 82 | cs_pin: 17 83 | can_id: 2 84 | bit_rate: 500kbps 85 | 86 | # +--------------------------------------+ 87 | # | Inverter Heartbeat Light | 88 | # +--------------------------------------+ 89 | 90 | light: 91 | # ESP Light used to see the inverter heartbeat 92 | # Internal : only specifying an id without a name will implicitly set this to true. 93 | - platform: binary 94 | output: esp_led 95 | id: esp_light 96 | 97 | output: 98 | # ESP LED 99 | - platform: gpio 100 | pin: 2 101 | id: esp_led 102 | inverted: true 103 | -------------------------------------------------------------------------------- /packages/board/board_ESP32_EVB.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.1.2 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | # https://github.com/OLIMEX/ESP32-EVB 21 | 22 | substitutions: 23 | board_chip: "ESP32" 24 | board_name: "EVB" 25 | # Interfaces GPIOs 26 | # uart_esp_1 27 | tx_pin_1: '4' 28 | rx_pin_1: '36' 29 | # uart_esp_2 30 | tx_pin_2: '16' 31 | rx_pin_2: '13' 32 | # canbus_esp32_can 33 | tx_pin_4: '5' 34 | rx_pin_4: '35' 35 | 36 | packages: 37 | device_base: !include ../base/device_base.yaml 38 | device_base_ethernet: !include ../base/device_base_ethernet.yaml 39 | device_cpu_freq_240: !include board_options_cpu_freq_240_esp32.yaml 40 | 41 | esp32: 42 | board: esp32-evb 43 | framework: 44 | type: esp-idf 45 | 46 | esphome: 47 | platformio_options: 48 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 49 | 50 | ethernet: 51 | id: my_network 52 | type: LAN8720 53 | mdc_pin: 23 54 | mdio_pin: 18 55 | clk_mode: GPIO0_IN 56 | phy_addr: 0 57 | 58 | logger: 59 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 60 | 61 | # +--------------------------------------+ 62 | # | Inverter Heartbeat Light | 63 | # +--------------------------------------+ 64 | 65 | light: 66 | # ESP Light used to see the inverter heartbeat 67 | # Internal : only specifying an id without a name will implicitly set this to true. 68 | - platform: binary 69 | id: esp_light 70 | output: esp_output 71 | 72 | output: 73 | # ESP32 board without LED 74 | - platform: template 75 | id: esp_output 76 | type: binary 77 | write_action: 78 | - logger.log: "Inverter Heartbeat Output" 79 | #- lambda: C++ code; # action to be performed at each inverter heartbeat 80 | -------------------------------------------------------------------------------- /packages/board/board_ESP32_Generic.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.2.7 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | board_chip: "ESP32" 22 | board_name: "Generic" 23 | # Interfaces GPIOs 24 | # uart_esp_1 25 | tx_pin_1: '17' 26 | rx_pin_1: '16' 27 | # uart_esp_2 28 | tx_pin_2: '19' 29 | rx_pin_2: '18' 30 | # uart_esp_3 31 | tx_pin_3: '26' 32 | rx_pin_3: '25' 33 | # canbus_esp32_can 34 | tx_pin_4: '23' 35 | rx_pin_4: '22' 36 | # canbus_mcp2515 37 | spi_mosi_pin: '13' 38 | spi_miso_pin: '12' 39 | spi_clk_pin: '14' 40 | mcp2515_cs_pin: '15' 41 | 42 | packages: 43 | device_base: !include ../base/device_base.yaml 44 | device_base_wifi: !include ../base/device_base_wifi.yaml 45 | device_cpu_freq_240: !include board_options_cpu_freq_240_esp32.yaml 46 | 47 | esp32: 48 | board: esp32dev 49 | framework: 50 | type: esp-idf 51 | 52 | esphome: 53 | platformio_options: 54 | board_build.flash_mode: dio # use Dual IO (dio) instead of Quad IO (qio) to prevent boot loop after flashing 55 | 56 | wifi: 57 | id: my_network 58 | ssid: !secret wifi_ssid 59 | password: !secret wifi_password 60 | domain: !secret domain 61 | 62 | logger: 63 | baud_rate: 0 # frees the 3rd UART and avoids some bugs like "WK2168 with canbus" or "BLE client with RS485 modbus" 64 | 65 | # +--------------------------------------+ 66 | # | Inverter Heartbeat Light | 67 | # +--------------------------------------+ 68 | 69 | light: 70 | # ESP Light used to see the inverter heartbeat 71 | # Internal : only specifying an id without a name will implicitly set this to true. 72 | - platform: binary 73 | output: esp_led 74 | id: esp_light 75 | 76 | output: 77 | # ESP LED 78 | - platform: gpio 79 | pin: 2 80 | id: esp_led 81 | inverted: true -------------------------------------------------------------------------------- /packages/board/board_options_captive_portal.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.01.10 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | wifi: 21 | ap: 22 | ssid: "YamBMS Fallback Hotspot" 23 | password: "Y4mBM$85" 24 | 25 | captive_portal: 26 | -------------------------------------------------------------------------------- /packages/board/board_options_cpu_freq_240_esp32-s3.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.01.16 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | esp32: 21 | framework: 22 | sdkconfig_options: 23 | COMPILER_OPTIMIZATION_SIZE: y 24 | CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240: y 25 | -------------------------------------------------------------------------------- /packages/board/board_options_cpu_freq_240_esp32.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.01.16 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | esp32: 21 | framework: 22 | sdkconfig_options: 23 | COMPILER_OPTIMIZATION_SIZE: y 24 | CONFIG_ESP32_DEFAULT_CPU_FREQ_240: y 25 | -------------------------------------------------------------------------------- /packages/board/board_options_itf_canbus_esp32_can.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.02 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | canbus: 21 | - platform: esp32_can 22 | id: ${canbus_node_id} 23 | tx_pin: ${tx_pin_4} 24 | rx_pin: ${rx_pin_4} 25 | can_id: 1 26 | bit_rate: 500kbps 27 | -------------------------------------------------------------------------------- /packages/board/board_options_itf_canbus_mcp2515.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.14 2 | # Version : 1.1.2 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | canbus_can_id: '2' 22 | canbus_bitrate: '500kbps' 23 | 24 | spi: 25 | - id: bus_spi1 26 | mosi_pin: ${spi_mosi_pin} 27 | miso_pin: ${spi_miso_pin} 28 | clk_pin: ${spi_clk_pin} 29 | 30 | canbus: 31 | - platform: mcp2515 32 | spi_id: bus_spi1 33 | id: ${canbus_node_id} 34 | cs_pin: ${mcp2515_cs_pin} 35 | can_id: ${canbus_can_id} 36 | bit_rate: ${canbus_bitrate} 37 | -------------------------------------------------------------------------------- /packages/board/board_options_itf_uart_esp_1.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.02 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | uart: 21 | - id: uart_esp_1 22 | tx_pin: ${tx_pin_1} 23 | rx_pin: ${rx_pin_1} 24 | baud_rate: 115200 25 | rx_buffer_size: 512 26 | -------------------------------------------------------------------------------- /packages/board/board_options_itf_uart_esp_2.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.02 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | uart: 21 | - id: uart_esp_2 22 | tx_pin: ${tx_pin_2} 23 | rx_pin: ${rx_pin_2} 24 | baud_rate: 115200 25 | rx_buffer_size: 512 26 | -------------------------------------------------------------------------------- /packages/board/board_options_itf_uart_esp_3.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.02 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | uart: 21 | - id: uart_esp_3 22 | tx_pin: ${tx_pin_3} 23 | rx_pin: ${rx_pin_3} 24 | baud_rate: 115200 25 | rx_buffer_size: 512 26 | -------------------------------------------------------------------------------- /packages/board/board_options_psram_settings.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.01.16 2 | # Version : 1.1.2 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | # This file optimizes the use of the ESP32-S3 PSRAM by authorizing or forcing 21 | # certain data to be written to the PSRAM rather than to the internal RAM. 22 | # The configuration presented here already seems stable for several users and 23 | # visibly offers better behavior of the esp when it contains a lot of entities. 24 | 25 | # esphome: 26 | # platformio_options: 27 | # build_flags: "-DBOARD_HAS_PSRAM" 28 | # board_build.arduino.memory_type: opi_opi # qio_opi 29 | 30 | esp32: 31 | framework: 32 | sdkconfig_options: 33 | COMPILER_OPTIMIZATION_SIZE: y 34 | CONFIG_COMPILER_OPTIMIZATION_PERF: y 35 | CONFIG_SPIRAM_SUPPORT: y 36 | CONFIG_SPIRAM_USE_MALLOC: y 37 | CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL: "65536" # (64KB 65536) Reserve this amount of bytes for data that specifically needs to be in DMA or internal memory. Default value: 32768 38 | CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL: "4096" # ( 4KB 4096) Maximum malloc() size, in bytes, to always put in internal memory. Default value: 16384 39 | CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY: y 40 | CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY: y # Allow .noinit segment placed in external memory 41 | CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY: y # Allow external memory as an argument to xTaskCreateStatic 42 | CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP: y # Try to allocate memories of WiFi and LWIP in SPIRAM firstly. If failed, allocate internal memory 43 | CONFIG_FATFS_ALLOC_PREFER_EXTRAM: y # Prefer external RAM when allocating FATFS buffers 44 | CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC: y # Allocation strategy for mbedTLS, essentially provides ability to allocate all required dynamic allocations 45 | # BLE Bluedroid 46 | # https://docs.espressif.com/projects/esp-idf/en/v5.3.1/esp32s3/api-reference/kconfig.html#bluedroid-options 47 | CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST: y 48 | CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY: y 49 | -------------------------------------------------------------------------------- /packages/board/board_options_rgb_led_status.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.01.16 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | interval: 21 | - interval: 1s 22 | then: 23 | - lambda: |- 24 | if (id(inverter_com_status).state) 25 | { 26 | auto call = id(esp_light).make_call(); 27 | call.set_brightness(0.5); // 1.0 is full brightness 28 | if (id(esp32_online_status).state) 29 | call.set_rgb(0.0, 1.0, 1.0); // green + blue 30 | else 31 | call.set_rgb(0.0, 0.0, 1.0); // blue 32 | call.perform(); // perform action 33 | } 34 | else 35 | { 36 | auto call = id(esp_light).turn_on(); 37 | call.set_brightness(0.5); // 1.0 is full brightness 38 | if (id(esp32_online_status).state) 39 | call.set_rgb(0.0, 1.0, 0.0); // green 40 | else 41 | call.set_rgb(1.0, 0.0, 0.0); // red 42 | call.perform(); // perform action 43 | } 44 | -------------------------------------------------------------------------------- /packages/shunt/shunt_base.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.08.08 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | sensor: 21 | # +--------------------------------------+ 22 | # | Total Daily Energy | 23 | # +--------------------------------------+ 24 | # Battery Charging Power 25 | - platform: template 26 | name: ${name} ${shunt_name} Battery Charging Power 27 | id: shunt${shunt_id}_battery_charging_power 28 | update_interval: ${shunt_update_interval} 29 | unit_of_measurement: 'W' 30 | device_class: power 31 | accuracy_decimals: 0 32 | lambda: |- 33 | if (id(shunt${shunt_id}_power).state > 0) 34 | return id(shunt${shunt_id}_power).state; 35 | else return 0; 36 | 37 | # Battery Discharging Power 38 | - platform: template 39 | name: ${name} ${shunt_name} Battery Discharging Power 40 | id: shunt${shunt_id}_battery_discharging_power 41 | update_interval: ${shunt_update_interval} 42 | unit_of_measurement: 'W' 43 | device_class: power 44 | accuracy_decimals: 0 45 | lambda: |- 46 | if (id(shunt${shunt_id}_power).state <= 0) 47 | return (id(shunt${shunt_id}_power).state * -1); // Must be positive energy 48 | else return 0; 49 | 50 | # Daily Charging Energy 51 | - platform: total_daily_energy 52 | name: "${name} ${shunt_name} Daily Charging Energy" 53 | power_id: shunt${shunt_id}_battery_charging_power 54 | unit_of_measurement: 'kWh' 55 | state_class: total_increasing 56 | device_class: energy 57 | accuracy_decimals: 3 58 | filters: 59 | # Multiplication factor from W to kW is 0.001 60 | - multiply: 0.001 61 | 62 | # Daily Discharging Energy 63 | - platform: total_daily_energy 64 | name: "${name} ${shunt_name} Daily Discharging Energy" 65 | power_id: shunt${shunt_id}_battery_discharging_power 66 | unit_of_measurement: 'kWh' 67 | state_class: total_increasing 68 | device_class: energy 69 | accuracy_decimals: 3 70 | filters: 71 | # Multiplication factor from W to kW is 0.001 72 | - multiply: 0.001 73 | -------------------------------------------------------------------------------- /packages/shunt/shunt_combine_FAKE.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.11.11 2 | # Version : 1.1.2 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | packages: 21 | shunt_base: !include shunt_base.yaml 22 | shunt_combine: !include shunt_combine.yaml 23 | 24 | binary_sensor: 25 | # Required sensors cannot be retrieved from Shunt 26 | # online_status 27 | - platform: template 28 | id: shunt${shunt_id}_online_status 29 | name: "${name} ${shunt_name} Online Status" 30 | lambda: |- 31 | if (id(shunt${shunt_id}_voltage).state > 0) 32 | return true; 33 | else 34 | return false; 35 | 36 | sensor: 37 | # total_voltage 38 | - platform: template 39 | id: shunt${shunt_id}_voltage 40 | name: "${name} ${shunt_name} Voltage" 41 | update_interval: ${shunt_update_interval} 42 | accuracy_decimals: 2 43 | unit_of_measurement: V 44 | device_class: voltage 45 | filters: 46 | - or: 47 | - throttle: 10s 48 | - delta: 0.01 49 | lambda: return ${shunt_voltage}; 50 | 51 | # current 52 | - platform: template 53 | id: shunt${shunt_id}_current 54 | name: "${name} ${shunt_name} Current" 55 | update_interval: ${shunt_update_interval} 56 | accuracy_decimals: 1 57 | unit_of_measurement: A 58 | device_class: current 59 | filters: 60 | - or: 61 | - throttle: 10s 62 | - delta: 0.1 63 | lambda: return ${shunt_current}; 64 | 65 | # power 66 | - platform: template 67 | id: shunt${shunt_id}_power 68 | name: "${name} ${shunt_name} Power" 69 | update_interval: ${shunt_update_interval} 70 | accuracy_decimals: 0 71 | unit_of_measurement: W 72 | device_class: power 73 | filters: 74 | - or: 75 | - throttle: 10s 76 | - delta: 1 77 | lambda: return ${shunt_power}; 78 | 79 | # state_of_charge 80 | - platform: template 81 | id: shunt${shunt_id}_soc 82 | name: "${name} ${shunt_name} SoC" 83 | update_interval: ${shunt_update_interval} 84 | accuracy_decimals: 0 85 | unit_of_measurement: '%' 86 | device_class: battery 87 | filters: 88 | - or: 89 | - throttle: 10s 90 | - delta: 1 91 | lambda: return ${shunt_soc}; 92 | -------------------------------------------------------------------------------- /packages/shunt/shunt_combine_Junctek_KHF_UART.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.12.23 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-junctek_khf 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | packages: 21 | shunt_sensors: !include shunt_sensors_Junctek_KHF_UART.yaml 22 | shunt_combine: !include shunt_combine.yaml 23 | -------------------------------------------------------------------------------- /packages/shunt/shunt_combine_Victron_SmartShunt_BLE.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.12.23 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Fabian-Schmidt/esphome-victron_ble 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | packages: 21 | shunt_sensors: !include shunt_sensors_Victron_SmartShunt_BLE.yaml 22 | shunt_combine: !include shunt_combine.yaml 23 | -------------------------------------------------------------------------------- /packages/shunt/shunt_combine_Victron_SmartShunt_BLE_connect.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.11.11 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Fabian-Schmidt/esphome-victron_ble 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | packages: 21 | shunt_base: !include shunt_base.yaml 22 | shunt_combine: !include shunt_combine.yaml 23 | 24 | # +--------------------------------------+ 25 | # | Component settings | 26 | # +--------------------------------------+ 27 | 28 | external_components: 29 | - source: github://Fabian-Schmidt/esphome-victron_ble 30 | refresh: 0s 31 | 32 | esp32_ble: 33 | io_capability: keyboard_only 34 | 35 | esp32_ble_tracker: 36 | 37 | ble_client: 38 | - mac_address: ${shunt_mac_address} 39 | id: ble_client${shunt_id} 40 | on_passkey_request: 41 | then: 42 | - logger.log: "Authenticating with passkey" 43 | - ble_client.passkey_reply: 44 | id: ble_client${shunt_id} 45 | passkey: ${shunt_ble_passkey} 46 | 47 | # +--------------------------------------+ 48 | # | Component entities | 49 | # +--------------------------------------+ 50 | 51 | binary_sensor: 52 | # Required sensors cannot be retrieved from Shunt 53 | # online_status 54 | - platform: template 55 | id: shunt${shunt_id}_online_status 56 | name: "${name} ${shunt_name} Online Status" 57 | lambda: |- 58 | if (id(shunt${shunt_id}_voltage).state > 0) 59 | return true; 60 | else 61 | return false; 62 | 63 | sensor: 64 | - platform: victron_ble_connect 65 | ble_client_id: ble_client${shunt_id} 66 | # Notify supports max 7 sensors 67 | notify: true 68 | # If notify is active then on every update_interval sensors are updated. 69 | # If notify is disabled then on every update_interval a new connection to victron is made. 70 | update_interval: ${shunt_update_interval} # 20s 71 | state_of_charge: 72 | id: shunt${shunt_id}_soc 73 | name: "${name} ${shunt_name} State of Charge" 74 | voltage: 75 | id: shunt${shunt_id}_voltage 76 | name: "${name} ${shunt_name} Voltage" 77 | current: 78 | id: shunt${shunt_id}_current 79 | name: "${name} ${shunt_name} Current" 80 | power: 81 | id: shunt${shunt_id}_power 82 | name: "${name} ${shunt_name} Power" 83 | ah: 84 | name: "${name} ${shunt_name} Consumed Ah" 85 | starter_battery_voltage: 86 | name: "${name} ${shunt_name} Starter Battery Voltage" 87 | remaining_time: 88 | name: "${name} ${shunt_name} Remaining Time" 89 | -------------------------------------------------------------------------------- /packages/shunt/shunt_combine_Victron_SmartShunt_UART.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.12.23 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-junctek_khf 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | packages: 21 | shunt_sensors: !include shunt_sensors_Victron_SmartShunt_UART.yaml 22 | shunt_combine: !include shunt_combine.yaml 23 | 24 | # +--------------------------------------+ 25 | # | Component settings | 26 | # +--------------------------------------+ 27 | 28 | uart: 29 | - id: !extend ${shunt_uart_id} 30 | baud_rate: 19200 31 | rx_buffer_size: 256 32 | -------------------------------------------------------------------------------- /packages/shunt/shunt_combine_Victron_SmartShunt_UART_expander.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.12.23 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-junctek_khf 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | packages: 21 | shunt_sensors: !include shunt_sensors_Victron_SmartShunt_UART.yaml 22 | shunt_combine: !include shunt_combine.yaml 23 | -------------------------------------------------------------------------------- /packages/shunt/shunt_modbus_Junctek_KHF_UART.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.12.23 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-junctek_khf 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | packages: 21 | shunt_sensors: !include shunt_sensors_Junctek_KHF_UART.yaml 22 | shunt_combine: !include shunt_modbus_server.yaml 23 | -------------------------------------------------------------------------------- /packages/shunt/shunt_modbus_Victron_SmartShunt_BLE.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.12.23 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Fabian-Schmidt/esphome-victron_ble 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | packages: 21 | shunt_sensors: !include shunt_sensors_Victron_SmartShunt_BLE.yaml 22 | shunt_combine: !include shunt_modbus_server.yaml 23 | -------------------------------------------------------------------------------- /packages/shunt/shunt_modbus_Victron_SmartShunt_UART.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.12.23 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-junctek_khf 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | packages: 21 | shunt_sensors: !include shunt_sensors_Victron_SmartShunt_UART.yaml 22 | shunt_combine: !include shunt_modbus_server.yaml 23 | 24 | # +--------------------------------------+ 25 | # | Component settings | 26 | # +--------------------------------------+ 27 | 28 | uart: 29 | - id: !extend ${shunt_uart_id} 30 | baud_rate: 19200 31 | rx_buffer_size: 256 32 | -------------------------------------------------------------------------------- /packages/shunt/shunt_modbus_Victron_SmartShunt_UART_minimal.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.23 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | packages: 21 | shunt_sensors: !include shunt_sensors_Victron_SmartShunt_UART_minimal.yaml 22 | shunt_combine: !include shunt_modbus_server.yaml 23 | 24 | # +--------------------------------------+ 25 | # | Component settings | 26 | # +--------------------------------------+ 27 | 28 | uart: 29 | - id: !extend ${shunt_uart_id} 30 | baud_rate: 19200 31 | rx_buffer_size: 256 32 | -------------------------------------------------------------------------------- /packages/shunt/shunt_modbus_server.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.12.23 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | modbus_controller: 21 | - modbus_id: modbus_server 22 | address: 20${shunt_id} # max 255 (8bit) 23 | server_registers: 24 | # online_status (1/0) 25 | - address: 1 26 | value_type: U_WORD 27 | read_lambda: |- 28 | return uint16_t(id(shunt${shunt_id}_online_status).state); 29 | # total_voltage (mV) 30 | - address: 2 31 | value_type: U_DWORD 32 | read_lambda: |- 33 | return uint32_t(id(shunt${shunt_id}_voltage).state * 1000); 34 | # current (mA) [signed] 35 | - address: 4 36 | value_type: S_DWORD 37 | read_lambda: |- 38 | return int32_t(id(shunt${shunt_id}_current).state * 1000); 39 | # power (mW) [signed] 40 | - address: 6 41 | value_type: S_DWORD 42 | read_lambda: |- 43 | return int32_t(id(shunt${shunt_id}_power).state * 1000); 44 | # soc (%) 45 | - address: 8 46 | value_type: U_WORD 47 | read_lambda: |- 48 | return uint16_t(id(shunt${shunt_id}_soc).state); 49 | # charging_power (mW) 50 | - address: 9 51 | value_type: U_DWORD 52 | read_lambda: |- 53 | return uint32_t(id(shunt${shunt_id}_battery_charging_power).state * 1000); 54 | # discharging_power (mW) 55 | - address: 11 56 | value_type: U_DWORD 57 | read_lambda: |- 58 | return uint32_t(id(shunt${shunt_id}_battery_discharging_power).state * 1000); 59 | -------------------------------------------------------------------------------- /packages/shunt/shunt_sensors_Victron_SmartShunt_UART_minimal.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.23 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/KinDR007/VictronMPPT-ESPHOME 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | packages: 21 | shunt_base: !include shunt_base.yaml 22 | 23 | # +--------------------------------------+ 24 | # | Component settings | 25 | # +--------------------------------------+ 26 | 27 | external_components: 28 | - source: github://KinDR007/VictronMPPT-ESPHOME@main 29 | refresh: 0s 30 | 31 | victron: 32 | - uart_id: ${shunt_uart_id} 33 | id: victron${shunt_id} 34 | throttle: ${shunt_update_interval} 35 | 36 | # +--------------------------------------+ 37 | # | Component entities | 38 | # +--------------------------------------+ 39 | 40 | binary_sensor: 41 | # online_status 42 | - platform: template 43 | id: shunt${shunt_id}_online_status 44 | name: "${name} ${shunt_name} Online Status" 45 | lambda: |- 46 | if (id(shunt${shunt_id}_voltage).state > 0) 47 | return true; 48 | else 49 | return false; 50 | 51 | sensor: 52 | - platform: victron 53 | victron_id: victron${shunt_id} 54 | battery_voltage: 55 | id: shunt${shunt_id}_voltage 56 | name: "${name} ${shunt_name} battery voltage" 57 | battery_current: 58 | id: shunt${shunt_id}_current 59 | name: "${name} ${shunt_name} battery current" 60 | instantaneous_power: 61 | id: shunt${shunt_id}_power 62 | name: "${name} ${shunt_name} instantaneous power" 63 | state_of_charge: 64 | id: shunt${shunt_id}_soc 65 | name: "${name} ${shunt_name} state of charge" 66 | 67 | -------------------------------------------------------------------------------- /packages/yambms/yambms_custom.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.03.12 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | switch: 21 | - platform: template 22 | name: "${name} ${yambms_name} Force Float" 23 | id: ${yambms_id}_switch_force_float 24 | restore_mode: RESTORE_DEFAULT_OFF 25 | optimistic: true 26 | entity_category: config 27 | 28 | interval: 29 | - interval: ${yambms_update_interval} 30 | then: 31 | - lambda: |- 32 | // Force Float => Float 33 | if (id(${yambms_id}_switch_force_float).state) id(${yambms_id}_charge_status) = "Float"; 34 | -------------------------------------------------------------------------------- /packages/yambms/yambms_service.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.01 2 | # Version : 1.5.5 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | esphome: 21 | on_boot: 22 | then: 23 | - lambda: id(${yambms_id}_running_version).publish_state("${yambms_version}"); 24 | - lambda: id(${yambms_id}_last_version).publish_state("${yambms_version}"); 25 | 26 | text_sensor: 27 | # +--------------------------------------+ 28 | # | YamBMS version | 29 | # +--------------------------------------+ 30 | - platform: template 31 | name: ${name} ${yambms_name} Running version 32 | id: ${yambms_id}_running_version 33 | icon: mdi:cogs 34 | entity_category: diagnostic 35 | update_interval: never 36 | - platform: template 37 | name: ${name} ${yambms_name} Last version 38 | id: ${yambms_id}_last_version 39 | icon: mdi:new-box 40 | entity_category: diagnostic 41 | update_interval: never 42 | 43 | # https://esphome.io/components/http_request.html 44 | http_request: 45 | verify_ssl: false 46 | 47 | interval: 48 | - interval: 6h # 60min 49 | then: 50 | if: 51 | condition: 52 | and: 53 | - lambda : return id(${yambms_id}_service) == true; 54 | - lambda : return id(my_network).is_connected(); 55 | then: 56 | - http_request.get: 57 | url: http://script.opentel.be/yambms.get.php 58 | capture_response: true 59 | on_response: 60 | then: 61 | - lambda: |- 62 | // ESP_LOGI("yambms", "HTTP GET : %s", body.c_str()); 63 | json::parse_json(body, [](JsonObject root) -> bool { 64 | id(${yambms_id}_last_version).publish_state(root["version"]); 65 | return true; 66 | }); 67 | 68 | - http_request.post: 69 | url: http://script.opentel.be/yambms.post.php 70 | headers: 71 | Content-Type: application/json 72 | json: |- 73 | root["mac"] = id(esp32_mac_address).state; 74 | root["version"] = "${yambms_version}"; 75 | root["board_chip"] = "${board_chip}"; 76 | root["board_name"] = "${board_name}"; 77 | root["bms_model"] = "${bms_model}"; 78 | root["bms_protocol"] = "${bms_protocol}"; 79 | root["bms_count"] = id(${yambms_id}_var_bms_counter); 80 | root["canbus_name"] = id(${yambms_id}_canbus_name); 81 | root["canbus_protocol"] = id(${yambms_id}_canbus_protocol); 82 | root["uptime"] = id(esp32_uptime).state; 83 | root["date_time_now"] = id(esp32_date_time_now).state; 84 | -------------------------------------------------------------------------------- /pvbrain2/base/device_bus_i2c0.yaml: -------------------------------------------------------------------------------- 1 | # Used for the two SX1509 and BME280/BMP280 2 | i2c: 3 | - id: i2c0_bus 4 | sda: GPIO08 5 | scl: GPIO09 6 | frequency: 50kHz 7 | -------------------------------------------------------------------------------- /pvbrain2/base/device_bus_one_wire.yaml: -------------------------------------------------------------------------------- 1 | one_wire: 2 | - platform: gpio 3 | id: one_wire_hub 4 | pin: 47 5 | -------------------------------------------------------------------------------- /pvbrain2/base/device_bus_spi1.yaml: -------------------------------------------------------------------------------- 1 | # Used for the MCP2515 (CANBUS) 2 | spi: 3 | - id: spi1_bus 4 | mosi_pin: 11 5 | miso_pin: 12 6 | clk_pin: 13 7 | -------------------------------------------------------------------------------- /pvbrain2/base/device_canbus_esp32can.yaml: -------------------------------------------------------------------------------- 1 | canbus: 2 | - platform: esp32_can 3 | id: canbus_node1 4 | tx_pin: 38 5 | rx_pin: 39 6 | can_id: 1 7 | bit_rate: 500kbps 8 | -------------------------------------------------------------------------------- /pvbrain2/base/device_canbus_mcp2515.yaml: -------------------------------------------------------------------------------- 1 | 2 | canbus: 3 | - platform: mcp2515 4 | spi_id: spi1_bus 5 | id: canbus_node2 6 | cs_pin: 21 7 | can_id: 2 8 | bit_rate: 500kbps 9 | -------------------------------------------------------------------------------- /pvbrain2/base/device_debug.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.08.28 2 | # Version : 1.1.2 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | debug: 6 | update_interval: ${debug_update_interval} 7 | 8 | text_sensor: 9 | - platform: debug 10 | device: 11 | name: ${name} ${debug_name} Device info 12 | id: esp32_device_info 13 | reset_reason: 14 | name: ${name} ${debug_name} Reset reason 15 | id: esp32_reset_reason 16 | 17 | sensor: 18 | - platform: debug 19 | free: 20 | name: ${name} ${debug_name} Heap free 21 | id: esp32_heap_free 22 | block: 23 | name: ${name} ${debug_name} Heap max block 24 | id: esp32_heap_max_block 25 | psram: 26 | name: ${name} ${debug_name} Free PSRAM 27 | id: esp32_free_psram 28 | loop_time: 29 | name: ${name} ${debug_name} Loop time 30 | id: esp32_loop_time 31 | 32 | - platform: template 33 | name: ${name} ${debug_name} Heap free (%) 34 | id: esp32_heap_free_percent 35 | unit_of_measurement: '%' 36 | accuracy_decimals: 2 37 | icon: mdi:percent 38 | update_interval: ${debug_update_interval} 39 | entity_category: diagnostic 40 | # 524288 B (SRAM total) 41 | # 327680 B (DRAM usable) 42 | lambda: return ( id(esp32_heap_free).state * 100 / 327680 ); 43 | 44 | - platform: template 45 | name: ${name} ${debug_name} Heap max block (%) 46 | id: esp32_heap_max_block_percent 47 | unit_of_measurement: '%' 48 | accuracy_decimals: 2 49 | icon: mdi:percent 50 | update_interval: ${debug_update_interval} 51 | entity_category: diagnostic 52 | # 524288 B (SRAM total) 53 | # 327680 B (DRAM usable) 54 | lambda: return ( id(esp32_heap_max_block).state * 100 / 327680 ); 55 | 56 | - platform: template 57 | name: ${name} ${debug_name} Free PSRAM (%) 58 | id: esp32_free_psram_percent 59 | unit_of_measurement: '%' 60 | accuracy_decimals: 2 61 | icon: mdi:percent 62 | update_interval: ${debug_update_interval} 63 | entity_category: diagnostic 64 | lambda: return ( id(esp32_free_psram).state * 100 / ${debug_psram_size} ); // 8388608 65 | -------------------------------------------------------------------------------- /pvbrain2/base/device_psram_settings.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.08.28 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # This file optimizes the use of the ESP32-S3 PSRAM by authorizing or 6 | # forcing certain data to be written to the PSRAM rather than to the 7 | # internal RAM. 8 | # The configuration presented here already seems stable for several 9 | # users and visibly offers better behavior of the esp when it contains 10 | # a lot of entities. 11 | 12 | esphome: 13 | platformio_options: 14 | build_flags: "-DBOARD_HAS_PSRAM" 15 | board_build.arduino.memory_type: opi_opi # qio_opi 16 | 17 | esp32: 18 | framework: 19 | sdkconfig_options: 20 | COMPILER_OPTIMIZATION_SIZE: y 21 | CONFIG_COMPILER_OPTIMIZATION_PERF: y 22 | CONFIG_SPIRAM_SUPPORT: y 23 | CONFIG_SPIRAM_USE_MALLOC: y # fully integrating it making malloc() also able to return SPI RAM pointers. 24 | CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY: y 25 | CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY: y # Allow .noinit segment placed in external memory 26 | CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY: y # Allow external memory as an argument to xTaskCreateStatic 27 | CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP: y # Try to allocate memories of WiFi and LWIP in SPIRAM firstly. If failed, allocate internal memory 28 | CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL: y # Allocation strategy for NimBLE host stack, essentially provides ability to allocate all required dynamic allocations 29 | CONFIG_BLE_MESH_MEM_ALLOC_MODE_EXTERNAL: y # Allocation strategy for BLE Mesh stack, essentially provides ability to allocate all required dynamic allocations 30 | CONFIG_BLE_MESH_FREERTOS_STATIC_ALLOC_EXTERNAL: y # Choose the memory to be used for FreeRTOS objects. 31 | CONFIG_FATFS_ALLOC_PREFER_EXTRAM: y # Prefer external RAM when allocating FATFS buffers 32 | CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC: y # Allocation strategy for mbedTLS, essentially provides ability to allocate all required dynamic allocations 33 | CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL: "131072" # Reserve this amount of bytes for data that specifically needs to be in DMA or internal memory. Default value: 32768 34 | CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL: "8096" # Maximum malloc() size, in bytes, to always put in internal memory. Default value: 16384 -------------------------------------------------------------------------------- /pvbrain2/base/device_sx1509.yaml: -------------------------------------------------------------------------------- 1 | sx1509: 2 | - id: sx1509_hub0 3 | address: 0x3E 4 | i2c_id: i2c0_bus 5 | 6 | - id: sx1509_hub1 7 | address: 0x3F 8 | i2c_id: i2c0_bus 9 | 10 | # - id: sx1509_hub2 11 | # address: 0x70 12 | # i2c_id: i2c0_bus 13 | 14 | # - id: sx1509_hub3 15 | # address: 0x71 16 | # i2c_id: i2c0_bus 17 | -------------------------------------------------------------------------------- /pvbrain2/base/device_uart_esp.yaml: -------------------------------------------------------------------------------- 1 | uart: 2 | # UART 0 : USB UART port used for ESP32 flashing and logs 3 | # - id: uart_esp_0 4 | # tx_pin: 43 5 | # rx_pin: 44 6 | # baud_rate: 115200 7 | # rx_buffer_size: 512 8 | # UART 1 9 | - id: uart_esp_1 10 | tx_pin: 17 11 | rx_pin: 18 12 | baud_rate: 115200 13 | rx_buffer_size: 512 14 | # UART 2 15 | - id: uart_esp_2 16 | tx_pin: 15 17 | rx_pin: 16 18 | baud_rate: 115200 19 | rx_buffer_size: 512 20 | -------------------------------------------------------------------------------- /pvbrain2/base/device_wk2168_i2c.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.08.31 2 | # Version : 1.0.2 3 | # GitHub : https://github.com/SeByDocKy/pvbrain2 4 | 5 | substitutions: 6 | uart_hub_bus: 'i2c' 7 | 8 | i2c: 9 | - id: i2c1_bus 10 | sda: GPIO41 11 | scl: GPIO40 12 | frequency: 800kHz 13 | 14 | wk2168_i2c: 15 | - address: 0x10 16 | id: uart_bridge0 17 | i2c_id: i2c1_bus 18 | uart: 19 | - id: uart_i2c_0 20 | channel: 0 21 | baud_rate: ${uart0_baudrate} 22 | # parity: even 23 | - id: uart_i2c_1 24 | channel: 1 25 | baud_rate: ${uart1_baudrate} 26 | - id: uart_i2c_2 27 | channel: 2 28 | baud_rate: ${uart2_baudrate} 29 | # parity: even 30 | - id: uart_i2c_3 31 | channel: 3 32 | baud_rate: ${uart3_baudrate} 33 | 34 | - address: 0x70 35 | id: uart_bridge1 36 | i2c_id: i2c1_bus 37 | uart: 38 | - id: uart_i2c_4 39 | channel: 0 40 | baud_rate: ${uart4_baudrate} 41 | # parity: even 42 | - id: uart_i2c_5 43 | channel: 1 44 | baud_rate: ${uart5_baudrate} 45 | - id: uart_i2c_6 46 | channel: 2 47 | baud_rate: ${uart6_baudrate} 48 | # parity: even 49 | - id: uart_i2c_7 50 | channel: 3 51 | baud_rate: ${uart7_baudrate} 52 | -------------------------------------------------------------------------------- /pvbrain2/base/device_wk2168_spi.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.08.31 2 | # Version : 1.0.2 3 | # GitHub : https://github.com/SeByDocKy/pvbrain2 4 | 5 | substitutions: 6 | uart_hub_bus: 'spi' 7 | 8 | spi: 9 | - id: spi0_bus 10 | mosi_pin: GPIO6 11 | miso_pin: GPIO41 12 | clk_pin: GPIO40 13 | 14 | wk2168_spi: 15 | - id: uart_bridge0 16 | spi_id: spi0_bus 17 | cs_pin: GPIO19 18 | data_rate: 4MHz 19 | #test_mode: 1 20 | uart: 21 | - id: uart_spi_0 22 | channel: 0 23 | baud_rate: ${uart0_baudrate} 24 | #parity: even 25 | - id: uart_spi_1 26 | channel: 1 27 | baud_rate: ${uart1_baudrate} 28 | - id: uart_spi_2 29 | channel: 2 30 | baud_rate: ${uart2_baudrate} 31 | #parity: even 32 | - id: uart_spi_3 33 | channel: 3 34 | baud_rate: ${uart3_baudrate} 35 | 36 | - id: uart_bridge1 37 | spi_id: spi0_bus 38 | cs_pin: GPIO20 39 | data_rate: 4MHz 40 | uart: 41 | - id: uart_spi_4 42 | channel: 0 43 | baud_rate: ${uart4_baudrate} 44 | #parity: even 45 | - id: uart_spi_5 46 | channel: 1 47 | baud_rate: ${uart5_baudrate} 48 | - id: uart_spi_6 49 | channel: 2 50 | baud_rate: ${uart6_baudrate} 51 | #parity: even 52 | - id: uart_spi_7 53 | channel: 3 54 | baud_rate: ${uart7_baudrate} 55 | -------------------------------------------------------------------------------- /pvbrain2/environmental/bme280/device_bme_280.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.09.30 2 | # Version : 1.0.2 3 | # GitHub : https://github.com/SeByDocKy/pvbrain2 4 | 5 | sensor: 6 | - platform: bme280_i2c 7 | temperature: 8 | name: ${name}_${environnemental_name}_temperature 9 | accuracy_decimals: 1 10 | oversampling: 16x 11 | id: ${environnemental_name}_temperature 12 | pressure: 13 | name: ${name}_${environnemental_name}_pressure 14 | accuracy_decimals: 1 15 | id: ${environnemental_name}_pressure 16 | humidity: 17 | name: ${name}_${environnemental_name}_humidity 18 | accuracy_decimals: 1 19 | id: ${environnemental_name}_humidity 20 | address: ${environnemental_address} 21 | update_interval: ${environnemental_update_interval} 22 | i2c_id: ${environnemental_i2c_bus} 23 | 24 | # https://esphome.io/components/sensor/absolute_humidity.html?highlight=absolute_humidity 25 | - platform: absolute_humidity 26 | name: ${name}_${environnemental_name}_humidity_absolue 27 | id: ${environnemental_name}_humidity_absolue 28 | equation: Wobus #Tetens #Buck 29 | temperature: ${environnemental_name}_temperature 30 | humidity: ${environnemental_name}_humidity 31 | -------------------------------------------------------------------------------- /pvbrain2/environmental/bmp280/device_bmp_280.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.09.30 2 | # Version : 1.0.2 3 | # GitHub : https://github.com/SeByDocKy/pvbrain2 4 | 5 | sensor: 6 | - platform: bmp280 7 | temperature: 8 | name: ${name}_${environnemental_name}_temperature 9 | accuracy_decimals: 1 10 | oversampling: 16x 11 | id: ${environnemental_name}_temperature 12 | pressure: 13 | name: ${name}_${environnemental_name}_pressure 14 | accuracy_decimals: 1 15 | id: ${environnemental_name}_pressure 16 | address: ${environnemental_address} 17 | update_interval: ${environnemental_update_interval} 18 | i2c_id: ${environnemental_i2c_bus} 19 | -------------------------------------------------------------------------------- /pvbrain2/environmental/dallas/device_dallas.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2024.09.30 2 | # Version : 1.0.2 3 | # GitHub : https://github.com/SeByDocKy/pvbrain2 4 | 5 | sensor: 6 | - platform: dallas_temp 7 | name: ${name}_${environnemental_name} 8 | id: ${environnemental_name} 9 | one_wire_id: one_wire_hub 10 | address: ${environnemental_address} 11 | update_interval: ${environnemental_update_interval} 12 | filters: 13 | - filter_out: 85 14 | - filter_out: 128 15 | - filter_out: NAN 16 | -------------------------------------------------------------------------------- /pvbrain2/environmental/light/device_ws2812b.yaml: -------------------------------------------------------------------------------- 1 | light: 2 | - platform: fastled_clockless 3 | name: ${name}_${light_name} 4 | id: ${light_name} 5 | chipset: WS2812B 6 | pin: GPIO14 7 | num_leds: ${light_num_leds} 8 | rgb_order: ${light_order} 9 | 10 | -------------------------------------------------------------------------------- /pvbrain2/environmental/light/effects/addressable_monoled.yaml: -------------------------------------------------------------------------------- 1 | - random: 2 | - random: 3 | name: random_slow 4 | transition_length: 30s 5 | update_interval: 30s 6 | - random: 7 | name: random_fast 8 | transition_length: 2s 9 | update_interval: 1s 10 | - pulse: 11 | - pulse: 12 | name: pulse_fast 13 | transition_length: 0.5s 14 | update_interval: 0.5s 15 | min_brightness: 0% 16 | max_brightness: 100% 17 | - pulse: 18 | name: pulse_slow 19 | # transition_length: 1s # defaults to 1s 20 | update_interval: 0.5s 21 | - strobe: 22 | - strobe: 23 | name: strobe_custom 24 | colors: 25 | - state: true 26 | brightness: 100% 27 | red: 100% 28 | green: 90% 29 | blue: 0% 30 | duration: 500ms 31 | - state: false 32 | duration: 250ms 33 | - state: true 34 | brightness: 100% 35 | red: 0% 36 | green: 100% 37 | blue: 0% 38 | duration: 500ms 39 | - flicker: 40 | - flicker: 41 | name: flicker_custom 42 | alpha: 95% 43 | intensity: 1.5% -------------------------------------------------------------------------------- /pvbrain2/environmental/light/effects/monochrome.yaml: -------------------------------------------------------------------------------- 1 | 2 | - strobe: 3 | name: blink_slow 4 | colors: 5 | - state: true 6 | duration: 1s 7 | - state: false 8 | duration: 1s 9 | 10 | - strobe: 11 | name: blink_fast 12 | colors: 13 | - state: true 14 | duration: 300ms 15 | - state: false 16 | duration: 300ms 17 | - state: true 18 | duration: 300ms 19 | - state: false 20 | duration: 1s 21 | 22 | - strobe: 23 | name: blink_very_fast 24 | colors: 25 | - state: true 26 | duration: 100ms 27 | - state: false 28 | duration: 100ms 29 | - state: true 30 | duration: 100ms 31 | - state: false 32 | duration: 100ms 33 | - state: true 34 | duration: 100ms 35 | - state: false 36 | duration: 1s -------------------------------------------------------------------------------- /pvbrain2/environmental/rtttl/rtttl_buzzer.yaml: -------------------------------------------------------------------------------- 1 | # https://esphome.io/components/rtttl 2 | rtttl: 3 | output: rtttl_out 4 | id: my_rtttl 5 | gain: 60% 6 | 7 | output: 8 | # https://esphome.io/components/output/ledc 9 | - platform: ledc 10 | pin: GPIO4 # est obligatoirement un pin physique 11 | id: rtttl_out 12 | channel: 0 13 | frequency: "100Hz" 14 | 15 | button: 16 | ## Rtttl Player : https://eddmann.com/nokia-composer-web/ 17 | - platform: template 18 | name: ${name}_rtttl_masterofpuppets 19 | on_press: 20 | then: 21 | - rtttl.play: 'MasterOf:d=4,o=5,b=112:16e,16f,16b,16e,16f,16c6,16e,16f,16c#6,16e,16f,16c6,16e,16f,16b,16b,16e,16f,16b,16e,16f,16c6,16f,16e,16d6,16c#6,16e,16d6,16c#6,16e,16d6,16c#6,16d6,16c#6,16e,16d6,16c#6,16e,16d6,16c#6,8e' 22 | 23 | - platform: template 24 | name: ${name}_rtttl_supermario 25 | on_press: 26 | then: 27 | - rtttl.play: 'Super Mario:d=4,o=5,b=100:16e6,16e6,32p,8e6,16c6,8e6,8g6,8p,8g,8p,8c6,16p,8g,16p,8e,16p,8a,8b,16a#,8a,16g.,16e6,16g6,8a6,16f6,8g6,8e6,16c6,16d6,8b,16p,8c6,16p,8g,16p,8e,16p,8a,8b,16a#,8a,16g.,16e6,16g6,8a6,16f6,8g6,8e6,16c6,16d6,8b,8p,16g6,16f#6,16f6,16d#6,16p,16e6,16p,16g#,16a,16c6,16p,16a,16c6,16d6,8p,16g6,16f#6,16f6,16d#6,16p,16e6,16p,16c7,16p,16c7,16c7,p,16g6,16f#6,16f6,16d#6,16p,16e6,16p,16g#,16a,16c6,16p,16a,16c6,16d6,8p,16d#6,8p,16d6,8p,16c6' 28 | 29 | - platform: template 30 | name: ${name}_rtttl_indianajones 31 | on_press: 32 | then: 33 | - rtttl.play: 'Indiana Jones:d=4,o=5,b=250:e,8p,8f,8g,8p,1c6,8p.,d,8p,8e,1f,p.,g,8p,8a,8b,8p,1f6,p,a,8p,8b,2c6,2d6,2e6,e,8p,8f,8g,8p,1c6,p,d6,8p,8e6,1f.6,g,8p,8g,e.6,8p,d6,8p,8g,e.6,8p,d6,8p,8g,f.6,8p,e6,8p,8d6,2c6' 34 | 35 | - platform: template 36 | name: ${name}_rtttl_zelda 37 | on_press: 38 | then: 39 | - rtttl.play: 'Zelda:d=16,o=5,b=200:2a#,2f,4p,8a#,8c6,8d6,8d#6,2f6,2p,4f6,4f6,8f#6,8g#6,2a#6,2p,4a#6,8a#6,8p,8g#6,8f#6,4g#6,8f#6,2f6,2p,2f6,4d#6,8d#6,8f6,2f#6,2p,4f6,4d#6,4c#6,8c#6,8d#6,2f6,2p,4d#6,4c#6,4c6,8c6,8d6,2e6,2p,2g6,1f6' 40 | 41 | - platform: template 42 | name: ${name}_rtttl_bip_bip 43 | on_press: 44 | then: 45 | - rtttl.play: 'bipbip:d=8,o=5,b=140:16e6,32p,16e6' 46 | 47 | - platform: template 48 | name: ${name}_rtttl_siren 49 | on_press: 50 | then: 51 | - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e' 52 | 53 | - platform: template 54 | name: ${name}_rtttl_stop 55 | on_press: 56 | then: 57 | - rtttl.stop -------------------------------------------------------------------------------- /secrets.yaml: -------------------------------------------------------------------------------- 1 | wifi_ssid: YourSSID 2 | wifi_password: YourPassword 3 | domain : .local 4 | -------------------------------------------------------------------------------- /yambms_config.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.04 2 | # Version : 1.1.1 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | substitutions: 21 | # +--------------------------------------+ 22 | # | Multi-Node Modbus Settings | 23 | # +--------------------------------------+ 24 | modbus_update_interval: '5s' # frequency with which BMS/Shunt modbus servers are queried 25 | modbus_baud_rate: '19200' # 9600 / 19200 / 11520 26 | modbus_command_throttle: '0ms' # minimum time in between 2 requests to the device 27 | modbus_send_wait_time: '250ms' # time in milliseconds before the next ModBUS command is sent if an answer from a previous command is pending 28 | -------------------------------------------------------------------------------- /yambms_custom.yaml: -------------------------------------------------------------------------------- 1 | # Updated : 2025.04.04 2 | # Version : 1.1.2 3 | # GitHub : https://github.com/Sleeper85/esphome-yambms 4 | 5 | # YamBMS ( Yet another multi-BMS Merging Solution ) 6 | 7 | # This YAML is free software: you can redistribute it and/or 8 | # modify it under the terms of the GNU General Public License 9 | # as published by the Free Software Foundation, either version 3 10 | # of the License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | # See the GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program. If not, see . 19 | 20 | switch: 21 | - platform: template 22 | name: "${name} ${yambms_name} Force Float" 23 | id: ${yambms_id}_switch_force_float 24 | restore_mode: RESTORE_DEFAULT_OFF 25 | optimistic: true 26 | entity_category: config 27 | 28 | interval: 29 | - interval: ${yambms_update_interval} 30 | then: 31 | - lambda: |- 32 | // Force Float 33 | if (id(${yambms_id}_switch_force_float).state) id(${yambms_id}_force_float) = true; 34 | else id(${yambms_id}_force_float) = false; 35 | 36 | - interval: 24h # 60s 37 | then: 38 | - lambda: |- 39 | // Set min/max Float slider 40 | id(${yambms_id}_float_voltage).traits.set_min_value(${yambms_cell_count} * 3.125); 41 | id(${yambms_id}_float_voltage).traits.set_max_value(${yambms_cell_count} * 3.375); 42 | --------------------------------------------------------------------------------