ESPHome - falownik / inwerter Anenji

Witam mam mały problem nie mogę połączyć Falownika Anenji 4kw przez Wemos d1 mini + konwerter RS232 - TTL




Mój KOD :slight_smile:

esphome:
  name: d1-mini-pv
  friendly_name: D1_mini_PV

esp8266:
  board: d1_mini

# Enable logging
logger:
  baud_rate: 0
  esp8266_store_log_strings_in_flash: False
  level: DEBUG

# Pobieranie czasu z HA
time:
  - platform: homeassistant
    id: homeassistant_time

# Dioda LED Informacyjna o stanie połącznia.
status_led:
  pin: 
    number: GPIO2 #PIN D4
    inverted: no # "yes" - Dioda mruga gdy nie można nawiązać połączenie.
                  # "no"  - Dioda świeci gdy połączenie jest nawiązane.

# Enable Home Assistant API
api:
  encryption:
    key: "nfISClTUwGbybzXpUZr+9xzj3Pe1QBC2XQITSJdL68Y="

ota:
  - platform: esphome
    password: "1cd8c1c4d66193d36066e73090215d5b"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "D1-Mini-Pv Fallback Hotspot"
    password: "bQAVUZCw2Cbq"



uart:
  - id: uart_bus
    tx_pin: TX
    rx_pin: RX
    # most devices use 2400 as baud_rate
    baud_rate: 2400

pipsolar:
  - uart_id: uart_bus
    id: inverter0

sensor:
  - platform: pipsolar
    pipsolar_id: inverter0

    grid_rating_current:
      id: inverter0_grid_rating_current
      name: inverter0_grid_rating_current
    ac_output_active_power:
      id: inverter0_ac_output_active_power
      name: inverter0_ac_output_active_power
    ac_output_apparent_power:
      id: inverter0_ac_output_apparent_power
      name: inverter0_ac_output_apparent_power
    ac_output_voltage:
      id: inverter0_ac_output_voltage
      name: inverter0_ac_output_voltage
    battery_capacity_percent:
      id: inverter0_battery_capacity_percent
      name: inverter0_battery_capacity_percent
    battery_charging_current:
      id: inverter0_battery_charging_current
      name: inverter0_battery_charging_current
    battery_discharge_current:
      id: inverter0_battery_discharge_current
      name: inverter0_battery_discharge_current
    battery_voltage:
      id: inverter0_battery_voltage
      name: inverter0_battery_voltage
    grid_voltage:
      id: inverter0_grid_voltage
      name: inverter0_grid_voltage
    inverter_heat_sink_temperature:
      id: inverter0_inverter_heat_sink_temperature
      name: inverter0_inverter_heat_sink_temperature
    output_load_percent:
      id: inverter0_output_load_percent
      name: inverter0_output_load_percent
    pv_charging_power:
      id: inverter0_pv_charging_power
      name: inverter0_pv_charging_power
    pv_input_voltage:
      id: inverter0_pv_input_voltage
      name: inverter0_pv_input_voltage
    

    
text_sensor:
  - platform: pipsolar
    pipsolar_id: inverter0
    device_mode:
      id: inverter0_device_mode
      name: inverter0_device_mode
    last_qpigs:
      id: inverter0_last_qpigs
      name: inverter0_last_qpigs
    last_qpiri:
      id: inverter0_last_qpiri
      name: inverter0_last_qpiri
      
switch:
  - platform: pipsolar
    pipsolar_id: inverter0
    output_source_priority_utility:
      name: inverter0_output_source_priority_utility
    output_source_priority_solar:
      name: inverter0_output_source_priority_solar
    output_source_priority_battery:
      name: inverter0_output_source_priority_battery
    input_voltage_range:
      name: inverter0_input_voltage_range
    pv_power_balance:
      name: inverter0_pv_power_balance

@Dyzio

  1. Proszę popraw posta by kod był normalnie czytelny (warto umieć stosować bloki kodu).

  2. Jesteś pewien, że ten konwerter poziomów logicznych nie wymaga zasilania z obu stron (dwoma napięciami zgodnymi z oboma interfejsami, ma on jakiś schemat, bo po zdjęciu płytki tylko z jednej strony nie da się stwierdzić czy on ma prawo działać, a zdjęcie rewersu wcale nie musi nam pomóc) ?

  3. YAMLa, skądś wziąłeś, więc może jakiś link do projektu źródłowego?

  4. Schemat połączeń wydaje się oczywisty, ale jeśli robisz fotki elementów, to zrób też taką na której w jawny sposób widać ich połączenia.

  5. Nie wszystkie klony Wemos’a D1 mini działają poprawnie z komponentem UART, jeśli mają podłączone USB (więc trzeba je zasilać w inny sposób lub wręcz zrobić modyfikację sprzętu)
    embedded - How to bypass strong pullup on RX pin of Wemos D1 Mini (ESP8266) to communicate with UART multiplexer (CD4052)? - Electrical Engineering Stack Exchange

