syssi / esphome-pipsolar

ESPHome component to monitor and control a pipsolar inverter via RS232
Apache License 2.0
78 stars 35 forks source link

charger_source_priority switch #85

Open raf9998 opened 10 months ago

raf9998 commented 10 months ago

Are there any plans to add support for changing charger_source_priority value as is the case with output_source_priority_solar?

magnetus26 commented 10 months ago

I will love to see charger_source_priority dropdown as well thanks M.

ans-gw commented 9 months ago

I ll love too

magnetus26 commented 9 months ago

syssi if you, you could tell me wich files are involve, i could try to butch the files using the inverter output priority select as a template and try with my inverter. thanks. M.

WallK commented 7 months ago

But it already has is Here's a piece of my config image

hosflow commented 4 months ago

But it already has is Here's a piece of my config image

Im using this and esphome return error, any help?


select:
  - platform: pipsolar
    pipsolar_id: ${id}
    charger_source_priority:
      id: ${id}_charger_source_priority_select
      name: $(name) Charger Source Priority Select
      optionsmap:
        "Solar first": "PCP01"
        "Solar and utility": "PCP02"
        "Solar charging only": "PCP03"
      statusmap:
        "1": "Solar first"
        "2": "Solar and utility"
        "3": "Solar charging only"

ERROR Platform not found: 'select.pipsolar'.

WallK commented 4 months ago

@hosflow I think you don't have this installed It should be a part of ESPHome by default for a while, maybe you have a very old version? Do sensors work, for example?

hosflow commented 4 months ago

@hosflow I think you don't have this installed It should be a part of ESPHome by default for a while, maybe you have a very old version? Do sensors work, for example?

Everything works from pipsolar, it only stops working if you add this configuration, I don't know if I have to install another one, I'm new to esphome and what I used was a docker container that I uploaded less than 10 days ago, version 2024.2.1, I even tried run a clean build files, but it gives the error: Platform not found: 'select.pipsolar'. But if you remove that part everything works.

substitutions: id: inverter0

select:

WallK commented 4 months ago

Do you use this repo? You'll need

external_components:
  - source: github://syssi/esphome-pipsolar

in your config Or specify a branch with "@" after

hosflow commented 4 months ago

Do you use this repo? You'll need

external_components:
  - source: github://syssi/esphome-pipsolar

in your config Or specify a branch with "@" after

    Could not find components folder for source. Please check the source contains a 'components' or 'esphome/components' folder.
    source: github://syssi/esphome-pipsolar@main
    refresh: 0s

I tried with @main and about 5 different branches and it didn't work, it gives the error above or others with options not found. I would like to take advantage of this and thank you for taking the time to try to help me. Thank you very much

syssi commented 4 months ago

@hosflow Could you provide your complete YAML? :-)

hosflow commented 4 months ago

@hosflow Could you provide your complete YAML? :-)

Of course, follow below

substitutions:
  name: pipsolar
  tx_pin: GPIO1
  rx_pin: GPIO3
  id: inverter0

esphome:
  name: ${name}

esp8266:
  board: esp01_1m

external_components:
  - source: github://syssi/esphome-pipsolar@main
    refresh: 0s

logger:
  baud_rate: 0
  level: INFO

api:
  encryption:
    key: "PInurfsFYyPLd3S4Ek2/vKdMvfjeWr/4coB2h5GD7Dc="
ota:
  password: "8f2c8da7ac6d03005c844371073dd7dc"

wifi:
  networks:
  - ssid: !secret wifi_ssid
    password: !secret wifi_password
  - ssid: LIVE TIM_5201_2G
    password: dazegT53
  power_save_mode: none
  manual_ip:
    static_ip: 192.168.177.121
    gateway: 192.168.177.1
    subnet: 255.255.255.0

  ap:
    ssid: "${name} Hotspot"
    password: "U1SFCinhg9jy"

# Warning:
#
# If you configure a lot of the possible sensors etc. it could be that you run
# out of memory (on esp8266). If you configure nearly all sensors etc. you run
# in a stack-size issue. In this case you have to increase stack size!
#
#  https://github.com/esphome/issues/issues/855

