Growatt Integration - Solar Assistant

You can only change the mode with the webinterface, using their very clunky and sometimes unstable settings window.

@coleburg You can use the web UI to switch the AC output priority, yes. But you can also use Growatt’s mobile app named ShinePhone. I mainly resort to the mobile app.

Thank you, I have discovered a way to do this via the automation using API calls now.

Cheers

That’s great. Regarding automation, are you using HA to trigger the actions? Or a custom solution? Thanks

Hi Ewert or anyone else who knows.

Interested in if anyone has got switching working from Batt first and load first?

I have setup solar assistant and home assistant for my sph6000. I’m getting readings through ok using MQTT. however there isn’t anything for schedules like within the shine app.

I know there is a direct switch from batt first to gird etc however this has never worked in solar assistant or home assistant. I’m guessing it has to be via the schedules which work in solar assistant but no options in home assistant.

any help you could offer would be much appreciated.

Happy New Year!

James

have a look at this.

Hola Jaime, podrías indicarme el cable adaptador que has usado y el esquema de conexión entre la rpi y el inversor sph6000 para que el solar assistant te detecte el inversor? Tengo el mismo inversor que tú y No consigo que la rpi lo detecte quizá porque los pines A Y B no tengo claro que hilos del rj45 usan. Si me ayudas te lo agradecería. Muchas gracias

Has anyone linked a Growatt SPH inverter to the Solar Assistant through the RS485 port.
If so did you also have the ShineWifi-S adaptor and does that continue to work in parallel with the Solar Assistant?

Chris,

I would like to buy the WiFi-X module and flash it.
Does it work after that or do you need to do more things?

Regards,

Robert

Its still working very well and makes for a really nice finished product, however it is quite pricey compared to just getting a ESP and doing it that way. If I was to do it again I would just buy an ESP and flash it. I would also use an external power supply so it doesn’t turn off at night and I can still remotely update it when I actually have time to sit down and do this stuff.

Ik heb een ESP32 dev board liggen. Die heeft ook WiFi en BT. Maar wat heb ik verder allemaal nodig? Het ESP32 board heeft een micro USB aansluiting.

Maar als ik kijk wat een Shine WiFi-X USB kost is dat €18. Dat valt wel mee toch? Of heb ik dan nog steeds niet alles?

you should just be able to flash the dev board and plug it in to the USB port the wifi-x would normally connect to and it should work.

Oké, will try that. So I Connect it with the micro USB to USB-A at the Port the USB WiFi / RF is in?
I will download the yaml for the ESP32 and flash it on the board.

– In my opinion only an ESP32 will not work –
I think I will buy the Shine WiFi-X USB and see from there.

Hi,
Yes I have sucessfully connected SA via RS485 to my SPH in parallell with using ShineWifi-X
I can use both Growatt ShinePhone/ShineServer and Solar Assistant/Home Assistant to communicate with the inverter.

Still struggeling with controling the inverter via HA/SA as it seems to be a bit tricky.

What is it specifically you are struggling to control? maybe someone in this group can help?

I didn’t turn on the option to “change settings” in the MQTT menu so HA was coming up on the response sensor with an error updating.

My objective was to trigger the battery charging during a cheaper electricity periiod (Octopus Energy)
Now it seems that unless I go into the shine app and actually set a TOU Charging period then the selection in SA does not work. (Battery first grid charge) It seems that selection overrides the “scheduled charge”.

I used this select command to change the selection on HA

Example YAML code:

alias: Charge Growatt Battery based on the helper times
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.growatt_battery_charge
condition: []
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.growatt_battery_charge
            state: "on"
            for:
              hours: 0
              minutes: 0
              seconds: 0
        sequence:
          - service: select.select_option
            target:
              entity_id: null
            data:
              option: Enabled
          - service: select.select_option
            target:
              entity_id:
                - select.battery_first_grid_charge
            data:
              option: Enabled
      - conditions:
          - condition: state
            entity_id: binary_sensor.growatt_battery_charge
            state: "off"
            for:
              hours: 0
              minutes: 0
              seconds: 0
        sequence:
          - service: select.select_option
            target:
              entity_id:
                - select.battery_first_grid_charge
            data:
              option: Disabled
mode: single

I think i got it, but the prerequites makes it a bit clumsy.
I must have set a schedule in Growatt. If I for instance set
Grid First 08:00-21:59 and Battery First 22:00-07:59,
Then i can toggle between Grid First and Load First and change rates and values during the set period.
Same at night, I can toggle between Battery First and Load First.
But in said example, I cannot shift between Grid First and Battery First at desired times. The set Priority Mode in Growatt is “static” so to say…

