Had a try and ended up with
this bit added but return anything
Shane
*******
#include "ovms_log.h"
static const char *TAG = "v-edeliver3";
#include "vehicle_edeliver3.h"
#include "metrics_standard.h"
namespace {
const OvmsVehicle::poll_pid_t obdii_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
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
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@lists.openvehicles.com
http://lists.openvehicles.com/mailman/listinfo/ovmsdev