<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Twizy code overrides the virtual short name function, so won’t suffer the issue.<div class=""><br class=""></div><div class="">I think it is a bug in vehicle factory (as modifying the vehicle type is reasonable), so fixed it there. Returning NULL is problematic. It would be so much easier for everything to return std::string, but concern is memory consumption and overhead.</div><div class=""><br class=""></div><div class="">I’d like to start converting RE TOOLS to just use the web server. First step is to work out how to add a menu onto the web server. It seems that the PageMenu_t is a fixed enum list (and similarly hard-coded in the web_framework.</div><div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class="">Do I just add a ‘CAN bus’ menu there, by adding it to PageMenu_t, and supporting it where the other top level menus are? Or do you have any other suggestions/plans for this?</div><div class=""><br class=""></div><div class="">I don’t want to step on anything you are working on here.</div></blockquote><div class=""><div><br class=""></div><div>The second stage will be to add displays under that, but I think that is fairly straight forward. I will mostly be displaying tables, and sending those over the web socket would be good.</div><div><br class=""></div><div>Regards, Mark</div><div><br class=""><blockquote type="cite" class=""><div class="">On 17 Nov 2018, at 5:37 PM, Michael Balzer <<a href="mailto:dexter@expeedo.de" class="">dexter@expeedo.de</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">
  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" class="">
  
  <div text="#000000" bgcolor="#FFFFFF" class="">
    Mark,<br class="">
    <br class="">
    nice, thanks.<br class="">
    <br class="">
    The short name is used for the menu label. It's meant to fall back
    to the long name (and seems to do so in your screenshot), so should
    not be null. But I admit I haven't tested it on a vehicle without a
    short name.<br class="">
    <br class="">
    Btw, I'm currently working on the deviations and alerts.<br class="">
    <br class="">
    Regards,<br class="">
    Michael<br class="">
    <br class="">
    <br class="">
    <div class="moz-cite-prefix">Am 17.11.18 um 10:08 schrieb Mark
      Webb-Johnson:<br class="">
    </div>
    <blockquote type="cite" cite="mid:096E607E-ADE6-4780-BB70-C8E5B8A7AC2D@webb-johnson.net" class="">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" class="">
      Michael,
      <div class=""><br class="">
      </div>
      <div class="">Looks good. It seems that you did everything
        necessary for the Model S already in your
        commit 2a84d861403f48142d6adcc16ad7a20cd458e427:</div>
      <div class=""><br class="">
      </div>
      <blockquote style="margin: 0 0 0 40px; border: none; padding:
        0px;" class="">
        <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">#include
              “ovms_webserver.h"</span></font></div>
        <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""><br class="">
            </span></font></div>
        <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">OvmsVehicleTeslaModelS::OvmsVehicleTeslaModelS()</span></font></div>
        <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">MyWebServer.RegisterPage("/bms/cellmon",
              "BMS cell monitor", OvmsWebServer::HandleBmsCellMonitor,
              PageMenu_Vehicle, PageAuth_Cookie);</span></font></div>
        <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""><br class="">
            </span></font></div>
        <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">OvmsVehicleTeslaModelS::~OvmsVehicleTeslaModelS()</span></font></div>
        <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">MyWebServer.DeregisterPage("/bms/cellmon");</span></font></div>
      </blockquote>
      <div class=""><br class="">
      </div>
      <div class="">From my devbench, replaying a CAN CRTD log file, I
        get this output:<br class="">
        <div class=""><br class="">
        </div>
        <div class=""><span id="cid:part1.478CBE5C.50A27CA9@expeedo.de"><PastedGraphic-2.png></span></div>
        <div class=""><br class="">
        </div>
        <div class="">The animation is very nice.</div>
        <div class=""><br class="">
        </div>
        <div class="">I am, however, getting crashes, as follows:</div>
      </div>
      <div class="">
        <div class=""><br class="">
        </div>
      </div>
      <blockquote style="margin: 0 0 0 40px; border: none; padding:
        0px;" class="">
        <div class="">
          <div class="">
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">#
                  xtensa-esp32-elf-addr2line -pfiaC -e
                  3.1.011-25-g2a84d86.ovms3.elf 0x400935d3 0x4009372b
                  0x400db90c 0x4012c0f7 0x4012d0e1 0x4012d1e0 0x4012ebc1
                  0x4012ecbd 0x400f8b65 0x400f912d 0x400fa27c 0x400fa29a
                  0x400f8b65 0x400fa3e3 0x400fa7ad 0x400faa77 0x400f767e
                  0x400ee40a 0x400ee459</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x400935d3:
                  invoke_abort at
                  /home/openvehicles/build/esp-idf/components/esp32/panic.c:670</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x4009372b: abort at
/home/openvehicles/build/esp-idf/components/esp32/panic.c:670</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x400db90c:
                  __cxx_fatal_exception_message at
/home/openvehicles/build/esp-idf/components/cxx/cxx_exception_stubs.cpp:19</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x4012c0f7: void
                  std::__cxx11::basic_string<char,
                  std::char_traits<char>,
                  std::allocator<char> >::_M_construct<char
                  const*>(char const*, char const*,
                  std::forward_iterator_tag) at
/home/openvehicles/build/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/5.2.0/bits/basic_string.tcc:216</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> (inlined by) void
                  std::__cxx11::basic_string<char,
                  std::char_traits<char>,
                  std::allocator<char>
                  >::_M_construct_aux<char const*>(char const*,
                  char const*, std::__false_type) at
/home/openvehicles/build/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/5.2.0/bits/basic_string.h:195</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> (inlined by) void
                  std::__cxx11::basic_string<char,
                  std::char_traits<char>,
                  std::allocator<char> >::_M_construct<char
                  const*>(char const*, char const*) at
/home/openvehicles/build/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/5.2.0/bits/basic_string.h:214</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> (inlined by)
                  std::__cxx11::basic_string<char,
                  std::char_traits<char>,
                  std::allocator<char> >::basic_string(char
                  const*, std::allocator<char> const&) at
/home/openvehicles/build/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/5.2.0/bits/basic_string.h:457</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x4012d0e1:
                  OvmsWebServer::CreateMenu[abi:cxx11](PageContext&)
                  at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/ovms_webserver/src/web_framework.cpp:393</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x4012d1e0:
                  OvmsWebServer::HandleRoot(PageEntry&,
                  PageContext&) at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/ovms_webserver/src/web_framework.cpp:510</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x4012ebc1:
                  PageEntry::Serve(PageContext&) at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/ovms_webserver/src/ovms_webserver.cpp:558</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x4012ecbd:
                  OvmsWebServer::EventHandler(mg_connection*, int,
                  void*) at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/ovms_webserver/src/ovms_webserver.cpp:558</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x400f8b65: mg_call
                  at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x400f912d:
                  mg_http_call_endpoint_handler at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x400fa27c:
                  mg_http_handler2 at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x400fa29a:
                  mg_http_handler at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x400f8b65: mg_call
                  at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x400fa3e3:
                  mg_recv_common at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x400fa7ad:
                  mg_if_recv_tcp_cb at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> (inlined by)
                  mg_handle_tcp_read at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:3723</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> (inlined by)
                  mg_mgr_handle_conn at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:3844</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x400faa77:
                  mg_socket_if_poll at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x400f767e:
                  mg_mgr_poll at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/components/mongoose/mongoose/mongoose.c:1701</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x400ee40a:
                  OvmsNetManager::MongooseTask() at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/main/ovms_netmanager.cpp:560</span></font></div>
            <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">0x400ee459:
                  MongooseRawTask(void*) at