Wszystko brane z tego linku

Ja tu widzę tylko wideo, żadnego normalnego linku
straciłem na tym filmiku parę minut i więcej mi się nie chce, jak widzę że koleś ma ESP32 (gdzie nie istnieją problemy dotyczące UART, bo ESP32 ma więcej kontrolerów UART do użycia, w tym przynajmniej jeden nie połączony na amen z mostkiem do USB jak to jest w przypadku jedynego pełnego UARTa w ESP8266 na twojej płytce, dla pewności możesz ją zmienić na ESP-01s, bo tam nie ma mostka UART-USB i można do woli korzystać z tego jedynego UARTa, ale sugeruję ESP32 które może jest i strzelaniem z armaty do muchy, ale przynajmniej będzie łatwo).

Hej a jakoś jaśniej można bo w sumie to zielony jestem w tym temacie .

Starałem się jak najjaśniej - ale dla zielonego - użyj takiej samej płytki prototypowej jak autor wideo (ESP32), to obstawiam, że układ zadziała od ręki (o ile falownik masz też taki sam).

W razie Niemca masz tu dokumentację tego komponentu

Zdjęcie logów (zamiast logów w strawnym formacie) wskazuje na to, że masz problem dotyczący komunikacji między ESP a falownikiem, ale masz za dużo potencjalnych przeciwności w rozwiązaniu które wybrałeś i nie jesteś dostatecznie chętny do współpracy.

edit dla potomnych 1 post poprawiony by się YAML dało czytać…

Dzięki za aktywność będę działał w temacie jak coś ustalę dam znać z góry dzięki .

Hej, wracam z tematem (postaram się poprawić w tworzeniu posta ;))

Staram się wyciągnąć dane z inwertera do HA, z tego co udało mi się wyszukać w internecie (najbardziej zrozumiały dla mnie sposób :/) metoda jest przedstawiona w filmie powyżej (wiem, jest słaby i dźwięk masakra)
Zgodnie z Waszymi słusznymi sugestiami, kupiłem ESP32 (dokładnie ESP-WROOM-32 ESP32 USB-C) i wykonałem wszystko dokładnie tak samo. Mój Inwerter to (podobno, ale wszystko na to wskazuje dokładny klon EASUN z filmu)
https://anenji.com/pl/products/4kw-24v-mppt-solar-inverter-off-grid-with-wifi

mój obecny kod:

esphome:
  name: esp32-pv
  friendly_name: ESP32_PV

esp32:
  board: upesy_wroom

logger:
  baud_rate: 0

api:
  encryption:
    key: "2TzuvKsblhk7YOLkX/kHuTYVPBrvMs4oIS2vC+y5gi0="

ota:
  - platform: esphome
    password: "cefb124dd533a44c5d87adcf4fe08039"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  
  ap:
    ssid: "Esp32-Pv Fallback Hotspot"
    password: "4RauOvSuvoJn"

captive_portal:

uart:
  - id: uart_0
    tx_pin: GPIO17
    rx_pin: GPIO16
    baud_rate: 2400

pipsolar:
  uart_id: uart_0
  id: inverter0
  
sensor:
  - platform: pipsolar
    pipsolar_id: inverter0
  

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


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

podłączenie ESP32 → konwerter TTL-RS232

Podłączony do Inwertera niestety w logach mam dokładnie to samo :frowning:

