Processing int16 values

Both are correct. If you were to choose uint32 & then check the value, it would be 0x53756e53 - essentially the hexadecimal ASCII representation of "SunS"

Length represents the length of the item being created (not the bytes consumed). For example, if set for a string with a length of 10 you will get string with 10 characters & will need 10 bytes in the buffer. If the item is UINT32 with length of 4 you will get an array of 4 UINT32 & will need 16 bytes in the buffer.

I think the built in help explains it more succinctly.

1 Like

Goodness me. Looks like you’ve cracked it. Let me try those settings. Thanks for this.

Yep, I set set it as you show and I get the correct results.

The buffer carries on abd the problem is I have no accurate why of predicting the expected values so I need confidence in the method. The manual isn’t very helpful at all.

I get the comment about the length depends on the Type. What does the offset mean.? Is it a count of bits?

As it parses a buffer, you need somewhere to start within that buffer, that is the offset. Essentially offset 0 means first byte in the buffer, offset 10 means the 10th byte in the buffer

Again, the built in help in the sidebar explains this more succinctly.

and if it helps to calculate the offset a bit more

1 modbus register = 16 bits = 2 bytes

32bit values need 4 bytes so you read 2 registers to 'decipher' them with Buffer parser depending on their type.

Link to SunSpec manual.
On page 16 they have the Register mappings

Making great progress now. Thanks for all the help. The Buffer Parse node automatically calculates the next offset correctly as you add the fields. Apart from the SolaEdge/SunSpec doc being wrong, the other problem (not an error) is that the node does not automatically change the Offset if the Type is changed. Therefore it’s better to delete and redefine the field.

Next issue the the Scaling Factor. SolarEdge have used a different value than SunSpec and it’s dynamic so I’m going to have the inspect and implement that with a function.

My ultimate goal is to convert the entire Modbus buffer to JSON to replace the API interface.

Regards,

Ian

Yes .. very recently there was a discussion on the same brand of Solar inverters and the rest of the values (Power, Current etc ) have a scale factor SF that you need to convert with a formula in a Function node.

Hi Guys, again thanks so much for your help and encouragement. This is how far I have got now including the JSON output I am aiming for finally.

There are two discrete calls to the ModBus (probably could be one in the end). nThe first deals with pages 16 & 17 of the SolarEdge/SunSpec document, the second starts to deal with pages 19 onwards (ie the Import-Export Meter).

Problem with group 1 - the last two field dont make sense to me.

Problem with group 2 - the data seems to be missing from Block 40189 onwards.

I plan to take this up with SolarEdge support but can you confirm that I am right so far please?

