wildmountainfarms / solarthing

Monitors an Outback MATE, Renogy Rover - MPPT Charge Controller and EPEver Tracer. Integrates with Grafana, PVOutput and more!
https://solarthing.readthedocs.io
MIT License
127 stars 28 forks source link

Rover 20A with Rasperry Pi Modbus exeption #27

Closed Mouky66 closed 3 years ago

Mouky66 commented 3 years ago

Hi, I get the following error:

2021-03-09 14:32:57.681 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.handling.ParsedResponseDataLengthException: Expected a length of 35. Got a length of 4 instead!
        at me.retrodaredevil.io.modbus.handling.HandleResponseHelper.checkResponse(HandleResponseHelper.java:28) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:61) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:13) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:25) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:85) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$8(RoverMain.java:138) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:111) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:83) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:144) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:51) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:103) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:204) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:244) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:272) [solarthing-2021.3.0.jar:?]
2021-03-09 14:32:57.685 [main] INFO  me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Communication with rover working well. Got this response back: function code=0x03 data='00 0A 00 11' feel free to open issue at https://github.com/wildmountainfarms/solarthing/issues/
2021-03-09 14:32:57.686 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4957ms

It is a brand new Rover, never connected to any BT Adapters. Thank you

BR Chris

retrodaredevil commented 3 years ago

That's a really weird error. Can you add "bulk_request": false to your base.json and see if you still get that error?

Mouky66 commented 3 years ago

That changed nothing. Same error. the base.jasen looks like this: { "type": "rover", "source": "default", "fragment": 2, "unique": 30, "io": "config/default_linux_serial.json", "modbus": 1, "bulk_request": false }

retrodaredevil commented 3 years ago

It should be a slightly different error if you added "bulk_request": false. Can you post the new error?

Mouky66 commented 3 years ago

You are right :

2021-03-09 19:57:43.033 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.handling.ParsedResponseDataLengthException: Expected a length of 3. Got a length of 4 instead!
        at me.retrodaredevil.io.modbus.handling.HandleResponseHelper.checkResponse(HandleResponseHelper.java:28) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:61) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:13) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:25) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.get(RoverModbusSlaveRead.java:47) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.oneRegister(RoverModbusSlaveRead.java:50) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.getMaxVoltageValue(RoverModbusSlaveRead.java:58) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.RoverStatusPackets.createFromReadTable(RoverStatusPackets.java:13) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:67) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:111) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:83) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:144) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:51) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:103) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:204) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:244) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:272) [solarthing-2021.3.0.jar:?]
2021-03-09 19:57:43.037 [main] INFO  me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Communication with rover working well. Got this response back: function code=0x03 data='00 0A 00 01' feel free to open issue at https://github.com/wildmountainfarms/solarthing/issues/
retrodaredevil commented 3 years ago

I was hoping I'd never have to see an error like this. This is really weird, and I don't think it's a bug in SolarThing, maybe a bug in the Rover itself. Anyway, I'm probably gonna have you do some testing with Python and minimalmodbus, but before I do, can you tell me exactly what Rover model you have or give a link to the exact model? The model is probably exactly RNG-CTRL-RVR20, so a link to where you bought it may also be helpful.

My first guess as to why this is happening is that your particular rover doesn't support a number of things that other models support, and instead of giving a valid response, it gives a bad response for things that aren't supported. So, when I have you test with Python I'll confirm that the core functionality works (battery voltage, etc), then test other things to see if they work.

Also, until you get this working, you can keep bulk_request set to false.

Mouky66 commented 3 years ago

I hope it is not an unsopported model ;) RNG-CTRL-RVR20 I bought it here: https://www.amazon.de/gp/product/B01MRWTAB5/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1

Please let me know what to test. I am really looking forward to this :)

retrodaredevil commented 3 years ago

As far as I'm aware, that should be a supported model, but I really don't know for sure since I've never personally tested that one. It looks like Renogy's latest model for the Rover 20A too, so I think it should work. On the Rover itself, can you tell me what date it says on there? It should say something like "2018.04" on a white sticker. The version above that would also be helpful too.

As for testing stuff, here we go run this stuff:

# You might have to install python3-pip, maybe, maybe not:
sudo apt install python3-pip
sudo python3 -m pip install solarshed
sudo python3 # Enter interactive python shell
#Inside python shell:
from solarshed.controllers.renogy_rover import RenogyRover
controller = RenogyRover('/dev/ttyUSB0', 1)
controller.battery_voltage()  # I hope this one does not give an error
controller.system_voltage_current() # I hope this one gives an error

