[APP][Pro] SolarEdge + Growatt TCP modbus

Rather than making exportlimitenabled/exportlimitpowerrate globally setable (which risks issues on TLS and other variants without a compatible Modbus meter), I added an ‘ems_control’ checkbox to the regular Growatt driver settings. Only when the user explicitly enables this will the capabilities become writable and the registerCapabilityListener

Ah, yeah, that’s the same I did for the Growatt TLS, must have overlooked that.

@Edwin_Biemond I have tested to read register 3036 with the modbus app and this works fine, could you please implement this in this app?

hey yes , I can add it to TL , what is this value 1 to 255 ?

Hi, Thank you. The protocol document states it is 1-255 tho in reality I get a value in 0-100

yes it is hex for 100

Hi Edwin. Thanks so much for this app! Got it working with my Sungrow inverter to see solar generation. It would be great if I could also see my meter consumption too.

My setup:

Sungrow SG10RT + WiNet-S2 + SG Smart Meter (DTSU66). iSolarCloud shows consumption correctly. Modbus TCP 502 works. Sungrow String driver only shows PV power. Need SG Smart Meter registers exposed.

Is a Sungrow + Meter Homey device in the pipeline? Hope it’s an easy addition.

Thanks

Dears,

i am using the app to integrate my kostla plenticore. It works perfectly. Now i want to get the values, especially the battery into the Homey Energy Diagramm. Is there a way to do so?

Many thanks in advance

Use the app Unreal Battery or Virtual Drivers.

Hi again Edwin.

A quick question. Is it possible to have a more frequent update interval rather than the 30 second interval?

I use the Modbus option, which has been working perfectly :slight_smile:

can you try sungrow with battery. even when you don’t have a battery

not really , I have all the data but homey want to force to have 3 different devices when I have 3 in 1 . pv, meters and battery. they need to come with a new class and specify the energy caps.

few already asked homey for this.

in the mean time check how far you come with some virtual device

it depends what device you use , some are super slow like huawei , some are are fast like solaredge.

but why do you want faster , like always use average values like 5 min values. else you respond to fast etc.

I have a growatt sph3600 inverter but with the modbus set up
The reason I want faster updates is just because I eagerly follow production and if it’s possible then it would be great :slight_smile:

Thanks, I did try that yes. Only solar power value correctly shows. all other fields including anything relating to the meter don’t have any values.

Don’t really understand what you mean here, but the write function is already implemented. Maybe you could check how it’s handled there?

if you are handy you can try this and send me a pull request. this was done for solaredge

did you send me a report , can add a try catch on it or make a device parameter to skip it.

you said growatt tl .

I see this on it solaredge.modbus/drivers/growattwithbatt_tl/device.ts at main · biemond/solaredge.modbus · GitHub

    const dischargeAction = this.homey.flow.getActionCard('grid_first_discharge_percentage');
    dischargeAction.registerRunListener(async (args, state) => {
      await this.updateControl('grid_first_discharge_percentage', Number(args.value));
    });

it is an flow action on the device , does this work for you.

  "actions": [
    {
      "id": "grid_first_discharge_percentage",
      "title": {
        "en": "Discharge powerrate, grid first"
      },
      "args": [
        {
          "type": "range",
          "name": "value",
          "title": {
            "en": "percentage",
            "de": "Prozent",
            "sv": "Procent"
          },
          "min": 1,
          "max": 100,
          "step": 1,
          "labelDecimals": 0
        }
      ]
    },

I am actually already using that flow action to change the percentage, and it works great.

However, what I am looking for is a way to Read the current register value into Homey. I would like Homey to know what the current grid first discharge percentage is actually set to (as a sensor / capability), rather than just sending a command to change it.

Is it possible to add a read function/capability for this specific register?"