Conversation
|
I never had any issues with timeouts on my Aurora and it was running with the hard-coded values for years. I also used shielded CAT7 cable with one pair for the twisted RS485 A+B and another wire for ground. The CAT7 cable shield I left unconnected. Unfortunately the power board of my Aurora died this year and I had to replace the inverter entirely (bought an inverter from Fronius instead). So I cannot test your PR anymore. If you think these parameters are necessary to change and to provide them via config file, I am happy to accept the PR (and the one for solarmeter). Do you really have to change the inter character delay and max iterations from the hard-coded values? What values to you get now for stable comms? Do they differ much? |
|
Thanks for your answer! I was about to try this out now as I found that the communication is a lot less stable since the repair. If the inverter is delivering low power then the solarmeter often does not arrive at delivering any datapoint at all. IWhen I enable the serial logging, then I see it's sending and receiving data over serial. I'll need to debug a bit further but I also saw that timeout error messages are surpressed](https://github.com/ahpohl/solarmeter/blob/master/src/main.cpp#L98C7-L98C7) after 5 occurences. Also the changes that I did here were not working. I'll need to run the binary using gdb when the inverter is on to see what's going on; |
|
Hi. My ABB Aurora PVI-12.5-TL-OUTD made in 2019 was not working with anything available until this library. I had some success with python library, but after running it a few hours, inverter got "tired" and stopped answering. Restart did not helped, changing address did. I have noticed that inverter is VERY picky about RS485 converter. Some stupidly made converters do not work (Waveshare CAN & RS485 HAT), cheap USB>RS485 converters without GND and many others have poorly designed direction switching. Well explained here: Converters that do work are USB ones where USB chip has extra pin for direction (some based on FTDI, original Epsolar USB cable ). Converter that also work is UART to RS485 which have little more evolved circuit for automatic switching. Example of working one: So luckily I do not need to mess with inter-byte delays or what not. Maybe @jekkos has just issues with RS485 converter and not inverter itself? |
|
For what it’s worth, I’m using a very cheap generic USB 2-wire RS485 adapter from eBay with my Aurora PVI-5000-OUTD-S-AU over about 5 meters of speaker wire and it’s reliable enough for my needs. I haven’t opened mine up but it uses a CH340 and looks like the one in the blog post. (Thanks for the link to that. Interesting read.) I am using telegraf to store all datapoints sent over MQTT by solarmeter to InfluxDB for reporting. An occasional timeout or CRC error in solarmeter’s logs but nothing persistent. Most of the errors seem to correlate with to dips in solar production and/or MPPT sweeps, making me think the occasional errors I see are from the inverter side. |
That could very well be the reason. I had this library and the corresponding solarmeter daemon running for years until my Aurora inverter died. I used the USB to TTL/RS485/RS232 adapter from Waveshare without issues. It's based on the original FT232RL, which is very well supported by the Linux kernel. |
|
Interesting, currently I use this adapter. I have the impression that the timeouts only occur when there is not a lot of sun. I thought that maybe this can still be solved in software, by tuning the timeout value once a read timeout occurs. Ofc we should not go slower then the baudrate and keep a bit of margin but it might be worth a try |

This PR extracts serial read iterations + character delay as parameters. I had to have my aurora repaired recently due to the common E031 failure. A relay was replaced and I took a further look at the data logging, it's still giving me a lot of read timeouts and CRC errors.
I'll try to play a bit with thos values to see if they improve the connection reliability a bit.