uart:
  id: uart_0
  baud_rate: 2400
  tx_pin: ${tx_pin}
  rx_pin: ${rx_pin}
  debug:
    direction: BOTH
    dummy_receiver: false
    after:
      delimiter: "\r"
    sequence:
      - lambda: UARTDebug::log_string(direction, bytes);

pipsolar:
  uart_id: uart_0
  id: inverter0

sensor:
  - platform: pipsolar
    pipsolar_id: inverter0
    # QPIRI
#    grid_rating_voltage:
#      name: "${name} grid_rating_voltage"
#    grid_rating_current:
#      name: "${name} grid_rating_current"
#    ac_output_rating_voltage:
#      name: "${name} ac_output_rating_voltage"
#    ac_output_rating_frequency:
#      name: "${name} ac_output_rating_frequency"
#    ac_output_rating_current:
#      name: "${name} ac_output_rating_current"
#    ac_output_rating_apparent_power:
#      name: "${name} ac_output_rating_apparent_power"
#    ac_output_rating_active_power:
#      name: "${name} ac_output_rating_active_power"
#    battery_rating_voltage:
#      name: "${name} battery_rating_voltage"
#    battery_recharge_voltage:
#      name: "${name} battery_recharge_voltage"
#    battery_under_voltage:
#      name: "${name} battery_under_voltage"
#    battery_bulk_voltage:
#      name: "${name} battery_bulk_voltage"
#    battery_float_voltage:
#      name: "${name} battery_float_voltage"
#    battery_type:
#      name: "${name} battery_type"
    current_max_ac_charging_current:
      name: "${name} current_max_ac_charging_current"
    current_max_charging_current:
      name: "${name} current_max_charging_current"
#    input_voltage_range:
#      name: "${name} input_voltage_range"
    output_source_priority:
      name: "${name} output_source_priority"
    # charger_source_priority:
    #   name: "${name} charger_source_priority"
#    parallel_max_num:
#      name: "${name} parallel_max_num"
#    machine_type:
#      name: "${name} machine_type"
#    topology:
#      name: "${name} topology"
#    output_mode:
#      name: "${name} output_mode"
#    battery_redischarge_voltage:
#      name: "${name} battery_redischarge_voltage"
#    pv_ok_condition_for_parallel:
#      name: "${name} pv_ok_condition_for_parallel"
#    pv_power_balance:
#      name: "${name} pv_power_balance"

    # QPIGS
    grid_voltage:
      name: "${name} grid_voltage"
    grid_frequency:
      name: "${name} grid_frequency"
    ac_output_voltage:
      name: "${name} ac_output_voltage"
    ac_output_frequency:
      name: "${name} ac_output_frequency"
    ac_output_apparent_power:
      name: "${name} ac_output_apparent_power"
    ac_output_active_power:
      name: "${name} ac_output_active_power"
    output_load_percent:
      name: "${name} output_load_percent"
    bus_voltage:
      name: "${name} bus_voltage"
    battery_voltage:
      name: "${name} battery_voltage"
    battery_charging_current:
      name: "${name} battery_charging_current"
    battery_capacity_percent:
      name: "${name} battery_capacity_percent"
    inverter_heat_sink_temperature:
      name: "${name} inverter_heat_sink_temperature"
    pv_input_current_for_battery:
      name: "${name} pv_input_current_for_battery"
    pv_input_voltage:
      name: "${name} pv_input_voltage"
    battery_voltage_scc:
      name: "${name} battery_voltage_scc"
    battery_discharge_current:
      name: "${name} battery_discharge_current"
    battery_voltage_offset_for_fans_on:
      name: "${name} battery_voltage_offset_for_fans_on"
#    eeprom_version:
#      name: "${name} eeprom_version"
    pv_charging_power:
      name: "${name} pv_charging_power"

text_sensor:
  - platform: pipsolar
    pipsolar_id: inverter0
    device_mode:
      name: "${name} device_mode"
#    last_qpigs:
#      name: "${name} last_qpigs"
#    last_qpiri:
#      name: "${name} last_qpiri"
#    last_qmod:
#      name: "${name} last_qmod"
#    last_qflag:
#      name: "${name} last_qflag"