/home/openvehicles/build/Open-Vehicle-Monitoring-System-3.1/vehicle/OVMS.V3/main/ovms_netmanager.cpp:545</span></font></div>
          </div>
        </div>
      </blockquote>
      <div class="">
        <div class=""><br class="">
        </div>
        <div class="">On my development bench module I get this crash 1 in 4
          times or so. On my real car, 100% of the time.</div>
        <div class=""><br class="">
        </div>
        <div class="">That code path leads
          into MyVehicleFactory.ActiveVehicleShortName(). Those should
          all be ‘const char*’, but it is possible for NULL to be
          returned. I will look into it in more detail.</div>
        <div class=""><br class="">
        </div>
        <div class="">Regards, Mark.</div>
        <div class=""><br class="">
        </div>
        <div class="">
          <blockquote type="cite" class="">
            <div class="">On 17 Nov 2018, at 7:35 AM, Michael Balzer
              <<a href="mailto:dexter@expeedo.de" class="" moz-do-not-send="true">dexter@expeedo.de</a>> wrote:</div>
            <br class="Apple-interchange-newline">
            <div class="">
              <meta http-equiv="Content-Type" content="text/html;
                charset=UTF-8" class="">
              <div text="#000000" bgcolor="#FFFFFF" class=""> Mark,
                Tamás,<br class="">
                <br class="">
                I haven't had the time yet to take care of the stddev
                port, but I've just added the generalized web UI.<br class="">
                <br class="">
                Please see git log for details and send some
                screenshots.<br class="">
                <br class="">
                Regards,<br class="">
                Michael<br class="">
                <br class="">
                <br class="">
                <div class="moz-cite-prefix">Am 11.11.18 um 16:47
                  schrieb Mark Webb-Johnson:<br class="">
                </div>
                <blockquote type="cite" cite="mid:C4AAA14F-A53C-47E7-AB38-DC5437F14037@webb-johnson.net" class="">
                  <meta http-equiv="Content-Type" content="text/html;
                    charset=UTF-8" class="">
                  OK. I spent some time on this today, and sent in a
                  first draft (as a bunch of extensions to vehicle.{h,
                  cpp}). I migrated the Tesla Model S code to use it,
                  and support came down to just a few simple lines of
                  code.
                  <div class=""><br class="">
                  </div>
                  <div class="">For the moment, I dropped the idea of
                    ‘readingsperrow’, as I think that is Tesla Model S
                    specific, and not really necessary. Purely
                    presentational.</div>
                  <div class=""><br class="">
                  </div>
                  <div class="">c++ std::bitset is fixed size, so that
                    doesn’t work for us. The std::vector<bool>
                    seems a workable alternative, but I am not really
                    happy with using std::find as a way of looking to
                    see if we have everything. It works as it is, but is
                    not very optimal. It seems there should be a better
                    way of doing that. I think it is a pretty key
                    feature, given the broadcast nature of the buses, to
                    help the vehicle module know when it has a set of
                    data ready to commit to metrics, so will need to
                    think about this some more.</div>
                  <div class=""><br class="">
                  </div>
                  <div class="">I also implemented min and max, for
                    voltages and temperatures. They went in cleanly.
                    Haven’t tackled stddev yet (or the watchers/alerts,
                    overall aggregates, etc). There is a very basic ‘bms
                    status’ command implemented.</div>
                  <div class=""><br class="">
                  </div>
                  <div class="">Let me know what you think of it.</div>
                  <div class=""><br class="">
                  </div>
                  <div class="">Regards, Mark</div>
                  <div class=""><br class="">
                    <div class="">
                      <blockquote type="cite" class="">
                        <div class="">On 11 Nov 2018, at 5:11 PM,
                          Michael Balzer <<a href="mailto:dexter@expeedo.de" class="" moz-do-not-send="true">dexter@expeedo.de</a>>
                          wrote:</div>
                        <br class="Apple-interchange-newline">
                        <div class="">
                          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" class="">
                          <div text="#000000" bgcolor="#FFFFFF" class="">
                            Mark,<br class="">
                            <br class="">
                            yes, .min & .max are the minimum and
                            maximum readings seen since last battery
                            monitor reset. The reset should be available
                            as…<br class="">
                            <ul class="">
                              <li class="">OvmsVehicle::ResetCellStats();</li>
                              <li class="">Command: "vehicle bms reset"
                                …or just "bms reset" as we also have
                                other vehicle commands on the root
                                level?<br class="">
                              </li>
                            </ul>
                            On the Twizy I do an auto reset each time
                            the vehicle is turned on and each time a
                            charge starts, but that behaviour should be
                            controllable by the vehicle / user.<br class="">
                            <br class="">
                            <br class="">
                            There's additionally the overall { .stddev,
                            .avg } on voltages and temperatures of the
                            pack. These and the cell level statistics
                            can be calculated by the framework, so the
                            vehicle simply needs to provide the
                            readings. The framework needs to provide a
                            way to reset the readings completion bitset,
                            i.e.<br class="">
                            <ul class="">
                              <li class="">OvmsVehicle::RestartCellVoltages();</li>
                              <li class="">OvmsVehicle::RestartCellTemperatures();</li>
                            </ul>
                            …as sometimes readings get lost, and adding
                            new to the previous readings may lead to an
                            inconsistent view leading to wrong standard
                            deviation.<br class="">
                            <br class="">
                            <br class="">
                            Speaking of standard deviation, the
                            framework should also provide warnings and
                            alerts flags. On the Twizy it does so by
                            checking deviation thresholds, and there's a
                            general stddev warn & alert threshold to
                            detect overall condition and two alert
                            thresholds on the cell level, one for normal
                            stddev and one for stddev alert mode.
                            Warning flags on the cell level are set when
                            the cell deviation is above stddev. On the
                            Twizy these thresholds are currently fixed
                            to…<br class="">
                            <blockquote class=""><tt class="">// Battery
                                cell/cmod deviation alert thresholds:</tt><br class="">
                              <tt class="">#define
                                BATT_DEV_TEMP_ALERT         3       // =
                                3 °C</tt><br class="">
                              <tt class="">#define
                                BATT_DEV_VOLT_ALERT         6       // =
                                30 mV</tt><br class="">
                              <br class="">
                              <tt class="">// ...thresholds for overall
                                stddev:</tt><br class="">
                              <tt class="">#define
                                BATT_STDDEV_TEMP_WATCH      2       // =
                                2 °C</tt><br class="">
                              <tt class="">#define
                                BATT_STDDEV_TEMP_ALERT      3       // =
                                3 °C</tt><br class="">
                              <tt class="">#define
                                BATT_STDDEV_VOLT_WATCH      3       // =
                                15 mV</tt><br class="">
                              <tt class="">#define
                                BATT_STDDEV_VOLT_ALERT      5       // =
                                25 mV</tt><br class="">
                            </blockquote>
                            …these are good defaults for the Twizy 43 Ah
                            pouch cells, but may be too low for an 18650
                            pack, and will especially not fit cheap LFP
                            type cells. So these should be configurable,
                            i.e.<br class="">
                            <ul class="">
                              <li class="">vehicle bms.dev.temp.alert
                                [°C]</li>
                              <li class="">vehicle bms.dev.voltage.alert
                                [V]</li>
                              <li class="">vehicle bms.stddev.temp.watch
                                [°C]</li>
                              <li class="">vehicle bms.stddev.temp.alert
                                [°C]</li>
                              <li class="">vehicle
                                bms.stddev.voltage.watch [V]</li>
                              <li class="">vehicle
                                bms.stddev.voltage.alert [V]</li>
                            </ul>
                            I can generalize the Twizy code for all of
                            this.<br class="">
                            <br class="">
                            <br class="">
                            The Twizy battery monitoring command set is:<br class="">
                            <blockquote class=""><tt class="">OVMS# xrt
                                batt ?</tt><br class="">
                              <tt class="">data-cell            Output
                                cell record</tt><br class="">
                              <tt class="">data-pack            Output
                                pack record</tt><br class="">
                              <tt class="">reset                Reset
                                alerts & watches</tt><br class="">
                              <tt class="">status               Status
                                report</tt><br class="">
                              <tt class="">tdev                 Show
                                temperature deviations</tt><br class="">
                              <tt class="">temp                 Show
                                temperatures</tt><br class="">
                              <tt class="">vdev                 Show
                                voltage deviations</tt><br class="">
                              <tt class="">volt                 Show
                                voltages</tt><br class="">
                            </blockquote>
                            The "data" commands provide the server
                            historical records output. The other
                            commands originate from the V2 and have been
                            designed to keep the output within the SMS
                            msg size limit.<br class="">
                            <br class="">
                            "status" gives an operative overview of the
                            standard and max deviation levels of cells
                            with warning or alert status. "volt",
                            "vdev", "temp" and "tdev" show all cells.<br class="">
                            <br class="">
                            The Twizy generates a battery alert
                            notification from the "status" output
                            whenever some cell alert flag is set.<br class="">
                            <br class="">
                            <br class="">
                            The Twizy server records also originate from
                            the V2 limits, and can now better be changed
                            to vectors. I've just finished a virtual
                            dynamometer on the Twizy, sending a vector
                            metric to the server is just a matter of…<br class="">
                            <blockquote class=""><tt class="">std::string
                                msg = "RT-ENG-MotTrqDrv,0,86400,";</tt><br class="">
                              <tt class="">msg.append(m_mon.m_mot_torque_drv->AsString());</tt><br class="">
                              <tt class="">MyNotify.NotifyString("data",
                                "xrt.pwr.mon", msg.c_str());</tt><br class="">
                            </blockquote>
                            Neat.<br class="">
                            <br class="">
                            The Twizy sends server records once per
                            minute during drive/charge. The server
                            update frequency should become tunable as
                            well, as that would be a lot of additional
                            data volume on large packs.<br class="">
                            <br class="">
                            <br class="">
                            The Twizy layout may be either…<br class="">
                            <ul class="MailOutline">
                              <li class="">14 cell groups in the pack</li>
                              <li class="">2 cell groups in each module</li>
                              <li class="">7 modules in the pack</li>
                              <li class="">Each cell group has 1 voltage
                                measurement (so, 14 individual voltage
                                measurements)</li>
                              <li class="">Each module has 1 temperature
                                measurements (so, 7 individual
                                temperature measurements)</li>
                              <li class="">That means:</li>
                              <ul class="">
                                <li class="">OvmsVehicle::SetCellArrangementVoltage(14,
                                  2,  7)</li>
                                <li class="">OvmsVehicle::SetCellArrangementTemperature(7,
                                  1, 7)</li>
                              </ul>
                            </ul><p class="">…for the original battery, or
                              for an LFP type replacement…</p>
                            <ul class="MailOutline">
                              <li class="">16 cell groups in the pack</li>
                              <li class="">16 cell groups in each module</li>
                              <li class="">1 module in the pack</li>
                              <li class="">Each cell group has 1 voltage
                                measurement (so, 16 individual voltage
                                measurements)</li>
                              <li class="">Each module has 3 temperature
                                measurements (so, 3 individual
                                temperature measurements)</li>
                              <li class="">That means:</li>
                              <ul class="">
                                <li class="">OvmsVehicle::SetCellArrangementVoltage(16,
                                  16,  8)</li>
                                <li class="">OvmsVehicle::SetCellArrangementTemperature(3,
                                  3, 3)</li>
                              </ul>
                            </ul>
                            <br class="">
                            Regards,<br class="">
                            Michael<br class="">
                            <br class="">
                            <br class="">
                            <div class="moz-cite-prefix">Am 11.11.18 um
                              08:10 schrieb Mark Webb-Johnson:<br class="">
                            </div>
                            <blockquote type="cite" cite="mid:88AF6B7B-37D7-4698-97CD-43B6E481DBF0@webb-johnson.net" class="">
                              <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" class="">
                              Looking at the discussion with Michael
                              back in May, we came to some conclusions
                              for this. I was happy back then with using
                              ‘cell’ rather than ‘module’ as the naming,
                              because (a) we are talking about
                              cell/brick/module level here, not pack,
                              and (b) it is shorter. It seems that the
                              twizy has:
                              <div class=""><br class="">
                              </div>
                              <blockquote style="margin: 0 0 0 40px;
                                border: none;
 padding:
 0px;" class="">
                                <div class=""><tt style="background-color:
                                    rgb(255,
 255, 255);" class="">xrt.b.cell.01.volt.act                  
                                    3.995V</tt><tt style="background-color:
                                    rgb(255,
 255, 255);" class=""><br class="">
                                  </tt><tt style="background-color:
                                    rgb(255, 255,
 255);" class="">xrt.b.cell.01.volt.max                  
                                    4.12V</tt><tt style="background-color:
                                    rgb(255,
 255, 255);" class=""><br class="">
                                  </tt><tt style="background-color:
                                    rgb(255, 255,
 255);" class="">xrt.b.cell.01.volt.maxdev               
                                    0.01V</tt><tt style="background-color:
                                    rgb(255,
 255, 255);" class=""><br class="">
                                  </tt><tt style="background-color:
                                    rgb(255, 255,
 255);" class="">xrt.b.cell.01.volt.min                  
                                    3.795V</tt><tt style="background-color:
                                    rgb(255,
 255, 255);" class=""><br class="">
                                  </tt></div>
                                <div class=""><tt style="background-color:
                                    rgb(255,
 255, 255);" class="">...</tt></div>
                                <div class=""><tt style="background-color:
                                    rgb(255,
 255, 255);" class="">xrt.b.cell.cnt                          
                                    14</tt></div>
                                <div class=""><tt style="background-color:
                                    rgb(255,
 255, 255);" class="">...</tt></div>
                                <div class=""><tt style="background-color:
                                    rgb(255,
 255, 255);" class=""><tt class="">xrt.b.cmod.01.temp.act                  
                                      17°C</tt><tt class=""><br class="">
                                    </tt><tt class="">xrt.b.cmod.01.temp.max                  
                                      23°C</tt><tt class=""><br class="">
                                    </tt><tt class="">xrt.b.cmod.01.temp.maxdev               
                                      1°C</tt><tt class=""><br class="">
                                    </tt><tt class="">xrt.b.cmod.01.temp.min                  
                                      16°C</tt></tt></div>
                                <div class=""><tt style="background-color:
                                    rgb(255,
 255, 255);" class=""><tt class="">...</tt></tt></div>
                                <div class=""><tt style="background-color:
                                    rgb(255,
 255, 255);" class=""><tt class="">xrt.b.cmod.cnt                          
                                      7</tt></tt></div>
                                <div class=""><tt style="background-color:
                                    rgb(255,
 255, 255);" class=""><tt class="">...</tt></tt></div>
                                <div class=""><tt style="background-color:
                                    rgb(255,
 255, 255);" class=""><tt class=""><tt class="">xrt.b.pack.1.temp.alerts</tt><tt class=""><br class="">
                                      </tt><tt class="">xrt.b.pack.1.temp.max                   
                                        23°C</tt><tt class=""><br class="">
                                      </tt><tt class="">xrt.b.pack.1.temp.min                   
                                        16°C</tt><tt class=""><br class="">
                                      </tt><tt class="">xrt.b.pack.1.temp.stddev.max            
                                        1°C</tt><tt class=""><br class="">
                                      </tt><tt class="">xrt.b.pack.1.temp.watches</tt><tt class=""><br class="">
                                      </tt><tt class="">xrt.b.pack.1.volt.alerts</tt><tt class=""><br class="">
                                      </tt><tt class="">xrt.b.pack.1.volt.max                   
                                        57.6V</tt><tt class=""><br class="">
                                      </tt><tt class="">xrt.b.pack.1.volt.min                   
                                        52.8V</tt><tt class=""><br class="">
                                      </tt><tt class="">xrt.b.pack.1.volt.stddev.max            
                                        0.005V</tt><tt class=""><br class="">
                                      </tt><tt class="">xrt.b.pack.1.volt.watches               
                                        1,2,4,5,6,7,11,12,14</tt><tt class=""><br class="">
                                      </tt><tt class="">xrt.b.pack.cnt                          
                                        1</tt></tt></tt></div>
                                <div class=""><tt style="background-color:
                                    rgb(255,
 255, 255);" class=""><tt class=""><tt class="">...<br class="">
                                      </tt><tt class="">xrt.b.soc.max                           
                                        100%</tt><tt class=""><br class="">
                                      </tt><tt class="">xrt.b.soc.min                           
                                        69.78%</tt></tt></tt></div>
                              </blockquote>
                              <div class="">
                                <div class=""><br class="">
                                </div>
                                <div class="">Trying to come up with a
                                  standard representation for this (so
                                  everyone can use a shared library, and
                                  share output displays), that works
                                  across all vehicles... Assuming we
                                  have one-dimensional arrays for
                                  different types of measurement (for
                                  voltage, temperature, etc),
                                  measurements are taken at the group of
                                  cells level (with perhaps different
                                  groupings for different readings), and
                                  aggregations/limits being
                                  automatically calculated, I think this
                                  has:</div>
                                <div class=""><br class="">
                                </div>
                                <div class="">
                                  <ol class="MailOutline">
                                    <li class="">v.b.c.voltage<br class="">
                                      <br class="">
                                      Vector<float> metric type
                                      array of voltage measurements<br class="">
                                      <br class="">
                                    </li>
                                    <li class="">v.b.c.temp<br class="">
                                      <br class="">
                                      Vector<float> metric type
                                      array of temperature measurements<br class="">
                                      <br class="">
                                    </li>
                                    <li class="">Aggregations / limits<br class="">
                                      <br class="">
                                      We could have v.b.c.voltage.min,
                                      v.b.c.voltage.max,
                                      v.b.c.voltage.maxdev,
                                      v.b.c.temp.min, v.b.c.temp.max,
                                      and v.b.c.temp.maxdev if we wanted
                                      to store these. Presumably they
                                      could be automatically calculated?
                                      I am guessing ‘min’ is the minimal
                                      value seen, and ‘max’ the maximum?<br class="">
                                      <br class="">
                                    </li>
                                    <li class="">Setting as a batch<br class="">
                                      <br class="">
                                      The way I’ve implemented the Model
                                      S is to keep a bitmap of values
                                      set. For example, say we have 32
                                      cell voltage measurements. Every
                                      time we set a voltage measurement,
                                      we set the appropriate bit. When
                                      the bitmap is full, zero the
                                      bitmap, then set the metric in
                                      bulk (setting the entire vector).
                                      That seems to work well for Model
                                      S at least. The
                                      aggregations/limits would be
                                      calculated (and set) when the
                                      batch is ready. I suggest
                                      something like:<br class="">
                                      <br class="">
                                    </li>
                                    <ul class="">
                                      <li class="">OvmsVehicle::SetCellVoltage(int
                                        index, float value);</li>
                                      <li class="">OvmsVehicle::SetCellTemperature(int
                                        index, float value);<br class="">
                                        <br class="">
                                      </li>
                                    </ul>
                                    <li class="">Arrangement<br class="">
                                      <br class="">
                                      My thinking is that the count of
                                      measurements available can be
                                      defined when the module
                                      initialises. We can also simply
                                      count the size of the vectors, to
                                      know that. The issue is the
                                      cell/brick/module/pack
                                      arrangement; How many voltage or
                                      temperature measurements per
                                      module, how many modules in the
                                      pack, etc. I think we need to tell
                                      the system (a) the number of
                                      readings expected, (b) the number
                                      of readings per module, and (c) a
                                      hint to say how many readings to
                                      show per row. I suggest something
                                      like:<br class="">
                                      <br class="">
                                    </li>
                                    <ul class="">
                                      <li class="">OvmsVehicle::SetCellArrangementVoltage(int
                                        readings, int readingspermodule,
                                        int readingsperrow)</li>
                                      <li class="">OvmsVehicle::SetCellArrangementTemperature(int
                                        readings, int readingspermodule,
                                        int readingsperrow)<br class="">
                                        <br class="">
                                      </li>
                                    </ul>
                                    <li class="">Commands<br class="">
                                      <br class="">
                                      Once the above is defined we can
                                      have a ‘vehicle bms status’
                                      command to show the status (like
                                      the Tesla Model S one shown here,
                                      albeit more polished):</li>
                                  </ol>
                                </div>
                                <div class=""><br class="">
                                </div>
                              </div>
                              <blockquote style="margin: 0 0 0 40px;
                                border: none;
 padding:
 0px;" class="">
                                <div class="">
                                  <div class="">
                                    <div class=""> <font class="" face="Andale Mono"><span style="font-size: 14px;" class="">
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 1 | 3.981 V | 3.981
                                          V | 3.981 V | 29.5 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.981 V | 3.981
                                          V | 3.981 V | 30.3 C Max</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 2 | 3.981 V | 3.981
                                          V | 3.982 V | 29.4 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.981 V | 3.981
                                          V | 3.981 V | 29.8 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 3 | 3.982 V | 3.982
                                          V | 3.981 V | 29.1 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.981 V | 3.981
                                          V | 3.982 V | 29.7 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 4 | 3.982 V | 3.982
                                          V | 3.982 V | 28.9 C Min</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.981 V | 3.982
                                          V | 3.982 V | 29.7 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 5 | 3.982 V | 3.982
                                          V | 3.982 V | 29.0 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.982 V | 3.981
                                          V | 3.981 V | 29.6 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 6 | 3.982 V | 3.982
                                          V | 3.982 V | 29.3 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.982 V | 3.982
                                          V | 3.982 V | 29.6 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 7 | 3.981 V | 3.981
                                          V | 3.981 V | 29.0 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.981 V | 3.981
                                          V | 3.981 V | 29.6 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 8 | 3.982 V | 3.983
                                          V | 3.982 V | 29.2 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.983 V | 3.982
                                          V | 3.982 V | 29.9 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 9 | 3.982 V | 3.982
                                          V | 3.981 V | 30.0 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.982 V | 3.981
                                          V | 3.981 V | 29.7 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">10 | 3.979 V | 3.980
                                          V | 3.979 V | 29.1 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.980 V | 3.979
                                          V | 3.979 V | 29.8 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">11 | 3.980 V | 3.981
                                          V | 3.981 V | 29.1 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.981 V | 3.981
                                          V | 3.981 V | 29.4 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">12 | 3.981 V | 3.982
                                          V | 3.981 V | 29.1 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.981 V | 3.981
                                          V | 3.982 V | 29.3 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">13 | 3.982 V | 3.983
                                          V | 3.982 V | 28.9 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.982 V | 3.982
                                          V | 3.982 V | 29.4 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">14 | 3.981 V | 3.982
                                          V | 3.982 V | 29.3 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.982 V | 3.982
                                          V | 3.982 V | 29.5 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">15 | 3.981 V | 3.982
                                          V | 3.981 V | 29.6 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.982 V | 3.981
                                          V | 3.981 V | 29.9 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">16 | 3.982 V | 3.982
                                          V | 3.982 V | 29.5 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   | 3.982 V | 3.981
                                          V | 3.981 V | 29.8 C</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 
                                           -------------------------------</span></font></div>
                                    <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">   Tmin: 28.9  Tmax:
                                          30.3  Vmax: 3.983  Vmin: 3.979
                                           Vmax-Vmin: 0.003  Vtot:
                                          382.23</span></font></div>
                                  </div>
                                </div>
                                <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""><br class="">
                                    </span></font></div>
                                <div class="">Another variant of this
                                  display would be:</div>
                                <div class=""><br class="">
                                </div>
                                <div class="">
                                  <div class=""> <font class="" face="Andale Mono"><span style="font-size: 14px;" class="">  -------------------------------</span></font><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">-------------------------------</span><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">--------------------</span></div>
                                  <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 1 | 3.981 V | 3.981 V
                                        | 3.981 V | </span></font><span style="font-family:

                                      "Andale
 Mono";
                                      font-size: 14px;" class="">3.981 V
                                      | 3.981 V | 3.981 V </span><font class="" face="Andale
 Mono"><span style="font-size: 14px;" class="">| 29.5 C. </span></font><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">30.3 C Max |</span></div>
                                  <div class=""> <font class="" face="Andale Mono"><span style="font-size: 14px;" class="">  -------------------------------</span></font><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">-------------------------------</span><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">--------------------</span></div>
                                  <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 2 | 3.981 V | 3.981 V
                                        | 3.982 V | </span></font><span style="font-family:

                                      "Andale
 Mono";
                                      font-size: 14px;" class="">3.981 V
                                      | 3.981 V | 3.981 V | </span><font class="" face="Andale
 Mono"><span style="font-size: 14px;" class="">29.4 C  </span></font><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">29.8 C     |</span></div>
                                  <div class=""> <font class="" face="Andale Mono"><span style="font-size: 14px;" class="">  -------------------------------</span></font><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">-------------------------------</span><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">--------------------</span></div>
                                  <div class=""><span style="font-size:
                                      14px;
 font-family:

                                      "Andale Mono";" class=""> 3
                                      | 3.982 V | 3.982 V | 3.981 V | </span><span style="font-family:
                                      "Andale

 Mono";
                                      font-size: 14px;" class="">3.981 V
                                      | 3.981 V | 3.982 V | </span><span style="font-size: 14px;

                                      font-family:
 "Andale
                                      Mono";" class="">29.1 C  </span><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">29.7 C     |</span></div>
                                  <div class=""> <font class="" face="Andale Mono"><span style="font-size: 14px;" class="">  -------------------------------</span></font><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">-------------------------------</span><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">--------------------</span></div>
                                  <div class=""><span style="font-size:
                                      14px;
 font-family:

                                      "Andale Mono";" class=""> 4
                                      | 3.982 V | 3.982 V | 3.982 V | </span><span style="font-family:
                                      "Andale

 Mono";
                                      font-size: 14px;" class="">3.981 V
                                      | 3.982 V | 3.982 V | </span><span style="font-size: 14px;

                                      font-family:
 "Andale
                                      Mono";" class="">28.9 C Min  </span><span style="font-family:
                                      "Andale
 Mono";

                                      font-size: 14px;" class="">29.7 C
                                      |</span></div>
                                  <div class=""> <font class="" face="Andale Mono"><span style="font-size: 14px;" class="">  -------------------------------</span></font><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">-------------------------------</span><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">--------------------</span></div>
                                  <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class=""> 5 | 3.982 V | 3.982 V
                                        | 3.982 V | </span></font><span style="font-family:

                                      "Andale
 Mono";
                                      font-size: 14px;" class="">3.982 V
                                      | 3.981 V | 3.981 V | </span><font class="" face="Andale Mono"><span style="font-size:
 14px;" class="">29.0 C  </span></font><span style="font-family:
                                      "Andale

 Mono";
                                      font-size: 14px;" class="">29.6 C
                                          |</span></div>
                                  <div class=""> <font class="" face="Andale Mono"><span style="font-size: 14px;" class="">  -------------------------------</span></font><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">-------------------------------</span><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">--------------------</span></div>
                                  <div class="">...</div>
                                  <div class=""> <font class="" face="Andale Mono"><span style="font-size: 14px;" class="">  -------------------------------</span></font><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">-------------------------------</span><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">--------------------</span></div>
                                  <div class=""><font class="" face="Andale Mono"><span style="font-size: 14px;" class="">16 | 3.982 V | 3.982 V
                                        | 3.982 V | </span></font><span style="font-family:

                                      "Andale
 Mono";
                                      font-size: 14px;" class="">3.982 V
                                      | 3.981 V | 3.981 V | </span><font class="" face="Andale
 Mono"><span style="font-size: 14px;" class="">29.5 C  </span></font><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">29.8 C.    |</span></div>
                                  <div class=""> <font class="" face="Andale Mono"><span style="font-size: 14px;" class="">  -------------------------------</span></font><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">-------------------------------</span><span style="font-family: "Andale
                                      Mono";
 font-size:

                                      14px;" class="">--------------------</span></div>
                                  <div class=""><span style="font-size:
                                      14px;
 font-family:

                                      "Andale Mono";" class=""> 
                                       Tmin: 28.9  Tmax: 30.3  Vmax:
                                      3.983  Vmin: 3.979  Vmax-Vmin:
                                      0.003  Vtot: 382.23</span></div>
                                </div>
                                <div class=""><span style="font-size:
                                    14px;
 font-family:

                                    "Andale Mono";" class=""><br class="">
                                  </span></div>
                                <div class="">(The vehicle itself having
                                  the control via the SetCellArrangement
                                  methods)</div>
                              </blockquote>
                              <div class="">
                                <div class=""><br class="">
                                </div>
                                <div class="">To provide a baseline
                                  usage case, the Tesla Model S has:</div>
                                <div class=""><br class="">
                                </div>
                                <div class="">
                                  <ul class="MailOutline">
                                    <li class="">96 bricks in the pack</li>
                                    <li class="">6 bricks in each module</li>
                                    <li class="">16 modules in the pack</li>
                                    <li class="">Each brick has one
                                      voltage measurement (so, 96
                                      individual voltage measurements)</li>
                                    <li class="">Each module has two
                                      temperature measurements (so, 32
                                      individual temperature
                                      measurements)</li>
                                    <li class="">That means:</li>
                                    <ul class="">
                                      <li class="">OvmsVehicle::SetCellArrangementVoltage(96,
                                        6, 3)</li>
                                      <li class="">OvmsVehicle::SetCellArrangementTemperature(32,
                                        2, 1)</li>
                                    </ul>
                                  </ul>
                                  <div class=""><br class="">
                                  </div>
                                  <div class="">Tesla Model X seems
                                    identical to Model S.</div>
                                  <div class=""><br class="">
                                  </div>
                                  <div class="">I am still working on
                                    reverse engineering the Tesla
                                    Roadster, but it seems to have:</div>
                                  <div class=""><br class="">
                                  </div>
                                  <div class="">
                                    <ul class="MailOutline">
                                      <li class="">99 bricks in the pack</li>
                                      <li class="">9 bricks in each
                                        module (aka sheet)</li>
                                      <li class="">11 modules in the
                                        pack</li>
                                      <li class="">Each brick has one
                                        voltage measurement (so, 11*9 =
                                        99 individual voltage
                                        measurements)</li>
                                      <li class="">Each module has four
                                        temperature measurements (so,
                                        11*4 = 44 individual temperature
                                        measurements)</li>
                                      <li class="">That means:</li>
                                      <ul class="">
                                        <li class="">OvmsVehicle::SetCellArrangementVoltage(99,
                                          9, 9)</li>
                                        <li class="">OvmsVehicle::SetCellArrangementTemperature(44,
                                          4, 4)</li>
                                      </ul>
                                    </ul>
                                  </div>
                                  <div class=""><br class="">
                                  </div>
                                  <div class="">For other cars that
                                    support cell-level measurements, do
                                    they fit this representation? If so,
                                    can we fill in the following for
                                    each car, to see how it fits in?</div>
                                  <div class=""><br class="">
                                  </div>
                                  <div class="">
                                    <ul class="MailOutline">
                                      <li class="">XX cell groups in the
                                        pack</li>
                                      <li class="">XX cell groups in
                                        each module</li>
                                      <li class="">XX modules in the
                                        pack</li>
                                      <li class="">Each cell group has
                                        one voltage measurement (so, XX
                                        individual voltage measurements)</li>
                                      <li class="">Each module has four
                                        temperature measurements (so, XX
                                        individual temperature
                                        measurements)</li>
                                      <li class="">That means:</li>
                                      <ul class="">
                                        <li class="">OvmsVehicle::SetCellArrangementVoltage(N,
                                          Y,  Z)</li>
                                        <li class="">OvmsVehicle::SetCellArrangementTemperature(N,
                                          Y, Z)</li>
                                      </ul>
                                    </ul>
                                    <div class=""><br class="">
                                    </div>
                                    <div class="">If they don’t fit,
                                      what changes are needed to make it
                                      work?</div>
                                    <div class=""><br class="">
                                    </div>
                                    <div class="">Regards, Mark.</div>
                                  </div>
                                  <div class=""><br class="">
                                    <blockquote type="cite" class="">
                                      <div class="">On 11 Nov 2018, at
                                        12:16 AM, Mark Webb-Johnson <<a href="mailto:mark@webb-johnson.net" class="" moz-do-not-send="true">mark@webb-johnson.net</a>>
                                        wrote:</div>
                                      <br class="Apple-interchange-newline">
                                      <div class="">
                                        <div class="">I originally
                                          thought ‘brick’, or ‘module’
                                          rather than ‘cell’, but happy
                                          with either. These are
                                          readings for groups of cells,
                                          rather than whole pack.<br class="">
                                          <br class="">
                                          Tesla Model S is 16 modules. 6
                                          voltage readings, and 2
                                          temperatures, per module.<br class="">
                                          <br class="">
                                          What is Kia Soul arrangement?<br class="">
                                          <br class="">
                                          Regards, Mark<br class="">
                                          <br class="">
                                          <blockquote type="cite" class="">On 10 Nov 2018, at
                                            11:26 PM, Henrik Scheel <<a href="mailto:henrik.scheel@spjeldager.dk" class="" moz-do-not-send="true">henrik.scheel@spjeldager.dk</a>>
                                            wrote:<br class="">
                                            <br class="">
                                            Hi Mark.<br class="">
                                            <br class="">
                                            Good idea with a generic
                                            array type metric, and
                                            standard metrics for common
                                            EV features!<br class="">
                                            <br class="">
                                            Just a quick note:<br class="">
                                            The Kia Soul EV vehicle
                                            module will be able to
                                            utilize these metric-arrays.
                                            However, on the Soul, the
                                            voltages are for each
                                            physical pair of cells
                                            connected in parallel, and
                                            the temperatures are for 6
                                            battery modules, and for the
                                            battery cooling air inlet. <br class="">
                                            <br class="">
                                            So, for the Kia Soul EV, the
                                            name “v.b.cell.temp” would
                                            be misleading, as each
                                            measured module temperature
                                            is representing the state
                                            for 16 pairs of cells.<br class="">
                                            <br class="">
                                            Aside from that, I am all
                                            for mapping the values in
                                            these new standardized
                                            metric types. Currently, the
                                            temperature average is
                                            calculated and mapped to a
                                            metric, and the 96 cell
                                            voltages are unmapped for
                                            Kia Soul EV.<br class="">
                                            <br class="">
                                            Best regards,<br class="">
                                            Henrik<br class="">
                                            -- <br class="">
                                            <br class="">
                                            Venlig hilsen / best regards
                                            <br class="">
                                            Henrik R. Scheel<br class="">
                                            <br class="">
                                            Spjeldager Consult ApS<br class="">
                                            Spjeldager 9 <br class="">
                                            DK-2630 Taastrup <br class="">
                                            CVR: 34491399 <br class="">
                                            T: +45 2720 9828 <br class="">
                                            <a href="http://www.spjeldager.dk/" class="" moz-do-not-send="true">http://www.spjeldager.dk/</a><br class="">
                                            <br class="">
                                            <blockquote type="cite" class="">Den 10. nov. 2018
                                              kl. 15.34 skrev <a class="moz-txt-link-abbreviated" href="mailto:ovmsdev-request@lists.openvehicles.com" moz-do-not-send="true">ovmsdev-request@lists.openvehicles.com</a>:<br class="">
                                              <br class="">
                                              Send OvmsDev mailing list
                                              submissions to<br class="">
                                                <a class="moz-txt-link-abbreviated" href="mailto:ovmsdev@lists.openvehicles.com" moz-do-not-send="true">ovmsdev@lists.openvehicles.com</a><br class="">
                                              <br class="">
                                              To subscribe or
                                              unsubscribe via the World
                                              Wide Web, visit<br class="">
                                                <a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br class="">
                                              or, via email, send a
                                              message with subject or
                                              body 'help' to<br class="">
                                                <a class="moz-txt-link-abbreviated" href="mailto:ovmsdev-request@lists.openvehicles.com" moz-do-not-send="true">ovmsdev-request@lists.openvehicles.com</a><br class="">
                                              <br class="">
                                              You can reach the person
                                              managing the list at<br class="">
                                                <a class="moz-txt-link-abbreviated" href="mailto:ovmsdev-owner@lists.openvehicles.com" moz-do-not-send="true">ovmsdev-owner@lists.openvehicles.com</a><br class="">
                                              <br class="">
                                              When replying, please edit
                                              your Subject line so it is
                                              more specific<br class="">
                                              than "Re: Contents of
                                              OvmsDev digest..."<br class="">
                                              <br class="">
                                              <br class="">
                                              Today's Topics:<br class="">
                                              <br class="">
                                              1. Re: Custom metrics
                                              (Mark Webb-Johnson)<br class="">
                                              <br class="">
                                              <br class="">
