Hello to all the EV guys and girls out there,
I'm building a digital dashboard for my step-father-in-law. He has the Solition 1 controller.
I can code in a variety of languages, but for this project on a raspberry pi, I'm going to be using either Java or LabView.
I've read the protocol document and source code of version 1.4 of the soliton controller's logger program, but I'm very rusty when it comes to C programming, which is what the logger software was written in.
The controller sends though 16 bit words, via UDP, which I am able to read and convert, but I'm having a hell of a time trying to get the RPM to work.
The protocol document says index 13 of the UDP byte array should be RPM, but that always seems to sit at 0.
I've found index 26 seems to be related to the RPM, as it increments when the motor is spinning up, and decrements when it is spinning down. The issue is that the UDP stream seems to be coming in as an 8 bit byte array, so as soon as index 26 hits 255, it wraps back to 0.
I can compensate by logging every time it hits 255 and multiplying the current value by 255, but that's a messy solution.
Does anyone know C, or this particular controller well enough to help me get the RPM out of the UDP stream? I have the source code of the logger program if that will help, as that displays the RPM correctly.