[Ovmsdev] Coding help

Michael Balzer dexter at expeedo.de
Sat Mar 6 04:45:59 HKT 2021


Shane,

OvmsVehicle::PollSetPidList(m_can1, obdii_polls);
     OvmsVehicle::PollSetState(0);

needs to be done in your vehicle init, i.e. the constructor after 
RegisterCanBus().

Please read the vehicle_obdii module source for a complete polling example.

Regards,
Michael


Am 05.03.21 um 17:59 schrieb Shane @ Kilve Engineering:
> Thanks Michael,
>
> Had a try and ended up with this bit added but return anything
>
> Where am I going wrong?
>
> Shane
>
> *******
>
> #include "ovms_log.h"
> *static**const**char**TAG= "v-edeliver3";
>
> #include "vehicle_edeliver3.h"
> #include "metrics_standard.h"
>
> *namespace*  {
>
> *const*OvmsVehicle::poll_pid_tobdii_polls[] =
> {
>     { 0x7e3, 0x7eb, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0xf194, { 10, 10, 
> 10, 10  }, 0, ISOTP_STD }, //VIN
>     { 0x7e3, 0x7eb, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0xe003, { 10, 10, 
> 10, 10  }, 0, ISOTP_STD }, //SOH
> POLL_LIST_END
> };
> };
>
> OvmsVehicleEdeliver3::OvmsVehicleEdeliver3()
>   {
> ESP_LOGI(TAG, "Start eDeliver3 vehicle module");
>
>
> RegisterCanBus(1,CAN_MODE_ACTIVE,CAN_SPEED_500KBPS);
>   }
>
> OvmsVehicleEdeliver3::~OvmsVehicleEdeliver3()
>   {
> ESP_LOGI(TAG, "Stop eDeliver3 vehicle module");
>
>
> memset(m_vin, 0, *sizeof*(m_vin));
>   }
>
>
> //testing polls
>
> *void*OvmsVehicleEdeliver3::IncomingPollReply(
>    canbus* bus, uint16_t type, uint16_t pid, uint8_t* data, uint8_t 
> length, uint16_t mlremain)
> {
>    string& rxbuf = med_obd_rxbuf;
>
>
> OvmsVehicle::PollSetPidList(m_can1, obdii_polls);
> OvmsVehicle::PollSetState(0);
>
>
>
> // init / fill rx buffer:
> *if* (m_poll_ml_frame == 0) {
> rxbuf.clear();
> rxbuf.reserve(length + mlremain);
>    }
> rxbuf.append((*char**)data, length);
> *if* (mlremain)
> *return*;
>
> // complete:
> *switch* (pid) {
> *case* 0xe003: {
> *unsigned* *int* soh_raw = ((*unsigned* *int*)rxbuf[0] << 8) | 
> (*unsigned* *int*)rxbuf[1];
> *float* soh = soh_raw / 10;
> StdMetrics.ms_v_bat_soh->SetValue(soh);
> *break*;
>      }
>    }
> }
>
>
> // end testing polls
>
>
>
>> On 5 Mar 2021, at 12:37, Michael Balzer <dexter at expeedo.de 
>> <mailto:dexter at expeedo.de>> wrote:
>>
>> Shane,
>>
>> on OBD polling basics: 
>> http://lists.openvehicles.com/pipermail/ovmsdev/2020-December/014758.html
>>
>> Regards,
>> Michael
>>
>>
>> Am 04.03.21 um 19:45 schrieb Shane @ Kilve Engineering:
>>> Good evening Michael,
>>>
>>> Or any one that has the time to help,
>>>
>>> Ive now successfully retrieved as much info as I can without polling 
>>> any info for the maxus, but I have have now found an ecu that 
>>> responds to pid requests.
>>>
>>> For example if I use the obdii pid scanner I get the loads of data 
>>> back and I’ve decoded some of it, just need a bit of guidance how to 
>>> write the code to get the same info
>>>
>>> A part of a scan is as follows
>>>
>>> Scan complete (7e3 e000-e100)
>>> Scan started : 2021-03-04 18:32:36 GMT
>>> Last response: 2021-03-04 18:32:39 GMT
>>> 7e3[7eb]:e000 00
>>> 7e3[7eb]:e001 64
>>> 7e3[7eb]:e002 4b
>>> 7e3[7eb]:e003 26 bc
>>> 7e3[7eb]:e004 00 07
>>> 7e3[7eb]:e005 2f
>>> 7e3[7eb]:e006 2e
>>> 7e3[7eb]:e007 02 00
>>> 7e3[7eb]:e008 01 ff
>>> 7e3[7eb]:e009 02 00
>>> 7e3[7eb]:e010 02 00
>>>
>>> I know that e003 is SOH = 26bc = 9916 /100 = 99.16% SOH
>>> And e002 is a temp 4b = 75 / 10 = 7.5 degrees
>>>
>>> So if some one can help me with an example of how to correctly code 
>>> this one I can work out the rest,
>>>
>>> Ive looked through various vehicles but everyone uses different 
>>> methods and I can’t seem to get one to work for me.
>>>
>>> Any help much appreciated
>>>
>>> Shane
>>>
>>>> On 15 Feb 2021, at 08:05, Michael Balzer <dexter at expeedo.de 
>>>> <mailto:dexter at expeedo.de>> wrote:
>>>>
>>>> Shane,
>>>>
>>>> I forgot to mention: if you're working on a new vehicle module, 
>>>> you'll also need to start the bus somewhere in your initialization 
>>>> code. Example:
>>>>
>>>>   RegisterCanBus(1, CAN_MODE_ACTIVE, CAN_SPEED_500KBPS);
>>>>
>>>> Regards,
>>>> Michael
>>>>
>>>>
>>>> Am 15.02.21 um 08:36 schrieb Michael Balzer:
>>>>> Shane,
>>>>>
>>>>> Am 14.02.21 um 16:42 schrieb Shane @ Kilve Engineering:
>>>>>> can any one help me with a bit of code to retrieve ve some data 
>>>>>> from ecu can1/6f2 00 4c 00 00 01 97 bc 00 as i cant poll this ecu 
>>>>>> it just broadcasts when its active, ive tried polling it but does 
>>>>>> not respond, i need to choose one byte and allocate it to a PID.
>>>>>
>>>>> I don't know what you mean by "allocating a byte to a PID", but if 
>>>>> you want to process frames received directly, simply override 
>>>>> IncomingFrameCan1() (or …2/3/4 depending on your bus).
>>>>>
>>>>> Reduced example:
>>>>>
>>>>> void OvmsVehicleXYZ::IncomingFrameCan1(CAN_frame_t *p_frame)
>>>>> {
>>>>>   uint8_t *d = p_frame->data.u8;
>>>>>
>>>>>   switch (p_frame->MsgID)
>>>>>   {
>>>>>     case 0x6f2:
>>>>>       // for example, assuming the SOC is in byte 1:
>>>>> StdMetrics.ms_v_bat_soc->SetValue(d[1]);
>>>>>       break;
>>>>>   }
>>>>> }
>>>>>
>>>>> If you're outside a vehicle context, you can register your own CAN 
>>>>> receiver by creating a queue and calling MyCan.RegisterListener(). 
>>>>> See the vehicle module for an example.
>>>>>
>>>>> Regards,
>>>>> Michael
>>>>>
>>>>
>>
>> -- 
>> Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
>> Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
>> _______________________________________________
>> OvmsDev mailing list
>> OvmsDev at lists.openvehicles.com <mailto:OvmsDev at lists.openvehicles.com>
>> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>
>
> _______________________________________________
> OvmsDev mailing list
> OvmsDev at lists.openvehicles.com
> http://lists.openvehicles.com/mailman/listinfo/ovmsdev

-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20210305/2e429854/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 203 bytes
Desc: OpenPGP digital signature
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20210305/2e429854/attachment-0001.sig>


More information about the OvmsDev mailing list