First time install - SunSpec binding gives zero data

  • Platform information:
    • Hardware: Xen virtual machine
    • OS: Fedora 40
    • Java Runtime Environment: Openjdk 21
    • openHAB version:4.3.4
  • Issue of the topic: please be detailed explaining your issue
  • Please post configurations (if applicable):
    • Thing → Modbus TCP bridge, FQDN of device to talk to, port 502, device ID 1, have tried with and without discovery enabled
    • Thing → Single phase inverter, using bridge as per above. Block length 120, start address 40000.
    • No rules yet.
  • If logs where generated please post these here using code fences:
    Started openhab.service - openHAB - empowering the smart home.

I am trying to talk to an ABB inverter that is SunSpec compatible. I have read the SunSpec documentation and written a small Java program to talk Modbus and iterate through the models and print out the data, so I know that the inverter communicates and provides correct data.
All the “channels” I have added read zero in OpenHab (except current which reads 1.0) where my test program will read actual data. OpenHab also shows the model number, etc information as blank even though I can see this data in the packet capture being sent back to OpenHab.
In the packet capture of the comms between the inverter and OpenHab I can see the data, although it only read 61 words (initially) and later 120 words (once I increased it) however that does not cover all the data I want to look at. If I increase the size too much more then it generates an error and fails to start the link at all.
Also, there are a number of “models” available at different addresses, but the configuration only seems to allow me to configure a single model. How do I read from multiple models (as defined in the SunSpec specification)? Ultimately it should just be given a start address and be able to discover all of the models itself.
How do I read non-zero data? I can see the data on the actual link, but don’t seem to have any control of which information refers to what piece of data.

Note that this is my first time ever using Open Hab, so it is likely I have stuffed up something basic and fundamental.

Thank you

GC

The start address to use is the start address of the “model block”, usually something like 40069. I cannot find the ABB documentation showing the specifics for their inverters.

FYI: address 40000 is the “common model block”, not the “model block”

OK, Thank you for that.
I have changed the model start address to 40070 and model 101 is now mostly working. The “AC Voltage” parameter is showing as UNDEF though, but the packet capture shows a value in here so I suspect it is trying to use one of the other voltages (I have data in 40080 Phase Voltage AN, how do I get it to read that?)

None of the data from the “common model” (model 1) is working. I have the common model block starting at 40002 (40000 and 40001 are the well known value of “SunS”) followed by 18 other models. The packet capture shows only the data from model 101 which makes sense as that is the address I have configured. How do I read the data from the common model? Do I need to create a new instance?

I have also tried to use the Modbus Data thing, first setting up a regular poll to read in a different model. I can see the regular poll working as expected in the packet capture with data where I expect, but I get NULL as the value. I have the regular Poll starting at 41104 with length 48 and my data is word 17 / Address 41123. I tried setting the Modbus data read address to 17 but it gave a config error, setting it to 41123 gets rid of the config error, but no valid data. What am I doing wrong here?

Thank you

GC