Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

charger_source_priority switch #85

Open
raf9998 opened this issue Aug 31, 2023 · 16 comments
Open

charger_source_priority switch #85

raf9998 opened this issue Aug 31, 2023 · 16 comments

Comments

@raf9998
Copy link

raf9998 commented Aug 31, 2023

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

@magnetus26
Copy link

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

@ans-gw
Copy link

ans-gw commented Oct 3, 2023

I ll love too

@magnetus26
Copy link

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
Copy link

WallK commented Dec 2, 2023

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

@hosflow
Copy link

hosflow commented Mar 3, 2024

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
Copy link

WallK commented Mar 3, 2024

@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
Copy link

hosflow commented Mar 4, 2024

@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:

  • 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"

@WallK
Copy link

WallK commented Mar 5, 2024

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
Copy link

hosflow commented Mar 5, 2024

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
Copy link
Owner

syssi commented Mar 5, 2024

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

@hosflow
Copy link

hosflow commented Mar 5, 2024

@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
Copy link
Owner

syssi commented Mar 6, 2024

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
Copy link

hosflow commented Mar 6, 2024

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
Copy link
Owner

syssi commented Mar 7, 2024

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

@unknown1818
Copy link

Im trying use:

`external_components:

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

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

  • toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
    Dependency Graph
    |-- AsyncTCP-esphome @ 2.1.3
    |-- WiFi @ 2.0.0
    |-- FS @ 2.0.0
    |-- Update @ 2.0.0
    |-- ESPAsyncWebServer-esphome @ 3.1.0
    |-- DNSServer @ 2.0.0
    |-- ESPmDNS @ 2.0.0
    |-- noise-c @ 0.1.4
    |-- ArduinoJson @ 6.18.5
    Compiling .pioenvs/test/src/esphome/components/pipsolar/pipsolar.cpp.o
    Compiling .pioenvs/test/src/esphome/components/pipsolar/text_sensor/pipsolar_textsensor.cpp.o
    Compiling .pioenvs/test/src/esphome/components/select/select_call.cpp.o
    Compiling .pioenvs/test/src/esphome/components/sensor/automation.cpp.o
    In file included from src/esphome/components/pipsolar/pipsolar.cpp:1:
    src/esphome/components/pipsolar/pipsolar.h:7:10: fatal error: esphome/components/pipsolar/select/pipsolar_select.h: No such file or directory
    #include "esphome/components/pipsolar/select/pipsolar_select.h"
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    *** [.pioenvs/test/src/esphome/components/pipsolar/pipsolar.cpp.o] Error 1
    In file included from src/esphome/components/pipsolar/text_sensor/pipsolar_textsensor.h:3,
    from src/esphome/components/pipsolar/text_sensor/pipsolar_textsensor.cpp:1:
    src/esphome/components/pipsolar/text_sensor/../pipsolar.h:7:10: fatal error: esphome/components/pipsolar/select/pipsolar_select.h: No such file or directory
    #include "esphome/components/pipsolar/select/pipsolar_select.h"
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    *** [.pioenvs/test/src/esphome/components/pipsolar/text_sensor/pipsolar_textsensor.cpp.o] Error 1
    ========================== [FAILED] Took 3.51 seconds ==========================`

....

@ouinouin
Copy link

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:

  • source: github://syssi/esphome-pipsolar@pip8048
    components : pipsolar

thanks for this useful component.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants