August 18, 20223 yr 14 hours ago, Scubadude said: 4 hours of cloud cover? Unlikely. If your battery is full and demand is low, production is throttled back. Solarman will show it clearly. I'm trying to programmatically confirm if the inverter is "throttling back PV production". I was hoping to use the SunSynk MPPT registers. Adapted from https://github.com/kellerza/sunsynk/blob/main/sunsynk/definitions.py # SunSynk PV MPPT Sensor(186, "PV1 power", WATT, -1), Sensor(109, "PV1 voltage", VOLT, 0.1), Sensor(110, "PV1 current", AMPS, 0.1), Sensor(187, "PV2 power", WATT, -1), Sensor(111, "PV2 voltage", VOLT, 0.1), Sensor(112, "PV2 current", AMPS, 0.1), Any ideas?
August 18, 20223 yr I'm not an expert but if you overlay consumption and SOC on the chart you will see it clearly like the crudely shaded section on the graph below. The MPPT wont give you all the answers - don't you have BMS and consumtion data that you can query? Edited August 18, 20223 yr by Scubadude
August 18, 20223 yr 7 hours ago, system32 said: I'm trying to programmatically confirm if the inverter is "throttling back PV production". I was hoping to use the SunSynk MPPT registers. Adapted from https://github.com/kellerza/sunsynk/blob/main/sunsynk/definitions.py # SunSynk PV MPPT Sensor(186, "PV1 power", WATT, -1), Sensor(109, "PV1 voltage", VOLT, 0.1), Sensor(110, "PV1 current", AMPS, 0.1), Sensor(187, "PV2 power", WATT, -1), Sensor(111, "PV2 voltage", VOLT, 0.1), Sensor(112, "PV2 current", AMPS, 0.1), Any ideas? You might be able to use PV voltage, but it won't be easy. Perhaps augmented with solcast data will get you there.
September 23, 20223 yr Hi there, is there any reason why we only get L1 and L2 Amps? What is about L3? Im not sure if this allready was discussed here. Thanks for comments
September 23, 20223 yr While I'm no expert on the Inverter's internals, my understanding is that L1 & L2 are simply measurement points. There is no L3.
September 30, 20223 yr Hi all, I recently had a Sunsynk 12kW inverter, Greenrich batteries and 12 x solar panels installed. I am trying to integrate the inverter into Home Assistant as many of you have done, but not having much success. I am using a RS485 to Ethernet gateway and running HA in a virtual machine in Windows 10. I have wired the gateway as per the instructions for the pinout on the inverter (I know the diagram is correct and the table is incorrect) and installed @kellerza addon from Github. I'm still not getting any readings from the inverter. I suspect that my issue is that my inverter is set to modbus SN 00 (which, from what I read, doesn't work, even if you set the modbus ID to 00 in the config). However, every time I change the SN to 01 on my inverter, the inverter shuts down. Then I have to turn it off and back on again to restart it and the SN reverts back to 00. I seem to recall reading somewhere on the forum that this happened to somebody else, but I can't find the post again to see if the issue was resolved. Any ideas? Thanks very much.
October 22, 20223 yr Hi all. I have now added the Sunsynk support to SMH as well, so you can use profiles to reprogram the inverter based on the loadshedding schedule. The full range from 3kw all the way to 16kw works. The only issue I have is on the 16kw I am not able to update any registers. I keep on getting a modbus timeout. Has anybody got the updates working on the 16Kw?
October 27, 20223 yr Random question - Has anyone noticed that their inverter battery never charges to 100%. It seems like 99% is the highest it goes and I'm wondering if that is wasting power constantly trickling it to "try" and reach 100%. Is it possibly just a setting on the inverter that I can change to make it satisfied with the 99%?
October 27, 20223 yr Oh forgot to mention - For those who did not know, ESP recently released a loadshedding API which can be used by personal users and integrated directly into HA. Just need to request an API key from them. Been using it for a week. Works very well
October 27, 20223 yr 2 hours ago, jacauc said: Oh forgot to mention - For those who did not know, ESP recently released a loadshedding API which can be used by personal users and integrated directly into HA. Just need to request an API key from them. Been using it for a week. Works very well Just a headsup - they are changing the way they do things and which tokens are valid - check your email for the new method and process
November 4, 20223 yr On 2022/10/27 at 7:31 PM, jacauc said: Oh forgot to mention - For those who did not know, ESP recently released a loadshedding API which can be used by personal users and integrated directly into HA. Just need to request an API key from them. Been using it for a week. Works very well hi, how would you integrate it into HA? what would you do? would you be able to share your code? thanks
November 4, 20223 yr 2 hours ago, McAllstar said: hi, how would you integrate it into HA? what would you do? would you be able to share your code? thanks Get a token here >> Signup for an API token via Gumroad: https://eskomsepush.gumroad.com/l/api In Home Assistant, click the terminal it should show you something like [core-ssh ~]$ Search for your area by pasting / typing this code into the terminal - replace olivedale at the end with your specific area >> curl --header "Token: <<your token here>>" --location --request GET 'https://developer.sepush.co.za/business/2.0/areas_search?text=olivedale' you should get output similar to this >> {"areas":[{"id":"jhbcitypower2-10-olivedale","name":"Olivedale (10)","region":"JHB City Power"},{"id":"eskomdirect-33470-olivedaleswellendamwesterncape","name":"Olivedale","region":"Eskom Direct (Web), Swellendam, Western Cape"}]} Your area would be "jhbcitypower2-10-olivedale" Copy this YAML code into your configuration.yaml.file and replace your token and area id as needed. Code is by user Tinuva from MyBB rest: - resource: "https://developer.sepush.co.za/business/2.0/area" scan_interval: '01:00:00' # RATE LIMIT! headers: Token: !secret EskomSePush params: id: "capetown-6-durbanville" #id: "<your area id here>" sensor: - name: EskomSePush force_update: true value_template: "OK" json_attributes: - events - info - schedule sensor: #Eskom se push sensor - platform: rest name: EskomSePushAllowance resource: "https://developer.sepush.co.za/business/2.0/api_allowance" headers: Token: !secret EskomSePush json_attributes_path: "$.allowance" json_attributes: - count - limit - type value_template: "OK" scan_interval: 3600 # template sensors abased on ESP above - platform: template sensors: next_loadshedding_time: friendly_name: Next loadshedding time device_class: timestamp unique_id: Next_Loadshedding_Time value_template: "{{ state_attr('sensor.eskomsepush','events')[0].start }}" next_loadshedding_event: friendly_name: Next loadshedding event unique_id: Next_Loadshedding_Event value_template: "{{ state_attr('sensor.eskomsepush','events')[0].note }}" next_loadshedding_time_end: friendly_name: Next loadshedding end time unique_id: Next_Loadshedding_End_Time device_class: timestamp value_template: "{{ state_attr('sensor.eskomsepush','events')[0].end }}" next_loadshedding_duration: friendly_name: Next loadshedding duration unique_id: Next_Loadshedding_Duration unit_of_measurement: mins value_template: '{{ [( as_timestamp(states.sensor.next_loadshedding_time_end.state) | int - as_timestamp(states.sensor.next_loadshedding_time.state) | int ) / 60,-1] | max | round(0) }}' time_till_loadshedding: friendly_name: Time until next loadshedding unique_id: Time_Until_Next_Loadshedding unit_of_measurement: mins value_template: '{{ [( as_timestamp(states.sensor.next_loadshedding_time.state) | int - as_timestamp(now()) | int ) / 60,-1] | max | round(0) }}' time_till_loadshedding_ends: friendly_name: Time until next loadshedding ends unique_id: Time_Until_Next_Loadshedding_ends unit_of_measurement: mins value_template: '{{ [( as_timestamp(states.sensor.next_loadshedding_time_end.state) | int - as_timestamp(now()) | int ) / 60,-1] | max | round(0) }}' eskomsepush_calls_remaining: friendly_name: EskomSePush API Calls remaining unique_id: EskomSePush_calls_remaining value_template: '{{ int(state_attr("sensor.eskomsepushallowance","limit")) - int(state_attr("sensor.eskomsepushallowance","count")) }}' loadshedding_slot_forecast: friendly_name: Loadshedding slot forecast unique_id: loadshedding_slot_forecast value_template: > {%- for event in states['sensor.eskomsepush'].attributes.events -%} {{ as_timestamp(event['start']) | timestamp_custom('%a %d %b:') }} {{ event['note'] }} {{ as_timestamp(event['start']) | timestamp_custom('from %H:%M') }} to {{ as_timestamp(event['end']) | timestamp_custom('%H:%M') }} {{- '\n' -}} {%- endfor -%} binary_sensor: - platform: template sensors: loadshedding_active: friendly_name: "Loadshedding active" device_class: problem value_template: > {% if (int(states('sensor.time_till_loadshedding')) <= 0 ) %} True {% else %} False {% endif %} Once done your entities should appear as normal in HA and you should be able to create cards etc with them Edited November 4, 20223 yr by mzezman
November 4, 20223 yr 16 minutes ago, mzezman said: Get a token here >> Signup for an API token via Gumroad: https://eskomsepush.gumroad.com/l/api In Home Assistant, click the terminal it should show you something like [core-ssh ~]$ Search for your area by pasting / typing this code into the terminal - replace olivedale at the end with your specific area >> curl --header "Token: <<your token here>>" --location --request GET 'https://developer.sepush.co.za/business/2.0/areas_search?text=olivedale' you should get output similar to this >> {"areas":[{"id":"jhbcitypower2-10-olivedale","name":"Olivedale (10)","region":"JHB City Power"},{"id":"eskomdirect-33470-olivedaleswellendamwesterncape","name":"Olivedale","region":"Eskom Direct (Web), Swellendam, Western Cape"}]} Your area would be "jhbcitypower2-10-olivedale" Copy this YAML code into your configuration.yaml.file and replace your token and area id as needed. Code is by user Tinuva from MyBB rest: - resource: "https://developer.sepush.co.za/business/2.0/area" scan_interval: '01:00:00' # RATE LIMIT! headers: Token: !secret EskomSePush params: id: "capetown-6-durbanville" #id: "<your area id here>" sensor: - name: EskomSePush force_update: true value_template: "OK" json_attributes: - events - info - schedule sensor: #Eskom se push sensor - platform: rest name: EskomSePushAllowance resource: "https://developer.sepush.co.za/business/2.0/api_allowance" headers: Token: !secret EskomSePush json_attributes_path: "$.allowance" json_attributes: - count - limit - type value_template: "OK" scan_interval: 3600 # template sensors abased on ESP above - platform: template sensors: next_loadshedding_time: friendly_name: Next loadshedding time device_class: timestamp unique_id: Next_Loadshedding_Time value_template: "{{ state_attr('sensor.eskomsepush','events')[0].start }}" next_loadshedding_event: friendly_name: Next loadshedding event unique_id: Next_Loadshedding_Event value_template: "{{ state_attr('sensor.eskomsepush','events')[0].note }}" next_loadshedding_time_end: friendly_name: Next loadshedding end time unique_id: Next_Loadshedding_End_Time device_class: timestamp value_template: "{{ state_attr('sensor.eskomsepush','events')[0].end }}" next_loadshedding_duration: friendly_name: Next loadshedding duration unique_id: Next_Loadshedding_Duration unit_of_measurement: mins value_template: '{{ [( as_timestamp(states.sensor.next_loadshedding_time_end.state) | int - as_timestamp(states.sensor.next_loadshedding_time.state) | int ) / 60,-1] | max | round(0) }}' time_till_loadshedding: friendly_name: Time until next loadshedding unique_id: Time_Until_Next_Loadshedding unit_of_measurement: mins value_template: '{{ [( as_timestamp(states.sensor.next_loadshedding_time.state) | int - as_timestamp(now()) | int ) / 60,-1] | max | round(0) }}' time_till_loadshedding_ends: friendly_name: Time until next loadshedding ends unique_id: Time_Until_Next_Loadshedding_ends unit_of_measurement: mins value_template: '{{ [( as_timestamp(states.sensor.next_loadshedding_time_end.state) | int - as_timestamp(now()) | int ) / 60,-1] | max | round(0) }}' eskomsepush_calls_remaining: friendly_name: EskomSePush API Calls remaining unique_id: EskomSePush_calls_remaining value_template: '{{ int(state_attr("sensor.eskomsepushallowance","limit")) - int(state_attr("sensor.eskomsepushallowance","count")) }}' loadshedding_slot_forecast: friendly_name: Loadshedding slot forecast unique_id: loadshedding_slot_forecast value_template: > {%- for event in states['sensor.eskomsepush'].attributes.events -%} {{ as_timestamp(event['start']) | timestamp_custom('%a %d %b:') }} {{ event['note'] }} {{ as_timestamp(event['start']) | timestamp_custom('from %H:%M') }} to {{ as_timestamp(event['end']) | timestamp_custom('%H:%M') }} {{- '\n' -}} {%- endfor -%} binary_sensor: - platform: template sensors: loadshedding_active: friendly_name: "Loadshedding active" device_class: problem value_template: > {% if (int(states('sensor.time_till_loadshedding')) <= 0 ) %} True {% else %} False {% endif %} Once done your entities should appear as normal in HA and you should be able to create cards etc with them brilliant, thanks a mil. I was getting invalid token and found the info below on their website. I ran that and it worked. curl --location --request GET 'https://developer.sepush.co.za/business/2.0/areas_search?text=edenvale' \--header 'token: licence key'
November 4, 20223 yr 5 minutes ago, jacauc said: Alternatively, install the HACS Addon by swartjean and it's all done for you aha thanks will try that.
November 4, 20223 yr 25 minutes ago, jacauc said: Alternatively, install the HACS Addon by swartjean and it's all done for you Just set it up with my key and it works well. Thanks for all of the assistance.
November 9, 20223 yr Hi, I'm new to this topic and home assistant. I have a Sunsynk 8.8kw are people using @kellerzaexcellent add on, or the original brilliant code from @Bloubul7? I have noticed @jacaucrepo hasn't changed since sept 21. Also, I noticed that @kellerzaadd on now writes to the inverter. 1) would I be able to update date/time 2) would I be able to change System mode to change my charging profile based on the next days weather Thanks Peter Edited November 9, 20223 yr by pedro54
November 9, 20223 yr If you are a tinkerer and know/want to learn NodeRed then it's a good project, but except for this forum you are mostly on your own. The Addon is tailored for Home Assistant. It's easier to use, quicker to setup and has additional functionality (filters, write UI elements in HA, full discovery/removal of entities). There have been some excellent contributions to the docs & code (like writable sensors). Today you cannot update the time, but the System Mode is probably the main use case for adding the capability to write.
November 9, 20223 yr @kellerza what is the best way to transition from the original Bloubul7 flows to your packaged addon? Is it a case of full remove and fresh install or will new sensors be created and duplicated (which isnt really an issue)? I really don't want to start again but then I also really, really want the write to system mode added in HA directly and not in node-red!
November 9, 20223 yr @Robbo The biggest issue is probably that the new sensors will have a different name, so you will lose your historical Energy data (the HA community forum might have a solution to rename historical data, but I've never tried this) You can test it: Simply install & configure the addon. Since only one application can access the USB (RS485 converter) at a time, you will have to stop Node-RED polling the inverter and then you can start the addon. Once the Addon starts you start it will create all the new sensors and start updating values. Using "MQTT Explorer" you can then delete the MQTT auto-discovery info for either Node-Red or the Addon depending on which one you choose to keep around. Auto-Discovery for MQTT is under \homeassistant\sensors\<serial>\<sensor>, the Node-Red addon will likely be similar. Once deleted the sensors should disappear from HA. Lastly reconfigure the energy management dashboard & any UI sensors.
November 9, 20223 yr 3 minutes ago, kellerza said: Since only one application can access the USB (RS485 converter) at a time, you will have to stop Node-RED polling the inverter and then you can start the addon Ah thanks, only one polling at a time is quite a sticking point.
November 9, 20223 yr The only way around it is using something like mbusd connected to the USB port and everything else connects over TCP to mbusd. The addon repo contains an mbusd addon as well. I use mbusd permanently in my setup
November 9, 20223 yr 3 hours ago, pedro54 said: Hi, I'm new to this topic and home assistant. I have a Sunsynk 8.8kw are people using @kellerzaexcellent add on, or the original brilliant code from @Bloubul7? I have noticed @jacaucrepo hasn't changed since sept 21. Also, I noticed that @kellerzaadd on now writes to the inverter. 1) would I be able to update date/time 2) would I be able to change System mode to change my charging profile based on the next days weather Thanks Peter Repo hasn't changed much because it didn't really need changes. All is well with that code. We're focusing right now on moving the functionality out of node red and raspberry Pi to be able to poll it with a much more lightweight ESP32 on the Esphome platform for situations where the HA instance is not close to the inverter
November 9, 20223 yr 1 hour ago, jacauc said: We're focusing right now on moving the functionality out of node red and raspberry Pi to be able to poll it with a much more lightweight ESP32 on the Esphome platform for situations where the HA instance is not close to the inverter This violates one of my Home Automation commandments: "Thou shalt not use a soldering iron" 😉 If it's really far away, you get various TCP to RS485 gateways
November 9, 20223 yr 9 minutes ago, kellerza said: "Thou shalt not use a soldering iron" Which is why I use Dupont connectors 😂
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.