From b531cfea08a2e50a9115cabc06f59e94fa225d6e Mon Sep 17 00:00:00 2001 From: martin Date: Mon, 13 Oct 2025 13:33:46 +0200 Subject: [PATCH] =?UTF-8?q?Victron-Blue.yaml=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Victron-Blue.yaml | 268 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 Victron-Blue.yaml diff --git a/Victron-Blue.yaml b/Victron-Blue.yaml new file mode 100644 index 0000000..a5ef785 --- /dev/null +++ b/Victron-Blue.yaml @@ -0,0 +1,268 @@ +substitutions: + external_components_source: github://KinDR007/VictronMPPT-ESPHOME@main + lower_devicename: "victron-blue" + devicename: "BlueSolar_75_10" + config_version: "v2023.12.30" + wifi_fast_connect: "false" + accuracy: "2" + +esphome: + name: "${lower_devicename}" +# platform: ESP8266 +esp8266: + board: d1_mini + # board: nodemcuv2 + +external_components: + - source: ${external_components_source} + refresh: 0s + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + power_save_mode: none + fast_connect: $wifi_fast_connect + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "${devicename} Hotspot" + password: Andra1977 + +captive_portal: +logger: + baud_rate: 0 + # level: VERY_VERBOSE + esp8266_store_log_strings_in_flash: false + +# Enable Home Assistant API +api: + encryption: + key: "ck+V6y6vOpR9ty6rMXshGFb4L/15rPM+P34D6yBbV/s=" + #reboot_timeout: 0s + +ota: + - platform: esphome + password: "0dd572e476ee28d45e11707f63b4c8a3" + +web_server: + port: 80 + +time: + - platform: homeassistant + +uart: + id: uart_bus + tx_pin: D8 # Not connected! The communication is read-only + rx_pin: D7 # Connect this this GPIO and GND to the MPPT charger + baud_rate: 19200 + stop_bits: 1 + data_bits: 8 + parity: NONE + rx_buffer_size: 256 + +victron: + id: victron0 + uart_id: uart_bus + throttle: 10s + +sensor: + - platform: victron + victron_id: victron0 + panel_voltage: + name: "Panel voltage" + id: pv + battery_voltage: + name: "Battery voltage" + id: bv +# battery_current: +# name: "Battery current" +# id: bc + load_current: + name: "Load current" + id: load_current + max_power_yesterday: + name: "Max power yesterday" + id: max_power_yesterday + max_power_today: + name: "Max power today" + id: max_power_today + accuracy_decimals: ${accuracy} +# yield_total: +# name: "Yield total" +# id: yield_total +# filters: +# # Multiplication factor from W to kW is 0.001 +# - multiply: 0.001 +# unit_of_measurement: kWh +# accuracy_decimals: ${accuracy} +# yield_yesterday: +# name: "Yield yesterday" +# id: yield_yesterday +# filters: +# # Multiplication factor from W to kW is 0.001 +# - multiply: 0.001 +# unit_of_measurement: kWh +# accuracy_decimals: ${accuracy} + yield_today: + name: "Yield today" + id: yt + filters: + # Multiplication factor from W to kW is 0.001 + - multiply: 0.001 + unit_of_measurement: kWh + accuracy_decimals: ${accuracy} + panel_power: + name: "Panel power" + id: panel_power +# day_number: +# name: "Day sequence number" +# id: day_number +# icon: "mdi:calendar-today" +# charging_mode_id: +# name: "Charger mode id" + error_code: + name: "Error code" + tracking_mode_id: + name: "Tracker mode id" + +# - platform: wifi_signal +# name: "${devicename} WiFi Signal Sensor" +# id: rssi_sensor +# update_interval: 15s + +# - platform: template +# name: "Wifi Quality" +# unit_of_measurement: "%" +# accuracy_decimals: 0 +# icon: "mdi:wifi" +# update_interval: 15s +# lambda: |- +# int quality; +# const int rssi = id(rssi_sensor).state; +# if (rssi <= -100) { +# quality = 0; +# } else if (rssi >= -50) { +# quality = 100; +# } else { +# quality = 2 * (rssi + 100); +# } +# return quality; + + - platform: uptime + name: "${devicename} Uptime" + id: uptime_s + update_interval: 5s + + # - platform: template # for 1 cell of battery + # name: "Bat S1 " # 6S pack + # lambda: |- + # if ((((id(bv).state) / 6) > 4.22) && (((id(bv).state) / 6) < 3.0)) { + # return NAN; + # } + # return ((id(bv).state) / 6); + + # update_interval: 10s + # icon: "mdi:battery" + # unit_of_measurement: V + # device_class: "voltage" + # accuracy_decimals: ${accuracy} + # - platform: template # Battery working percent + # name: "Bat working percent" # cycle batt between 3,0v - 4.01v + # lambda: |- + # if (((((((((id(bv).state) / 7 )) - 3.142) / (4.01142 - 3.142)) * 100)) >= 115) && ((((((((id(bv).state) / 7 )) - 3.142) / (4.01142 - 3.142)) * 100)) <= -25)) { + # return NAN; + # } + # return ((((((id(bv).state) / 7 )) - 3.142) / (4.01142 - 3.142) ) * 100); + +# update_interval: 15s + # icon: "mdi:battery" + # unit_of_measurement: "%" + # device_class: "voltage" + # accuracy_decimals: ${accuracy} + + # - platform: template # FVE percent + # name: "FVE percent" # 500Wp max power of my FVE grid + # lambda: |- + # if (((((id(panel_power).state) / 500) * 100) >= 120) && ((((id(panel_power).state) / 500) * 100) < 0)) { + # return NAN; + # } + # return (((id(panel_power).state) / 500) * 100); + # icon: "mdi:gauge" + # unit_of_measurement: "%" + # device_class: "power" + # accuracy_decimals: ${accuracy} + # update_interval: 15s + + # - platform: template # median generated day energy + # name: "Day median generated " # 500Wp max power of my FVE grid + # lambda: |- + # return (id(yield_total).state) / (id(day_number).state); + # update_interval: 15s + # icon: "mdi:gauge" + # unit_of_measurement: "kWh" + # device_class: "power" + # accuracy_decimals: 3 + +text_sensor: + - platform: victron + victron_id: victron0 + charging_mode: + name: "Charging Mode" + error: + name: "Error" + tracking_mode: + name: "Tracking Mode" + firmware_version: + name: "Firmware Version" + device_type: + name: "Device Type" + + # - platform: template + # name: "${devicename} Config Version" + # icon: mdi:information-outline + # lambda: |- + # return {"${config_version}"}; + # - platform: version + # name: "${devicename} Esphome Version" + # icon: mdi:information-outline + # - platform: wifi_info + # ip_address: + # name: "${devicename} IP Address" + # icon: mdi:ip + # ssid: + # name: "${devicename} Connected SSID" + # icon: mdi:wifi + # bssid: + # name: "${devicename} Connected BSSID" + # mac_address: + # name: "${devicename} Mac Wifi Address" + - platform: template + name: "${devicename} Uptime (formatted)" + lambda: |- + uint32_t dur = id(uptime_s).state; + int dys = 0; + int hrs = 0; + int mnts = 0; + if (dur > 86399) { + dys = trunc(dur / 86400); + dur = dur - (dys * 86400); + } + if (dur > 3599) { + hrs = trunc(dur / 3600); + dur = dur - (hrs * 3600); + } + if (dur > 59) { + mnts = trunc(dur / 60); + dur = dur - (mnts * 60); + } + char buffer[17]; + sprintf(buffer, "%ud %02uh %02um %02us", dys, hrs, mnts, dur); + return {buffer}; + icon: mdi:clock-start + update_interval: 5s + +switch: + - platform: restart + icon: mdi:reload-alert + name: "${devicename} Restart" + \ No newline at end of file