[Ovmsdev] OVMS Poller module/singleton

Michael Balzer dexter at expeedo.de
Mon Jun 24 01:23:12 HKT 2024


The messages can get out of sequence if there are temporary network issues.

For example (this case probably), IDs 1-5 get lost and need to be 
retransmitted.

The protocol includes a time offset, and the server tries to adjust the 
timestamp accordingly, but offset resolution is currently 1 second and 
the server bases the corrections on it's own time, so there can be 
discrepancies.

Regards,
Michael


Am 23.06.24 um 11:03 schrieb Michael Geddes via OvmsDev:
>
> This is by-and-large working (pushed).  The only thing is that 
> occasionally the records seem to be coming in out-of-order. For 
> example  (after some munging with jq)
>
> "2024-06-23 05:28:16",6,"RxCan1[7bb]",13.63,5.933,8.526,0.06,3.685
>
> "2024-06-23 05:28:16",7,"RxCan1[7ce]",0.57,0.195,0.365,0.034,0.759
>
> "2024-06-23 05:28:16",8,"RxCan1[7ea]",4.41,1.796,2.416,0.052,1.557
>
> "2024-06-23 05:28:16",9,"RxCan1[7ec]",18.95,7.672,11.532,0.112,19.324
>
> "2024-06-23 05:28:16",10,"RxCan3[7df]",9.09,1.554,1.999,0.023,1.242
>
> "2024-06-23 05:28:16",16,"TxCan1[7e4]",2.15,0.06,0.094,0.003,0.079
>
> "2024-06-23 05:28:16",17,"Cmd:Thrtl",0,0,0.004,0.004,0.044
>
> "2024-06-23 05:28:16",18,"Cmd:RspSp",0,0,0.002,0.002,0.019
>
> "2024-06-23 05:28:16",19,"Cmd:SucSp",0,0,0.002,0.002,0.018
>
> "2024-06-23 05:28:16",20,"Cmd:State",0,0,0,0.01,0.104
>
> "2024-06-23 05:28:17",1,"Poll:PRI",1.07,0.472,0.565,0.039,0.675
>
> "2024-06-23 05:28:17",2,"Poll:SEC",2.17,0.433,0.527,0.02,0.474
>
> "2024-06-23 05:28:17",3,"Poll:SRX",6.51,1.369,1.952,0.022,0.524
>
> "2024-06-23 05:28:17",4,"RxCan1[778]",2.42,1.216,1.801,0.064,2.412
>
> "2024-06-23 05:28:17",5,"RxCan1[7a8]",0.9,0.367,0.769,0.045,1.343
>
> The items 1-5 should be before 6,but the timestamp is after.
>
> //.ichael
>
> *From:*OvmsDev <ovmsdev-bounces at lists.openvehicles.com> *On Behalf Of 
> *Michael Balzer via OvmsDev
> *Sent:* Friday, June 21, 2024 11:40 PM
> *To:* OVMS Developers <ovmsdev at lists.openvehicles.com>
> *Cc:* Michael Balzer <dexter at expeedo.de>
> *Subject:* Re: [Ovmsdev] OVMS Poller module/singleton
>
> Michael,
>
> "data" notifications correspond to the V2/MP "historical" message type:
>
>   * https://docs.openvehicles.com/en/latest/protocol_v2/messages.html#historical-data-update-message-0x48-h
>
> So a record type of "*-LOG-Poll" would be OK, but I suggest using 
> "*-LOG-PollStats" to be more precise.
>
> The record ID needs to be an integer, and the default V2 server 
> database defines this to be a 32 bit signed integer. Note that sending 
> a new record won't overwrite an existing one with the same ID, as the 
> timestamp is part of the primary key. I suggest using your report line 
> number.
>
> You can provide a header as line 0 then, or you can leave adding a 
> header to the download tool (as do all the other data records up to 
> now). If you use my server, you can download all data from the car UI, 
> if you use another public server, you can still use my download tool 
> via this page:
>
>   * https://dexters-web.de/downloadtool?lang=EN
>
> Download tools other than the ones I provide in my web UI are the 
> scripts in the server repository's client directory:
>
>   * https://github.com/openvehicles/Open-Vehicle-Server/tree/master/clients
>
> The most simple form is shown by the "serverlog.sh" script, for adding 
> headers see e.g. "rt_fetchlogs.sh". I normally let my server send me 
> the logs by mail on a daily base, these include all historical data 
> files with headers added.
>
> Assuming record type "*-LOG-PollStats", I've just added auto headers 
> to my tool based on your template as follows:
>
>   * type,count_hz,avg_util_pm,peak_util_pm,avg_time_ms,peak_time_ms
>
> (keeping the header style consistent with the other logs)
>
> So you can now simply send the data rows, the tool will prepend the 
> header once on each download.
>
> Regards,
> Michael
>
> Am 19.06.24 um 11:10 schrieb Michael Geddes:
>
>     Sure, I can do that.
>
>     I did it this way because it was easier and could mostly do it in
>     one message. As soon as I added spaces for alignment it pushed the
>     message over 2 notifications. Also, I wasn't sure about making a
>     new Data type and how that worked.
>
>     I'm assuming something like: *-LOG-Poll  would work (unless you
>     want to suggest something else)  The next 2 cols seem to be ID and
>     lifetime.
>
>     What do I use as an ID?  Can it be an alpha string or does it have
>     to be a number? (LIke using the first column descriptor).  I'm not
>     sure
>
>     how the ID column is treated.  I _could_ just send a line number
>     for the dump group I guess?
>
>     These are the columns I have. I can force the two cols to be
>     always permille.
>
>     "Type","Count (hz)","Avg utlization (permille)","Peak utlization
>     (permille)", "Avg Time (ms)","Peak Time (ms)"
>
>     Type is the only alpha column.. but if I can use that for the ID I
>     guess that would be better?
>
>     How would I provide a  header if I wanted to? Is there some
>     indicator saying it's a header line? I'm not sure I want to - just
>     asking.
>
>     //.ichael
>
>     On Wed, 19 June 2024, 00:11 Michael Balzer via OvmsDev,
>     <ovmsdev at lists.openvehicles.com> wrote:
>
>         Michael,
>
>         I've received the new drive report notifications now; these
>         need to be changed: please do not use text notifications to
>         transport CSV data. That's what "data" notifications are meant
>         for, which are stored in their raw form on the server for
>         later retrieval. See e.g. the vehicle trip & grid logs for
>         reference on how to build the messages, or have a look at the
>         specific Twizy and UpMiiGo data messages.
>
>         Data notifications also are designed to transport one row at a
>         time, so you normally don't run into buffer size issues. A
>         header can be supplied as a row, but you normally add one when
>         downloading the data from the server, so tools don't need to
>         filter these out. I provide headers automatically on my server
>         for known message types, just send me your template and I'll
>         include that.
>
>         Apart from that, the timing statistics now seem to work pretty
>         well, providing valuable insights.
>
>         Regards,
>         Michael
>
>
>         Am 14.06.24 um 08:59 schrieb Michael Geddes:
>
>             Thankyou.
>
>             I was more worried that we might be waiting on each other.
>
>             I don't think I have quite the correct able to test on my
>             friends Leaf properly, or does it use the standard cable?
>
>             Anyway, let me know what I can do to.
>
>             //.ichael
>
>             On Fri, 14 Jun 2024 at 14:46, Michael Balzer via OvmsDev
>             <ovmsdev at lists.openvehicles.com> wrote:
>
>                 Sorry, I know I'm behind with PRs.
>
>                 I'll try to find some time this weekend.
>
>                 Regards,
>                 Michael
>
>                 Am 14.06.24 um 08:31 schrieb Michael Geddes via OvmsDev:
>
>                     Was this all good?  I want to make sure I get to
>                     the bottom of this whole issue asap!
>
>                     https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/pull/1018
>
>
>                     Was there something else you needed me to work on
>                     to make sure this all works for all supported cars?
>
>                     //.ichael
>
>                     On Sun, 26 May 2024 at 21:15, Michael Balzer via
>                     OvmsDev <ovmsdev at lists.openvehicles.com> wrote:
>
>                         OK, I see now why it wouldn't send the
>                         notification: the V2 & V3 server register for
>                         notifications up to COMMAND_RESULT_NORMAL =
>                         1024 characters.
>
>                         The report quickly becomes larger than 1024
>                         characters, so the notifications no longer get
>                         sent via the server connectors.
>
>                         You need to either reduce the size, split the
>                         report, or use data notifications instead.
>
>                         On the reset value init: for my float
>                         targeting smoothing helper class for the
>                         UpMiiGo, I implemented a gradual ramp up from
>                         1 to the requested sample size. You can do
>                         something similar also with powers of 2. IOW,
>                         yes, initialization from the first values
>                         received is perfectly OK.
>
>                         Regards,
>                         Michael
>
>                         Am 26.05.24 um 14:35 schrieb Michael Geddes:
>
>                             It _/should/_ already be sending a report
>                             on charge stop.
>
>                             MyEvents.RegisterEvent(TAG,
>                             "vehicle.charge.stop",
>                             std::bind(&OvmsPollers::VehicleChargeStop,
>                             this, _1, _2));
>
>                             Reset on charge start/vehicle on is a good
>                             idea.
>
>                             A question – would it be silly if the
>                             first value after a reset, rather than
>                             using 0 average to start with, if the
>                             average got set to the initial value? I’m
>                             in 2 minds about it. It would make the
>                             average more useful quicker.
>
>                             //.ichael
>
>                             On Sun, 26 May 2024, 19:39 Michael Balzer
>                             via OvmsDev,
>                             <ovmsdev at lists.openvehicles.com> wrote:
>
>                                 As the averages quickly decline when
>                                 idle, an automatic report should
>                                 probably also be sent on charge stop.
>
>                                 Also, I think you should automatically
>                                 reset the timer statistics on drive &
>                                 charge start.
>
>                                 First stats from charging my UpMiiGo:
>
>                                 Type           | count  | Utlztn | Time
>                                                | per s  | [‰] | [ms]
>                                 ---------------+--------+--------+---------
>                                 Poll:PRI Avg|    1.00| 0.723|    0.716
>                                 Peak|        | 1.282|    3.822
>                                 ---------------+--------+--------+---------
>                                 Poll:SRX Avg|    7.72| 1.246|    0.184
>                                 Peak|        | 3.128|    1.058
>                                 ---------------+--------+--------+---------
>                                 RxCan1[7ae] Avg|    2.48| 0.915|    0.362
>                                 Peak|        | 1.217|    1.661
>                                 ---------------+--------+--------+---------
>                                 RxCan1[7cf] Avg|    4.76| 1.928|    0.397
>                                 Peak|        | 2.317|    2.687
>                                 ---------------+--------+--------+---------
>                                 RxCan1[7ed] Avg|    3.38| 1.251|    0.327
>                                 Peak|        | 8.154|   12.273
>                                 ---------------+--------+--------+---------
>                                 RxCan1[7ee] Avg|    0.21| 0.066|    0.297
>                                 Peak|        | 0.225|    1.690
>                                 ---------------+--------+--------+---------
>                                 TxCan1[744] Avg|    1.49| 0.022|    0.011
>                                 Peak|        | 0.032|    0.095
>                                 ---------------+--------+--------+---------
>                                 TxCan1[765] Avg|    3.89| 0.134|    0.027
>                                 Peak|        | 0.155|    0.113
>                                 ---------------+--------+--------+---------
>                                 TxCan1[7e5] Avg|    2.32| 0.038|    0.013
>                                 Peak|        | 0.295|    0.084
>                                 ---------------+--------+--------+---------
>                                 TxCan1[7e6] Avg|     1 0.21| 0.002|   
>                                 0.008
>                                 Peak|        | 0.010|    0.041
>                                 ---------------+--------+--------+---------
>                                 Cmd:State Avg|    0.00| 0.000|    0.007
>                                 Peak|        | 0.005|    0.072
>                                 ===============+========+========+=========
>                                       Total Avg|   27.46| 6.324|    2.349
>
>
>                                 Overall healthy I'd say, but let's see
>                                 how it compares.
>
>                                 7ed is the BMS, the peak time is
>                                 probably related to the extended cell
>                                 data logging -- I've enabled log
>                                 intervals for both cell voltages &
>                                 temperatures.
>
>                                 Regards,
>                                 Michael
>
>                                 Am 26.05.24 um 08:42 schrieb Michael
>                                 Balzer via OvmsDev:
>
>                                     The notification works on my
>                                     devices, it only has a garbled per
>                                     mille character -- see attached
>                                     screenshot. The same applies to
>                                     the mail version:
>
>                                         Poller timing is: on
>
>                                         Type           | count  | Utlztn | Time
>
>                                                         | per s  | [‰]    | [ms]
>
>                                         ---------------+--------+--------+---------
>
>                                         Poll:PRI    Avg|    0.25|   0.119|    0.382
>
>                                                     Peak|        |   0.513|    0.678
>
>                                         ---------------+--------+--------+---------
>
>                                         RxCan1[597] Avg|    0.01|   0.004|    0.021
>
>                                                     Peak|        |   0.000|    0.338
>
>                                         ---------------+--------+--------+---------
>
>                                         RxCan1[59b] Avg|    0.01|   0.011|    0.053
>
>                                                     Peak|        |   0.000|    0.848
>
>                                         ---------------+--------+--------+---------
>
>                                         Cmd:State   Avg|    0.01|   0.002|    0.012
>
>                                                     Peak|        |   0.000|    0.120
>
>                                         ===============+========+========+=========
>
>                                                Total Avg|    0.28|   0.135|    0.468
>
>
>                                     The encoding is a general issue.
>                                     The character encoding for text
>                                     messages via V2/MP is quite old &
>                                     clumsy, it's got an issue with the
>                                     degree celcius character as well.
>                                     We previously tried to keep all
>                                     text messages within the SMS safe
>                                     character set (which e.g. lead to
>                                     writing just "C" instead of "°C").
>                                     I'd say we should head towards
>                                     UTF-8 now. If we ever refit SMS
>                                     support, we can recode on the fly.
>
>                                     Regarding not seeing the
>                                     notification on your phone:
>
>                                     a) Check your notification
>                                     subtype/channel filters on the
>                                     module. See
>                                     https://docs.openvehicles.com/en/latest/userguide/notifications.html#suppress-notifications
>
>                                     b) Check your notification vehicle
>                                     filters on the phone (menu on
>                                     notification tab): if you enabled
>                                     the vehicle filter, it will add
>                                     the messages of not currently
>                                     selected vehicles to the list
>                                     only, but not raise a system
>                                     notification. (Applies to the
>                                     Android App, no idea about the iOS
>                                     version)
>
>                                     Regards,
>                                     Michael
>
>                                     Am 26.05.24 um 06:32 schrieb
>                                     Michael Geddes:
>
>                                         Hi,
>
>                                         I'm trying to finalise this
>                                         now .. and one last thing is
>                                         that I don't get the report
>                                         coming to my mobile. I'm using
>                                         the command:
>
>                                         MyNotify.NotifyString("info",
>                                         "poller.report", buf.c_str());
>
>                                         Where the buffer string is
>                                         just the same as the report
>                                         output. Should I be using some
>                                         other format or command?
>
>                                         I get "alert" types (like the
>                                         ioniq5 door-open alert) fine
>                                         to my mobile.
>
>                                         Michael.
>
>                                         On Sun, 19 May 2024, 12:51
>                                         Michael Balzer via OvmsDev,
>                                         <ovmsdev at lists.openvehicles.com>
>                                         wrote:
>
>                                             A builtin web UI for this
>                                             seems a bit over the top.
>                                             Builtin web config pages
>                                             should focus on user
>                                             features, this is clearly
>                                             a feature only needed
>                                             during/for the
>                                             development/extension of a
>                                             vehicle adapter.
>                                             Development features in
>                                             the web UI are confusing
>                                             for end users.
>
>                                             If persistent
>                                             enabling/disabling is done
>                                             by a simple config command
>                                             (e.g. "config set can
>                                             poller.trace on"), that's
>                                             also doable by users.
>
>                                             Regards,
>                                             Michael
>
>                                             Am 19.05.24 um 02:06
>                                             schrieb Michael Geddes:
>
>                                                 I was so focused on
>                                                 how I calculated the
>                                                 value that I totally
>                                                 missed that ‰ would be
>                                                 a better description.
>                                                 I could also use the
>                                                 system 'Ratio' unit...
>                                                 so % or ‰.
>
>                                                 I'll make space to put
>                                                 'Avg' on the row.  Was
>                                                 trying to limit the
>                                                 width for output on a
>                                                 mobile.  I agree it
>                                                 would make it easier
>                                                 to understand.
>
>                                                 Totals also makes sense.
>
>                                                 Should I make this a
>                                                 configuration that can
>                                                 be set on the
>                                                 web-page?  I'd
>                                                 probably use a
>                                                 configuration change
>                                                 notification so that
>                                                 the very bit setting
>                                                 is sync'd with the
>                                                 'configuration' value.
>
>                                                 //.ichael
>
>                                                 On Sat, 18 May 2024,
>                                                 14:05 Michael Balzer,
>                                                 <dexter at expeedo.de> wrote:
>
>                                                         I'm not sure
>                                                         whether the
>                                                         'max' should
>                                                         be the maximum
>                                                         of the
>                                                         smoothed
>                                                         value.. or the
>                                                         maximum of the
>                                                         raw value.
>
>
>                                                     It should normally
>                                                     be the maximum of
>                                                     the raw value I
>                                                     think, the maximum
>                                                     of the smoothed
>                                                     value cannot tell
>                                                     about how bad the
>                                                     processing of an
>                                                     ID can become.
>
>                                                     The naming in the
>                                                     table is a bit
>                                                     confusing I think.
>                                                     (besides: I've
>                                                     never seen "ave"
>                                                     as the
>                                                     abbreviation for
>                                                     average)
>
>                                                     If I understand
>                                                     you correctly,
>                                                     "time ms per s" is
>                                                     the time share in
>                                                     per mille, so
>                                                     something in that
>                                                     direction would be
>                                                     more clear, and
>                                                     "length ms" would
>                                                     then be "time [ms]".
>
>                                                     The totals for all
>                                                     averages in the
>                                                     table foot would
>                                                     also be nice.
>
>                                                     Maybe "Ave" (or
>                                                     avg?) also should
>                                                     be placed on the
>                                                     left, as the
>                                                     "peak" label now
>                                                     suggests being the
>                                                     peak of the average.
>
>                                                     Btw, keep in mind,
>                                                     not all "edge"
>                                                     users / testers
>                                                     are developers
>                                                     (e.g. the Twizy
>                                                     driver I'm in
>                                                     contact with),
>                                                     collecting stats
>                                                     feedback for
>                                                     vehicles from
>                                                     testers should be
>                                                     straight forward.
>                                                     Maybe add a
>                                                     data/history
>                                                     record, sent
>                                                     automatically on
>                                                     every drive/charge
>                                                     stop when the
>                                                     poller tracing is on?
>
>                                                     Regards,
>                                                     Michael
>
>                                                     Am 18.05.24 um
>                                                     02:28 schrieb
>                                                     Michael Geddes:
>
>                                                         You did say
>                                                         max/pead
>                                                         value.  I also
>                                                         halved the N
>                                                         for both.
>
>                                                         I'm not sure
>                                                         whether the
>                                                         'max' should
>                                                         be the maximum
>                                                         of the
>                                                         smoothed
>                                                         value.. or the
>                                                         maximum of the
>                                                         raw value.
>
>                                                         This is
>                                                         currently the
>                                                         raw-value
>                                                         maximum.
>
>                                                         The problem is
>                                                         that the
>                                                         middle column
>                                                         is the maximum
>                                                         of the {{sum
>                                                         over 10s} /
>                                                         (10*1000,000)
>
>                                                         I could easily
>                                                         change the
>                                                         'period' to 1s
>                                                         and see how
>                                                         that goes..
>                                                         was just
>                                                         trying to
>                                                         reduce the
>                                                         larger
>                                                         calculations.
>
>                                                         Usage: poller
>                                                         [pause|resume|status|times|trace]
>
>
>
>                                                         OVMS# poller
>                                                         time status
>                                                         Poller timing
>                                                         is: on
>                                                         Type         |
>                                                         Count    | Ave
>                                                         time  | Ave length
>                                                                      |
>                                                         per s    | ms
>                                                         per s  | ms
>                                                         -------------+----------+-----------+-----------
>                                                         Poll:PRI     |
>                                                              1.00|
>                                                          0.559|  0.543
>                                                          peak        |
>                                                                  |
>                                                          0.663|  1.528
>                                                         -------------+----------+-----------+-----------
>                                                         Poll:SRX     |
>                                                              0.08|
>                                                          0.009|  0.038
>                                                          peak        |
>                                                                  |
>                                                          0.068|  0.146
>                                                         -------------+----------+-----------+-----------
>                                                         CAN1 RX[778] |
>                                                              0.11|
>                                                          0.061|  0.280
>                                                          peak        |
>                                                                  |
>                                                          0.458|  1.046
>                                                         -------------+----------+-----------+-----------
>                                                         CAN1 RX[7a8] |
>                                                              0.04|
>                                                          0.024|  0.124
>                                                          peak        |
>                                                                  |
>                                                          0.160|  0.615
>                                                         -------------+----------+-----------+-----------
>                                                         CAN1 TX[770] |
>                                                              0.05|
>                                                          0.004|  0.016
>                                                          peak        |
>                                                                  |
>                                                          0.022|  0.102
>                                                         -------------+----------+-----------+-----------
>                                                         CAN1 TX[7a0] |
>                                                              0.02|
>                                                          0.002|  0.011
>                                                          peak        |
>                                                                  |
>                                                          0.010|  0.098
>                                                         -------------+----------+-----------+-----------
>                                                         CAN1 TX[7b3] |
>                                                              0.01|
>                                                          0.001|  0.006
>                                                          peak        |
>                                                                  |
>                                                          0.000|  0.099
>                                                         -------------+----------+-----------+-----------
>                                                         CAN1 TX[7e2] |
>                                                              0.02|
>                                                          0.002|  0.011
>                                                          peak        |
>                                                                  |
>                                                          0.010|  0.099
>                                                         -------------+----------+-----------+-----------
>                                                         CAN1 TX[7e4] |
>                                                              0.08|
>                                                          0.008|  0.048
>                                                          peak        |
>                                                                  |
>                                                          0.049|  0.107
>                                                         -------------+----------+-----------+-----------
>                                                         Cmd:State    |
>                                                              0.00|
>                                                          0.000|  0.005
>                                                          peak        |
>                                                                  |
>                                                          0.000|  0.094
>
>                                                         On Fri, 17 May
>                                                         2024 at 15:26,
>                                                         Michael Geddes
>                                                         <frog at bunyip.wheelycreek.net>
>                                                         wrote:
>
>                                                             This is
>                                                             what I
>                                                             have now.
>
>                                                             The one on
>                                                             the end is
>                                                             the one 
>                                                             MIchael B
>                                                             was after
>                                                             using an N
>                                                             of 32. (up
>                                                             for
>                                                             discussion).
>
>                                                             The middle
>                                                             is the
>                                                             time spent
>                                                             in that
>                                                             even t per
>                                                             second. 
>                                                             It
>                                                             accumulates
>                                                             times (in
>                                                             microseconds),
>                                                             and then
>                                                             every 10s
>                                                             it stores
>                                                             it as
>                                                             smoothed (N=16)
>                                                             value.
>
>                                                             The Count
>                                                             is similar
>                                                             (except
>                                                             that we
>                                                             store a
>                                                             value of
>                                                             '100' as 1
>                                                             event so
>                                                             it can be
>                                                             still
>                                                             integers
>                                                             and has 2
>                                                             decimal
>                                                             places).
>
>                                                             Every
>                                                             received
>                                                             poll does
>                                                             a
>                                                             64bit difference
>                                                             to 32bit
>                                                             (for the
>                                                             elapsed
>                                                             time) and
>                                                             64bit
>                                                             comparison
>                                                             (for
>                                                             end-of-period).
>
>                                                             It also
>                                                             does 1x
>                                                             32bit
>                                                             smoothing
>                                                             and 2x
>                                                             32bit adds.
>
>                                                             Then at
>                                                             the end of
>                                                             a 10s
>                                                             period, it
>                                                             will do a
>                                                             64bit add
>                                                             to get the
>                                                             next
>                                                             end-of-period
>                                                             value, as
>                                                             well as
>                                                             the 2x
>                                                             32bit
>                                                             smoothing
>                                                             calcs.
>
>                                                             This is
>                                                             from the
>                                                             Ioniq 5 so
>                                                             not any
>                                                             big values
>                                                             yet. You
>                                                             can
>                                                             certainly
>                                                             see how
>                                                             insignificant
>                                                             the TX
>                                                             callbacks are.
>
>                                                             I'll leave
>                                                             it on for
>                                                             when the
>                                                             car is
>                                                             moving and
>                                                             gets some
>                                                             faster
>                                                             polling.
>
>                                                             OVMS# poll
>                                                             time status
>                                                             Poller
>                                                             timing is: on
>                                                             Type      
>                                                               | Count
>                                                                | Ave
>                                                             time  |
>                                                             Ave Length
>                                                                      
>                                                                | per s
>                                                                | ms
>                                                             per s  | ms
>                                                             -------------+----------+-----------+-----------
>                                                             Poll:PRI  
>                                                               |    
>                                                              1.00|
>                                                              0.540|  0.539
>                                                             Poll:SRX  
>                                                               |    
>                                                              0.03|
>                                                              0.004|  0.017
>                                                             CAN1
>                                                             RX[778] |
>                                                                  0.06|
>                                                              0.042|  0.175
>                                                             CAN1
>                                                             TX[770] |
>                                                                  0.04|
>                                                              0.002|  0.008
>                                                             Cmd:State
>                                                                |    
>                                                              0.01|
>                                                              0.001|  0.005
>
>                                                             ----------------------8<--------------------------------
>
>                                                             Nice
>                                                             smoothing
>                                                             class
>                                                             (forces N
>                                                             as a power
>                                                             of 2):
>
>                                                              
>                                                             constexpr
>                                                             unsigned
>                                                             floorlog2(unsigned
>                                                             x)
>                                                                 {
>                                                                 return
>                                                             x == 1 ? 0
>                                                             :
>                                                             1+floorlog2(x
>                                                             >> 1);
>                                                                 }
>                                                               /*
>                                                             Maintain a
>                                                             smoothed
>                                                             average
>                                                             using
>                                                             shifts for
>                                                             division.
>                                                                * T
>                                                             should be
>                                                             an integer
>                                                             type
>                                                                * N
>                                                             needs to
>                                                             be a power
>                                                             of 2
>                                                                */
>                                                               template
>                                                             <typename
>                                                             T, unsigned N>
>                                                               class
>                                                             average_util_t
>                                                                 {
>                                                                 private:
>                                                                   T m_ave;
>                                                                 public:
>                                                             average_util_t()
>                                                             : m_ave(0) {}
>                                                                  
>                                                             static
>                                                             const
>                                                             uint8_t
>                                                             _BITS =
>                                                             floorlog2(N);
>                                                                   void
>                                                             add( T val)
>                                                                     {
>                                                             static_assert(N
>                                                             == (1 <<
>                                                             _BITS), "N
>                                                             must be a
>                                                             power of 2");
>                                                                    
>                                                             m_ave =
>                                                             (((N-1) *
>                                                             m_ave) +
>                                                             val) >> _BITS;
>                                                                     }
>                                                                   T
>                                                             get() {
>                                                             return
>                                                             m_ave; }
>                                                                  
>                                                             operator
>                                                             T() {
>                                                             return
>                                                             m_ave; }
>                                                                 };
>
>                                                             On Thu, 16
>                                                             May 2024
>                                                             at 10:29,
>                                                             Michael
>                                                             Geddes
>                                                             <frog at bunyip.wheelycreek.net>
>                                                             wrote:
>
>                                                                 Thanks
>                                                                 Michael,
>
>                                                                 My
>                                                                 calculations
>                                                                 give
>                                                                 me
>                                                                 ((2^32)-1)
>                                                                 /
>                                                                 (1000*1000*3600)
>                                                                 = only
>                                                                 1.2
>                                                                 hours
>                                                                 of
>                                                                 processing
>                                                                 time
>                                                                 in
>                                                                 32bit. 
>                                                                 The
>                                                                 initial
>                                                                 subtraction
>                                                                 is
>                                                                 64bit
>                                                                 anyway
>                                                                 and I
>                                                                 can't
>                                                                 see a
>                                                                 further 64bit
>                                                                 addition
>                                                                 being
>                                                                 a
>                                                                 problem.
>                                                                 I have
>                                                                 the
>                                                                 calculations
>                                                                 being
>                                                                 performed
>                                                                 in
>                                                                 doubles
>                                                                 at
>                                                                 print-out
>                                                                 where
>                                                                 performance
>                                                                 is not
>                                                                 really
>                                                                 an
>                                                                 issue
>                                                                 anyway.
>                                                                 (Though
>                                                                 apparently
>                                                                 doing
>                                                                 64 bit
>                                                                 division
>                                                                 is
>                                                                 worse
>                                                                 than
>                                                                 floating
>                                                                 point).
>
>                                                                 In
>                                                                 addition
>
>                                                                 * I
>                                                                 currently have
>                                                                 this
>                                                                 being
>                                                                 able
>                                                                 to be
>                                                                 turned
>                                                                 on and
>                                                                 off
>                                                                 and
>                                                                 reset
>                                                                 manually
>                                                                 (only
>                                                                 do it
>                                                                 when
>                                                                 required).
>
>                                                                 *  For
>                                                                 the
>                                                                 lower
>                                                                 volume
>                                                                 commands,
>                                                                 the
>                                                                 smoothed
>                                                                 average
>                                                                 is not
>                                                                 going
>                                                                 to be
>                                                                 useful
>                                                                 - the
>                                                                 count
>                                                                 is
>                                                                 more
>                                                                 interesting
>                                                                 for
>                                                                 different
>                                                                 reasons.
>
>                                                                 * The
>                                                                 total
>                                                                 time
>                                                                 is
>                                                                 quite
>                                                                 useful.
>                                                                 Ie a
>                                                                 high
>                                                                 average
>                                                                 time
>                                                                 doesn't
>                                                                 matter
>                                                                 if the
>                                                                 count
>                                                                 is
>                                                                 low.
>                                                                 The
>                                                                 things
>                                                                 that
>                                                                 are
>                                                                 affecting
>                                                                 performance
>                                                                 are
>                                                                 stuff
>                                                                 with
>                                                                 high
>                                                                 total
>                                                                 time.
>                                                                 Stuff
>                                                                 which
>                                                                 is
>                                                                 happening
>                                                                 100
>                                                                 times
>                                                                 a
>                                                                 second
>                                                                 needs
>                                                                 to be
>                                                                 a much
>                                                                 lower
>                                                                 average
>                                                                 than
>                                                                 once a
>                                                                 second.
>
>                                                                 * A
>                                                                 measure
>                                                                 like
>                                                                 'time
>                                                                 per
>                                                                 minute/second'
>                                                                 and
>                                                                 possibly
>                                                                 count
>                                                                 per
>                                                                 minute/seconds
>                                                                 as a
>                                                                 smoothed average
>                                                                 would
>                                                                 potentially
>                                                                 be
>                                                                 more
>                                                                 useful.
>                                                                 (or in
>                                                                 addition?)
>
>                                                                 I
>                                                                 think
>                                                                 we
>                                                                 could
>                                                                 do
>                                                                 _that_
>                                                                 in a
>                                                                 reasonably
>                                                                 efficient
>                                                                 manner
>                                                                 using
>                                                                 a 64
>                                                                 bit
>                                                                 'last
>                                                                 measured
>                                                                 time',
>                                                                 a 32
>                                                                 bit
>                                                                 accumulated
>                                                                 value
>                                                                 and
>                                                                 the
>                                                                 stored
>                                                                 32 bit
>                                                                 rolling
>                                                                 average.
>
>                                                                 It
>                                                                 would
>                                                                 boils
>                                                                 down
>                                                                 to
>                                                                 some
>                                                                 iterative
>                                                                 (integer)
>                                                                 sums
>                                                                 and
>                                                                 multiplications
>                                                                 plus a
>                                                                 divide
>                                                                 by n ^
>                                                                 (time
>                                                                 periods
>                                                                 passed) 
>                                                                 -
>                                                                 which
>                                                                 is a
>                                                                 shift
>                                                                 - and
>                                                                 which
>                                                                 can be
>                                                                 optimised
>                                                                 to '0'
>                                                                 if
>                                                                 'time-periods-passed'
>                                                                 is
>                                                                 more
>                                                                 than
>                                                                 32/(bits-per-n)
>                                                                 -
>                                                                 effectively
>                                                                 limiting
>                                                                 the
>                                                                 number
>                                                                 of
>                                                                 iterations.
>
>                                                                 The
>                                                                 one
>                                                                 issue
>                                                                 I can
>                                                                 see is
>                                                                 that
>                                                                 we
>                                                                 need
>                                                                 to
>                                                                 calculate
>                                                                 'number
>                                                                 of
>                                                                 time-periods
>                                                                 passed'
>                                                                 which
>                                                                 is a
>                                                                 64 bit
>                                                                 subtraction
>                                                                 followed
>                                                                 by a
>                                                                 32 bit
>                                                                 division
>                                                                 (not
>                                                                 optimisable to
>                                                                 a
>                                                                 simple
>                                                                 shift).
>
>                                                                 * I'm
>                                                                 also
>                                                                 happy
>                                                                 to
>                                                                 keep a
>                                                                 rolling
>                                                                 (32bit)
>                                                                 average
>                                                                 time.
>
>                                                                  
>                                                                  Even
>                                                                 if you
>                                                                 assume
>                                                                 averages
>                                                                 in the
>                                                                 100ms,
>                                                                 32bit
>                                                                 is
>                                                                 going
>                                                                 to
>                                                                 happily
>                                                                 support
>                                                                 an N
>                                                                 of 64
>                                                                 or
>                                                                 even 128.
>
>                                                                    Am
>                                                                 I
>                                                                 right
>                                                                 in
>                                                                 thinking
>                                                                 that
>                                                                 the
>                                                                 choice
>                                                                 of N
>                                                                 is
>                                                                 highly
>                                                                 dependent
>                                                                 on
>                                                                 frequency.
>                                                                 For
>                                                                 things
>                                                                 happening
>                                                                 100
>                                                                 times
>                                                                 per
>                                                                 second,
>                                                                 you
>                                                                 might
>                                                                 want
>                                                                 an N
>                                                                 like
>                                                                 128..
>                                                                 where
>                                                                 things
>                                                                 happening
>                                                                 once per
>
>                                                                  
>                                                                  second,
>                                                                 you
>                                                                 might
>                                                                 want
>                                                                 an N
>                                                                 of 4
>                                                                 or 8. 
>                                                                 The
>                                                                 other
>                                                                 things
>                                                                 we
>                                                                 keep
>                                                                 track
>                                                                 of in
>                                                                 this
>                                                                 manner
>                                                                 we
>                                                                 have a
>                                                                 better
>                                                                 idea
>                                                                 of the
>                                                                 frequency
>                                                                 of the
>                                                                 thing.
>
>                                                                 How
>                                                                 about
>                                                                 we
>                                                                 have
>                                                                 (per
>                                                                 record
>                                                                 type):
>
>                                                                   *
>                                                                 total
>                                                                 count
>                                                                 (since
>                                                                 last
>                                                                 reset?)
>                                                                 (32 bit)
>
>                                                                   *
>                                                                 smoothed
>                                                                 average
>                                                                 of
>                                                                 time
>                                                                 per
>                                                                 instance
>                                                                 (32 bit)
>
>                                                                   *
>                                                                 ?xx?
>                                                                 total
>                                                                 accumulated
>                                                                 time
>                                                                 since
>                                                                 last
>                                                                 reset
>                                                                 (64bit)
>                                                                 ?? <--
>                                                                 with
>                                                                 the
>                                                                 below
>                                                                 stats
>                                                                 this
>                                                                 is
>                                                                 much
>                                                                 less
>                                                                 useful
>
>                                                                   *
>                                                                 last-measured-time
>                                                                 (64 bit)
>
>                                                                   *
>                                                                 accumulated
>                                                                 count
>                                                                 since
>                                                                 last
>                                                                 time-period
>                                                                 (16bit
>                                                                 - but
>                                                                 maybe
>                                                                 32bit
>                                                                 anyway
>                                                                 for
>                                                                 byte
>                                                                 alignment?)
>
>                                                                   *
>                                                                 smoothed
>                                                                 average
>                                                                 of
>                                                                 count
>                                                                 per
>                                                                 time-period
>                                                                 (32bit)
>
>                                                                   *
>                                                                 accumulated
>                                                                 time
>                                                                 since
>                                                                 last
>                                                                 time-period
>                                                                 (32bit)
>
>                                                                   *
>                                                                 smoothed
>                                                                 average
>                                                                 of
>                                                                 time
>                                                                 per
>                                                                 time-period
>                                                                 (32bit)
>
>                                                                 It's
>                                                                 possible
>                                                                 to
>                                                                 keep the
>
>                                                                 Is
>                                                                 this
>                                                                 going
>                                                                 to be
>                                                                 too
>                                                                 much
>                                                                 per
>                                                                 record
>                                                                 type? 
>                                                                 The
>                                                                 number
>                                                                 of
>                                                                 'records'
>                                                                 we are
>                                                                 keeping
>                                                                 is
>                                                                 quite
>                                                                 low
>                                                                 (so 10
>                                                                 to 20
>                                                                 maybe)
>                                                                 - so
>                                                                 it's
>                                                                 not a
>                                                                 huge
>                                                                 memory
>                                                                 burden.
>
>                                                                 Thoughts?
>
>                                                                 //.ichael
>
>                                                                 On
>                                                                 Thu,
>                                                                 16 May
>                                                                 2024
>                                                                 at
>                                                                 03:09,
>                                                                 Michael
>                                                                 Balzer
>                                                                 via
>                                                                 OvmsDev
>                                                                 <ovmsdev at lists.openvehicles.com>
>                                                                 wrote:
>
>                                                                     esp_timer_get_time()
>                                                                     is
>                                                                     the
>                                                                     right
>                                                                     choice
>                                                                     for
>                                                                     precision
>                                                                     timing.
>
>                                                                     I'd
>                                                                     say
>                                                                     uint32
>                                                                     is
>                                                                     enough
>                                                                     though,
>                                                                     even
>                                                                     if
>                                                                     counting
>                                                                     microseconds
>                                                                     that
>                                                                     can
>                                                                     hold
>                                                                     a
>                                                                     total
>                                                                     of
>                                                                     more
>                                                                     than
>                                                                     71
>                                                                     hours
>                                                                     of
>                                                                     actual
>                                                                     processing
>                                                                     time.
>                                                                     uint64
>                                                                     has
>                                                                     a
>                                                                     significant
>                                                                     performance
>                                                                     penalty,
>                                                                     although
>                                                                     I
>                                                                     don't
>                                                                     recall
>                                                                     the
>                                                                     overhead
>                                                                     for
>                                                                     simple
>                                                                     additions.
>
>                                                                     Also
>                                                                     &
>                                                                     more
>                                                                     important,
>                                                                     the
>                                                                     average
>                                                                     wouldn't
>                                                                     be
>                                                                     my
>                                                                     main
>                                                                     focus,
>                                                                     but
>                                                                     the
>                                                                     maximum
>                                                                     processing
>                                                                     time
>                                                                     seen
>                                                                     per
>                                                                     ID,
>                                                                     which
>                                                                     seems
>                                                                     to
>                                                                     be
>                                                                     missing
>                                                                     in
>                                                                     your
>                                                                     draft.
>
>                                                                     Second
>                                                                     thought
>                                                                     on
>                                                                     the
>                                                                     average…
>                                                                     the
>                                                                     exact
>                                                                     overall
>                                                                     average
>                                                                     really
>                                                                     has
>                                                                     a
>                                                                     minor
>                                                                     meaning,
>                                                                     I'd
>                                                                     rather
>                                                                     see
>                                                                     the
>                                                                     current
>                                                                     average,
>                                                                     adapting
>                                                                     to
>                                                                     the
>                                                                     current
>                                                                     mode
>                                                                     of
>                                                                     operation
>                                                                     (drive/charge/…).
>                                                                     I
>                                                                     suggest
>                                                                     feeding
>                                                                     the
>                                                                     measurements
>                                                                     to
>                                                                     a
>                                                                     low
>                                                                     pass
>                                                                     filter
>                                                                     to
>                                                                     get
>                                                                     the
>                                                                     smoothed
>                                                                     average
>                                                                     of
>                                                                     the
>                                                                     last
>                                                                     n
>                                                                     measurements.
>                                                                     Pattern:
>
>                                                                     runavg
>                                                                     =
>                                                                     ((N-1)
>                                                                     *
>                                                                     runavg
>                                                                     +
>                                                                     newval)
>                                                                     / N
>
>                                                                     By
>                                                                     using
>                                                                     a
>                                                                     low
>                                                                     power
>                                                                     of
>                                                                     2
>                                                                     for
>                                                                     N
>                                                                     (e.g.
>                                                                     8
>                                                                     or
>                                                                     16),
>                                                                     you
>                                                                     can
>                                                                     replace
>                                                                     the
>                                                                     division
>                                                                     by
>                                                                     a
>                                                                     simple
>                                                                     bit
>                                                                     shift,
>                                                                     and
>                                                                     have
>                                                                     enough
>                                                                     headroom
>                                                                     to
>                                                                     use
>                                                                     32
>                                                                     bit
>                                                                     integers.
>
>                                                                     Regards,
>                                                                     Michael
>
>                                                                     Am
>                                                                     15.05.24
>                                                                     um
>                                                                     06:51
>                                                                     schrieb
>                                                                     Michael
>                                                                     Geddes
>                                                                     via
>                                                                     OvmsDev:
>
>                                                                         Formatting
>                                                                         aside,
>                                                                         I
>                                                                         have
>                                                                         implemented
>                                                                         what
>                                                                         I
>                                                                         think
>                                                                         Michael
>                                                                         B
>                                                                         was
>                                                                         suggesting.
>                                                                         This
>                                                                         is
>                                                                         a
>                                                                         sample
>                                                                         run
>                                                                         on
>                                                                         the
>                                                                         Ioniq
>                                                                         5
>                                                                         (which
>                                                                         doesn't
>                                                                         have
>                                                                         unsolicited RX
>                                                                         events).
>
>
>                                                                         This
>                                                                         uses
>                                                                         the
>                                                                         call esp_timer_get_time()
>                                                                         got
>                                                                         get
>                                                                         a
>                                                                         64bit
>                                                                         *microseconds*
>                                                                         since
>                                                                         started
>                                                                         value
>                                                                         -
>                                                                         and
>                                                                         works
>                                                                         out
>                                                                         the
>                                                                         time
>                                                                         to
>                                                                         execute
>                                                                         that
>                                                                         way.
>                                                                         It's
>                                                                         looking
>                                                                         at
>                                                                         absolute
>                                                                         time
>                                                                         and
>                                                                         not
>                                                                         time
>                                                                         in
>                                                                         the
>                                                                         Task
>                                                                         -
>                                                                         so
>                                                                         other
>                                                                         things
>                                                                         going
>                                                                         on
>                                                                         at
>                                                                         the
>                                                                         same
>                                                                         time
>                                                                         in
>                                                                         other
>                                                                         tasks
>                                                                         will
>                                                                         have
>                                                                         an
>                                                                         effect. 
>                                                                         (The
>                                                                         normal
>                                                                         tick
>                                                                         count
>                                                                         doesn't
>                                                                         have
>                                                                         nearly
>                                                                         enough
>                                                                         resolution
>                                                                         to
>                                                                         be
>                                                                         useful
>                                                                         -
>                                                                         any
>                                                                         other
>                                                                         ideas
>                                                                         on
>                                                                         measurement?)
>                                                                         I've
>                                                                         got
>                                                                         total
>                                                                         accumulated
>                                                                         time
>                                                                         displaying
>                                                                         in
>                                                                         seconds
>                                                                         and
>                                                                         the
>                                                                         average
>                                                                         in
>                                                                         milliseconds
>                                                                         currently
>                                                                         -
>                                                                         but
>                                                                         I
>                                                                         can
>                                                                         change
>                                                                         that
>                                                                         easy
>                                                                         enough.
>
>                                                                         The
>                                                                         cumulative
>                                                                         time
>                                                                         is
>                                                                         stored
>                                                                         as
>                                                                         uint64_t
>                                                                         which
>                                                                         will
>                                                                         be
>                                                                         plenty,
>                                                                         as
>                                                                         32bit
>                                                                         wouldn't
>                                                                         be
>                                                                         nearly
>                                                                         enough.
>
>                                                                         OVMS#
>                                                                         *poller
>                                                                         time
>                                                                         on*
>                                                                         Poller
>                                                                         timing
>                                                                         is
>                                                                         now
>                                                                         on
>
>                                                                         OVMS#
>                                                                         *poller
>                                                                         time
>                                                                         status*
>                                                                         Poller
>                                                                         timing
>                                                                         is:
>                                                                         on
>                                                                         Poll
>                                                                         [PRI]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                         :
>                                                                         n=390
>                                                                         tot=0.2s
>                                                                         ave=0.586ms
>                                                                         Poll
>                                                                         [SRX]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                         :
>                                                                         n=316
>                                                                         tot=0.1s
>                                                                         ave=0.196ms
>                                                                         CAN1
>                                                                         RX[0778]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          :
>                                                                         n=382
>                                                                         tot=0.2s
>                                                                         ave=0.615ms
>                                                                         CAN1
>                                                                         RX[07a8]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          :
>                                                                         n=48
>                                                                         tot=0.0s
>                                                                         ave=0.510ms
>                                                                         CAN1
>                                                                         RX[07bb]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          :
>                                                                         n=162
>                                                                         tot=0.1s
>                                                                         ave=0.519ms
>                                                                         CAN1
>                                                                         RX[07ce]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          :
>                                                                         n=33
>                                                                         tot=0.0s
>                                                                         ave=0.469ms
>                                                                         CAN1
>                                                                         RX[07ea]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          :
>                                                                         n=408
>                                                                         tot=0.2s
>                                                                         ave=0.467ms
>                                                                         CAN1
>                                                                         RX[07ec]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          :
>                                                                         n=486
>                                                                         tot=0.2s
>                                                                         ave=0.477ms
>                                                                         CAN3
>                                                                         RX[07df]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          :
>                                                                         n=769
>                                                                         tot=0.2s
>                                                                         ave=0.261ms
>                                                                         CAN1
>                                                                         TX[0770]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          :
>                                                                         n=191
>                                                                         tot=0.0s
>                                                                         ave=0.054ms
>                                                                         CAN1
>                                                                         TX[07a0]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          :
>                                                                         n=16
>                                                                         tot=0.0s
>                                                                         ave=0.047ms
>                                                                         CAN1
>                                                                         TX[07b3]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          :
>                                                                         n=31
>                                                                         tot=0.0s
>                                                                         ave=0.069ms
>                                                                         CAN1
>                                                                         TX[07c6]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          :
>                                                                         n=11
>                                                                         tot=0.0s
>                                                                         ave=0.044ms
>                                                                         CAN1
>                                                                         TX[07e2]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          :
>                                                                         n=82
>                                                                         tot=0.0s
>                                                                         ave=0.067ms
>                                                                         CAN1
>                                                                         TX[07e4]
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          :
>                                                                         n=54
>                                                                         tot=0.0s
>                                                                         ave=0.044ms
>                                                                         Set
>                                                                         State
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          
>                                                                          :
>
>
>
>
> -- 
> 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

-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20240623/ccb64316/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 203 bytes
Desc: OpenPGP digital signature
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20240623/ccb64316/attachment-0001.sig>


More information about the OvmsDev mailing list