Basically solarshed is a great Python library, but it takes a little more DIY to set something up, making it perfect for testing with.

EDIT: It also occurred to me that I might get more helpful errors if you use the rover-setup program. We might try that next if this doesn't give me good errors.

Mouky66 commented 3 years ago

The Version is V030001 and the Date 2020.09

Here is the output: root@testpi:/opt/solarthing/program/rover# apt install python3-pip Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig python3-pip ist schon die neueste Version (9.0.1-2+rpt2). 0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. root@testpi:/opt/solarthing/program/rover# python3 -m pip install solarshed Requirement already satisfied: solarshed in /usr/local/lib/python3.5/dist-packages Requirement already satisfied: prometheus-client==0.1.0 in /usr/local/lib/python3.5/dist-packages (from solarshed) Requirement already satisfied: MinimalModbus==0.7 in /usr/local/lib/python3.5/dist-packages (from solarshed) Requirement already satisfied: pyserial==3.4 in /usr/local/lib/python3.5/dist-packages (from solarshed) root@testpi:/opt/solarthing/program/rover# python3 Python 3.5.3 (default, Nov 18 2020, 21:09:16) [GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information.

from solarshed.controllers.renogy_rover import RenogyRover controller = RenogyRover('/dev/ttyUSB0', 1) controller.battery_voltage() Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python3.5/dist-packages/solarshed/controllers/renogy_rover.py", line 86, in battery_voltage return self.read_register(257, numberOfDecimals=1) File "/usr/local/lib/python3.5/dist-packages/minimalmodbus.py", line 258, in read_register return self._genericCommand(functioncode, registeraddress, numberOfDecimals=numberOfDecimals, signed=signed) File "/usr/local/lib/python3.5/dist-packages/minimalmodbus.py", line 697, in _genericCommand payloadFromSlave = self._performCommand(functioncode, payloadToSlave) File "/usr/local/lib/python3.5/dist-packages/minimalmodbus.py", line 798, in _performCommand payloadFromSlave = _extractPayload(response, self.address, self.mode, functioncode) File "/usr/local/lib/python3.5/dist-packages/minimalmodbus.py", line 1075, in _extractPayload raise ValueError(text) ValueError: Checksum error in rtu mode: '\x01Ô' instead of 'IÔ' . The response is: '\x01\x03\x01\x01\x00\x01Ô' (plain response: '\x01\x03\x01\x01\x00\x01Ô') controller.system_voltage_current() Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python3.5/dist-packages/solarshed/controllers/renogy_rover.py", line 48, in system_voltage_current register = self.read_register(10) File "/usr/local/lib/python3.5/dist-packages/minimalmodbus.py", line 258, in read_register return self._genericCommand(functioncode, registeraddress, numberOfDecimals=numberOfDecimals, signed=signed) File "/usr/local/lib/python3.5/dist-packages/minimalmodbus.py", line 697, in _genericCommand payloadFromSlave = self._performCommand(functioncode, payloadToSlave) File "/usr/local/lib/python3.5/dist-packages/minimalmodbus.py", line 798, in _performCommand payloadFromSlave = _extractPayload(response, self.address, self.mode, functioncode) File "/usr/local/lib/python3.5/dist-packages/minimalmodbus.py", line 1075, in _extractPayload raise ValueError(text) ValueError: Checksum error in rtu mode: '\x00\x01' instead of '\x9dÿ' . The response is: '6\x01\x03\x00\n\x00\x01' (plain response: '6\x01\x03\x00\n\x00\x01')

retrodaredevil commented 3 years ago

Ok, well it's good to know for sure that the bug isn't in SolarThing since these two modbus libraries handle things a bit differently.

It's extremely weird that the Rover sends back a mostly valid response. Hopefully the cause of this is the cable being used. What cable are you using to communicate with your Rover?

Can you try out the rover-setup program now? You can use this as your base.json, or better yet, create a new file called base-setup.json and run SolarThing using ./run.sh config/base-setup.json.

{ "type": "rover-setup", "io": "config/default_linux_serial.json", "modbus": 1} 

Now run SolarThing, and type stuff like batteryvoltage into the input. SolarThing should crash, then just run it again and try something different. The more errors the better for me.

List of things to type:

Mouky66 commented 3 years ago

It is a selfmade one with RJ12 -> RS232 to TTL Converter with DB9 -> DB9 to USB Adapter. I used this https://www.amazon.de/gp/product/B07ZDK4BLH/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1 and this https://www.amazon.de/Cisco-Konsolen-kabel-Serielles-Kabel/dp/B07PHQMCFV/ref=sr_1_15?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=db9+usb&qid=1615321443&s=computers&sr=1-15

I used Tx, Rx and GND

And here is the new output:

root@testpi:/opt/solarthing/program/rover# ./run.sh config/base-setup.json
Using base config = config/base-setup.json
2021-03-09 21:20:48.308 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - [LOG] Beginning main. Jar: solarthing-2021.3.0.jar Java version: 1.8.0_275
[stdout] Beginning main. Jar: solarthing-2021.3.0.jar Java version: 1.8.0_275
[stderr] Beginning main. Jar: solarthing-2021.3.0.jar Java version: 1.8.0_275
2021-03-09 21:20:48.836 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - Using base configuration file: config/base-setup.json
2021-03-09 21:20:50.055 [main] DEBUG me.retrodaredevil.solarthing.io.ReloadableIOBundle - Successfully reloaded IOBundle
batteryvoltage
2021-03-09 21:21:23.540 [main] ERROR me.retrodaredevil.solarthing.program.RoverMain - (Fatal)Got exception!
me.retrodaredevil.io.modbus.handling.ParsedResponseDataLengthException: Expected a length of 3. Got a length of 4 instead!
        at me.retrodaredevil.io.modbus.handling.HandleResponseHelper.checkResponse(HandleResponseHelper.java:28) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:61) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:13) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:25) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.get(RoverModbusSlaveRead.java:47) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.oneRegister(RoverModbusSlaveRead.java:50) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.getBatteryVoltage(RoverModbusSlaveRead.java:111) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverSetupProgram.startRoverSetup(RoverSetupProgram.java:72) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:144) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRoverSetup(RoverMain.java:106) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:206) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:244) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:272) [solarthing-2021.3.0.jar:?]
root@testpi:/opt/solarthing/program/rover# ./run.sh config/base-setup.json
Using base config = config/base-setup.json
2021-03-09 21:21:38.569 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - [LOG] Beginning main. Jar: solarthing-2021.3.0.jar Java version: 1.8.0_275
[stdout] Beginning main. Jar: solarthing-2021.3.0.jar Java version: 1.8.0_275
[stderr] Beginning main. Jar: solarthing-2021.3.0.jar Java version: 1.8.0_275
2021-03-09 21:21:39.132 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - Using base configuration file: config/base-setup.json
2021-03-09 21:21:40.376 [main] DEBUG me.retrodaredevil.solarthing.io.ReloadableIOBundle - Successfully reloaded IOBundle
pvcurrent
2021-03-09 21:21:44.409 [main] ERROR me.retrodaredevil.solarthing.program.RoverMain - (Fatal)Got exception!
me.retrodaredevil.io.modbus.handling.ParsedResponseDataLengthException: Expected a length of 3. Got a length of 4 instead!
        at me.retrodaredevil.io.modbus.handling.HandleResponseHelper.checkResponse(HandleResponseHelper.java:28) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:61) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:13) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:25) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.get(RoverModbusSlaveRead.java:47) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.oneRegister(RoverModbusSlaveRead.java:50) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.getPVCurrent(RoverModbusSlaveRead.java:153) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverSetupProgram.startRoverSetup(RoverSetupProgram.java:96) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:144) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRoverSetup(RoverMain.java:106) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:206) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:244) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:272) [solarthing-2021.3.0.jar:?]
