/Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/components/vehicle_maxus_edeliver3/src/vehicle_med3.cpp:
In member function 'void
OvmsVehicleMaxed3::IncomingBmsReply(canbus*, uint16_t, uint16_t,
uint8_t*, uint8_t, uint16_t)':
/Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/components/vehicle_maxus_edeliver3/src/vehicle_med3.cpp:159:82:
error:
no
matching function for call to 'OvmsMetricVector<float>::SetValue(float)'
StandardMetrics.ms_v_bat_cell_vmax->SetValue((float)value2 / 1000);
^
In
file included from /Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/components/vehicle/vehicle.h:40:0,
from /Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/components/vehicle_maxus_edeliver3/src/vehicle_med3.h:32,
from /Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/components/vehicle_maxus_edeliver3/src/vehicle_med3.cpp:32:
/Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/main/ovms_metrics.h:747:18:
note:
candidate:
bool OvmsMetricVector<ElemType,
Allocator>::SetValue(std::__cxx11::string) [with ElemType = float;
Allocator =
std::allocator<float>;
std::__cxx11::string =
std::__cxx11::basic_string<char>]
virtual bool SetValue(std::string
value)
^
/Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/main/ovms_metrics.h:747:18:
note:
no
known conversion for argument 1
from 'float' to 'std::__cxx11::string
{aka
std::__cxx11::basic_string<char>}'
/Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/main/ovms_metrics.h:763:10:
note:
candidate:
bool OvmsMetricVector<ElemType,
Allocator>::SetValue(const
std::vector<_Tp,
_Alloc>&, metric_unit_t)
[with ElemType = float; Allocator
= std::allocator<float>]
bool SetValue(const
std::vector<ElemType,
Allocator>& value,
metric_unit_t units = Other)
^
/Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/main/ovms_metrics.h:763:10:
note:
no
known conversion for argument 1
from 'float' to 'const
std::vector<float,
std::allocator<float>
>&'
/Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/components/vehicle_maxus_edeliver3/src/vehicle_med3.cpp:162:82:
error:
no
matching function for call to 'OvmsMetricVector<float>::SetValue(float)'
StandardMetrics.ms_v_bat_cell_vmin->SetValue((float)value2 / 1000);
^
In
file included from /Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/components/vehicle/vehicle.h:40:0,
from /Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/components/vehicle_maxus_edeliver3/src/vehicle_med3.h:32,
from /Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/components/vehicle_maxus_edeliver3/src/vehicle_med3.cpp:32:
/Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/main/ovms_metrics.h:747:18:
note:
candidate:
bool OvmsMetricVector<ElemType,
Allocator>::SetValue(std::__cxx11::string) [with ElemType = float;
Allocator =
std::allocator<float>;
std::__cxx11::string =
std::__cxx11::basic_string<char>]
virtual bool SetValue(std::string
value)
^
/Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/main/ovms_metrics.h:747:18:
note:
no
known conversion for argument 1
from 'float' to 'std::__cxx11::string
{aka
std::__cxx11::basic_string<char>}'
/Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/main/ovms_metrics.h:763:10:
note:
candidate:
bool OvmsMetricVector<ElemType,
Allocator>::SetValue(const
std::vector<_Tp,
_Alloc>&, metric_unit_t)
[with ElemType = float; Allocator
= std::allocator<float>]
bool SetValue(const
std::vector<ElemType,
Allocator>& value,
metric_unit_t units = Other)
^
/Users/shane/Open-Vehicle-Monitoring-System-3-MGEV/vehicle/OVMS.V3/main/ovms_metrics.h:763:10:
note:
no
known conversion for argument 1
from 'float' to 'const
std::vector<float,
std::allocator<float>
>&'
make[1]:
*** [src/vehicle_med3.o] Error 1
make:
***
[component-vehicle_maxus_edeliver3-build]
Error 2
shane@Shanes-MacBook-Pro
OVMS.V3 %
Regards
Shane
OVMS# obd
can1 request device -t1000
7e4 7ec 2102
7e4[7ec] 2102: Response:
ff ff ff ff c4 c4 c4 c4 c4
c4 c4 c4 c4 c4 c4 c5 |
................
c5 c4 c4 c4 c4 c4 c4 c4 c4
c4 c4 c4 c4 c4 c4 c4 |
................
c4 c4 c4
c4
| ....
OVMS# obd can1 request
device -t1000 7e4 7ec 2103
7e4[7ec] 2103: Response:
ff ff ff ff c4 c4 c4 c4 c4
c4 c4 c5 c5 c4 c4 c4 |
................
c4 c4 c4 c4 c4 c5 c5 c5 c4
c5 c5 c5 c4 c5 c4 c4 |
................
c5 c4 c4
c4
| ....
OVMS# obd can1 request
device -t1000 7e4 7ec 2104
7e4[7ec] 2104: Response:
ff ff ff ff c4 c4 c5 c4 c4
c4 c4 c4 c4 c4 c4 c4 |
................
c4 c4 c4 c4 c4 c4 c4 c4 c4
c4 c4 c4 c4 c4 c4 c4 |
................
c4 c5 c4
c4
| ....
Your voltages obviously are 16
bit values, so you'll need to
use RXB_UINT16() and multiply
your loop index by 2.
Regards,
Michael
Am
03.04.21 um 12:04 schrieb
Shane @ Kilve Engineering:
Hi has anyone got a sample
of the data for the cell
voltages on the ioniq vfl
just so I can see how the
macro is handling it? Or is
it played out the same as
below?
Regards
Shane
Shane,
Am
29.03.21 um
20:17 schrieb
Shane @ Kilve
Engineering:
can
any one tell
me what the
"v.e.c.login"
is and is it
need for
something to
work?
| v.e.c.config |
|
yes =
ECU/controller
in
configuration
state |
It's not used by
the framework
currently.
also
any one with
any ideas how
to deal with
cell voltages
in a string
this long?
took me
blumim ages to
find the bms
when the tx
and rx are 128
address
apart!!
748[7c8]:e113
10 90 10 92 10
93 10 93 10 8e
10 92 10 8f 10
90 10 92 10 6c
10 93 10 93 10
8f 10 91 10 92
10 92 10 92 10
92 10 92 10 92
10 90 10 8e 10
90 10 92 10 8d
10 90 10 91 10
8f 10 8e 10 8f
10 91 10 90 10
90 10 91 10 8e
10 91 10 8e 10
91 10 90 10 8e
10 90 10 92 10
90 10 94 10 91
10 91 10 93 10
90 10 91 10 90
10 8f 10 93 10
92 10 8e 10 90
10 91 10 8b 10
92 10 90 10 91
10 8e 10 90 10
90 10 90 10 91
10 90 10 8f 10
90 10 90 10 8e
10 92 10 8e 10
91 10 89 10 91
10 91 10 91 10
8d 10 8f 10 8d
10 86 10 8a 10
8e 10 8f 10 91
10 90 10 92 10
94 10 88 10 8f
10 94 10 91 10
91 10 91 10 93
10 91 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00
Simply loop over
the cells
contained. Have a
look at the buffer
macro utils, e.g.:
https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/blob/master/vehicle/OVMS.V3/components/vehicle_hyundai_ioniqvfl/src/vehicle_hyundai_ioniqvfl.cpp#L44
Regards,
Michael
Shane
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_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
_______________________________________________
OvmsDev mailing list
OvmsDev@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
_______________________________________________
OvmsDev
mailing list
OvmsDev@lists.openvehicles.com
http://lists.openvehicles.com/mailman/listinfo/ovmsdev
_______________________________________________
OvmsDev mailing list
OvmsDev@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
_______________________________________________
OvmsDev mailing list
OvmsDev@lists.openvehicles.com
http://lists.openvehicles.com/mailman/listinfo/ovmsdev
_______________________________________________
OvmsDev mailing list
OvmsDev@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
_______________________________________________
OvmsDev mailing list
OvmsDev@lists.openvehicles.com
http://lists.openvehicles.com/mailman/listinfo/ovmsdev