binary_sensor:
  - platform: pipsolar
    pipsolar_id: inverter0
    add_sbu_priority_version:
      name: "${name} add_sbu_priority_version"
    configuration_status:
      name: "${name} configuration_status"
    scc_firmware_version:
      name: "${name} scc_firmware_version"
    load_status:
      name: "${name} load_status"
    # battery_voltage_to_steady_while_charging:
    #   name: "${name} battery_voltage_to_steady_while_charging"
    charging_status:
      name: "${name} charging_status"
    scc_charging_status:
      name: "${name} scc_charging_status"
    ac_charging_status:
      name: "${name} ac_charging_status"
    charging_to_floating_mode:
      name: "${name} charging_to_floating_mode"
    switch_on:
      name: "${name} switch_on"
#    dustproof_installed:
#      name: "${name} dustproof_installed"
    silence_buzzer_open_buzzer:
      name: "${name} silence_buzzer_open_buzzer"
    overload_bypass_function:
      name: "${name} overload_bypass_function"
    lcd_escape_to_default:
      name: "${name} lcd_escape_to_default"
    overload_restart_function:
      name: "${name} overload_restart_function"
    over_temperature_restart_function:
      name: "${name} over_temperature_restart_function"
    backlight_on:
      name: "${name} backlight_on"

switch:
  - platform: pipsolar
    pipsolar_id: inverter0
    output_source_priority_utility:
      name: "${name} output_source_priority_utility"
    output_source_priority_solar:
      name: "${name} output_source_priority_solar"
    output_source_priority_battery:
      name: "${name} output_source_priority_battery"
    # input_voltage_range:
    #   name: "${name} input_voltage_range"
    # pv_ok_condition_for_parallel:
    #   name: "${name} pv_ok_condition_for_parallel"
    # pv_power_balance:
    #   name: "${name} pv_power_balance"

output:
  - platform: pipsolar
    pipsolar_id: inverter0
    battery_recharge_voltage:
      id: inverter0_battery_recharge_voltage_out

select:
  - platform: pipsolar
    pipsolar_id: ${id}
    charger_source_priority:
      id: ${id}_charger_source_priority_select
      name: $(name) Charger Source Priority Select
      optionsmap:
        "Solar first": "PCP01"
        "Solar and utility": "PCP02"
        "Solar charging only": "PCP03"
      statusmap:
        "1": "Solar first"
        "2": "Solar and utility"
        "3": "Solar charging only"
# select:
#   - platform: pipsolar
#     pipsolar_id: ${id}
#     output_source_priority:
#       id: ${id}_output_source_priority_select
#       name: ${name} Output Source Priority Select
#       optionsmap:
#         "Utility first": "POP00"
#         "Solar only": "POP01"
#         "Solar Battery Utility": "POP02"
#       statusmap:
#         "0": "Utility first"
#         "1": "Solar only"
#         "2": "Solar Battery Utility"
syssi commented 4 months ago

I've changed the branch to pip8084 and made some minor changes because of the updated code base. Please give it a try:

substitutions:
  name: pipsolar
  tx_pin: GPIO1
  rx_pin: GPIO3
  id: inverter0

esphome:
  name: ${name}

esp8266:
  board: esp01_1m

external_components:
  - source: github://syssi/esphome-pipsolar@pip8048
    refresh: 0s

logger:
  baud_rate: 0
  level: INFO

api:
  encryption:
    key: "PInurfsFYyPLd3S4Ek2/vKdMvfjeWr/4coB2h5GD7Dc="
ota:
  password: "8f2c8da7ac6d03005c844371073dd7dc"

wifi:
  networks:
  - ssid: !secret wifi_ssid
    password: !secret wifi_password
  - ssid: LIVE TIM_5201_2G
    password: dazegT53
  power_save_mode: none
  manual_ip:
    static_ip: 192.168.177.121
    gateway: 192.168.177.1
    subnet: 255.255.255.0

  ap:
    ssid: "${name} Hotspot"
    password: "U1SFCinhg9jy"

# Warning:
#
# If you configure a lot of the possible sensors etc. it could be that you run
# out of memory (on esp8266). If you configure nearly all sensors etc. you run
# in a stack-size issue. In this case you have to increase stack size!
#
#  https://github.com/esphome/issues/issues/855

uart:
  id: uart_0
  baud_rate: 2400
  tx_pin: ${tx_pin}
  rx_pin: ${rx_pin}
  debug:
    direction: BOTH
    dummy_receiver: false
    after:
      delimiter: "\r"
    sequence:
      - lambda: UARTDebug::log_string(direction, bytes);