@Anders57S after my post I realised that I forgot to mention I have a Pi running solar assistant via the RS485 port this is my method of control.
I also noted that the growatt inverter \ solar assistant had a bug which means that you cannot select battery first, if you select Grid First in the automation it selects battery first on the actual inverter. Took me a while to figure this out and you have to change the output source priority at the same time otherwise it just doesn’t do what you want. I ended up with TOU charging set from 00:01-23:59 and my automation overrides it. So far so good I can boost my charge overnight during octopus cheap rate and I’m also dragging the solar forcast off solcast which changes the amount of overnight charge so if its a nice sunny day then it won’t run the boost charge. Now say as I approach peak rate I also have a boost button I can turn on so that when i actually reach peak rate my battery will be topped up.

alias: Charge Growatt Battery based on the helper times
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.growatt_battery_charge_schedule
condition: []
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.growatt_battery_charge_schedule
            state: "on"
            for:
              hours: 0
              minutes: 0
              seconds: 0
        sequence:
          - service: select.select_option
            target:
              entity_id: null
            data:
              option: Enabled
          - service: select.select_option
            target:
              entity_id:
                - select.battery_first_grid_charge
            data:
              option: Enabled
          - service: select.select_option
            data:
              option: Grid first
            target:
              entity_id: select.output_source_priority
          - service: input_text.set_value
            data:
              value: Scheduled Charge
            target:
              entity_id:
                - input_text.battery_status
      - conditions:
          - condition: state
            entity_id: binary_sensor.growatt_battery_charge_schedule
            state: "off"
            for:
              hours: 0
              minutes: 0
              seconds: 0
        sequence:
          - service: select.select_option
            target:
              entity_id:
                - select.battery_first_grid_charge
            data:
              option: Disabled
          - service: select.select_option
            data:
              option: Load first
            target:
              entity_id: select.output_source_priority
          - service: input_text.set_value
            data:
              value: Scheduled Ended
            target:
              entity_id:
                - input_text.battery_status
mode: single
1 Like

I may have solved it a bit primitive but I have not much knowledge in programming, so I use the GUI options and when needed changes a single value or formatting in the yaml-files :slight_smile:

(edit: I also use HA via SA for control and monitoring. In addition I have ShineWifi-X installed and with full functionality using Growatt eco system)

My approach has been to identify basic scenarios and then set a basic schedule in Growatt Server. The scenarios is mostly uniform so it works good enough for now.

  1. Charge with AC night
  2. Self consumption at morning hours
  3. Sell before lunch
  4. Charge with AC at afternoon
  5. Self consumption at evening

Then I have matches automations in HA within those prerequisites.
For instance (I have some more conditions but for exemplifying)
scenario 1, charge only if cheap
Scenario 2: Only if expensive and solar production is low (sun hasn’t risen yet)
Scenario 3: only if expensive and SOC is sufficient and that estimated production for the day is high enough.
Scenario 4: only if cheap and if SOC is low and estimated production is low.

if conditions aren’t met, I will revert to Load First.

My settings are that Growatt controls between full hour and to one minute before. For instance 08:00-11:59 and the automations is conditioned for one minute less in each end (08:01-11:58) so that there is no ambiguity.

This way it seems to work for me. As I mentioned earlier I can go from “valid priority mode” to and from Load First, but I cannot jump between Grid First and Battery First since one of them is “master” according to the set schedule in Growatt Server.

I would have hoped that there were som trick to fool Growatt Server, like have all set to 00:00-00:00 and enabled, but then I get time conflicts in Growatt GUI.

I dont know it has to do with latest beta (2023-03-17 that fixed some bugs in mqtt) or if I found the golden egg :slight_smile:

I tested a lot of combos and found that if I set Battery First to be active from 00:00-23:59, then I can jump between all Priority Modes as i desire. Makes it a lot easier :slight_smile:

UPDATE:
I think I found the issue - I did not have “change settings ALLOWED” enabled in MQTT settings on SA originally. Now I have enabled it and it looks like it works!!!

ORIGINAL MESSAGE BELOW:
guys, I am not sure if I am doing things right…

I have automation to check IO and once IO slot is set to ON, it should trigger and change growatt to battery first. I am using solar asssistant via rs485 connected to my raspberry pi. mqtt works and I can see all entities on Home assistant.

The automation sees the trigger and runs.it shows that option 1 is selected (Change growatt work mode to battery first).
but this change is actually not reflected in growatt settings and I still see that battery is being discharged rather than charged.

can anyone suggest, what am I doing wrong here or what I am missing?

image


(here I set schedule manually, however it does not care even if scheduling is set to 00;00 - 23:59