/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