INFO ESPHome 2024.10.1
INFO Reading configuration /config/esphome/esp32-pv.yaml...
INFO Starting log output from 192.168.68.119 using esphome API
INFO Successfully connected to esp32-pv @ 192.168.68.119 in 0.046s
INFO Successful handshake with esp32-pv @ 192.168.68.119 in 0.078s
[21:15:01][I][app:100]: ESPHome version 2024.10.1 compiled on Oct 22 2024, 20:35:25
[21:15:01][C][wifi:600]: WiFi:
[21:15:01][C][wifi:428]:   Local MAC: 88:13:BF:0C:52:88
[21:15:01][C][wifi:433]:   SSID: [redacted]
[21:15:01][C][wifi:436]:   IP Address: 192.168.68.119
[21:15:01][C][wifi:440]:   BSSID: [redacted]
[21:15:01][C][wifi:441]:   Hostname: 'esp32-pv'
[21:15:01][C][wifi:443]:   Signal strength: -40 dB ▂▄▆█
[21:15:01][C][wifi:447]:   Channel: 1
[21:15:01][C][wifi:448]:   Subnet: 255.255.255.0
[21:15:01][C][wifi:449]:   Gateway: 192.168.68.1
[21:15:01][C][wifi:450]:   DNS1: 192.168.0.1
[21:15:01][C][wifi:451]:   DNS2: 192.168.68.1
[21:15:01][C][logger:185]: Logger:
[21:15:01][C][logger:186]:   Level: DEBUG
[21:15:01][C][logger:188]:   Log Baud Rate: 0
[21:15:01][C][logger:189]:   Hardware UART: UART0
[21:15:01][C][uart.arduino_esp32:151]: UART Bus 0:
[21:15:01][C][uart.arduino_esp32:152]:   TX Pin: GPIO17
[21:15:01][C][uart.arduino_esp32:153]:   RX Pin: GPIO16
[21:15:01][C][uart.arduino_esp32:155]:   RX Buffer Size: 256
[21:15:01][C][uart.arduino_esp32:157]:   Baud Rate: 2400 baud
[21:15:01][C][uart.arduino_esp32:158]:   Data Bits: 8
[21:15:01][C][uart.arduino_esp32:159]:   Parity: NONE
[21:15:01][C][uart.arduino_esp32:160]:   Stop bits: 1
[21:15:01][C][pipsolar:864]: Pipsolar:
[21:15:01][C][pipsolar:865]: used commands:
[21:15:01][C][pipsolar:868]: QPIGS
[21:15:01][C][pipsolar:868]: QMOD
[21:15:01][C][pipsolar:868]: QFLAG
[21:15:01][C][pipsolar:868]: QPIRI
[21:15:01][C][pipsolar.switch:068]: Pipsolar Switch '${name} output_source_priority_utility'
[21:15:01][C][pipsolar.switch:070]:   Icon: 'mdi:power'
[21:15:01][C][pipsolar.switch:091]:   Restore Mode: always OFF
[21:15:01][C][pipsolar.switch:068]: Pipsolar Switch '${name} output_source_priority_solar'
[21:15:01][C][pipsolar.switch:070]:   Icon: 'mdi:power'
[21:15:01][C][pipsolar.switch:091]:   Restore Mode: always OFF
[21:15:01][C][pipsolar.switch:068]: Pipsolar Switch '${name} output_source_priority_battery'
[21:15:01][C][pipsolar.switch:070]:   Icon: 'mdi:power'
[21:15:01][C][pipsolar.switch:091]:   Restore Mode: always OFF
[21:15:01][C][pipsolar.switch:068]: Pipsolar Switch '${name} input_voltage_range'
[21:15:01][C][pipsolar.switch:070]:   Icon: 'mdi:power'
[21:15:01][C][pipsolar.switch:091]:   Restore Mode: always OFF
[21:15:01][C][pipsolar.switch:068]: Pipsolar Switch '${name} pv_ok_condition_for_parallel'
[21:15:01][C][pipsolar.switch:070]:   Icon: 'mdi:power'
[21:15:01][C][pipsolar.switch:091]:   Restore Mode: always OFF
[21:15:01][C][pipsolar.switch:068]: Pipsolar Switch '${name} pv_power_balance'
[21:15:01][C][pipsolar.switch:070]:   Icon: 'mdi:power'
[21:15:01][C][pipsolar.switch:091]:   Restore Mode: always OFF
[21:15:01][C][captive_portal:089]: Captive Portal:
[21:15:01][C][mdns:116]: mDNS:
[21:15:01][C][mdns:117]:   Hostname: esp32-pv
[21:15:01][C][esphome.ota:073]: Over-The-Air updates:
[21:15:01][C][esphome.ota:074]:   Address: esp32-pv.local:3232
[21:15:01][C][esphome.ota:075]:   Version: 2
[21:15:01][C][esphome.ota:078]:   Password configured
[21:15:01][C][safe_mode:018]: Safe Mode:
[21:15:01][C][safe_mode:020]:   Boot considered successful after 60 seconds
[21:15:01][C][safe_mode:021]:   Invoke after 10 boot attempts
[21:15:01][C][safe_mode:023]:   Remain in safe mode for 300 seconds
[21:15:01][C][api:140]: API Server:
[21:15:01][C][api:141]:   Address: esp32-pv.local:6053
[21:15:01][C][api:143]:   Using noise encryption: YES
[21:15:05][D][pipsolar:759]: timeout command to poll: QMOD
[21:15:05][D][pipsolar:842]: Sending polling command : QFLAG with length 5
[21:15:10][D][pipsolar:759]: timeout command to poll: QFLAG
[21:15:10][D][pipsolar:842]: Sending polling command : QPIRI with length 5
[21:15:15][D][pipsolar:759]: timeout command to poll: QPIRI
[21:15:15][D][pipsolar:842]: Sending polling command : QPIGS with length 5
[21:15:20][D][pipsolar:759]: timeout command to poll: QPIGS
[21:15:20][D][pipsolar:842]: Sending polling command : QMOD with length 4
[21:15:25][D][pipsolar:759]: timeout command to poll: QMOD
[21:15:25][D][pipsolar:842]: Sending polling command : QFLAG with length 5
[21:15:30][D][pipsolar:759]: timeout command to poll: QFLAG
[21:15:30][D][pipsolar:842]: Sending polling command : QPIRI with length 5
[21:15:35][D][pipsolar:759]: timeout command to poll: QPIRI
[21:15:35][D][pipsolar:842]: Sending polling command : QPIGS with length 5
[21:15:40][D][pipsolar:759]: timeout command to poll: QPIGS
[21:15:40][D][pipsolar:842]: Sending polling command : QMOD with length 4