----------------------------------------------------------------------<br class="">
                                              <br class="">
                                              Message: 1<br class="">
                                              Date: Sat, 10 Nov 2018
                                              22:34:46 +0800<br class="">
                                              From: Mark Webb-Johnson <a class="moz-txt-link-rfc2396E" href="mailto:mark@webb-johnson.net" moz-do-not-send="true"><mark@webb-johnson.net></a><br class="">
                                              To: OVMS Developers <a class="moz-txt-link-rfc2396E" href="mailto:ovmsdev@lists.openvehicles.com" moz-do-not-send="true"><ovmsdev@lists.openvehicles.com></a><br class="">
                                              Subject: Re: [Ovmsdev]
                                              Custom metrics<br class="">
                                              Message-ID: <a class="moz-txt-link-rfc2396E" href="mailto:1E30255B-5CC6-4EC4-BA9F-9CA41D156B11@webb-johnson.net" moz-do-not-send="true"><1E30255B-5CC6-4EC4-BA9F-9CA41D156B11@webb-johnson.net></a><br class="">
                                              Content-Type: text/plain;
                                              charset="utf-8"<br class="">
                                              <br class="">
                                              I?ve added
                                              UnregisterCommand()
                                              methods to
                                              ovms_command.{h, cpp}.
                                              I?ve also updated the
                                              vehicle_teslamodels code
                                              to UnregisterCommand in
                                              the destructor. I think
                                              that is cleaner. The
                                              unregistering of CAN buses
                                              already seems to be
                                              working properly, config
                                              parameters should persist
                                              (even without vehicle
                                              module loaded). I am still
                                              considering the situation
                                              with metrics (but tend to
                                              think that they should
                                              disappear when the vehicle
                                              module is unloaded).<br class="">
                                              <br class="">
                                              I?ve also changed the
                                              vehicle_teslamodels code
                                              to use single voltage and
                                              temperate metric arrays (I
                                              think my previous dual
                                              voltage temperature
                                              arrangement was
                                              incorrect). I think these
                                              can now become standard
                                              metrics (one for battery
                                              voltage, and another for
                                              temperature). How about
                                              v.b.cell.voltage and
                                              v.b.cell.temp? The
                                              interpretation of those
                                              vectors (how many modules
                                              primarily - with the
                                              calculation of voltages
                                              and temperatures per
                                              module being dependent on
                                              the realtime size of each
                                              array) will still be
                                              vehicle dependent, and I
                                              guess the vehicle module
                                              can provide hints to our
                                              standard component for
                                              this. Perhaps we can just
                                              implement it in
                                              vehicle.{h, cpp}? I think
                                              this standard module can
                                              deal with:<br class="">
                                              <br class="">
                                              An interface for specific
                                              vehicle module to specify
                                              the number of modules,
                                              number of voltage
                                              measurements, and number
                                              of temperature
                                              measurements available.<br class="">
                                              Internal storage of cell
                                              voltages and temperatures.<br class="">
                                              Tracking of when all
                                              voltages and temperatures
                                              have been set, and these
                                              should be written to
                                              metrics (as a
                                              transaction).<br class="">
                                              Standardised command to
                                              display on terminal (like
                                              ?xts bms?).<br class="">
                                              Web interface extensions
                                              (including the charting
                                              you have, a textual
                                              display, etc).<br class="">
                                              <br class="">
                                              I can handle all of the
                                              above, except the web
                                              interface. What do you
                                              think? Can these be
                                              standardised? Certainly
                                              for Tesla Roadster and
                                              Tesla Model S they appear
                                              to be able to be unified
                                              under one standard
                                              framework.<br class="">
                                              <br class="">
                                              Regards, Mark.<br class="">
                                              <br class="">
                                              <blockquote type="cite" class="">On 8 Nov 2018,
                                                at 6:49 AM, Michael
                                                Balzer <a class="moz-txt-link-rfc2396E" href="mailto:dexter@expeedo.de" moz-do-not-send="true"><dexter@expeedo.de></a>
                                                wrote:<br class="">
                                                <br class="">
                                                Mark,<br class="">
                                                <br class="">
                                                1) yes, we're
                                                approaching a generic
                                                form now. The chart
                                                currently displays
                                                actual, min & max
                                                values from the arrays,
                                                and derives the overall
                                                average value. It
                                                automatically adapts to
                                                the number of voltages
                                                and temperatures stored
                                                in the arrays.<br class="">
                                                <br class="">
                                                It still lacks:<br class="">
                                                a) Displaying max
                                                deviations, current
                                                standard deviation and
                                                max standard deviation
                                                recorded.<br class="">
                                                b) Displaying
                                                cell/module warn &
                                                alert status. These are
                                                currently set metrics on
                                                the Twizy, could better
                                                be generalized as arrays
                                                as well, i.e. 0=normal,
                                                1=warn, 2=alert.<br class="">
                                                c) SOH / capacity and
                                                internal resistance
                                                should be generally
                                                available per cell as
                                                well (no data on these
                                                yet on the Twizy).<br class="">
                                                <br class="">
                                                And as this will
                                                visually overload the
                                                chart it will need some
                                                buttons to show/hide the
                                                parts.<br class="">
                                                <br class="">
                                                A general vehicle base
                                                support for these
                                                metrics could
                                                automatically keep min
                                                & max values,
                                                calculate deviations and
                                                derive warn/alert status
                                                from these. So basically
                                                a vehicle adapter only
                                                needs to provide
                                                voltages and
                                                temperatures (+ SOH and
                                                internal resistance as
                                                available). The reset
                                                command then can also
                                                normally just be a
                                                generalized version.<br class="">
                                                <br class="">
                                                2) I should add some
                                                basic documentation on
                                                this to the developer
                                                manual (lacking time).
                                                For the RE tools I've
                                                got an API to inject
                                                arbitrary data into the
                                                websocket stream on my
                                                todo list, so live
                                                updates can be
                                                transported without
                                                polling.<br class="">
                                                <br class="">
                                                4) Interesting idea,
                                                similar to a reverse
                                                proxy. As the channel
                                                will be very slow we
                                                will need to reduce the
                                                websocket update
                                                frequency, make it
                                                configurable or maybe
                                                auto-adapt to the
                                                current speed. Also, the
                                                proxy should cache
                                                static assets to speed
                                                up first time connects.<br class="">
                                                <br class="">
                                                The v2 protocol using
                                                RC4 encryption is a bad
                                                base for this. What's
                                                the current encryption
                                                on v3/MQTT?<br class="">
                                                <br class="">
                                                Regards,<br class="">
                                                Michael<br class="">
                                                <br class="">
                                                <br class="">
                                                <blockquote type="cite" class="">Am 07.11.18
                                                  um 01:50 schrieb Mark
                                                  Webb-Johnson:<br class="">
                                                  Some
                                                  questions/comments:<br class="">
                                                  <br class="">
                                                  I guess this is fairly
                                                  generic. Voltages and
                                                  temperatures, with
                                                  possibly a different
                                                  number of readings for
                                                  each. Model S has two
                                                  temperatures, but I
                                                  guess we can just
                                                  treat those as
                                                  interleaved. Could it
                                                  be put into a reusable
                                                  component? Or could we
                                                  have standard metrics
                                                  for this now (battery
                                                  module voltages and
                                                  temperatures)? Maybe a
                                                  single component that
                                                  does all this
                                                  (functions to set
                                                  individual voltages
                                                  and temperatures,
                                                  define the layout for
                                                  display, include web
                                                  interface for chart
                                                  and table, etc)?<br class="">
                                                  <br class="">
                                                  I really need to look
                                                  at integration of
                                                  extensions to the web
                                                  interface. See how
                                                  that is done. For my
                                                  work on DBC and RE
                                                  tools, it seems
                                                  easiest to just create
                                                  a web interface
                                                  (rather than messing
                                                  around with command
                                                  line).<br class="">
                                                  <br class="">
                                                  Regarding the
                                                  registration of
                                                  commands and metrics,
                                                  I am not sure if that
                                                  is done correctly at
                                                  the moment. In
                                                  particular in the case
                                                  a vehicle module is
                                                  loaded, unloaded, then
                                                  loaded again. It seems
                                                  that RegisterCommand
                                                  doesn?t do it right,
                                                  and the metric object
                                                  creation needs a guard
                                                  to make sure the
                                                  metric doesn?t already
                                                  exist. I will try to
                                                  tidy this up in Model
                                                  S code, as a
                                                  reference, before
                                                  moving on to Roadster.<br class="">
                                                  <br class="">
                                                  I really haven?t used
                                                  the web interface
                                                  much, as it is not
                                                  available over
                                                  cellular. I was
                                                  wondering if it could
                                                  be encapsulated
                                                  somehow within the
                                                  v2/v3 protocol, and
                                                  made available via the
                                                  server? Something like
                                                  <a class="moz-txt-link-freetext" href="https://api.openvehicles.com:8080/VEHICLEID" moz-do-not-send="true">https://api.openvehicles.com:8080/VEHICLEID</a>
                                                  <a class="moz-txt-link-rfc2396E" href="https://api.openvehicles.com:8080/VEHICLEID" moz-do-not-send="true"><https://api.openvehicles.com:8080/VEHICLEID></a>
                                                  tunnelled through
                                                  (with authentication
                                                  at the server level
                                                  using the normal web
                                                  server user account).
                                                  Similarly for SSH
                                                  access. These are both
                                                  simple tcp/ip
                                                  connections, so
                                                  presumably could be
                                                  injected into mongoose
                                                  as fake connections.
                                                  One possible approach
                                                  would be SOCKS, and
                                                  there is some
                                                  reference code for
                                                  LWIP <a class="moz-txt-link-rfc2396E" href="https://github.com/russdill/lwip/commit/dfeba616" moz-do-not-send="true"><https://github.com/russdill/lwip/commit/dfeba616></a>.
                                                  Another is TUN/TAP,
                                                  again with reference
                                                  code for LWIP <a class="moz-txt-link-rfc2396E" href="https://github.com/russdill/lwip/commit/47ca42f8" moz-do-not-send="true"><https://github.com/russdill/lwip/commit/47ca42f8></a>.
                                                  And then there is the
                                                  standard PPP (although
                                                  that would technically
                                                  then be PPP within
                                                  tcp/ip over PPP within
                                                  async within GSM,
                                                  which is a bit
                                                  freaky).<br class="">
                                                  <br class="">
                                                  Regards, Mark.<br class="">
                                                  <br class="">
                                                  <blockquote type="cite" class="">On
                                                    7 Nov 2018, at 4:52
                                                    AM, Michael Balzer
                                                    <<a class="moz-txt-link-abbreviated" href="mailto:dexter@expeedo.de" moz-do-not-send="true">dexter@expeedo.de</a>
                                                    <a class="moz-txt-link-rfc2396E" href="mailto:dexter@expeedo.de" moz-do-not-send="true"><mailto:dexter@expeedo.de></a>>
                                                    wrote:<br class="">
                                                    <br class="">
                                                    Mark, Tam?s,<br class="">
                                                    <br class="">
                                                    I've prepared a more
                                                    or less generalized
                                                    array version of my
                                                    Twizy battery chart
