[Ovmsdev] New Metric Units
Michael Geddes
frog at bunyip.wheelycreek.net
Sun Nov 6 11:22:04 HKT 2022
Right, so I've implemented some stuff that seems to work quite well.
https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/pull/764
should be ready now after a couple of stupid mistakes slipped through.
This absolutely needs somebody to review it please! (There's a reason why
I've converted some if()'s to switch() - which is that it will be used in
the follow-up commit).
The commit that will follow on from that it implements the new Units:
kWh/100km, km/kWh and mi/kWh.
This is a summary of what I've implemented for scripting - including
showing the unit codes I have so far. I've considered a few things:
* Should some of the longer unit codes be shortened (eg mi, mins, m, ft,
deg, perc)
* The unit codes could be much more regular and separated by dots eg:
watthours -> w.h
kwhp100km -> kw.h_100km or kw.h/100km
miph -> mi_h or mi/h (or should it be mph).
psi -> p_in.in or p/in.in or lb_in.in (yes, slightly weird, but
predictable)
*OVMS# metric units*
km : km
miles : M
meters : m
feet : ft
celcius : °C
fahrenheit : °F
kpa : kPa
pa : Pa
psi : psi
volts : V
amps : A
amphours : Ah
kw : kW
kwh : kWh
watts : W
watthours : Wh
seconds : Sec
minutes : Min
hours : Hour
utc : UTC
degrees : °
kmph : km/h
miph : Mph
kmphps : km/h/s
miphps : Mph/s
mpss : m/s²
dbm : dBm
sq : sq
percent : %
whpkm : Wh/km
whpmi : Wh/mi
kwhp100km : kWh/100km
kmpkwh : km/kWh
mipkwh : mi/kWh
nm : Nm
*OVMS# metric unit mi*
miles : M
minutes : Min
miph : Mph
miphps : Mph/s
whpmi : Wh/mi
mipkwh : mi/kWh
*OVMS# metric get xiq.v.trip.consumption*17.0597kWh/100km
*OVMS# metric get xiq.v.trip.consumption kpkwh*5.86177km/kWh
*OVMS# metric get xiq.v.trip.consumption mpkwh*3.64233mi/kWh
*OVMS# metric set xiq.c.speed 5 miph*Metric set
*OVMS# metric get xiq.c.speed*8.04673km/h
*OVMS# metric get xiq.c.speed miph*5Mph
And then in DukTape - there are some questions I have about the
implementation:
* Names of functions? Better ideas?
* Should ValueUnit output the units?
* In Value() there is the line bool decode = duk_opt_boolean(ctx, 1,
true);
* What does 'decode' mean here?
* Do I need it for ValueUnit() ?
*(function() { print( OvmsMetrics.Value("xiq.v.trip.consumption"));
print("\n") print( OvmsMetrics.ValueUnit("xiq.v.trip.consumption",""));
print("\n") print(
OvmsMetrics.ValueUnit("xiq.v.trip.consumption","mipkwh")); print("\n")
print( OvmsMetrics.AsFloatUnit("xiq.v.trip.consumption","kmpkwh"));})();*
--- Output ---
17.0597
17.0597kWh/100km
3.64233mi/kWh
5.86177
------
The basic stuff all works - it's just quibbling over the details.. but
let's get them right!
//.ichael
On Sat, 5 Nov 2022 at 20:09, Michael Geddes <frog at bunyip.wheelycreek.net>
wrote:
> Yeah - this was copied code from kia/kona and is what triggered these
> ideas; I totally agree this shouldn't be doubled up on.
>
> I've got some commits centred round Metrics that I'll just check over and
> push up ... and then I'll just have the single xiq.v.trip.consumption metric
> (unless you have some ideas for the namespace) which will be much neater.
>
> If it's ok with you then I might do that unit conversion proposal.
> Would it ok if the unit specifications were the same as to the
> programatic codes in ovms_metrics.h?
> (kWh, WattHours , MetersPSS )
> I would probably add a command
> metric units <spec>
> to list all (matching) units and their associated Labels.
>
> //.ichael
>
> On Sat, 5 Nov 2022 at 18:48, Michael Balzer <dexter at expeedo.de> wrote:
>
>> Michael,
>>
>> adding unit conversion support to the shell and Duktape commands is a
>> good idea.
>>
>> Metrics are not meant to provide a user interface, they should be defined
>> to be efficient and non-redundant.
>>
>> Btw, metrics names also shall not use upper case characters, and shall
>> only use "." as a separator.
>>
>> Regards,
>> Michael
>>
>>
>> Am 05.11.22 um 11:22 schrieb Michael Geddes:
>>
>> Hi all,
>> Some of the code I copied from Kona/Kia code had both kwh/100km and
>> km/kwh metrics in the code as 'Other'.
>> Adding the various power consumption Units is not particularly hard (I
>> will have a pull-request soon) - though the conversions between them all
>> required some thought!
>> ... but it also made me think these two metrics that are (with the
>> consumption units added) defined like this:
>> m_v_trip_consumption1 =
>> MyMetrics.InitFloat("xiq.v.trip.consumption.KWh/100km", 10, 0, kWHP100K);
>> m_v_trip_consumption2 = MyMetrics.InitFloat("
>> xiq.v.trip.consumption.km/kWh", 10, 0, kPkWH);
>>
>> These are effectively the same metric but in different units!
>> I'm wondering if we would be better to have scripting and Duktape support
>> for converting metrics to different unit! This might be also quite useful
>> for those strange countries that insist on using miles as a measurement.
>>
>> On top of the 'metric list' and 'metric set' we could add a 'metric get'
>> which gets a single value.. and add unit support for get/set.
>>
>> I've also got a pull request that improves the precision of the km<->mi
>> conversions and factors it out.
>>
>> //.ichael
>>
>> _______________________________________________
>> OvmsDev mailing listOvmsDev at lists.openvehicles.comhttp://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 at lists.openvehicles.com
>> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20221106/70bf2ef2/attachment-0001.htm>
More information about the OvmsDev
mailing list