solaredge icon indicating copy to clipboard operation
solaredge copied to clipboard

Push interval

Open vandalon opened this issue 7 years ago • 6 comments

Hi,

I've read somewhere that there is a way to change the interval the solaredge pushes data over serial? Is this true and does somebody know how to do this? Or/and is there a way to pull the inverter and/or optimizer data via rs485?

Regards, Joris

vandalon avatar Sep 15 '17 07:09 vandalon

Hey @vandalon I'm also pulling via RS485, and since the RS485/semonitor is the master, it probes the inverter quite often. The inverter however only responds whenever it has data. Some data for example is only available after an interval of 300 seconds.

When the inverter is the master, it pushes at these predetermined intervals.

What exactly are you after/trying to accomplish?

oliv3r avatar Sep 15 '17 17:09 oliv3r

Hi oliV3r, thanks for the quick reply!

I would like to read data more often than every 300 minutes. It would be great to have at least once a minute the power production information of the inverter.

vandalon avatar Sep 15 '17 18:09 vandalon

Have a look at this comment to issue #8 by me at 2 Apr 2016 00:16 CEST Disclaimer: totally untested!

EDIT: I see GitHub is not unhiding that comment if you just click the link... gah. I'll quote verbatim.

The commands we have seen so far are called 'SDP Packets'. We're now going into 'PLC Packets'. When the config tool sends out PLC Packets to the inverter, they are wrapped into the 0218 SDP Packet (PROT_CMD_VENUSMNGR_KA_DATA_SEND). The contents of the SDP Packet: a 16-bit integer specifying the length of the PLC data, followed by the data itself.

//Contents of 0218 SDP packet
UINT16 dataSize;
UINT8 data[dataSize]; //The data consists of a PLC packet

With that out of the way, we now turn our attention to the PLC packet format (the data member above).

//Contents of PLC packet
UINT8 dataSize;
UINT8 opCode;
UINT8 data[dataSize];
UINT16 checksum;

So, what exactly is the config tool sending to control the telemetry rate?

//Contents of PLC packet sent by config tool to control the telemetry rate
UINT8 dataSize = 14;
UINT8 opCode = 0x1A; //PLC_CMD_SET_VOLATILE; i.e., set volatile parameters
UINT32 sourceAddress = inverter_id; //Either with or without the extra bit
UINT32 destinationAddres = 0xffffffff; //Broadcast to all devices
UINT16 paramIndex = 0x3D; //MERCURY_PARAM_TELEM_AVG_TIME_SEC
UINT32 paramValue = 40; //Number of seconds (300=normal, 40=fast for 1phase, 80=fast for 3phase)
UINT16 checksum = ...; //The usual type of checksum, init=23130 as usual

Jerrythafast avatar Sep 15 '17 19:09 Jerrythafast

I actually saw that comment before but I did not get it working effectively. Mostly because of lack of knowledge I think 😊

vandalon avatar Sep 15 '17 19:09 vandalon

Also, Mercury are the optimizers. I would like to get real time data from the inverter. If at all possible :)

vandalon avatar Sep 18 '17 11:09 vandalon

I have test this command and it seems not to work with newer inverters and optimizers. I have send this command very often to one optimizer and finally he doesn't send no more data. After a power cycle of the inverter he finally came back.

ksaihtam avatar Sep 19 '17 05:09 ksaihtam