Skip to content
View in the app

A better way to browse. Learn more.

Power Forum - Renewable Energy Discussion

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

My Sunsynk 8Kw & data collection setup

Featured Replies

  • Replies 653
  • Views 177.1k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • If you want to try this card in home assistant follow these steps. 1. Create a new directory under www/community/ and name it sunsynk-card. If you don't have HACS installed you can create directo

  • Hi all. Here is my version to get Sunsynk 8.8 Modbus metrics in Home Assistant: Required Hardware: ESP32 Development Board @R149.95 https://www.diyelectronics.co.za/store/espressif-iot/1495-

  • Thought I would also contribute with something small. Not as impressive as what some of the others here but a contribution nonetheless. The GUI for Sunsynk System Mode, or lack thereof, has reall

Posted Images

Hi All,


 
Was wondering if anyone had info on this cable that i purchased. It has USB but on other side a few wires that i need to crimp to RJ45. 


 
Not sure of order with this colour scheme. Any help appreciated.


 
Thanks

WhatsApp Image 2023-01-26 at 16.01.38.jpeg

A google search gave this, but obviously use on your own risk...

Si-Sensor

Victron RS485 to USB interface

Signal

Brown

Orange

RS485 Data A +

Orange

Yellow

RS485 Data B -

Red

-

Power Pos - 12 to 28 VDC

Black

 

Power Neg/Gnd - 0 VDC

Black (thick)

-

Ground / Cable Shield / PE

-

Red

Power Pos - 5 VDC (not used)

-

Black

Power Neg/Gnd - 0 VDC (not used)

 

Brown

Terminator 1 - 120R (not used)

 

Green

Terminator 2 - 120R (not used)

On 2023/01/20 at 12:56 PM, Decsus said:

Does a wrong serial number (not modbus SN) affect the connection at this stage, if so where do I get the correct one?

I have tried all of these, thus also a second USB-rs485 module

Can the mbusd also run on the same Raspi, or must i get a second device (pi or similar) to run that?

 

Also what does this mean? 

2023-01-20 12:55:37,640 ERROR   Read Error: (1,16,2) CRC validation failed.
  • The wrong serial nr in the config does not affect reading the serial from the device... It will tell you if the number was wrong.
  • mbusd can run anywhere, including the same pi
  • A crc error can be due to bad wiring/not using a pair/a bad cable/bad module/too much interference/you trying everything and causing the smoke to escape...
10 hours ago, kellerza said:

A google search gave this, but obviously use on your own risk...

Si-Sensor

Victron RS485 to USB interface

Signal

Brown

Orange

RS485 Data A +

Orange

Yellow

RS485 Data B -

Red

-

Power Pos - 12 to 28 VDC

Black

 

Power Neg/Gnd - 0 VDC

Black (thick)

-

Ground / Cable Shield / PE

-

Red

Power Pos - 5 VDC (not used)

-

Black

Power Neg/Gnd - 0 VDC (not used)

 

Brown

Terminator 1 - 120R (not used)

 

Green

Terminator 2 - 120R (not used)

Thank you @kellerza. I see that matches with my other image i found.

So

B(Yellow) to RJ45 pin 1

A(Orange) to RJ45 pin2

GND(Black) to RJ45 pin3 

and i should be good to go?

 

Thanks for your lib.

Screenshot 2023-01-26 at 21.18.21.png

12 hours ago, kellerza said:
  • The wrong serial nr in the config does not affect reading the serial from the device... It will tell you if the number was wrong.
  • mbusd can run anywhere, including the same pi
  • A crc error can be due to bad wiring/not using a pair/a bad cable/bad module/too much interference/you trying everything and causing the smoke to escape...

@kellerzaSeems to have worked i think?

 

 

Screenshot 2023-01-27 at 10.28.53.png

Thanks @kellerza

Just an update. I made use of said cable above and crimped Orange, Yellow and Black to pins 1,2,3 on the RJ45.

I made use of KellerZa repo which worked straight away but with some timeout issues which i thought wasnt refreshing the data quick enough.