pipsolar:
  uart_id: uart_0
  id: inverter0

sensor:
  - platform: pipsolar
    pipsolar_id: inverter0
    # QPIRI
#    grid_rating_voltage:
#      name: "${name} grid_rating_voltage"
#    grid_rating_current:
#      name: "${name} grid_rating_current"
#    ac_output_rating_voltage:
#      name: "${name} ac_output_rating_voltage"
#    ac_output_rating_frequency:
#      name: "${name} ac_output_rating_frequency"
#    ac_output_rating_current:
#      name: "${name} ac_output_rating_current"
#    ac_output_rating_apparent_power:
#      name: "${name} ac_output_rating_apparent_power"
#    ac_output_rating_active_power:
#      name: "${name} ac_output_rating_active_power"
#    battery_rating_voltage:
#      name: "${name} battery_rating_voltage"
#    battery_recharge_voltage:
#      name: "${name} battery_recharge_voltage"
#    battery_under_voltage:
#      name: "${name} battery_under_voltage"
#    battery_bulk_voltage:
#      name: "${name} battery_bulk_voltage"
#    battery_float_voltage:
#      name: "${name} battery_float_voltage"
#    battery_type:
#      name: "${name} battery_type"
    current_max_ac_charging_current:
      name: "${name} current_max_ac_charging_current"
    current_max_charging_current:
      name: "${name} current_max_charging_current"
#    input_voltage_range:
#      name: "${name} input_voltage_range"
    output_source_priority:
      name: "${name} output_source_priority"
    # charger_source_priority:
    #   name: "${name} charger_source_priority"
#    parallel_max_num:
#      name: "${name} parallel_max_num"
#    machine_type:
#      name: "${name} machine_type"
#    topology:
#      name: "${name} topology"
#    output_mode:
#      name: "${name} output_mode"
#    battery_redischarge_voltage:
#      name: "${name} battery_redischarge_voltage"
#    pv_ok_condition_for_parallel:
#      name: "${name} pv_ok_condition_for_parallel"
#    pv_power_balance:
#      name: "${name} pv_power_balance"

    # QPIGS
    grid_voltage:
      name: "${name} grid_voltage"
    grid_frequency:
      name: "${name} grid_frequency"
    ac_output_voltage:
      name: "${name} ac_output_voltage"
    ac_output_frequency:
      name: "${name} ac_output_frequency"
    ac_output_apparent_power:
      name: "${name} ac_output_apparent_power"
    ac_output_active_power:
      name: "${name} ac_output_active_power"
    output_load_percent:
      name: "${name} output_load_percent"
    bus_voltage:
      name: "${name} bus_voltage"
    battery_voltage:
      name: "${name} battery_voltage"
    battery_charging_current:
      name: "${name} battery_charging_current"
    battery_capacity_percent:
      name: "${name} battery_capacity_percent"
    inverter_heat_sink_temperature:
      name: "${name} inverter_heat_sink_temperature"
    pv1_input_current:
      name: "${name} pv1_input_current"
    pv1_input_voltage:
      name: "${name} pv1_input_voltage"
    battery_voltage_scc:
      name: "${name} battery_voltage_scc"
    battery_discharge_current:
      name: "${name} battery_discharge_current"
    battery_voltage_offset_for_fans_on:
      name: "${name} battery_voltage_offset_for_fans_on"
#    eeprom_version:
#      name: "${name} eeprom_version"
    pv1_charging_power:
      name: "${name} pv1_charging_power"

text_sensor:
  - platform: pipsolar
    pipsolar_id: inverter0
    device_mode:
      name: "${name} device_mode"
#    last_qpigs:
#      name: "${name} last_qpigs"
#    last_qpiri:
#      name: "${name} last_qpiri"
#    last_qmod:
#      name: "${name} last_qmod"
#    last_qflag:
#      name: "${name} last_qflag"

