[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