i added more sensors and did some tests and data seems to be coming quicker on MQTT now.

example of my Sunsynk Yaml which i edited from the add-on:

PORT: ""
DEVICE: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A10KD3ZH-if00-port0
DRIVER: umodbus
SUNSYNK_ID: "2209133222"
SENSOR_PREFIX: ""
SENSORS:
  - total_pv_power
  - total_battery_charge
  - total_battery_discharge
  - total_grid_export
  - total_grid_import
  - battery_soc
  - battery_temperature
  - grid_voltage
  - battery_power
  - inverter_power
  - load_power
  - grid_power
  - battery_voltage
  - overall_state
  - grid_connected_status
  - total_active_energy
  - total_pv_energy
  - rated_power
  - pv1_power
  - pv2_power
READ_SENSORS_BATCH_SIZE: 60
NUMBER_ENTITY_MODE: auto
PROFILES: []
MODBUS_SERVER_ID: 1
MQTT_HOST: core-mosquitto
MQTT_PORT: 1883
MQTT_USERNAME: admin
MQTT_PASSWORD: <pwd>
DEBUG: 2

 

Screenshot 2023-01-27 at 14.30.06.png

WhatsApp Image 2023-01-27 at 14.21.27.jpeg

  • 2 weeks later...
  • Author

@jacauc Have you noticed any issues with the ESP32 and reading you are getting from it after the latest updates? 

I started getting all sorts of weird reading SOC @ 3800 etc after I did some updates on the 5th. 

I think it may have something to do with the updates of Home Assistant core from 2023.1.7 to version 2023.3.2 as when I roll it back the issues go away. 

Was wondering if you have experienced the same issue? 

7 hours ago, Sc00bs said:

@jacauc Have you noticed any issues with the ESP32 and reading you are getting from it after the latest updates? 

I started getting all sorts of weird reading SOC @ 3800 etc after I did some updates on the 5th. 

I think it may have something to do with the updates of Home Assistant core from 2023.1.7 to version 2023.3.2 as when I roll it back the issues go away. 

Was wondering if you have experienced the same issue? 

No issues whatsoever. Running bleeding edge of HA and ESPHOME. 

 

  • Author

Strange, am getting CRC  errors in the logs on the ESP32 

[22:20:38][W][modbus:105]: Modbus CRC Check failed! B969!=604
[22:20:38][W][modbus:105]: Modbus CRC Check failed! 3A13!=FFFF
[22:20:39][W][modbus:105]: Modbus CRC Check failed! C0C1!=403
[22:20:39][W][modbus:105]: Modbus CRC Check failed! CE1!=7F7F
[22:20:39][W][modbus:105]: Modbus CRC Check failed! 840!=7FFF
[22:20:39][W][modbus:105]: Modbus CRC Check failed! E041!=FF7F 

 

Not sure if related, but is your inverter set up for Modbus ID #1? 

 

Also have a good look at the cabling between the esp and the inverter 

Edited by jacauc

  • 2 weeks later...

Hi everyone. A simple display showing just the SoC on a LCD screen for occupants to know makes a big difference in behavioural change of a household. How can i tead that of the modbus (with an esp32) and sent the data to a display on another esp32 with and lcd screen?

Can anyone help?

  • Author

Hi @TinkerGuy

I have been thinking of doing this exact thing at home 🙂

I think that the easiest would be to use ESPhome as it is pretty easy to do, was actually playing around with some options using either a number of individually addressable LED's to create a type of fuel gauge or alternatively use a OLED or LCD Screen. 

I liked the idea of using WS2812 strips, trhey can be individually switched on and off and the colour can be changed when SOC gets low. Maybe have a second strip to indicate load shedding and then a 3rd one for the amount of power going in/out the battery. 

ChatGPT can actually write most of the code for you 🙂 

image.png.49697abb312eef9236d1f47ccaa69b77.png

9 hours ago, Sc00bs said:

Hi @TinkerGuy

I have been thinking of doing this exact thing at home 🙂