Jeśli tylko macie dla mnie jakieś sugestię lub widzicie co robię źle, będę bardzo wdzięczny za każde info

Ja bym na początek podłączył sygnał TTL pod kolejny konwerter i do USB komputera, odpalił jakiś programik z monitorem portu szeregowego (Arduino IDE, PuTTY, ESP_Flasher) i sprawdził co leci na tej linii, czy komunikacja w ogóle jest widoczna.

EDIT:
Możesz też pójść za wskazówkami z tego linku i włączyć debugowanie:

Jest też w tym projekcie podana konfiguracja pomagająca w określeniu protokołu komunikacji, wczytaj się dobrze…

1 polubienie

@Dyzio
Zrób z bliska i z obu stron zdjęcia tego konwertera UART 3V3/TTL ↔ RS232 12V, by się dało zidentyfikować jak go podłączyłeś, bo tak zaczynam podejrzewać, że podłączyłeś go odwrotnie (istotnie projekt jego PCB jest idiotyczny, bo ma być on zasilany tylko od strony MCU i drugie przyłącze zasilania jest zbędne)

To klon tej konstrukcji

Gdyby to była wersja jak na obrazku to ma być połączona tak (pomijam kwestie masy i zasilania, tylko chodzi mi o linie danych)

na zdjęciu widać, że masz na inaczej zaprojektowanej PCB, więc musisz prześledzić przebieg ścieżek., ale na bazie schematu widać, że piny 9 i 10 układu MAX3232 są po stronie MCU a piny 7 i 8 po stronie falownika

A no to proszę



Do połączeń elektrycznych nie ma się czego czepiać - podłączone jest dobrze.


Strzałki na module pokazują prawidłowy kierunek.
Nie wiadomo tylko czy do falownika jest podłączone prawidłowo - potrzebna wiarygodna dokumentacja. Na próbę można zamienić Rx Tx na połączeniu do falownika.
Czy parametru transmisji są poprawne?
Czy moduł jest sprawny i czy napewno na płytce siedzi MAX3232 ? :slight_smile:

1 polubienie

Do falownika mam orginalnego dongla na app. I tam w we wtyczce rj są tak samo przewody podpięte. A na dodatek tamto na app działa z tym że straszne ma opóźnienia dla tego taki pomysł by to podłączyć do HA.

“… tam, to, tamto” - rozumiem, wszystko jest dobrze i ma działać. :wink: :+1:

2 polubienia

Nie uważasz, że zaczynasz być bezczelny?
(pomijam fakt, że masz błędy ortograficzne w TAMTYM poście)

Ja bezczelny nie to kolega wiechał ze śmieszkami.

Kolega nie wjechał ze śmieszkami tylko oczekiwał, jak pozostali starający ci się pomóc, odpowiedzi na konkretne pytania. Ale widać wolisz walnąć focha i ewidentnie, technicznie temat cię przerasta. I to nie jest najgorsze, bo każdy ma prawo nie wiedzieć. Ale ty nie chcesz tego chyba przyznać.

Tylko ty wiesz co kryje się za tymi zaimkami i wygląda, że wiesz po swojemu lepiej.
Nic nie znaczy, że tamto działa to i to musi. :slightly_smiling_face:
Nie wiadomo nawet czy ten falownik jest z tego filmu.

1 polubienie