Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Solis inverter i HomeAssistant via modbus i esphome


Anbefalte innlegg

Fikk montert opp et nydelig solcelleanlegg i går, dette har Solis inverter. Og den har sin egen cloud løsning som kan integreres mot Home Assistant via HACS. Testa dette, og det fungerte fint. Men problemet for meg var at data ble sendt over med 5-10 minutters mellomrom. Jeg liker at sånn info strømmes kontinuerlig. Via comporten under inverteren der wifi dataloggeren står er en port med 4 pinner, her får du levert modbus signal og 5 volt.

 

1149511271_Skjermbilde2023-03-09kl_08_22_47.thumb.png.f5323829d7371adfc03f4c30ccf109be.png

 

IMG_2285.thumb.jpeg.699c3c1abbc9cedeaf050ff31153ff17.jpeg

 

Som dere ser på bildet brukte jeg bare kontakten som var på dataloggeren og lodda på en ledning. Står jo tall på den til og med. Har du ikke den, eller ønsker du ikke å bruke den (eller har den) så kan du nytte vanlig 7 DIN kontakt (tror du finner disse på gamle B&O anlegg)

 

1: 5volt

2: Jord

3: A+

4: B-

 

Så kobles dette opp til en ESP8266 eller ESP32 via en sånn TTL  Rs485 sak.

 

IMG_2293.thumb.jpeg.db9bce909262fd0a92663eb9e04effb5.jpeg

 

Alt dette kan stappes inn i casen til wifidongelen, og drives av inverterens 5 volt uttak.

 

Her er configen: Fungerer og gir alle parametere som er av interesse. Skal språkvaske litt, samt vurderer og å integrere feilmeldinger og sånt, så det kommer opp i home assistant, så skal jobbe litt mer med dette. Men her får du alt du trenger med tanke på og følge strømproduksjonen

 

Sitat

esphome:
  name: solis
  friendly_name: Solis


# Enable Home Assistant API
api:
  encryption:
    key: ""

ota:
  password: ""

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Solis Fallback Hotspot"
    password: ""

captive_portal:
substitutions:
  device_name: "Solis"


globals:
   - id: my_global_int
     type: int
     restore_value: no
     initial_value: '0'

esp8266:
  board: d1_mini

# Enable logging
logger:
  level: VERBOSE #makes uart stream available in esphome logstream
  baud_rate: 0 #disable logging over uart

 

uart:
  id: uart_modbus
  tx_pin: TX
  rx_pin: RX
  baud_rate: 9600

time:
- platform: homeassistant

modbus:
  id: modbus1
  uart_id: uart_modbus

modbus_controller:
  - id: modbus1_01
    address: 0x0001
    modbus_id: modbus1
    update_interval: 10s
    setup_priority: -10

