I recently decoded all Bluetooth communication between Mobile Devices and Energica Motorcycles. I’ve been working on this for Zero before but got somewhat discouraged when Zero released their lawyers and managed to get both my project website and app release down. This time it’s different cause I was asked to get SOC values so I had a reason other than just fooling around.
Honestly it didn’t take me very long. After two evenings of debugging the connection I could connect and create a “BLE session” on my own app. Not all data was received properly at this point. It took another (longer) evening to get all data parsed correctly. After that it was just adding features and improving on code.
The project is available on this project website. Since the moment I created above video I’ve added graphs cause that is what I really want myself. But more on that later on. Let’s first explain what does and does not work.
What doesn’t work still
There is one feature still that doesn’t work for me. It could be me using it wrong cause the bike seems to respond and accept the information I send to it. I’m talking about the charge limit where you would configure a maximum SOC value it’s allowed to charge up to. Once that SOC value is reached it should stop charging by itself.
Now I’ve tested this feature with the official MyEnergica app and I get the same results. I can set the value, the bike will respond with a confirmation. But once that SOC is reached while charging it will just keep charging. So I think it’s an issue with my bike or firmware rather than with the app. There is never an indication on the dash for what value is set. Not sure if that should be the case or not. Or maybe the limit is only used for DC charging while I’m testing AC charging.
The weirdest part is that if I set it to a very low number, like 10 or so, it will indeed slow down and stop charging. But then why doesn’t that work on 70 or 80% !? Anyway since it doesn’t work on the MyEnergica app either I just won’t bother for now. And again I could just be using it wrong.
What works (but not always in the way I expected)
All the other features seem to work fine. I can honk the horn, although I don’t see why someone would want this feature (it’s very loud also). I can stop a charge and watch all the charging numbers received. I can check values while riding. And so on.
I also found a new feature in code where you could set a speed limit. And the bike seems to accept anything from 30 up to 255 :o. I was pretty sure that 255 is just the max byte value (from -127 to 127) so I didn’t expect the bike to really go faster than the factory speed limit of 200 kph. Still I was hoping I could use this to increase the speed limit of 90 kph while riding in ECO mode. Cause in reality that is just too slow, even more so if you take the +10% speed error margin into account.
So I did a test run (and had a little bullet brake mishap) but the results were not very useful. Turns out the speed limit you can set only applies to ECO mode, in all other ride modes it will have no effect. Also 90 kph is a hard limit so you can only use that feature to pick a lower value between 30 and 90 kph.
Another surprise is that the bike itself does indeed push GPS location data to the phone. So when you’re using that nearby chargers feature on the dash it only needs the phone to retrieve those chargers and will do so from the location information your bike collected. It did look like that based on the code but it’s nice to have this confirmed on a test ride.
What I really want to develop this into
But now back to that data cause this is what I really wanted to develop myself. And not so much power output and speed. Though that might also be interesting to have it automated. Remember that video I made in a response to a video from Newzeroland where he would look at the kW output of his bike at certain speeds? For that I just recorded the dash while riding. Well with these in app graphs that wouldn’t be needed anymore.
What interests me more though, I only have a 80 kW model anyway, is what the charge speed does over time and in relation to SOC. Cause I know for sure that charging my Energica from 20% or lower will have it throttle charge speed down before reaching 80% for heat management and that it doesn’t do it if I start from 30 to 80%.
Having this app connected while charging and having it plot that information will for sure help me pinpoint what the exact threshold is for full speed charging all day long. And once I know that I can at least take it into account when I really need fast and only fast charge speeds. Also I’ll be able to tell exactly by how much it slows down if I do stress it.
What are the next steps with this app?
For the moment all this data is still just collected within the app. If you close the app the data is gone. I’ll work on an export option next so you can get it from your phone and safe it somewhere in a CSV format. From there you can use that as input for a graph or whatever you plan on doing.
Once this data presentation and export is in place I might look into some remote connectivity feature where you would be able to push data to the cloud. Similar to how Zero has this built in on their bikes. For Energica it would be retrieved on the phone and pushed to the cloud from the phone.
Make sure to subscribe to my youtube channel if you want to be one of the first people to get notified of new updates and progress on the Zero apps. Cause I do feel like I should at least try to get something similar out again.