I think that the easiest would be to use ESPhome as it is pretty easy to do, was actually playing around with some options using either a number of individually addressable LED's to create a type of fuel gauge or alternatively use a OLED or LCD Screen. 

I liked the idea of using WS2812 strips, trhey can be individually switched on and off and the colour can be changed when SOC gets low. Maybe have a second strip to indicate load shedding and then a 3rd one for the amount of power going in/out the battery. 

ChatGPT can actually write most of the code for you 🙂 

image.png.49697abb312eef9236d1f47ccaa69b77.png

If your inverter is far from the living area you could also consider using another esp32 board elsewhere in the house reading values from home assistant or mqtt and adjusting the display accordingly. I've played around with displays with built-in I2C modules and it's dead easy. Make sure you use I2C displays otherwise cabling is way more complex 

20 hours ago, TinkerGuy said:

How can i tead that of the modbus (with an esp32) and sent the data to a display on another esp32 with and lcd screen?

Can anyone help?

What is your current setup with regards to data collection? Do you run home assistant? It is dead easy to subscribe to a MQTT topic with an ESP and write the value to a screen, assuming you can do some basic programming. I like @Sc00bs's idea of using a neopixel strip. 

Personally I use telegram and it sends out a message when the power goes off/on with the current battery percentage. Since we have solar we do not really look at the schedules a lot. When the battery is low you obviously have to pay attention

Thought I would also contribute with something small. Not as impressive as what some of the others here but a contribution nonetheless.

The GUI for Sunsynk System Mode, or lack thereof, has really been annoying me, so I put this together. It needed to be easy to read to quickly understand what's going on, and also easy for the wife to change if needed.

It requires the lovelace-layout-card to work. For my purposes, it's also a separate view.

image.thumb.png.38cc7e274ced573b274df00fe62bcac3.png