sensor:
  - platform: wifi_signal
    name: "${device_name} WiFi Signal Sensor"
    update_interval: 60s

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    id: today_power_p1
    name: "${device_name} Strøm produsert i dag"
    address: 3014
    unit_of_measurement: "kWh"
    register_type: read
    value_type: U_WORD
    filters:
        - multiply: 0.1
    state_class: total_increasing
    device_class: energy

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} total strøm produsert"
    address: 3009
    unit_of_measurement: "kWh"
    register_type: read
    value_type: U_WORD
    state_class: total_increasing
    device_class: energy

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} produsert denne måneden"
    address: 3011
    unit_of_measurement: "kWh"
    register_type: read
    value_type: U_WORD
    state_class: total_increasing
    device_class: energy

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Strøm som produseres nå"
    address: 3005
    icon: "mdi:solar-power"
    unit_of_measurement: "W"
    register_type: read
    value_type: U_WORD

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} total DC strøm"
    address: 3007
    icon: "mdi:solar-power"
    unit_of_measurement: "W"
    register_type: read
    value_type: U_WORD

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} inverter temperatur"
    address: 3041
    icon: "mdi:thermometer"
    unit_of_measurement: "°C"
    register_type: read
    value_type: U_WORD
    filters:
      - multiply: 0.1
      - or:
        - throttle: 30min
        - delta: 2.0

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} frekvens"
    address: 3042
    icon: "mdi:sine-wave"
    unit_of_measurement: "Hz"
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.01

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC volt 1"
    address: 3021
    id: "dc_v_1"
    icon: "mdi:flash-outline"
    unit_of_measurement: "V"
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC volt 2"
    address: 3023
    id: "dc_v_2"
    icon: "mdi:flash-outline"
    unit_of_measurement: "V"
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC strøm 1"
    address: 3022
    icon: "mdi:flash-outline"
    id: "dc_a_1"
    unit_of_measurement: "A"
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC strøm 2"
    address: 3024
    icon: "mdi:flash-outline"
    id: "dc_a_2"
    unit_of_measurement: "A"
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: template
    name: "øvre rekke"
    icon: "mdi:solar-panel"
    unit_of_measurement: "W"
    lambda: |-
        return id(dc_v_1).state * id(dc_a_1).state;
    accuracy_decimals: 1

  - platform: template
    name: "nedre rekke"
    icon: "mdi:solar-panel"
    unit_of_measurement: "W"
    lambda: |-
        return id(dc_v_2).state * id(dc_a_2).state;
    accuracy_decimals: 1


  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} A volt"
    address: 3033
    icon: "mdi:flash-outline"
    unit_of_measurement: "V"
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} B volt"
    address: 3034
    icon: "mdi:flash-outline"
    unit_of_measurement: "V"
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} C volt"
    address: 3035
    icon: "mdi:flash-outline"
    unit_of_measurement: "V"
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} A strøm"
    address: 3036
    icon: "mdi:flash-outline"
    unit_of_measurement: "A"
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} B strøm"
    address: 3037
    icon: "mdi:flash-outline"
    unit_of_measurement: "A"
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} C strøm"
    address: 3038
    icon: "mdi:flash-outline"
    unit_of_measurement: "A"
    register_type: read
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

 

Endret av Curtsy0341
  • Like 2
Lenke til kommentar
Del på andre sider

  • 1 måned senere...

Det har vært på stedet hvil desverre. Har fokusert på HW fronten, samt fått komunikasjon mellom inverter og strømmåler og tesla wall charger så jeg kan lade etter solen.

 

Men, skal prøve meg litt fram de nærmeste dagene da jeg har fri:)

Lenke til kommentar
Del på andre sider

abbamust skrev (7 timer siden):

Hei du

Har du sett på hvordan du kan få ut feilkoder fra inverteren?

Jeg har også solis i home assistant via modbus, men klarer ikke hente noe data fra registeradresse 2501 og oppover...

 

Kan dette fungere:

 