(OvmsVehicleRenaultTwizy::WebBattMon) for you. Easier to collect the
                                                    data from actual
                                                    arrays than separate
                                                    metrics.<br class="">
                                                    <br class="">
                                                    This ZIP?<br class="">
                                                    <br class="">
                                                    <a class="moz-txt-link-freetext" href="https://dexters-web.de/f/ovms-dev/ovms.zip" moz-do-not-send="true">https://dexters-web.de/f/ovms-dev/ovms.zip</a>
                                                    <a class="moz-txt-link-rfc2396E" href="https://dexters-web.de/f/ovms-dev/ovms.zip" moz-do-not-send="true"><https://dexters-web.de/f/ovms-dev/ovms.zip></a><br class="">
                                                    <br class="">
                                                    ?contains my local
                                                    ovms web
                                                    test/development
                                                    folder. Unzip it
                                                    into some local web
                                                    server (needs to be
                                                    run via http for
                                                    javascript), then
                                                    open the folder from
                                                    a browser. You
                                                    should see an OVMS
                                                    web UI lookalike.<br class="">
                                                    <br class="">
                                                    Config ? CellChart
                                                    loads
                                                    "cellchart.htm". The
                                                    blue button
                                                    generates and
                                                    injects test data.
                                                    Should look like
                                                    this:<br class="">
                                                    <br class="">