views:
  - theme: Backend-selected
    title: Grid layout
    type: custom:grid-layout
    layout:
      grid-template-columns: 3fr 2fr 2fr 3fr
      grid-template-rows: auto
      grid-template-areas: |
        ". header header ."
        ". system priority ."
        ". prog1 prog2 ."
        ". prog3 prog4 ."
        ". prog5 prog6 ."
      mediaquery:
        '(max-width: 800px)':
          grid-template-columns: auto
          grid-template-areas: |
            "header"
            "system"
            "priority"
            "prog1"
            "prog2"
            "prog3"
            "prog4"
            "prog5"
            "prog6"
    badges: []
    cards:
      - type: entities
        entities:
          - entity: select.system_mode
        show_header_toggle: false
        view_layout:
          grid-area: system
      - type: vertical-stack
        cards:
          - type: custom:mushroom-template-card
            primary: Program 1
            secondary: >-
              {{ states("select.prog1_time") }} - {{ states("select.prog2_time")
              }}
            icon: mdi:timer
            multiline_secondary: false
            badge_icon: mdi:lightning-bolt
            icon_color: blue
            badge_color: green
            fill_container: false
          - type: horizontal-stack
            cards:
              - type: entities
                entities:
                  - entity: select.prog1_time
              - type: entities
                entities:
                  - entity: select.prog1_charge
          - type: entities
            entities:
              - type: custom:slider-entity-row
                entity: number.prog1_power
                name: Power
                grow: true
              - type: custom:slider-entity-row
                entity: number.prog1_capacity
                name: Battery SOC
        view_layout:
          grid-area: prog1
      - type: vertical-stack
        cards:
          - type: custom:mushroom-template-card
            primary: Program 2
            secondary: >-
              {{ states("select.prog2_time") }} - {{ states("select.prog3_time")
              }}
            icon: mdi:timer
            multiline_secondary: false
            badge_icon: mdi:lightning-bolt
            icon_color: blue
            badge_color: green
            fill_container: false
          - type: horizontal-stack
            cards:
              - type: entities
                entities:
                  - entity: select.prog2_time
              - type: entities
                entities:
                  - entity: select.prog2_charge
          - type: entities
            entities:
              - type: custom:slider-entity-row
                entity: number.prog2_power
                name: Power
                grow: true
              - type: custom:slider-entity-row
                entity: number.prog2_capacity
                name: Battery SOC
        view_layout:
          grid-area: prog2
      - type: vertical-stack
        cards:
          - type: custom:mushroom-template-card
            primary: Program 3
            secondary: >-
              {{ states("select.prog3_time") }} - {{ states("select.prog4_time")
              }}
            icon: mdi:timer
            multiline_secondary: false
            badge_icon: mdi:lightning-bolt
            icon_color: blue
            badge_color: green
            fill_container: false
          - type: horizontal-stack
            cards:
              - type: entities
                entities:
                  - entity: select.prog3_time
              - type: entities
                entities:
                  - entity: select.prog3_charge
          - type: entities
            entities:
              - type: custom:slider-entity-row
                entity: number.prog3_power
                name: Power
                grow: true
              - type: custom:slider-entity-row
                entity: number.prog3_capacity
                name: Battery SOC
        view_layout:
          grid-area: prog3
      - type: vertical-stack
        cards:
          - type: custom:mushroom-template-card
            primary: Program 4
            secondary: >-
              {{ states("select.prog4_time") }} - {{ states("select.prog5_time")
              }}
            icon: mdi:timer
            multiline_secondary: false
            badge_icon: mdi:lightning-bolt
            icon_color: blue
            badge_color: green
            fill_container: false
          - type: horizontal-stack
            cards:
              - type: entities
                entities:
                  - entity: select.prog4_time
              - type: entities
                entities:
                  - entity: select.prog4_charge
          - type: entities
            entities:
              - type: custom:slider-entity-row
                entity: number.prog4_power
                name: Power
                grow: true
              - type: custom:slider-entity-row
                entity: number.prog4_capacity
                name: Battery SOC
        view_layout:
          grid-area: prog4
      - type: vertical-stack
        cards:
          - type: custom:mushroom-template-card
            primary: Program 5
            secondary: >-
              {{ states("select.prog5_time") }} - {{ states("select.prog6_time")
              }}
            icon: mdi:timer
            multiline_secondary: false
            badge_icon: mdi:lightning-bolt
            icon_color: blue
            badge_color: green
            fill_container: false
          - type: horizontal-stack
            cards:
              - type: entities
                entities:
                  - entity: select.prog5_time
              - type: entities
                entities:
                  - entity: select.prog5_charge
          - type: entities
            entities:
              - type: custom:slider-entity-row
                entity: number.prog5_power
                name: Power
                grow: true
              - type: custom:slider-entity-row
                entity: number.prog5_capacity
                name: Battery SOC
        view_layout:
          grid-area: prog5
      - type: vertical-stack
        cards:
          - type: custom:mushroom-template-card
            primary: Program 6
            secondary: >-
              {{ states("select.prog6_time") }} - {{ states("select.prog1_time")
              }}
            icon: mdi:timer
            multiline_secondary: false
            badge_icon: mdi:lightning-bolt
            icon_color: blue
            badge_color: green
            fill_container: false
          - type: horizontal-stack
            cards:
              - type: entities
                entities:
                  - entity: select.prog6_time
              - type: entities
                entities:
                  - entity: select.prog6_charge
          - type: entities
            entities:
              - type: custom:slider-entity-row
                entity: number.prog6_power
                name: Power
                grow: true
              - type: custom:slider-entity-row
                entity: number.prog6_capacity
                name: Battery SOC
        view_layout:
          grid-area: prog6
      - type: custom:mushroom-title-card
        title: Sunsynk System Mode
        alignment: center
        view_layout:
          grid-area: header
      - type: entities
        entities:
          - entity: select.priority_mode
        view_layout:
          grid-area: priority

 

12 hours ago, Rynoster said:

The GUI for Sunsynk System Mode, or lack thereof...

Very nice layout @Rynoster!

Another quick option is the "Add to dashboard" button, available in the Home Assistant settings (Settings->Devices&Services-->Devices-->Sunsynk). But the layout is not as slick.

