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.

BobTheDinosaur

Members
  • Joined

  • Last visited

Everything posted by BobTheDinosaur

  1. I have a bunch of Hubble AM2s and only learned 2 years after purchase that they are a different chemistry from the norm. Had I known at the time I would have gotten the AM5s. After reading about the differences I'm now somewhat paranoid about a battery fire. Has anyone seen an AM2 fail catastrophically? Apparently they have an internal fire suppression system, would like to see what effect that has on the fire. Any other experiences with other brands of batteries going up in flames?
  2. AFAIK fireballs explicitly state that they're not for lithium batteries. You need a special fire extinguisher for that (pricey) and a special kind of blanket as well, class D equipment. Fireball is class C. Conventional firefighting equipment can just make a lithium fire worse.
  3. @shovelhead see this thread, i went with Tuya local integration, worked a charm. https://powerforum.co.za/topic/23847-jet-air-aircon-jasa-tuya-home-assistant-integration/
  4. PSA update, 2 years later. The JASA app became unavailable on Android for a while and I had to move my aircons onto the Smartlife app (Tuya clone). Functionality for one of my aircons was incomplete - couldn't control fan speed, couldn't select all operation modes (heating for instance). Tried out the HA integration called Tuya Local https://github.com/make-all/tuya-local Followed instructions, made use of the Tuya developer platform during setup, everything was basically done for me by the Tuya Local integration. It detected the Jet-Air aircon as a "tesla airconditioner". Entity in HA for this aircon now has full functionality, like functions I had never seen before even. 5 stars Would recommend.
  5. Resurrecting an old thread here. Did you ever figure this out? I have 2x JASA aircons. Both worked with full functionality in the JASA app. But pulled into smart-life or tuya smart and then via those integrations in HA ends up with the upstairs unit not having fan speed control. When pulled into HA from Tuya integration it shows the fan up/down function where the other unit shows the fan speed. Was it as simple as enabling entities?
  6. Thanks. Is this not the same cable as one needs for the firmware update then? Hubble had met buy a serial cable for that, but didn't mention that it needed to be a very specific one. The solarassistant version has a telephone plug head instead of serial, I'm confused. This is cable I got. https://www.takealot.com/astrum-pa340-usb-to-rs232-serial-adapter-prolific-ic-usb2-0-to-d/PLID53811509
  7. No, if there's no grid the bms will let the packs run down to zero. According to hubble I could have run them below 42V while recalibrating all the packs and then they'd need to be jump started, however that works.
  8. PBMS? Is that the tool provided by hubble or a 3rd party? I haven't fiddled with the BMS other than an update ages ago.
  9. So I've tried using voltage mode but the BMS still rules supreme. Would disconnecting the comms cable be the way forward? I assume the inverter would then just read the voltage off the batteries the old fashioned way and the BMS wouldn't know if there is grid or not...?
  10. @zsde Resurrecting an old thread here, but hubble has grated my tits with this issue. Reason I couldn't get any good data myself for a very long time (and didn't reply here) was that my ESP32 integration into homeassistant, that I use to monitor data from the inverter, started giving deranged readings. I even had the inverter sent in for repairs and they apparently replaced the comms board but that didn't solve the issue. Whenever my batteries would hit 15% (this became the new minimum after the firmware updates) my modbus data would go berserk, and occasionally I'd get whacky data for a second even when they weren't at 15%. I recently called Hubble and they gave me some rebalancing instructions which also did nothing. So i figured I'd try one battery at a time as a solo battery and viola the erratic and inaccurate data being fed through my inverter's modbus port cleared up. When I put the string of 4 batteries back together I made the newest one the master on a hunch and the problem has stayed away. So with that saga behind me I set about trying to figure out why I can't go below 15%, which as you said in posts on this thread is because of the BMS settings. But that's BS, I paid for a 5kwh battery and I want to be able to use all 5kwh. The sizing of my system was based on this assumption and if I'd known that hubble AM2s did this, where other batteries do not, then I would not have bought Hubble... The fact that my house couldn't make it through the night on 4x 5kwh batteries is what got me going, because by my calculations, even at 15% minimum we should still be just squeezing through to the next day. With the clean data I could now see how much energy was being discharged from the hubbles and wouldn't you know it - I only get 16kWh out of the 20kWh pack, which is actually 22kWh based on the 5.5kWh total capacity of each pack. So, as a possible workaround, could one bypass the BMS limit by running the batteries on AGM voltage mode?
  11. Just came here looking to see if anyone had dealt with them before. On google maps there are reviews of that business park referring to another solar equipment scam business. https://maps.app.goo.gl/eQiATU6LXajWDCzj9 Theese guys also require payment via EFT not card. Which is irreversible. Lastly the "verified business" banner on their site is just an image. It doesn't click through to the independent site that gave them that rating. Major red flags. 99% sure it's a scam.
  12. I have a 3ph solar power system that overproduces in summer and got the 3ph AMI meter from the City so I could start feeding back into the grid and save a few bucks. The new meter is no longer prepaid so I now get my electricity charge on my rates bill in the mail like the old days. Feed-in was activated not quite a month ago and I've recently received my rates bill showing my consumption, but nothing about feed-in. During this period I sent back to the grid about 50kWh. Does anyone know how this works? Does the meter just run backwards at a reduced rate and the reading on the meter at the end of the period reflects this? See below screenies from my rates bill. Electricity is not mentioned anywhere else.
  13. I couldn't tell you as I'm not by the inverter when this happens, but the house lights are off for about 1-2secs. I feel like a reboot takes longer than that? The inverter logs don't actually record a reboot either... I also suspected it might have something to do with the neutral. What would the correct way be to connect the neutral so that they are independent?
  14. An update. My electrician/installer tells me this is happening to a variety of clients with the new bout of loadshedding and it's grid related, but can't explain it yet. Says the times it's happening is also the same.
  15. That's why I mentioned the UPS failure, this only happens when the inverter does this reboot. If I dropped the breaker on the whole house right now the UPS keeps my office running no problem. What is the input power MCB?
  16. With the return of loadshedding my SunSynk has developed a new issue. Twice now, at the 12:10am mark when power came on in my area (after there had been 2-3 other load sheddings during the day, without issue) the inverter turned off entirely, the house went dark (no essential circuits, whole house on inverter) and about 1-2 seconds later the lights came back on. Again, it had dealt with 2 or more loadsheddings during the same day with at most a flicker of the lights to indicate the loss of grid power. Batteries were above 60% and load was maybe 1.5-2kw. There is nothing in the sunsynk apps logs about this. What makes it extra weird is that my 1kVa mecer office inverter, which sometimes beeps and kicks in for a second when grid power (via the sunsynk) drops or restores completely fails to catch this drop in power. So everything in my office also turns off for a second. It did not do this in the past. But I do have a weird issue with my MODBUS port that gives me whacky readings when using an ESPHome setup to read inverter variables for home assistant automations. The inverter had its comms board replaced to see if that fixes the issue but it did not. I suspect this has something to do with one of my batteries BMSs as readings go extra wonky if batteries are at minimum (15%). 4x Hubble AM2s. The only other item that's changed recently is I had the feed-in meter installed (3 phase, not active yet) and my installers had to remove my old prepaid meter and just joined the wires where the meter used to be, they're taped up so can't see what's keeping them together. Any advice or ideas would be appreciated!
  17. Hey Slipx. Could you share the source doc or manual for the sunsynk 3ph registers from sunsynk or whoever wrote the 1ph one that I've been able to find. There are some registers in your esphome config for sunsynk 3ph that I don't understand and I'm hoping there's a description in the original manual.
  18. @slipx,@kellerza, @Sc00bs Update and some progress, hoping Kellerza has some insight into this. My ESP32 has always been plugged into the inverter's Modbus port ("Modebus") and worked great for months. I read on a thread here that solarassistant advises using the 485 meter port. So I switched today. https://powerforum.co.za/topic/8451-sunsynk-inverter-monitoring/page/24/ While on the Modbus port the esphome logs were showing lots of chunks CRC errors, when switching to the 485 meter port those CRC errors reduced drastically in number and frequency. The problem still hasn't gone away with the registers I mentioned in my post above. Though my dev buddy has helped by applying a filter with two options to the Battery SOC register: filters: - filter_out: 44474 # - clamp: # min_value: 0 # max_value: 100 # ignore_out_of_range: true As the error was a consistently intermittent 44,474 kWh the first filter did the job. I found some related posts here: https://github.com/kellerza/sunsynk/issues/63 Now this begs the question, should I be on the BMS port using a splitter? Or should I factory reset my inverter and see what happens?
  19. Yup. did that full power down. didn't change a thing
  20. 588 Battery SOC 520 Day grid import 529 Day PV energy 672+673 PV1+PV2 Power Those are the ones I noticed on my dash. According to a developer friend who's had a look there are a few more but that was just mentioned in passing, will hopefully be able to look at it with him again tomorrow. To reiterate - nothing changed on the ESP32, it just started doing this by itself maybe 1-2 months ago. It also only seems to report these spikes when the values for these registers are at their lowest point. So for battery SOC it only spikes when SOC hits 15% which is the lowest it'll go. Day PV energy only spikes when it stops increasing i.e. PV has gone to zero. Day grid import spikes randomly from what I can tell.
  21. I changed to a 3.3V RS485. I think i found it on this thread, but it's this one. https://www.communica.co.za/products/wvs-rs485-3-3v-breakout-module?variant=44563441254700 To me it's looking like a code issued. Something to do with the modbus comms. Which is why I'm hoping Slipx has some ideas.
  22. So i've replaced both my RS485 and ESP32 (matching voltages now) and got ESPHOME set up and running again, all sensors are working but my problem remains. I have regular, intermittent absurdly high readings on a few sensors. @slipx have you got any ideas? I found this post which seems to have the same problem as I do, at least when looking at his debug info for his battery SOC. https://community.home-assistant.io/t/modbus-errors-on-sunsynk/604063
  23. So I've found that the read error is only when my batteries are at minimum, which is 15% (then it reports 44,474% almost constantly), or when SunSynk Day PV is at zero then it reports 6,483.1 kWh every hour or so, and SunSynk Day Grid Import just randomly reports 1,333kWh Here comes the code: ##########################WARNING HAS NOT BEEN TESTED USE AT YOUR OWN RISK ######################################## # Based on https://github.com/kellerza/sunsynk/blob/main/src/sunsynk/definitions3ph.py # substitutions: settings_skipped_updates: "10" devicename: sunsynk device_description: "Sunsynk RS485 Logger" friendly_name: "SunSynk" esphome: name: $devicename comment: '${device_description}' esp32: board: nodemcu-32s framework: type: arduino # Enable logging logger: baud_rate: 0 # Enable Home Assistant API api: encryption: key: "" ota: password: "" wifi: ssid: password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: '${devicename}' password: fallback_password fast_connect: true power_save_mode: none captive_portal: # Enable time component to reset energy at midnight # https://esphome.io/components/time.html#home-assistant-time-source time: - platform: homeassistant id: homeassistant_time uart: id: mod_bus tx_pin: GPIO17 rx_pin: GPIO16 baud_rate: 9600 stop_bits: 1 modbus: id: sunsynk_modbus flow_control_pin: GPIO4 modbus_controller: - id: sunsynk address: 0x01 modbus_id: sunsynk_modbus setup_priority: -10 update_interval: "15s" command_throttle: "50ms" ############################################### BINARY SENSORS ######################################## binary_sensor: - platform: modbus_controller # 552 Grid Connected Status modbus_controller_id: sunsynk name: "${friendly_name} Grid Connected Status" id: sunsynk_esphome_grid_connected_status register_type: holding address: 552 # SENSORS # ####################################################################################################### ############################################### BATTERY ############################################### sensor: - platform: modbus_controller modbus_controller_id: sunsynk name: '${friendly_name} Battery Temperature' id: sunsynk_esphome_battery_temperature register_type: holding address: 586 unit_of_measurement: °C accuracy_decimals: 1 device_class: temperature state_class: measurement value_type: U_WORD filters: - offset: -1000 - multiply: 0.1 - platform: modbus_controller # 587 Battery Voltage modbus_controller_id: sunsynk name: "${friendly_name} Battery Voltage" id: sunsynk_esphome_battery_voltage register_type: holding address: 587 unit_of_measurement: "V" accuracy_decimals: 1 device_class: voltage state_class: measurement filters: - multiply: 0.01 value_type: U_WORD - platform: modbus_controller # 588 Battery SOC modbus_controller_id: sunsynk name: "${friendly_name} Battery SOC" id: sunsynk_esphome_battery_soc register_type: holding address: 588 unit_of_measurement: "%" accuracy_decimals: 0 device_class: battery value_type: U_WORD - platform: modbus_controller # 590 Battery Power modbus_controller_id: sunsynk name: "${friendly_name} Battery Power" id: sunsynk_esphome_battery_power register_type: holding address: 590 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power value_type: S_WORD - platform: modbus_controller # 591 Battery Current modbus_controller_id: sunsynk name: "${friendly_name} Battery Current" id: sunsynk_esphome_battery_current register_type: holding address: 591 unit_of_measurement: "A" accuracy_decimals: 1 device_class: current state_class: measurement value_type: S_WORD filters: - multiply: 0.01 - platform: modbus_controller # 115 Battery Capacity Shutdown modbus_controller_id: sunsynk name: "${friendly_name} Battery Capacity Shutdown" id: sunsynk_esphome_battery_capacity_shutdown register_type: holding address: 115 unit_of_measurement: "%" accuracy_decimals: 0 device_class: battery ############################################### INVERTER ############################################## - platform: modbus_controller # 636 Inverter Power modbus_controller_id: sunsynk name: "${friendly_name} Inverter Power" id: sunsynk_esphome_inverter_power register_type: holding address: 636 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power value_type: S_WORD - platform: modbus_controller # 633 Inverter L1 Power modbus_controller_id: sunsynk name: "${friendly_name} Inverter L1 Power" id: sunsynk_esphome_inverter_L1_power register_type: holding address: 633 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power value_type: S_WORD - platform: modbus_controller # 634 Inverter L2 Power modbus_controller_id: sunsynk name: "${friendly_name} Inverter L2 Power" id: sunsynk_esphome_inverter_L2_power register_type: holding address: 634 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power value_type: S_WORD - platform: modbus_controller # 635 Inverter L3 Power modbus_controller_id: sunsynk name: "${friendly_name} Inverter L3 Power" id: sunsynk_esphome_inverter_L3_power register_type: holding address: 635 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power value_type: S_WORD - platform: modbus_controller # 627 Inverter Voltage modbus_controller_id: sunsynk name: "${friendly_name} Inverter Voltage" id: sunsynk_esphome_inverter_voltage register_type: holding address: 627 unit_of_measurement: "V" accuracy_decimals: 1 device_class: voltage state_class: measurement filters: - multiply: 0.1 value_type: U_WORD - platform: modbus_controller # 638 Inverter Frequency modbus_controller_id: sunsynk name: "${friendly_name} Inverter Frequency" id: sunsynk_esphome_inverter_frequency register_type: holding address: 638 unit_of_measurement: "Hz" accuracy_decimals: 2 filters: - multiply: 0.01 value_type: U_WORD state_class: measurement ############################################### GRID ################################################## - platform: modbus_controller # 609 Grid Frequency modbus_controller_id: sunsynk name: "${friendly_name} Grid Frequency" id: sunsynk_esphome_grid_frequency register_type: holding address: 609 unit_of_measurement: "Hz" accuracy_decimals: 2 filters: - multiply: 0.01 value_type: U_WORD state_class: measurement - platform: modbus_controller # 625 Grid Power modbus_controller_id: sunsynk name: "${friendly_name} Grid Power" id: sunsynk_esphome_grid_power register_type: holding address: 625 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: S_WORD - platform: modbus_controller # 622 Grid L1 Power modbus_controller_id: sunsynk name: "${friendly_name} Grid L1 Power" id: sunsynk_esphome_grid_power_L1 register_type: holding address: 622 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: S_WORD - platform: modbus_controller # 623 Grid L2 Power modbus_controller_id: sunsynk name: "${friendly_name} Grid L2 Power" id: sunsynk_esphome_grid_power_L2 register_type: holding address: 623 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: S_WORD - platform: modbus_controller # 624 Grid L3 Power modbus_controller_id: sunsynk name: "${friendly_name} Grid L3 Power" id: sunsynk_esphome_grid_power_L3 register_type: holding address: 624 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: S_WORD - platform: modbus_controller # 600 Grid Voltage modbus_controller_id: sunsynk name: "${friendly_name} Grid Voltage" id: sunsynk_esphome_grid_voltage register_type: holding address: 600 unit_of_measurement: "V" accuracy_decimals: 1 device_class: voltage state_class: measurement filters: - multiply: 0.1 value_type: U_WORD - platform: modbus_controller # 610 Grid L1 Current modbus_controller_id: sunsynk name: "${friendly_name} Grid L1 Current" id: sunsynk_esphome_grid_current_L1 register_type: holding address: 610 unit_of_measurement: "A" accuracy_decimals: 1 device_class: current state_class: measurement value_type: S_WORD filters: - multiply: 0.01 - platform: modbus_controller # 611 Grid L2 Current modbus_controller_id: sunsynk name: "${friendly_name} Grid L2 Current" id: sunsynk_esphome_grid_current_L2 register_type: holding address: 160 unit_of_measurement: "A" accuracy_decimals: 1 device_class: current state_class: measurement value_type: S_WORD filters: - multiply: 0.01 - platform: modbus_controller # 612 Grid L3 Current modbus_controller_id: sunsynk name: "${friendly_name} Grid L3 Current" id: sunsynk_esphome_grid_current_L3 register_type: holding address: 160 unit_of_measurement: "A" accuracy_decimals: 1 device_class: current state_class: measurement value_type: S_WORD filters: - multiply: 0.01 - platform: modbus_controller # 619 Grid CT Power modbus_controller_id: sunsynk name: "${friendly_name} Grid CT Power" id: sunsynk_esphome_grid_ct_power register_type: holding address: 619 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: S_WORD ############################################### LOAD ################################################ - platform: modbus_controller # 653 Load Power modbus_controller_id: sunsynk name: "${friendly_name} Load Power" id: sunsynk_esphome_load_power register_type: holding address: 653 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: S_WORD - platform: modbus_controller # 650 Load L1 Power modbus_controller_id: sunsynk name: "${friendly_name} Load L1 Power" id: sunsynk_esphome_load_l1_power register_type: holding address: 650 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: S_WORD - platform: modbus_controller # 651 Load L2 Power modbus_controller_id: sunsynk name: "${friendly_name} Load L2 Power" id: sunsynk_esphome_load_l2_power register_type: holding address: 651 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: S_WORD - platform: modbus_controller # 651 Load L3 Power modbus_controller_id: sunsynk name: "${friendly_name} Load L3 Power" id: sunsynk_esphome_load_l3_power register_type: holding address: 652 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: S_WORD ############################################### SOLAR PV1 ############################################# - platform: modbus_controller # 672 PV1 Power modbus_controller_id: sunsynk name: "${friendly_name} PV1 Power" id: sunsynk_esphome_pv1_power register_type: holding address: 672 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: U_WORD - platform: modbus_controller # 676 PV1 Voltage modbus_controller_id: sunsynk name: "${friendly_name} PV1 Voltage" id: sunsynk_esphome_pv1_voltage register_type: holding address: 676 unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 1 filters: - multiply: 0.1 value_type: U_WORD - platform: modbus_controller # 677 PV1 Current modbus_controller_id: sunsynk name: "${friendly_name} PV1 Current" id: sunsynk_esphome_pv1_current register_type: holding address: 677 unit_of_measurement: "A" accuracy_decimals: 1 device_class: current state_class: measurement filters: - multiply: 0.1 value_type: U_WORD ############################################### SOLAR PV2 ############################################# - platform: modbus_controller # 673 PV2 Power modbus_controller_id: sunsynk name: "${friendly_name} PV2 Power" id: sunsynk_esphome_pv2_power register_type: holding address: 673 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: U_WORD - platform: modbus_controller # 678 PV2 Voltage modbus_controller_id: sunsynk name: "${friendly_name} PV2 Voltage" id: sunsynk_esphome_pv2_voltage register_type: holding address: 678 unit_of_measurement: "V" accuracy_decimals: 1 filters: - multiply: 0.1 device_class: voltage state_class: measurement value_type: U_WORD - platform: modbus_controller # 679 PV2 Current modbus_controller_id: sunsynk name: "${friendly_name} PV2 Current" id: sunsynk_esphome_pv2_current register_type: holding address: 679 unit_of_measurement: "A" accuracy_decimals: 1 device_class: current state_class: measurement filters: - multiply: 0.1 value_type: U_WORD ############################################### SOLAR PV3 ############################################# - platform: modbus_controller # 674 PV3 Power modbus_controller_id: sunsynk name: "${friendly_name} PV3 Power" id: sunsynk_esphome_pv3_power register_type: holding address: 674 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: U_WORD - platform: modbus_controller # 680 PV3 Voltage modbus_controller_id: sunsynk name: "${friendly_name} PV3 Voltage" id: sunsynk_esphome_pv3_voltage register_type: holding address: 680 unit_of_measurement: "V" accuracy_decimals: 1 filters: - multiply: 0.1 device_class: voltage state_class: measurement value_type: U_WORD - platform: modbus_controller # 681 PV3 Current modbus_controller_id: sunsynk name: "${friendly_name} PV3 Current" id: sunsynk_esphome_pv3_current register_type: holding address: 681 unit_of_measurement: "A" accuracy_decimals: 1 device_class: current state_class: measurement filters: - multiply: 0.1 value_type: U_WORD ############################################### SOLAR PV4 ############################################# - platform: modbus_controller # 675 PV4 Power modbus_controller_id: sunsynk name: "${friendly_name} PV4 Power" id: sunsynk_esphome_pv4_power register_type: holding address: 675 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: U_WORD - platform: modbus_controller # 682 PV4 Voltage modbus_controller_id: sunsynk name: "${friendly_name} PV4 Voltage" id: sunsynk_esphome_pv4_voltage register_type: holding address: 682 unit_of_measurement: "V" accuracy_decimals: 1 filters: - multiply: 0.1 device_class: voltage state_class: measurement value_type: U_WORD - platform: modbus_controller # 683 PV4 Current modbus_controller_id: sunsynk name: "${friendly_name} PV4 Current" id: sunsynk_esphome_pv4_current register_type: holding address: 683 unit_of_measurement: "A" accuracy_decimals: 1 device_class: current state_class: measurement filters: - multiply: 0.1 value_type: U_WORD ############################################### SOLAR TOTAL ########################################### - platform: template # Sum of PV1 and PV2 to get total PV Power name: "${friendly_name} Solar Power" unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement lambda: |- return (id(sunsynk_esphome_pv1_power).state + id(sunsynk_esphome_pv2_power).state + id(sunsynk_esphome_pv3_power).state + id(sunsynk_esphome_pv4_power).state); update_interval: 5s ############################################### OUTPUTS ############################################### - platform: modbus_controller # 667 Gen Power modbus_controller_id: sunsynk name: "${friendly_name} Gen Power" id: sunsynk_esphome_gen_power register_type: holding address: 667 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: S_WORD - platform: modbus_controller # 664 Gen L1 Power modbus_controller_id: sunsynk name: "${friendly_name} Gen L1 Power" id: sunsynk_esphome_gen_l1_power register_type: holding address: 664 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: S_WORD - platform: modbus_controller # 665 Gen L2 Power modbus_controller_id: sunsynk name: "${friendly_name} Gen L2 Power" id: sunsynk_esphome_gen_l2_power register_type: holding address: 665 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: S_WORD - platform: modbus_controller # 666 Gen L3 Power modbus_controller_id: sunsynk name: "${friendly_name} Gen L3 Power" id: sunsynk_esphome_gen_L3_power register_type: holding address: 666 unit_of_measurement: "W" accuracy_decimals: 0 device_class: power state_class: measurement value_type: S_WORD ############################################### ENERGY ################################################ - platform: modbus_controller # 514 Day Battery Charge modbus_controller_id: sunsynk name: "${friendly_name} Day Battery Charge" id: sunsynk_esphome_day_battery_charge register_type: holding address: 514 unit_of_measurement: "kWh" accuracy_decimals: 1 device_class: energy state_class: total_increasing value_type: U_WORD filters: - multiply: 0.1 - platform: modbus_controller # 515 Day Battery Discharge modbus_controller_id: sunsynk name: "${friendly_name} Day Battery Discharge" id: sunsynk_esphome_day_battery_discharge register_type: holding address: 515 unit_of_measurement: "kWh" accuracy_decimals: 1 device_class: energy state_class: total_increasing value_type: U_WORD filters: - multiply: 0.1 - platform: modbus_controller # 516 Total Battery Charge modbus_controller_id: sunsynk name: "${friendly_name} Total Battery Charge" id: sunsynk_esphome_total_battery_charge register_type: holding address: 516 unit_of_measurement: "kWh" accuracy_decimals: 1 device_class: energy state_class: total_increasing value_type: U_DWORD_R filters: - multiply: 0.1 - platform: modbus_controller # 518 Total Battery Discharge modbus_controller_id: sunsynk name: "${friendly_name} Total Battery Discharge" id: sunsynk_esphome_total_battery_discharge register_type: holding address: 518 unit_of_measurement: "kWh" accuracy_decimals: 0 device_class: energy state_class: total_increasing value_type: U_DWORD_R filters: - multiply: 0.1 - platform: modbus_controller # 520 Day Grid Import modbus_controller_id: sunsynk name: "${friendly_name} Day Grid Import" id: sunsynk_esphome_day_grid_import register_type: holding address: 520 unit_of_measurement: "kWh" accuracy_decimals: 1 device_class: energy state_class: total_increasing value_type: U_WORD filters: - multiply: 0.1 - platform: modbus_controller # 521 Day Grid Export modbus_controller_id: sunsynk name: "${friendly_name} Day Grid Export" id: sunsynk_esphome_day_grid_export register_type: holding address: 521 unit_of_measurement: "kWh" accuracy_decimals: 1 device_class: energy state_class: total_increasing value_type: U_WORD filters: - multiply: 0.1 - platform: modbus_controller # 522 Total Grid Import modbus_controller_id: sunsynk name: "${friendly_name} Total Grid Import" id: sunsynk_esphome_total_grid_import register_type: holding address: 522 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing value_type: U_WORD filters: - multiply: 0.1 - platform: modbus_controller # 524 Total Grid Export modbus_controller_id: sunsynk name: "${friendly_name} Total Grid Export" id: sunsynk_esphome_total_grid_export register_type: holding address: 524 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing value_type: U_WORD filters: - multiply: 0.1 - platform: modbus_controller # 526 Day Load Energy modbus_controller_id: sunsynk name: "${friendly_name} Day Load Energy" id: sunsynk_esphome_day_load_energy register_type: holding address: 526 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 value_type: U_WORD - platform: modbus_controller # 527 Total Load Energy modbus_controller_id: sunsynk name: "${friendly_name} Total Load Energy" id: sunsynk_esphome_total_load_energy register_type: holding address: 527 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing value_type: U_DWORD_R filters: - multiply: 0.1 - platform: modbus_controller # 534 Total PV Energy modbus_controller_id: sunsynk name: "${friendly_name} Total PV Energy" id: sunsynk_esphome_total_pv_energy register_type: holding address: 534 unit_of_measurement: "kWh" accuracy_decimals: 2 device_class: energy state_class: total_increasing filters: - multiply: 0.1 value_type: U_DWORD_R - platform: modbus_controller # 529 Day PV Energy modbus_controller_id: sunsynk name: "${friendly_name} Day PV Energy" id: sunsynk_esphome_day_pv_energy register_type: holding address: 529 unit_of_measurement: "kWh" accuracy_decimals: 1 device_class: energy state_class: total_increasing filters: - multiply: 0.1 value_type: U_WORD ############################################### TEMPERATURE ################################################ - platform: modbus_controller # 540 DC Transformer Temperature modbus_controller_id: sunsynk name: "${friendly_name} DC Transformer Temperature" id: sunsynk_esphome_dc_transformer_temperature register_type: holding address: 540 unit_of_measurement: "°C" accuracy_decimals: 1 device_class: temperature state_class: measurement value_type: S_WORD filters: - offset: -1000 - multiply: 0.1 - platform: modbus_controller # 541 Radiator Temperature modbus_controller_id: sunsynk name: "${friendly_name} Radiator Temperature" id: sunsynk_esphome_radiator_temperature register_type: holding address: 541 unit_of_measurement: "°C" accuracy_decimals: 1 device_class: temperature state_class: measurement value_type: S_WORD filters: - offset: -1000 - multiply: 0.1 ################################################ READ SETTINGS ############################################# - platform: modbus_controller # 148 System Mode Time 1 modbus_controller_id: sunsynk name: "${friendly_name} System Mode Time1" id: sunsynk_esphome_system_mode_time1 register_type: holding skip_updates: ${settings_skipped_updates} address: 148 icon: "mdi:clock" - platform: modbus_controller # 149 System Mode Time 2 modbus_controller_id: sunsynk name: "${friendly_name} System Mode Time2" id: sunsynk_esphome_system_mode_time2 register_type: holding skip_updates: ${settings_skipped_updates} address: 149 icon: "mdi:clock" - platform: modbus_controller # 150 System Mode Time 3 modbus_controller_id: sunsynk name: "${friendly_name} System Mode Time3" id: sunsynk_esphome_system_mode_time3 register_type: holding skip_updates: ${settings_skipped_updates} address: 150 icon: "mdi:clock" - platform: modbus_controller # 151 System Mode Time 4 modbus_controller_id: sunsynk name: "${friendly_name} System Mode Time4" id: sunsynk_esphome_system_mode_time4 register_type: holding skip_updates: ${settings_skipped_updates} address: 151 icon: "mdi:clock" - platform: modbus_controller # 152 System Mode Time 5 modbus_controller_id: sunsynk name: "${friendly_name} System Mode Time5" id: sunsynk_esphome_system_mode_time5 register_type: holding skip_updates: ${settings_skipped_updates} address: 152 icon: "mdi:clock" - platform: modbus_controller # 153 System Mode Time 6 modbus_controller_id: sunsynk name: "${friendly_name} System Mode Time6" id: sunsynk_esphome_system_mode_time6 register_type: holding skip_updates: ${settings_skipped_updates} address: 153 icon: "mdi:clock" ################################################ WRITE SETTINGS ############################################ switch: - platform: modbus_controller # 145 Toggle Solar Sell use_write_multiple: true modbus_controller_id: sunsynk name: "${friendly_name} Toggle Solar sell" id: sunsynk_esphome_toggle_solar_sell register_type: holding address: 145 bitmask: 1 icon: "mdi:toggle-switch" - platform: modbus_controller # 146 Toggle System Timer use_write_multiple: true modbus_controller_id: sunsynk name: "${friendly_name} Toggle System Timer" id: sunsynk_esphome_toggle_Time_of_Use register_type: holding address: 146 bitmask: 1 icon: "mdi:toggle-switch" - platform: modbus_controller # 141 Priority Load use_write_multiple: true modbus_controller_id: sunsynk name: "${friendly_name} Toggle Priority Load" id: sunsynk_esphome_toggle_priority_load register_type: holding address: 141 bitmask: 1 icon: "mdi:toggle-switch" - platform: modbus_controller # 172 System Mode Grid Charge Time 1 use_write_multiple: true modbus_controller_id: sunsynk name: "${friendly_name} System Mode Grid Charge Time1" id: sunsynk_esphome_toggle_grid_charge_time1 register_type: holding address: 172 bitmask: 1 icon: "mdi:toggle-switch" - platform: modbus_controller # 173 System Mode Grid Charge Time 2 modbus_controller_id: sunsynk use_write_multiple: true name: "${friendly_name} System Mode Grid Charge Time2" id: sunsynk_esphome_toggle_grid_charge_time2 register_type: holding address: 173 bitmask: 1 icon: "mdi:toggle-switch" - platform: modbus_controller # 174 System Mode Grid Charge Time 3 modbus_controller_id: sunsynk use_write_multiple: true name: "${friendly_name} System Mode Grid Charge Time3" id: sunsynk_esphome_toggle_grid_charge_time3 register_type: holding address: 174 bitmask: 1 icon: "mdi:toggle-switch" - platform: modbus_controller # 175 System Mode Grid Charge Time 4 modbus_controller_id: sunsynk use_write_multiple: true name: "${friendly_name} System Mode Grid Charge Time4" id: sunsynk_esphome_toggle_grid_charge_time4 register_type: holding address: 175 bitmask: 1 icon: "mdi:toggle-switch" - platform: modbus_controller # 176 System Mode Grid Charge Time 5 modbus_controller_id: sunsynk use_write_multiple: true name: "${friendly_name} System Mode Grid Charge Time5" id: sunsynk_esphome_toggle_grid_charge_time5 register_type: holding address: 176 bitmask: 1 icon: "mdi:toggle-switch" - platform: modbus_controller # 177 System Mode Grid Charge Time 6 modbus_controller_id: sunsynk use_write_multiple: true name: "${friendly_name} System Mode Grid Charge Time6" id: sunsynk_esphome_toggle_grid_charge_time6 register_type: holding address: 177 bitmask: 1 icon: "mdi:toggle-switch" number: - platform: modbus_controller # 166 System Mode SoC Time 1 use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_set_soc_time1 name: "${friendly_name} System Mode SoC Time1" unit_of_measurement: "%" address: 166 min_value: 0 max_value: 100 step: 5 value_type: U_WORD - platform: modbus_controller # 167 System Mode SoC Time 2 use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_set_soc_time2 name: "${friendly_name} System Mode SoC Time2" unit_of_measurement: "%" address: 167 min_value: 0 max_value: 100 step: 5 value_type: U_WORD - platform: modbus_controller # 168 System Mode SoC Time 3 use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_set_soc_time3 name: "${friendly_name} System Mode SoC Time3" unit_of_measurement: "%" address: 168 min_value: 0 max_value: 100 step: 5 value_type: U_WORD - platform: modbus_controller # 169 System Mode SoC Time 4 use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_set_soc_time4 name: "${friendly_name} System Mode SoC Time4" unit_of_measurement: "%" address: 169 min_value: 0 max_value: 100 step: 5 value_type: U_WORD - platform: modbus_controller # 170 System Mode SoC Time 5 use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_set_soc_time5 name: "${friendly_name} System Mode SoC Time5" unit_of_measurement: "%" address: 170 min_value: 0 max_value: 100 step: 5 value_type: U_WORD - platform: modbus_controller # 171 System Mode SoC Time 6 use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_set_soc_time6 name: "${friendly_name} System Mode SoC Time6" unit_of_measurement: "%" address: 171 min_value: 0 max_value: 100 step: 5 value_type: U_WORD - platform: modbus_controller # 154 System Mode Power Time 1 use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_set_power_time1 name: "${friendly_name} System Mode Power Time1" unit_of_measurement: "W" address: 154 min_value: 0 max_value: 12000 step: 100 value_type: U_WORD - platform: modbus_controller # 155 System Mode Power Time 2 use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_set_power_time2 name: "${friendly_name} System Mode Power Time2" unit_of_measurement: "W" address: 155 min_value: 0 max_value: 12000 step: 100 value_type: U_WORD - platform: modbus_controller # 156 System Mode Power Time 3 use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_set_power_time3 name: "${friendly_name} System Mode Power Time3" unit_of_measurement: "W" address: 156 min_value: 0 max_value: 12000 step: 100 value_type: U_WORD - platform: modbus_controller # 157 System Mode Power Time 4 use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_set_power_time4 name: "${friendly_name} System Mode Power Time4" unit_of_measurement: "W" address: 157 min_value: 0 max_value: 12000 step: 100 value_type: U_WORD - platform: modbus_controller # 158 System Mode Power Time 5 use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_set_power_time5 name: "${friendly_name} System Mode Power Time5" unit_of_measurement: "W" address: 158 min_value: 0 max_value: 12000 step: 100 value_type: U_WORD - platform: modbus_controller # 159 System Mode Power Time 6 use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_set_power_time6 name: "${friendly_name} System Mode Power Time6" unit_of_measurement: "W" address: 159 min_value: 0 max_value: 12000 step: 100 value_type: U_WORD - platform: modbus_controller # 128 Grid Charge Battery current use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_grid_charge_bat_current name: "${friendly_name} Grid Charge Battery current" unit_of_measurement: "A" address: 128 min_value: 0 max_value: 185 step: 5 value_type: U_WORD - platform: modbus_controller # 108 Battery Max Charge current use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_bat_max_charge_current name: "${friendly_name} Battery Max Charge current" unit_of_measurement: "A" address: 108 min_value: 0 max_value: 185 step: 5 value_type: U_WORD - platform: modbus_controller # 109 Battery Max Discharge current use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_bat_max_discharge_current name: "${friendly_name} Battery Max Discharge current" unit_of_measurement: "A" address: 109 min_value: 0 max_value: 185 step: 5 value_type: U_WORD - platform: modbus_controller # 143 Max Sell Power use_write_multiple: true modbus_controller_id: sunsynk name: "${friendly_name} Max Sell power" id: sunsynk_max_sell_power address: 143 unit_of_measurement: "W" min_value: 0 max_value: 12000 step: 500 value_type: U_WORD ################################################ TEXT SENSORS ################################################## text_sensor: - platform: modbus_controller # 500 Overall State modbus_controller_id: sunsynk name: "${friendly_name} Overall State" id: sunsynk_esphome_overall_state register_type: holding skip_updates: ${settings_skipped_updates} raw_encode: HEXBYTES address: 500 lambda: |- uint16_t value = modbus_controller::word_from_hex_str(x, 0); switch (value) { case 0: return std::string("standby"); case 1: return std::string("selftest"); case 2: return std::string("normal"); case 3: return std::string("alarm"); case 4: return std::string("fault"); default: return std::string("unknown"); } - platform: template name: "${friendly_name} Time Slot 1" id: sunsynk_esphome_time_slot_1 icon: "mdi:clock" lambda: |- int minutes, hours; if (id(sunsynk_esphome_system_mode_time1).state) { minutes = static_cast<int>(id(sunsynk_esphome_system_mode_time1).state) % 100; hours = static_cast<int>(id(sunsynk_esphome_system_mode_time1).state) / 100; } else { minutes = 0; hours = 0; } char formatted_time[6]; snprintf(formatted_time, sizeof(formatted_time), "%02d:%02d", hours, minutes); return esphome::optional<std::string>(formatted_time); - platform: template name: "${friendly_name} Time Slot 2" id: sunsynk_esphome_time_slot_2 icon: "mdi:clock" lambda: |- int minutes, hours; if (id(sunsynk_esphome_system_mode_time2).state) { minutes = static_cast<int>(id(sunsynk_esphome_system_mode_time2).state) % 100; hours = static_cast<int>(id(sunsynk_esphome_system_mode_time2).state) / 100; } else { minutes = 0; hours = 0; } char formatted_time[6]; snprintf(formatted_time, sizeof(formatted_time), "%02d:%02d", hours, minutes); return esphome::optional<std::string>(formatted_time); - platform: template name: "${friendly_name} Time Slot 3" id: sunsynk_esphome_time_slot_3 icon: "mdi:clock" lambda: |- int minutes, hours; if (id(sunsynk_esphome_system_mode_time3).state) { minutes = static_cast<int>(id(sunsynk_esphome_system_mode_time3).state) % 100; hours = static_cast<int>(id(sunsynk_esphome_system_mode_time3).state) / 100; } else { minutes = 0; hours = 0; } char formatted_time[6]; snprintf(formatted_time, sizeof(formatted_time), "%02d:%02d", hours, minutes); return esphome::optional<std::string>(formatted_time); - platform: template name: "${friendly_name} Time Slot 4" id: sunsynk_esphome_time_slot_4 icon: "mdi:clock" lambda: |- int minutes, hours; if (id(sunsynk_esphome_system_mode_time4).state) { minutes = static_cast<int>(id(sunsynk_esphome_system_mode_time4).state) % 100; hours = static_cast<int>(id(sunsynk_esphome_system_mode_time4).state) / 100; } else { minutes = 0; hours = 0; } char formatted_time[6]; snprintf(formatted_time, sizeof(formatted_time), "%02d:%02d", hours, minutes); return esphome::optional<std::string>(formatted_time); - platform: template name: "${friendly_name} Time Slot 5" id: sunsynk_esphome_time_slot_5 icon: "mdi:clock" lambda: |- int minutes, hours; if (id(sunsynk_esphome_system_mode_time5).state) { minutes = static_cast<int>(id(sunsynk_esphome_system_mode_time5).state) % 100; hours = static_cast<int>(id(sunsynk_esphome_system_mode_time5).state) / 100; } else { minutes = 0; hours = 0; } char formatted_time[6]; snprintf(formatted_time, sizeof(formatted_time), "%02d:%02d", hours, minutes); return esphome::optional<std::string>(formatted_time); - platform: template name: "${friendly_name} Time Slot 6" id: sunsynk_esphome_time_slot_6 icon: "mdi:clock" lambda: |- int minutes, hours; if (id(sunsynk_esphome_system_mode_time6).state) { minutes = static_cast<int>(id(sunsynk_esphome_system_mode_time6).state) % 100; hours = static_cast<int>(id(sunsynk_esphome_system_mode_time6).state) / 100; } else { minutes = 0; hours = 0; } char formatted_time[6]; snprintf(formatted_time, sizeof(formatted_time), "%02d:%02d", hours, minutes); return esphome::optional<std::string>(formatted_time); ################################################ SELECT SENSORS ################################################ select: - platform: modbus_controller #141 Select Energy Patern use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_select_energy_pattern name: "${friendly_name} Energy Pattern" address: 141 value_type: U_WORD optionsmap: "Battery first": 0 "Load first": 1 - platform: modbus_controller #142 Select Work Mode use_write_multiple: true modbus_controller_id: sunsynk id: sunsynk_esphome_select_work_mode name: "${friendly_name} Work Mode" address: 142 value_type: U_WORD optionsmap: "Selling First": 0 "Zero Export + Limit to Load Only": 1 "Limited to Home": 2

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.