<eoibkbnkbpofdlab.png><br class="">
                                                    <br class="">
                                                    Assuming you'll add
                                                    some min/max records
                                                    as well I left that
                                                    code including the
                                                    reset button in
                                                    there. If you can't
                                                    provide that yet,
                                                    you can simply set
                                                    min & max = act
                                                    in the get_xxx_data
                                                    functions. Other
                                                    than that you should
                                                    basically just need
                                                    to change the
                                                    metrics names.<br class="">
                                                    <br class="">
                                                    To generate C/C++
                                                    syntax from the
                                                    file, use the script
                                                    bin/mksrc:
                                                    "bin/mksrc
                                                    cellchart.htm
                                                    >cellchart.cpp".
                                                    The chart init URL
                                                    needs to be changed
                                                    for the production
                                                    environment (see
                                                    comment), and the
                                                    test data generator
                                                    can be removed. See
OvmsVehicleRenaultTwizy::WebBattMon for reference.<br class="">
                                                    <br class="">
                                                    Maybe I should add
                                                    that stuff to the
                                                    repository as well?<br class="">
                                                    <br class="">
                                                    Regards,<br class="">
                                                    Michael<br class="">
                                                    <br class="">
                                                    <br class="">
                                                    <blockquote type="cite" class="">Am
                                                      06.11.18 um 15:56
                                                      schrieb Mark
                                                      Webb-Johnson:<br class="">
                                                      Nice. I just
                                                      implemented this
                                                      for Model S using
                                                      your new metric
                                                      type.<br class="">
                                                      <br class="">
                                                      96 individual
                                                      brick voltages for
                                                      each of the
                                                      bricks, plus two
                                                      temperatures for
                                                      each of the 16
                                                      modules.<br class="">
                                                      <br class="">
                                                      Works well.<br class="">
                                                      <br class="">
                                                      <br class="">
                                                      <br class="">
                                                      <br class="">
                                                      <blockquote type="cite" class="">On 1
                                                        Nov 2018, at
                                                        5:58 PM, Michael
                                                        Balzer <<a class="moz-txt-link-abbreviated" href="mailto:dexter@expeedo.de" moz-do-not-send="true">dexter@expeedo.de</a>
                                                        <a class="moz-txt-link-rfc2396E" href="mailto:dexter@expeedo.de" moz-do-not-send="true"><mailto:dexter@expeedo.de></a>>
                                                        wrote:<br class="">
                                                        <br class="">
                                                        Tam?s,<br class="">
                                                        <br class="">
                                                        I've been
                                                        creating
                                                        separate metrics
                                                        for all cell
                                                        values on the
                                                        Twizy, but that
                                                        only has 14
                                                        cells.<br class="">
                                                        <br class="">
                                                        We discussed
                                                        this before, a
                                                        better approach
                                                        is introducing a
                                                        new metric class
                                                        for arrays. I
                                                        have just done
                                                        that for you,
                                                        please pull.<br class="">
                                                        <br class="">
                                                        Usage example:<br class="">