The dashboard I use you have to click to change a value. It still provides an overview, but it's not so easy to accidentally change a setting 😉

image.png.526b53f7e8068c50f6e4e2fd299ca2e2.png

image.thumb.png.338a0a859f67de397a5a091e0630f933.png

  • Author

Hi @TinkerGuy

Put an LCD display together to display the values I desired from the data I am pulling from the Inverter. 

I used ESPhome to do it so still working out how it all works but not too difficult to do.

Going to play around with it a bit more and may see what the coloured LED bars looks like as well .  I suspect that the coloured bars may be more useful for a quick glance to see what is going on.

image.png.4586b513b66c1b87ff790007d712b547.png

  • Author

image.thumb.png.32d62a402d83063cc7d13fd36dd06eaa.png

Updated 🙂 

Code is way simple 

 

 

esphome:
  name: esphome-web-c99f28
  friendly_name: LCD Display
 
esp32:
  board: esp32dev
  framework:
    type: arduino
 
# Enable logging
logger:
 
# Enable Home Assistant API
api:
  encryption:
    key: "?????????????????????????????????????????"
 
ota:
 
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
 
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-Web-C99F28"
    password: "GjiirKa2VeFe"
 
captive_portal:
 
# Example configuration entry
i2c:
  sda: 21
  scl: 22
 
sensor:
  - platform: homeassistant
    id: battery_soc
    entity_id: sensor.ss_battery_soc
    internal: true
 
  - platform: homeassistant
    id: grid_frequency
    entity_id: sensor.ss_grid_frequency
    internal: true
 
  - platform: homeassistant
    id: inverter_power
    entity_id: sensor.ss_inverter_output_power
    internal: true
 
  - platform: homeassistant
    id: total_pv
    entity_id: sensor.ss_total_pv_power
    internal: true
 
display:
  - platform: lcd_pcf8574
    dimensions: 20x4
    address: 0x27
    update_interval: 5s
    lambda: |-
      it.printf(0, 0, " SOC: %.1f %", id(battery_soc).state);
      it.printf(0, 1, " Grid Freq: %.1f Hz", id(grid_frequency).state);
      it.printf(0, 2, " Inver Power: %.1f W", id(inverter_power).state);
      it.printf(0, 3, " Total PV: %.1f W", id(total_pv).state);
On 2023/02/25 at 6:25 AM, kellerza said:

Very nice layout @Rynoster!

Another quick option is the "Add to dashboard" button, available in the Home Assistant settings (Settings->Devices&Services-->Devices-->Sunsynk). But the layout is not as slick.

The dashboard I use you have to click to change a value. It still provides an overview, but it's not so easy to accidentally change a setting 😉

Thanks kellerza, appreciate the response.

To be fair, us "techies" enjoy fixing broken stuff, almost more than half the fun, so an accidental setting here or there contributes to the fun. 😛 

  • Author
57 minutes ago, Rynoster said:

Thanks kellerza, appreciate the response.

To be fair, us "techies" enjoy fixing broken stuff, almost more than half the fun, so an accidental setting here or there contributes to the fun. 😛 

Or fix it till it is totally broken 🙂 

On 2023/01/08 at 8:43 PM, Klatremis said:

I only made this user to share this 🤣 Thanks all for the inspiration. 

Exactly as BrettC suggest, I made this in the weekend for my deye :) I have shared it with some hundreds other danish deye owners and waiting for more feedback.

The adresses i use is matching my 12kW 3 phase, low voltage hybrid deye inverter. I seems for me that the modbus adresses does not match your sunsync inverters(deye inverters).

github.com/klatremis/esphome-for-deye

 

Skærmbillede 2023-01-08 214449.png

esp32 rs485_bb.jpg

Hello,

First of all, a big thanks for the different contributors who made an outstanding job and share it after with the community. 

With this solution (ESP32 and ESPHome) to retrieve/write data to the Deye inverters, how fast is it possible to retrieve data from the inverter? Every second, every 5 seconds, every 30 secs...??

Thanks,

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.