[{"id":"85c036c8.af1558","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"50365dc.3e136a4","type":"modbus-getter","z":"85c036c8.af1558","name":"Load","showStatusActivities":true,"showErrors":true,"logIOActivities":false,"unitid":"1","dataType":"HoldingRegister","adr":"40000","quantity":"109","server":"fa971e4c.0eaa6","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"keepMsgProperties":false,"x":230,"y":120,"wires":[["92f9d673.b07888"],[]]},{"id":"d2f9fcfa.57091","type":"inject","z":"85c036c8.af1558","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":100,"y":120,"wires":[["50365dc.3e136a4"]]},{"id":"92f9d673.b07888","type":"buffer-parser","z":"85c036c8.af1558","name":"","data":"responseBuffer.buffer","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"string","name":"ID","offset":0,"length":4,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"DID","offset":4,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"Length","offset":6,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"string","name":"Manufacturer","offset":8,"length":32,"offsetbit":0,"scale":"1","mask":""},{"type":"string","name":"Model","offset":40,"length":32,"offsetbit":0,"scale":"1","mask":""},{"type":"string","name":"Version","offset":88,"length":16,"offsetbit":0,"scale":"1","mask":""},{"type":"string","name":"SerialNumber","offset":104,"length":32,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"DeviceAddr","offset":136,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"SunSPec_DID","offset":138,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"SunSpec_Length","offset":140,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"AC_Current","offset":142,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"AC_Current_A","offset":144,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"AC_Current_B","offset":146,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"AC_Current_C","offset":148,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"AC_Current_SF","offset":150,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"AB_Volts","offset":152,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"BC_Volts","offset":154,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"CA_Volts","offset":156,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"AN_Volts","offset":158,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"BN_Volts","offset":160,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"CN_Volts","offset":162,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"Volts_SF","offset":164,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"AC_Power","offset":166,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"Power_SF","offset":168,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"AC_Frequency","offset":170,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"AC_Freq_SF","offset":172,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"AC_VA","offset":174,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"AC_VA_SF","offset":176,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"AC_VAR","offset":178,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"AC_VAR_SF","offset":180,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"AC_PF","offset":182,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"AC_PF_SF","offset":184,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint32be","name":"AC_Energy_WH","offset":186,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"AC_Energy_WH_SF","offset":190,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"DC_Current","offset":192,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"DC_Current_SF","offset":194,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"DC_Volts","offset":196,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"DC_Volts_SF","offset":198,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"DC_Power","offset":200,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"DC_Power_SF","offset":202,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"Temp_Sink","offset":204,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"int16be","name":"Temp_SF","offset":206,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"Status","offset":208,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"Status_Vendor","offset":210,"length":1,"offsetbit":0,"scale":"1","mask":""}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"keyvalue","resultTypeType":"output","multipleResult":false,"fanOutMultipleResult":true,"setTopic":false,"outputs":1,"x":130,"y":200,"wires":[["1dab210.be2f1df"]]},{"id":"94c363a9.f20ea","type":"debug","z":"85c036c8.af1558","name":"payload","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":680,"y":120,"wires":[]},{"id":"1dab210.be2f1df","type":"function","z":"85c036c8.af1558","name":"","func":"msg0 = {payload:msg.originalPayload};\nmsg1 = {payload:msg.payload};\npower = msg.payload.AC_Power;\nmsg2 = {payload:power};\nfactor = msg.payload.AC_PF_SF;\nmsg3 = {payload:factor};\nmsg4 = {payload:((power * Math.pow(10,factor))/1000)};\n\nreturn [ msg0, msg1, msg2,msg3, msg4];","outputs":5,"noerr":0,"initialize":"","finalize":"","x":340,"y":200,"wires":[["3be49e13.d80312"],["94c363a9.f20ea"],["8bba6a3d.bc27b8"],["40312d95.633034"],["725c5974.3c99b8"]]},{"id":"8bba6a3d.bc27b8","type":"debug","z":"85c036c8.af1558","name":"Data","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":670,"y":160,"wires":[]},{"id":"40312d95.633034","type":"debug","z":"85c036c8.af1558","name":"Data_SF","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":680,"y":200,"wires":[]},{"id":"725c5974.3c99b8","type":"debug","z":"85c036c8.af1558","name":"RESULT kW","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":690,"y":240,"wires":[]},{"id":"3be49e13.d80312","type":"debug","z":"85c036c8.af1558","name":"Original Payload","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":700,"y":80,"wires":[]},{"id":"5fda942d.65149c","type":"modbus-getter","z":"85c036c8.af1558","name":"Load","showStatusActivities":true,"showErrors":true,"logIOActivities":false,"unitid":"1","dataType":"HoldingRegister","adr":"40121","quantity":"69","server":"fa971e4c.0eaa6","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"keepMsgProperties":false,"x":310,"y":280,"wires":[["81768a48.a16918"],[]]},{"id":"fabd233d.0b78f","type":"inject","z":"85c036c8.af1558","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"3600","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":110,"y":280,"wires":[["5fda942d.65149c"]]},{"id":"81768a48.a16918","type":"buffer-parser","z":"85c036c8.af1558","name":"","data":"responseBuffer.buffer","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"uint16be","name":"M_SS_DID","offset":0,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"M_Length","offset":2,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"string","name":"M_Manufacturer","offset":4,"length":32,"offsetbit":0,"scale":"1","mask":""},{"type":"string","name":"M_Model","offset":36,"length":32,"offsetbit":0,"scale":"1","mask":""},{"type":"string","name":"M_Option","offset":68,"length":16,"offsetbit":0,"scale":"1","mask":""},{"type":"string","name":"M_Version","offset":84,"length":16,"offsetbit":0,"scale":"1","mask":""},{"type":"string","name":"M_Serial_No","offset":100,"length":32,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"M_Dev_Addr","offset":132,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"M_SunSpec_DID","offset":134,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"uint16be","name":"M_Block_Length","offset":136,"length":1,"offsetbit":0,"scale":"1","mask":""}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"keyvalue","resultTypeType":"output","multipleResult":false,"fanOutMultipleResult":true,"setTopic":false,"outputs":1,"x":130,"y":380,"wires":[["fe315d0b.f7621"]]},{"id":"fe315d0b.f7621","type":"function","z":"85c036c8.af1558","name":"","func":"msg0 = {payload:msg.originalPayload};\nmsg1 = {payload:msg.payload};\n//msg2 = {payload:msg.payload.AC_PF};\n//power = msg.payload.AC_PF;\n//msg3 = {payload:msg.payload.AC_PF_SF};\n//factor = msg.payload.AC_PF_SF;\n//msg4 = {payload:((power * Math.pow(10,factor))/1000)};\n\nreturn [ msg0, msg1 ]\n//, msg2,msg3, msg4];","outputs":2,"noerr":0,"initialize":"","finalize":"","x":360,"y":380,"wires":[["594bdf4.2d8342"],["23c12fb.f5b82d"]]},{"id":"23c12fb.f5b82d","type":"debug","z":"85c036c8.af1558","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":690,"y":420,"wires":[]},{"id":"594bdf4.2d8342","type":"debug","z":"85c036c8.af1558","name":"Original Payload","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":700,"y":380,"wires":[]},{"id":"fa971e4c.0eaa6","type":"modbus-client","name":"","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"192.168.10.31","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":"1","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true}]

Buffer Data

[21365,28243,1,65,21359,27745,29253,25703,25888,0,0,0,0,0,0,0,0,0,0,0,21317,13360,12336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12336,12339,11826,12600,13824,0,0,0,14150,12597,12342,17463,0,0,0,0,0,0,0,0,0,0,0,0,1,101,50,4062,4062,65535,65535,65532,2342,65535,65535,65535,65535,65535,65535,60536,65533,50123,65533,9413,65534,56136,65534,8310,65534,288,46956,0,52862,65530,4005,65535,60460,65533,32768,1494,32768,32768,65534,4,0]

My Output

{"ID":"SunS","DID":1,"Length":65,"Manufacturer":"SolarEdge \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","Model":"SE4000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","Version":"0003.2186\u0000\u0000\u0000\u0000\u0000\u0000\u0000","SerialNumber":"7F1506D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","DeviceAddr":1,"SunSPec_DID":101,"SunSpec_Length":50,"AC_Current":4062,"AC_Current_A":4062,"AC_Current_B":65535,"AC_Current_C":65535,"AC_Current_SF":-4,"AB_Volts":2342,"BC_Volts":65535,"CA_Volts":65535,"AN_Volts":65535,"BN_Volts":65535,"CN_Volts":65535,"Volts_SF":-1,"AC_Power":-5000,"Power_SF":-3,"AC_Frequency":50123,"AC_Freq_SF":-3,"AC_VA":9413,"AC_VA_SF":-2,"AC_VAR":-9400,"AC_VAR_SF":-2,"AC_PF":8310,"AC_PF_SF":-2,"AC_Energy_WH":18921324,"AC_Energy_WH_SF":0,"DC_Current":52862,"DC_Current_SF":-6,"DC_Volts":4005,"DC_Volts_SF":-1,"DC_Power":-5076,"DC_Power_SF":-3,"Temp_Sink":-32768,"Temp_SF":1494,"Status":32768,"Status_Vendor":32768}

Group 2 from Block 40121 onwards
Buffer Data

[1,65,22369,29812,20079,25701,0,0,0,0,0,0,0,0,0,0,0,0,22350,17197,13145,11572,12336,11597,16896,0,0,0,0,0,0,0,0,0,17784,28783,29300,11081,28016,28530,29696,0,12852,0,0,0,0,0,0,0,13360,12594,12852,13056,0,0,0,0,0,0,0,0,0,0,0,0,1,201,105]

My Output

{"M_SS_DID":1,"M_Length":65,"M_Manufacturer":"WattNode\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","M_Model":"WNC-3Y-400-MB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","M_Option":"Export+Import\u0000\u0000\u0000","M_Version":"24\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","M_Serial_No":"4012243\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","M_Dev_Addr":1,"M_SunSpec_DID":201,"M_Block_Length":105}

Hi, you haven't copied the buffer, that's the data. If you set your debug to show full msg& expand it until you see the buffer & copy that (buffer is always bytes 0~255)

Can you clarify that with a screenshot of the documentation and what you see Vs what you expect to see?

First Group pages 16-17 of Spec

Modbus Buffer

{"payload":[21365,28243,1,65,21359,27745,29253,25703,25888,0,0,0,0,0,0,0,0,0,0,0,21317,13360,12336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12336,12339,11826,12600,13824,0,0,0,14150,12597,12342,17463,0,0,0,0,0,0,0,0,0,0,0,0,1,101,50,3984,3984,65535,65535,65532,2353,65535,65535,65535,65535,65535,65535,57536,65533,50028,65533,9334,65534,56236,65534,911,65534,288,46956,0,45244,65530,4002,65535,57415,65533,32768,1458,32768,32768,65534,4,0],"_msgid":"4b47f81f.614c68"}

My Results

{"payload":{"ID":"SunS","DID":1,"Length":65,"Manufacturer":"SolarEdge \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","Model":"SE4000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","Version":"0003.2186\u0000\u0000\u0000\u0000\u0000\u0000\u0000","SerialNumber":"7F1506D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","DeviceAddr":1,"SunSPec_DID":101,"SunSpec_Length":50,"AC_Current":3984,"AC_Current_A":3984,"AC_Current_B":65535,"AC_Current_C":65535,"AC_Current_SF":-4,"AB_Volts":2353,"BC_Volts":65535,"CA_Volts":65535,"AN_Volts":65535,"BN_Volts":65535,"CN_Volts":65535,"Volts_SF":-1,"AC_Power":-8000,"Power_SF":-3,"AC_Frequency":50028,"AC_Freq_SF":-3,"AC_VA":9334,"AC_VA_SF":-2,"AC_VAR":-9300,"AC_VAR_SF":-2,"AC_PF":911,"AC_PF_SF":-2,"AC_Energy_WH":18921324,"AC_Energy_WH_SF":0,"DC_Current":45244,"DC_Current_SF":-6,"DC_Volts":4002,"DC_Volts_SF":-1,"DC_Power":-8121,"DC_Power_SF":-3,"Temp_Sink":-32768,"Temp_SF":1458,"Status":32768,"Status_Vendor":32768},"_msgid":"4b47f81f.614c68"}

Spec says Temp_Sink and Temp_Scale_Factor are the last two fields.

Second Group pages 19 onwards
Modbus Buffer

{"payload":{"ID":"SunS","DID":1,"Length":65,"Manufacturer":"SolarEdge \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","Model":"SE4000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","Version":"0003.2186\u0000\u0000\u0000\u0000\u0000\u0000\u0000","SerialNumber":"7F1506D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","DeviceAddr":1,"SunSPec_DID":101,"SunSpec_Length":50,"AC_Current":3984,"AC_Current_A":3984,"AC_Current_B":65535,"AC_Current_C":65535,"AC_Current_SF":-4,"AB_Volts":2353,"BC_Volts":65535,"CA_Volts":65535,"AN_Volts":65535,"BN_Volts":65535,"CN_Volts":65535,"Volts_SF":-1,"AC_Power":-8000,"Power_SF":-3,"AC_Frequency":50028,"AC_Freq_SF":-3,"AC_VA":9334,"AC_VA_SF":-2,"AC_VAR":-9300,"AC_VAR_SF":-2,"AC_PF":911,"AC_PF_SF":-2,"AC_Energy_WH":18921324,"AC_Energy_WH_SF":0,"DC_Current":45244,"DC_Current_SF":-6,"DC_Volts":4002,"DC_Volts_SF":-1,"DC_Power":-8121,"DC_Power_SF":-3,"Temp_Sink":-32768,"Temp_SF":1458,"Status":32768,"Status_Vendor":32768},"_msgid":"4b47f81f.614c68"}

My Results

{"payload":{"ID":"SunS","DID":1,"Length":65,"Manufacturer":"SolarEdge \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","Model":"SE4000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","Version":"0003.2186\u0000\u0000\u0000\u0000\u0000\u0000\u0000","SerialNumber":"7F1506D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","DeviceAddr":1,"SunSPec_DID":101,"SunSpec_Length":50,"AC_Current":3984,"AC_Current_A":3984,"AC_Current_B":65535,"AC_Current_C":65535,"AC_Current_SF":-4,"AB_Volts":2353,"BC_Volts":65535,"CA_Volts":65535,"AN_Volts":65535,"BN_Volts":65535,"CN_Volts":65535,"Volts_SF":-1,"AC_Power":-8000,"Power_SF":-3,"AC_Frequency":50028,"AC_Freq_SF":-3,"AC_VA":9334,"AC_VA_SF":-2,"AC_VAR":-9300,"AC_VAR_SF":-2,"AC_PF":911,"AC_PF_SF":-2,"AC_Energy_WH":18921324,"AC_Energy_WH_SF":0,"DC_Current":45244,"DC_Current_SF":-6,"DC_Volts":4002,"DC_Volts_SF":-1,"DC_Power":-8121,"DC_Power_SF":-3,"Temp_Sink":-32768,"Temp_SF":1458,"Status":32768,"Status_Vendor":32768},"_msgid":"4b47f81f.614c68"}

Data seems to run out after Block 40189.

Did you see my post?

Sorry but I can't help if you don't provide the info I need.

Hi Steve, I did send the untouched input, my processed output and the spec document. What have I missed now?

The line Modbus Buffer is the raw input in the first example. I messed up the second one and I’ll send it again.

Ok, youre right I sent the wrong buffer, sorry.

I've split it into 3 groups now. Group 2 seems ok Blocks 40121 - 40187 on page 19.

The third group seems almost empty:- After Block 40189 (Length = 105), all the values are eithe zero or 32768. Its like the Meter is "Locked" or something.

Group Three:-
Raw Buffer:-

{"topic":"ba6d74bf.cb3238","messageId":"5fda032e218a472419e20f9a","payload":[201,105,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32768,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32768,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32768],"queueLengthByUnitId":{"unitId":1,"queueLength":0},"queueUnitId":1,"unitId":1,"modbusRequest":{"value":1608123182233,"unitid":"1","fc":3,"address":"40188","quantity":"105","messageId":"5fda032e218a472419e20f9a"},"responseBuffer":{"data":[201,105,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32768,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32768,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32768],"buffer":[0,201,0,105,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0]},"_msgid":"58254b56.78b1f4"}

My processed Result:-

{"payload":{"M_SS_DID":201,"M_Length":105,"M_AC_Current_sum":-32768},"_msgid":"58254b56.78b1f4"}

Can you try reducing the request length to below 100, do the value look any better?

Here is 40189 for 50:- It just continues like that all the way up to 40293 which is the end of the Blocks for 1 meter. Anything above that gives out of range error.

{"topic":"ba6d74bf.cb3238","messageId":"5fda1de8218a472419e21321","payload":[105,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,0,0,0,0,0,0,0,0,0,0,0,0,0],"queueLengthByUnitId":{"unitId":1,"queueLength":0},"queueUnitId":1,"unitId":1,"modbusRequest":{"value":1608130024635,"unitid":"1","fc":3,"address":"40189","quantity":"50","messageId":"5fda1de8218a472419e21321"},"responseBuffer":{"data":[105,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,0,0,0,0,0,0,0,0,0,0,0,0,0],"buffer":[0,105,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"_msgid":"648091c5.e8461"}

then unless the manufacturer replies, I guess you are stuck.

that said, is there anything you REALLY need from those upper registers? you have quite a bit of useful info from the first 2 groups.

As a minimum I need the following:-

Grid power flow +/- kW

House load kW

PV Output kW

Battery State %
Battery Flow kW +/- kW

So far unable to definitively identify any of them.

It’s also a challenge to verify since the figure changes constantly so the Power consumption shown on the SolarEdge app is always different because of a time difference. The values are all dynamic so it’s like herding cats.

Are they within that area sending 0 or 32768 ? (or are they in the first 2 groups?)

What do you mean by that?