openvehicles / Open-Vehicle-Monitoring-System-3

Open Vehicle Monitoring System - Version 3
http:///www.openvehicles.com/
Other
593 stars 226 forks source link

Support for FIAT e-Doblo (same as Peugeot Rifter, Opel Combo, Citroen Berlingo?) #976

Open ramack opened 7 months ago

ramack commented 7 months ago

I would like my Fiat e-Doblo being supported by OVMS. Technically it is a FIAT-branded Peugeot e-Rifter as the Opel Combo-e and Citroen e-Berlingo are also, so I guess all of them would be usable with the same communication.

My plan is to help out here and dig into the details of the CAN frames to get this working.

ramack commented 6 months ago

I wonder how the vehicle support should be named 🤔.

I own a Fiat e-Doblo and will use it for testing. I am 99.99% sure it will work perfectly for the sister branded cars Opel Combo-e, Peugeot Rifter, Citroën Berlingo and the Toyota ProAce City, which are claimed to be identical in construction. All are using the PSA/Stellantis EMP2 platform and I could imagine that all those electric vehicles will also work, but this is neither sure nor can I test it.

So what do you think? Is it better to go for something generic like

1) generic short type code: E2 long vehicle name: Stellantis EMP2 (components/vehicle_stellantis_emp2) unique log tag: v-semp2 unique namespace prefix: semp2 with the drawback of potential incompatibilities with other cars in this platform and more hard to identify the name for an end user who owns something like an "Fiat e-Doblo"?

2) specific short type code: FD long vehicle name: Fiat e-Doblo (components/vehicle_fiat_e-doblo) unique log tag: v-fedob unique namespace prefix: fdob with the high likelihood that many other cars will work with it?

or any mixed form of them? - I'm not enthusiastic about both options, so any proposal, idea or comment is warmly welcome.

dexterbg commented 6 months ago

It's up to you as the developer, but if you can only test & guarantee it will work for the Fiat, then I'd use that code scheme. You can always add further vehicles to the long name & documentation later on. If you already know it will work on a number of brands, I'd choose the one that will be most common for users.

Btw, if you need code variations based on the vehicle brand, that can be done later on by adding alias codes or code extensions, or by some vehicle variant user config. Code switches sometimes are necessary even on the same platform, if VINs are encoded differently for example.

But please note that both E2 and FD are not acceptable now for new vehicles. Use a code that has at least two characters for the brand and two for the vehicle. And as we already have FT5E for the Fiat 500e, e.g. FTED or FTDO could be the Fiat e-Doblo.

You can be more explicit on the log tag, for example the Fiat 500e uses v-fiat500e.

Finally, the namespace prefix needs to begin with x, so could e.g. be xfd.

ramack commented 6 months ago

thanks, so best seems to be short type code: FTDO long vehicle name: Fiat e-Doblo (components/vehicle_fiat_e-doblo) unique log tag: v-fiatedoblo unique namespace prefix: xfd

rmivdc commented 2 months ago

From some other's German Forum we can get those commands from a standard ELM327 : "

####### ####### Setup commands ####### ATWS ---> Warm reset set back to defaults ATI ---> Show interface ID ATE0 ---> Turn off terminal echo AT@1 ---> ATSP6 ---> Set to protocol 6: ISO 15765-4 CAN (11 bit ID 500 kbaud) ATAT1 ---> ATL0 ---> Disable line feed ATS0 ---> Disable sending spaces between hex characters ATH1 ---> Turn on odb2 header ATCAF1 ---> Turn on CAN auto formatting ATSH79B ---> Set request message header 79B ATFCSH79B ---> Set flow control header (CAN ID) ATFCSD300000 ---> Set flow control data ATFCSM1 ---> Set flow control mode; 1 = User defined CAN ID and data

####### ####### Data commands ####### ATSH6A2 ---> Set the header of transmitted OBD messages to header 6A2 ATFCSH6A2 ---> Set flow control header (CAN ID) ATCRA682 ---> Set the CAN hardware filter to 682 22D4341 ---> Ambient temperature 22D8EF1 ---> Battery temperature 22D4021 ---> Speed ATSH6B4 ---> Set the header of transmitted OBD messages to header 6B4 ATFCSH6B4 ---> Set flow control header (CAN ID) ATCRA694 ---> Set the CAN hardware filter to 694 22D8161 ---> Battery current 22D8151 ---> Battery voltage 22D86F1 ---> Battery minimum voltage 22D8701 ---> Battery maximum voltage 22D4101 ---> SOC calibrated 22D8651 ---> kWh available 22D8601 ---> SOH 22D8101 ---> SOC

And the already decoded values: SoC calibrated (22D4101) = value / 512 bat min voltage (22D86F1 ) = value in mV bat max voltage (22D8701) = value in mV"

Another info from French Forum :

On the OBD socket (located on the driver's side, remove the cover under the steering wheel on the left), only the pins 1,3,4,5,6,8,14,16 are wired.

The standard/regulatory CAN bus is on pins 6 and 14 (6: high, 14: low) The Diagnostic CAN Peugeot bus is on pins 3 and 8 (3: high, 8: low)

Details: pin 1 + 12v after power pin 3 can high Peugeot pin 4 body ground pin 5 electro ground pin 6 can high standard pîn 8 can low Peugeot pin 14 can low standard pin 16 + 12v OBD

OVMS side: Can1 = regulatory/standard can Can2 = pins 3 and 8 of the OBD socket must be re-mapped on connectors 13 and 12 respectively for OVMS

it seems that some advanced commands (other than getting informations...?) requires some specific OBD wiring.

The fiat500-e seems to have a completely different powertrain/electronics system, only designed for this car (?)

While the e-doblo/e-scudo / peugeot / opel & citroen & toyoto & All variants, All uses that same e-208 (before 2023) powertrain system/platform (Vitesco(2016-2022) based, not Nidec(2023-...))

ramack commented 2 months ago

That looks interesting. I already read the SOC from a CAN frame. Beside that I am currently busy with some other things, but surly will come back to the topic. @rmivdc do you also have such a car?