binary_sensor:
  - platform: pipsolar
    pipsolar_id: inverter0
    add_sbu_priority_version:
      name: "${name} add_sbu_priority_version"
    configuration_status:
      name: "${name} configuration_status"
    scc_firmware_version:
      name: "${name} scc_firmware_version"
    load_status:
      name: "${name} load_status"
    # battery_voltage_to_steady_while_charging:
    #   name: "${name} battery_voltage_to_steady_while_charging"
    charging_status:
      name: "${name} charging_status"
    scc_charging_status:
      name: "${name} scc_charging_status"
    ac_charging_status:
      name: "${name} ac_charging_status"
    charging_to_floating_mode:
      name: "${name} charging_to_floating_mode"
    switch_on:
      name: "${name} switch_on"
#    dustproof_installed:
#      name: "${name} dustproof_installed"
    silence_buzzer_open_buzzer:
      name: "${name} silence_buzzer_open_buzzer"
    overload_bypass_function:
      name: "${name} overload_bypass_function"
    lcd_escape_to_default:
      name: "${name} lcd_escape_to_default"
    overload_restart_function:
      name: "${name} overload_restart_function"
    over_temperature_restart_function:
      name: "${name} over_temperature_restart_function"
    backlight_on:
      name: "${name} backlight_on"

switch:
  - platform: pipsolar
    pipsolar_id: inverter0
    output_source_priority_utility:
      name: "${name} output_source_priority_utility"
    output_source_priority_solar:
      name: "${name} output_source_priority_solar"
    output_source_priority_battery:
      name: "${name} output_source_priority_battery"
    # input_voltage_range:
    #   name: "${name} input_voltage_range"
    # pv_ok_condition_for_parallel:
    #   name: "${name} pv_ok_condition_for_parallel"
    # pv_power_balance:
    #   name: "${name} pv_power_balance"

output:
  - platform: pipsolar
    pipsolar_id: inverter0
    battery_recharge_voltage:
      id: inverter0_battery_recharge_voltage_out

select:
  - platform: pipsolar
    pipsolar_id: ${id}
    charger_source_priority:
      id: ${id}_charger_source_priority_select
      name: $(name) Charger Source Priority Select
      optionsmap:
        "Solar first": "PCP01"
        "Solar and utility": "PCP02"
        "Solar charging only": "PCP03"
      statusmap:
        "1": "Solar first"
        "2": "Solar and utility"
        "3": "Solar charging only"
# select:
#   - platform: pipsolar
#     pipsolar_id: ${id}
#     output_source_priority:
#       id: ${id}_output_source_priority_select
#       name: ${name} Output Source Priority Select
#       optionsmap:
#         "Utility first": "POP00"
#         "Solar only": "POP01"
#         "Solar Battery Utility": "POP02"
#       statusmap:
#         "0": "Utility first"
#         "1": "Solar only"
#         "2": "Solar Battery Utility"
hosflow commented 4 months ago

I've changed the branch to pip8084 and made some minor changes because of the updated code base. Please give it a try:

Many thanks, all working now, more one question if i want do set current_max_ac_charging_current i can create similar bellow? Or all options is always mapped to 1,2,3... list?

select:
  - platform: pipsolar
    pipsolar_id: ${id}
    current_max_ac_charging_current:
      id: ${id}_current_max_ac_charging_current
      name: $(name) Charging AC max current
      optionsmap:
        "10A": "10"
        "20A": "20"
        "30A": "30"
      statusmap:
        "10": "10A"
        "20": "20A"
        "30": "20A"
syssi commented 4 months ago

@hosflow Could you create a new issue? Your new question is off-topic.

unknown1818 commented 3 months ago

Im trying use:

`external_components:

But at compiling i got error:

`INFO ESPHome 2024.3.0 INFO Reading configuration /config/test2.yaml... INFO Updating https://github.com/syssi/esphome-pipsolar.git@pip8048 WARNING GPIO2 is a strapping PIN and should only be used for I/O with care. Attaching external pullup/down resistors to strapping pins can cause unexpected failures. See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins INFO Detected timezone 'Europe/Warsaw' INFO Generating C++ source... INFO Compiling app... Processing test (board: esp32dev; framework: arduino; platform: platformio/espressif32@5.4.0)

HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash

....

ouinouin commented 3 months ago

just a bit of help, to have the syntax validated on the esphome dashboard, you shall tell which external component you retrieve on github apparently otherwise the editor will throw a lot of errors that are not real. @syssi : i noticed that only the 8048 branch has a folder components/pipsolar. is the 8048 intended to be the future main branch ?

external_components:

thanks for this useful component.