OvmsMetricVector<float>* vf = new
OvmsMetricVector<float>("test.volts", SM_STALE_MIN, Volts);<br class="">
vf->SetElemValue(3, 1.23);<br class="">
vf->SetElemValue(17, 2.34);<br class="">
                                                        float myvals[3]
                                                        = { 5.5, 6.6,
                                                        7.7 };<br class="">
vf->SetElemValues(10, 3, myvals);<br class="">
                                                        With this data
                                                        set, you get:<br class="">
                                                        OVMS# met lis
                                                        test<br class="">
                                                        test.volts
                              0,0,0,1.23,0,0,0,0,0,0,5.5,6.6,7.7,0,0,0,0,2.34V<br class="">
                                                        ?and in the web
                                                        framework:<br class="">
metrics["test.volts"]<br class="">
                                                        (18) [0, 0, 0,
                                                        1.23, 0, 0, 0,
                                                        0, 0, 0, 5.5,
                                                        6.6, 7.7, 0, 0,
                                                        0, 0, 2.34]<br class="">
metrics["test.volts"][11]<br class="">
                                                        6.6<br class="">
                                                        See template
                                                        definition in
                                                        ovms_metrics.h
                                                        for more.<br class="">
                                                        <br class="">
                                                        Regards,<br class="">
                                                        Michael<br class="">
                                                        <br class="">
                                                        <br class="">
                                                        <blockquote type="cite" class="">Am
                                                          31.10.18 um
                                                          20:08 schrieb
                                                          Tam?s Kov?cs:<br class="">
                                                          I have a
                                                          Peugeot iOn,
                                                          and i wan't to
                                                          create own
                                                          metrics for
                                                          battery temp
                                                          (66 piece) and
                                                          voltage (88
                                                          (old) or
                                                          80(new) piece)
                                                          for all cell
                                                          (and show on
                                                          web
                                                          interface),
                                                          and i don't
                                                          understand how
                                                          can i create
                                                          it. Now my
                                                          data in
                                                          array-s from
                                                          can messages
                                                          6E1-6E4.<br class="">
                                                          My git fork: <a class="moz-txt-link-freetext" href="https://github.com/KommyKT/Open-Vehicle-Monitoring-System-3/tree/peugeot" moz-do-not-send="true">https://github.com/KommyKT/Open-Vehicle-Monitoring-System-3/tree/peugeot</a>
                                                          <a class="moz-txt-link-rfc2396E" href="https://github.com/KommyKT/Open-Vehicle-Monitoring-System-3/tree/peugeot" moz-do-not-send="true"><https://github.com/KommyKT/Open-Vehicle-Monitoring-System-3/tree/peugeot></a><br class="">