root@testpi:/opt/solarthing/program/rover# ./run.sh config/base-setup.json
Using base config = config/base-setup.json
2021-03-09 21:21:56.448 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - [LOG] Beginning main. Jar: solarthing-2021.3.0.jar Java version: 1.8.0_275
[stdout] Beginning main. Jar: solarthing-2021.3.0.jar Java version: 1.8.0_275
[stderr] Beginning main. Jar: solarthing-2021.3.0.jar Java version: 1.8.0_275
2021-03-09 21:21:56.997 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - Using base configuration file: config/base-setup.json
2021-03-09 21:21:58.197 [main] DEBUG me.retrodaredevil.solarthing.io.ReloadableIOBundle - Successfully reloaded IOBundle
productmodel
2021-03-09 21:22:13.219 [main] ERROR me.retrodaredevil.solarthing.program.RoverMain - (Fatal)Got exception!
me.retrodaredevil.io.modbus.handling.ParsedResponseDataLengthException: Expected a length of 17. Got a length of 4 instead!
        at me.retrodaredevil.io.modbus.handling.HandleResponseHelper.checkResponse(HandleResponseHelper.java:28) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:61) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:13) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:25) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.get(RoverModbusSlaveRead.java:47) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.getProductModelValue(RoverModbusSlaveRead.java:73) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.RoverReadTable.getProductModel(RoverReadTable.java:114) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverSetupProgram.startRoverSetup(RoverSetupProgram.java:54) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:144) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRoverSetup(RoverMain.java:106) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:206) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:244) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:272) [solarthing-2021.3.0.jar:?]
root@testpi:/opt/solarthing/program/rover# ./run.sh config/base-setup.json
Using base config = config/base-setup.json
2021-03-09 21:22:25.214 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - [LOG] Beginning main. Jar: solarthing-2021.3.0.jar Java version: 1.8.0_275
[stdout] Beginning main. Jar: solarthing-2021.3.0.jar Java version: 1.8.0_275
[stderr] Beginning main. Jar: solarthing-2021.3.0.jar Java version: 1.8.0_275
2021-03-09 21:22:25.751 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - Using base configuration file: config/base-setup.json
2021-03-09 21:22:26.982 [main] DEBUG me.retrodaredevil.solarthing.io.ReloadableIOBundle - Successfully reloaded IOBundle
ratedcurrent
2021-03-09 21:22:31.639 [main] ERROR me.retrodaredevil.solarthing.program.RoverMain - (Fatal)Got exception!
me.retrodaredevil.io.modbus.handling.ParsedResponseDataLengthException: Expected a length of 3. Got a length of 4 instead!
        at me.retrodaredevil.io.modbus.handling.HandleResponseHelper.checkResponse(HandleResponseHelper.java:28) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:61) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:13) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:25) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.get(RoverModbusSlaveRead.java:47) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.oneRegister(RoverModbusSlaveRead.java:50) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.getRatedChargingCurrentValue(RoverModbusSlaveRead.java:61) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverSetupProgram.startRoverSetup(RoverSetupProgram.java:45) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:144) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRoverSetup(RoverMain.java:106) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:206) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:244) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:272) [solarthing-2021.3.0.jar:?]
retrodaredevil commented 3 years ago

Ok, that's an interesting cable setup, and I don't think it's going to work. The good news is that I don't think you need to buy anything else, you just have to change how the cable is wired.

I can't read German, so I don't reference exactly what's going on in those Amazon links, but I'll do my best.

So you have an RS232-TTL converter. This is perfect for use with the Raspberry Pi's GPIO. You can use this if you want to not use USB. Basically, you'd wire it to the GPIO with the little jumper cables, then you'd take the DB9 output and connect that to some sort of RJ12 cable which goes into the Rover. Personally, I've never tried this solution, but it's possible.

Now, the solution I recommend, is just using your USB to RS232 cable. Plug the USB into the Pi, then you wire the outputs on the DB9 side to the Rover. (I actually recommend a breakout board, but it's optional).

Now, looking at the other part of that amazon link, it looks like it has some sort of thing to go from a DB9 to an RJ45. Assuming there's no conversion being done here, you could use this as a sort of breakout board which you would then wire to an RJ12 connector. It's up to you how you want to wire it.

I don't know how you got a TTL converter in the mix, but you need to either choose one or the other. My guess is that you probably mean to buy a breakout board for the DB9 connector, but ended up accidentally buying a TTL converter.

I mean, you did get something working, which is really amazing that you got a response that tricked SolarThing a couple of times to thinking it was something that it wasn't. I've never seen a response like that before.

Mouky66 commented 3 years ago

I will try both ways tomorrow and let you know the resultsts. I feel relieved that it seems to be the cable. Thank you for your time and your suggestions.

retrodaredevil commented 3 years ago

If you decide to go the GPIO route, you won't be using /dev/ttyUSB0 anymore, you'll be using something else.

Mouky66 commented 3 years ago

Hi Joshua,

it has been the cable. I have thrown out the ttl converter and now it is working like it should :) Thanks again for your help. BR Chris