Sitat
binary_sensor:

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Grid Over Voltage"
    register_type: discrete_input
    address: 2501

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Grid Under Voltage"
    register_type: discrete_input
    address: 2502

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Grid Over Frequency"
    register_type: discrete_input
    address: 2503

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Grid Under Frequency"
    register_type: discrete_input
    address: 2504

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Grid wrong polarity"
    register_type: discrete_input
    address: 2505

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} No Grid"
    register_type: discrete_input
    address: 2506

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Grid Unbalance"
    register_type: discrete_input
    address: 2507

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Grid Frequency Fluctuation"
    register_type: discrete_input
    address: 2508

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Grid Over Current"
    register_type: discrete_input
    address: 2509

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Grid Current Tracking Fault"
    register_type: discrete_input
    address: 2510

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC Over Voltage"
    register_type: discrete_input
    address: 2518

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC Bus Over Voltage"
    register_type: discrete_input
    address: 2519

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC Bus Unbalance"
    register_type: discrete_input
    address: 2520

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC Bus Under Voltage"
    register_type: discrete_input
    address: 2521

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC Bus Unbalance 2"
    register_type: discrete_input
    address: 2522

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC(Channel A ) Over Current"
    register_type: discrete_input
    address: 2523

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC(Channel B ) Over Current"
    register_type: discrete_input
    address: 2524

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC Over Current"
    register_type: discrete_input
    address: 2525

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC wrong polarity"
    register_type: discrete_input
    address: 2526

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} PV mid-point grounded"
    register_type: discrete_input
    address: 2527

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} The Grid Interference Protection"
    register_type: discrete_input
    address: 2534

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} The DSP Initial Protection"
    register_type: discrete_input
    address: 2535

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Over Temperature Protection"
    register_type: discrete_input
    address: 2536

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} PV Insulation Fault"
    register_type: discrete_input
    address: 2537

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Leakage Current Protection"
    register_type: discrete_input
    address: 2538

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Relay Protection"
    register_type: discrete_input
    address: 2539

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DSP_B Protection"
    register_type: discrete_input
    address: 2540

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC Injection Protection"
    register_type: discrete_input
    address: 2541

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} 12V Under Voltage Protection"
    register_type: discrete_input
    address: 2542

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Leakage Current Check Protection"
    register_type: discrete_input
    address: 2543

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Under Temperature PRO"
    register_type: discrete_input
    address: 2544

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} AFCI Check Fault"
    register_type: discrete_input
    address: 2550

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} AFCI Fault"
    register_type: discrete_input
    address: 2551

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} The Grid Interference 02 Protection"
    register_type: discrete_input
    address: 2556

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} The Grid Current Sampling Error"
    register_type: discrete_input
    address: 2557

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} IGBT Over Current"
    register_type: discrete_input
    address: 2558

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} normal operasjon"
    register_type: discrete_input
    address: 2566

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} initial standby"
    register_type: discrete_input
    address: 2567

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} control to shutdown"
    register_type: discrete_input
    address: 2568

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} fault to shutdown"
    register_type: discrete_input
    address: 2569

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} standby"
    register_type: discrete_input
    address: 2570

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} derating"
    register_type: discrete_input
    address: 2571

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Limiting"
    register_type: discrete_input
    address: 2572

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Backup OVLoad"
    register_type: discrete_input
    address: 2573

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Grid surge(Warn)"
    register_type: discrete_input
    address: 2574

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} feil med vifte"
    register_type: discrete_input
    address: 2575

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} AC SPD fault(Warn)"
    register_type: discrete_input
    address: 2576

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} DC SPD fault(Warn)"
    register_type: discrete_input
    address: 2577

  - platform: modbus_controller
    modbus_controller_id: modbus1_01
    name: "${device_name} Fan fault(Warn External)"
    register_type: discrete_input
    address: 2578

 

 

Endret av Curtsy0341
Endret modbus adresse til uten offsett
Lenke til kommentar
Del på andre sider

Hmm

Jeg henter sensorer fra Solis litt annerledes.

Ser slik ut hos meg, og det funker fint på feks adresse 3014:

modbus:
  - name: "solis_L"
    type: tcp
    host: 192.168.1.242
    port: 8899
    sensors:
      - name: Solis_L_Generation_Today
        unique_id: solisL.generation_today
        slave: 1
        address: 3014
        input_type: input
        scale: 0.1
        precision: 1
        count: 1
        unit_of_measurement: kWh
        scan_interval: 300
        state_class: total_increasing
        device_class: energy
        lazy_error_count: 5

 

 

Men for 2501 får jeg bare "unavaliable"

- name: Solis_H_Error1
        unique_id: solisH.error1
        address: 2501
        input_type: holding
        count: 1
        slave: 1
        precision: 1

 

Lenke til kommentar
Del på andre sider

  • 11 måneder senere...

Hei.

Har noen erfaring med å kjøre både den offisielle WiFi-sticken og en ESPHome parallelt på en Solis-inverter? Jeg er interessert i å beholde funksjonaliteten og datainnsamlingen fra WiFi-sticken samtidig som jeg får mer granulær og hyppigere data via en direkte Modbus-tilkobling med ESPHome. 

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.