vehicle_mitsubishi<br class="">
                                                          <br class="">
                                                        </blockquote>
                                                        <br class="">
                                                        -- <br class="">
                                                        Michael Balzer *
                                                        Helkenberger Weg
                                                        9 * D-58256
                                                        Ennepetal<br class="">
                                                        Fon 02333 / 833
                                                        5735 * Handy
                                                        0176 / 206 989
                                                        26<br class="">
_______________________________________________<br class="">
                                                        OvmsDev mailing
                                                        list<br class="">
                                                        <a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a>
                                                        <a class="moz-txt-link-rfc2396E" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true"><mailto:OvmsDev@lists.openvehicles.com></a><br class="">
                                                        <a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
                                                        <a class="moz-txt-link-rfc2396E" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true"><http://lists.openvehicles.com/mailman/listinfo/ovmsdev></a><br class="">
                                                      </blockquote>
                                                      <br class="">
                                                      <br class="">
_______________________________________________<br class="">
                                                      OvmsDev mailing
                                                      list<br class="">
                                                      <a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a>
                                                      <a class="moz-txt-link-rfc2396E" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true"><mailto:OvmsDev@lists.openvehicles.com></a><br class="">
                                                      <a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
                                                      <a class="moz-txt-link-rfc2396E" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true"><http://lists.openvehicles.com/mailman/listinfo/ovmsdev></a><br class="">
                                                    </blockquote>
                                                    <br class="">
                                                    -- <br class="">
                                                    Michael Balzer *
                                                    Helkenberger Weg 9 *
                                                    D-58256 Ennepetal<br class="">
                                                    Fon 02333 / 833 5735
                                                    * Handy 0176 / 206
                                                    989 26<br class="">
_______________________________________________<br class="">
                                                    OvmsDev mailing list<br class="">
                                                    <a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a>
                                                    <a class="moz-txt-link-rfc2396E" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true"><mailto:OvmsDev@lists.openvehicles.com></a><br class="">
                                                    <a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
                                                    <a class="moz-txt-link-rfc2396E" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true"><http://lists.openvehicles.com/mailman/listinfo/ovmsdev></a><br class="">
                                                  </blockquote>
                                                  <br class="">
                                                  <br class="">
                                                  <br class="">
_______________________________________________<br class="">
                                                  OvmsDev mailing list<br class="">
                                                  <a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a>
                                                  <a class="moz-txt-link-rfc2396E" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true"><mailto:OvmsDev@lists.openvehicles.com></a><br class="">
                                                  <a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
                                                  <a class="moz-txt-link-rfc2396E" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true"><http://lists.openvehicles.com/mailman/listinfo/ovmsdev></a><br class="">
                                                </blockquote>
                                                <br class="">
                                                -- <br class="">
                                                Michael Balzer *
                                                Helkenberger Weg 9 *
                                                D-58256 Ennepetal<br class="">
                                                Fon 02333 / 833 5735 *
                                                Handy 0176 / 206 989 26<br class="">
_______________________________________________<br class="">
                                                OvmsDev mailing list<br class="">
                                                <a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a><br class="">
                                                <a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br class="">
                                              </blockquote>
                                              <br class="">
                                              -------------- next part
                                              --------------<br class="">
                                              An HTML attachment was
                                              scrubbed...<br class="">
                                              URL: <a class="moz-txt-link-rfc2396E" href="http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20181110/b17e54e7/attachment.html" moz-do-not-send="true"><http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20181110/b17e54e7/attachment.html></a><br class="">
                                              <br class="">
------------------------------<br class="">
                                              <br class="">
                                              Subject: Digest Footer<br class="">
                                              <br class="">
_______________________________________________<br class="">
                                              OvmsDev mailing list<br class="">
                                              <a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a><br class="">
                                              <a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br class="">
                                              <br class="">
                                              <br class="">
------------------------------<br class="">
                                              <br class="">
                                              End of OvmsDev Digest, Vol
                                              82, Issue 10<br class="">
***************************************<br class="">
                                            </blockquote>
                                            <br class="">
_______________________________________________<br class="">
                                            OvmsDev mailing list<br class="">
                                            <a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a><br class="">
                                            <a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br class="">
                                          </blockquote>
                                          <br class="">
_______________________________________________<br class="">
                                          OvmsDev mailing list<br class="">
                                          <a href="mailto:OvmsDev@lists.openvehicles.com" class="" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a><br class="">
                                          <a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br class="">
                                        </div>
                                      </div>
                                    </blockquote>
                                  </div>
                                  <br class="">
                                </div>
                              </div>
                              <br class="">
                              <fieldset class="mimeAttachmentHeader"></fieldset>
                              <pre class="moz-quote-pre" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
                            </blockquote>
                            <br class="">
                            <pre class="moz-signature" cols="160">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
                          </div>
_______________________________________________<br class="">
                          OvmsDev mailing list<br class="">
                          <a href="mailto:OvmsDev@lists.openvehicles.com" class="" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a><br class="">
                          <a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br class="">
                        </div>
                      </blockquote>
                    </div>
                    <br class="">
                  </div>
                  <br class="">
                  <fieldset class="mimeAttachmentHeader"></fieldset>
                  <pre class="moz-quote-pre" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
                </blockquote>
                <br class="">
                <pre class="moz-signature" cols="160">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
              </div>
              _______________________________________________<br class="">
              OvmsDev mailing list<br class="">
              <a href="mailto:OvmsDev@lists.openvehicles.com" class="" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a><br class="">
              <a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br class="">
            </div>
          </blockquote>
        </div>
        <br class="">
      </div>
      <br class="">
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
    </blockquote>
    <br class="">
    <pre class="moz-signature" cols="160">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
  </div>

_______________________________________________<br class="">OvmsDev mailing list<br class=""><a href="mailto:OvmsDev@lists.openvehicles.com" class="">OvmsDev@lists.openvehicles.com</a><br class="">http://lists.openvehicles.com/mailman/listinfo/ovmsdev<br class=""></div></blockquote></div><br class=""></div></body></html>