<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=""><div class=""><br class=""></div>We’ve just put in the base support in PCP (Power Controller Peripheral), and implemented it in most places. I think all the peripherals (as well as the ESP32 chip itself) implements those power control features (where possible), but there may be gaps in support.<div class=""><br class=""></div><div class="">For a place to start - a review of everything derived from PCP and ensure that they support the SetPowerMode function to do something reasonable.</div><div class=""><br class=""></div><div class="">That is the base support. Then, we need something on top to intelligently control power. That would call SetPowerMode() on the peripherals themselves. This would be best implemented in class pcpapp (MyPcpApp). It would monitor the state of the system (and perhaps the 12V battery), and perform tasks as directed by configuration.</div><div class=""><br class=""></div><div class="">Power consumption wise, the modem is the biggest culprit. That has a low power mode (supported in the SIMCOM driver we wrote), but will tear down the data connection. So that means we lose App control. In low power mode it can be woken up from an incoming USSD / SMS message (which is cool for hologram users as incoming SMS is free) - for those users, if the modem is in low power mode, when the App connects the server could talk to Hologram to wake up the modem (that is the way most other telemetry systems work).</div><div class=""><br class=""></div><div class="">When I thought of this originally, I thought of having different power control profiles. Each profile would be a set of configuration options defining what power control steps to take. Then the user picks a profile to use (including a custom one). The simplest profile would monitor the 12v battery and power everything down (including ESP32) if the 12v was below a critical level. But nothing like that is implemented at the moment.<br class=""><div><br class=""></div><div>Regards, Mark</div><div><br class=""><blockquote type="cite" class=""><div class="">On 2 Mar 2019, at 12:38 AM, Nikolay Shishkov <<a href="mailto:nshishkov@yahoo.com" class="">nshishkov@yahoo.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><div class="ydp4bb748c7yahoo-style-wrap" style="font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 13px;"><div class=""></div>
        <div class="">Hi Mark, </div><div class=""><br class=""></div><div class=""><span class=""><span style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;" class="">I am killing batteries and </span></span>I think I will have some time to look into the power consumption and sleep modes. </div><div class=""><br class=""></div><div class="">Where should I start?</div><div class="">I saw that there is some mention of NetDeepSleep and other states, as well as <span class="">esp_deep_sleep in the code.</span></div><div class="">Are they functioning or are they there but not running yet (implemented in firmware)? </div><div class="">Maybe I should have implemented something in the code for the Think City?</div><div class=""><br class=""></div><div class="">Thanks in advance,</div><div class="">Nikolay</div><div class=""><br class=""></div>
        
        </div><div id="yahoo_quoted_2160338459" class="yahoo_quoted">
            <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;" class="">
                
                <div class="">
                    On Wednesday, May 2, 2018, 2:50:50 AM GMT+2, Mark Webb-Johnson <<a href="mailto:mark@webb-johnson.net" class="">mark@webb-johnson.net</a>> wrote:
                </div>
                <div class=""><br class=""></div>
                <div class=""><br class=""></div>
                <div class=""><div id="yiv3992118154" class=""><div class="">Greg,<div class="yiv3992118154"><br clear="none" class="yiv3992118154"></div><div class="yiv3992118154">Every peripheral class in the OVMS v3 system (both physical and virtual) should be derived from pcp (Power Controlled Peripheral). That base class implements the concept of a power state, as well as standardised commands to change state (and for sub-classed peripherals to implement those states).</div><div class="yiv3992118154"><br clear="none" class="yiv3992118154"></div><blockquote class="yiv3992118154" style="margin:0 0 0 40px;border:none;padding:0px;"><div class="yiv3992118154"><div class="yiv3992118154"><font class="yiv3992118154" face="Andale Mono"><span class="yiv3992118154" style="font-size:18px;">class obd2ecu : public pcp</span></font></div><div class="yiv3992118154"><font class="yiv3992118154" face="Andale Mono"><span class="yiv3992118154" style="font-size:18px;">  {</span></font></div><div class="yiv3992118154"><font class="yiv3992118154" face="Andale Mono"><span class="yiv3992118154" style="font-size:18px;">  public:</span></font></div><div class="yiv3992118154"><font class="yiv3992118154" face="Andale Mono"><span class="yiv3992118154" style="font-size:18px;">    obd2ecu(const char* name, canbus* can);</span></font></div><div class="yiv3992118154"><font class="yiv3992118154" face="Andale Mono"><span class="yiv3992118154" style="font-size:18px;">    ~obd2ecu();</span></font></div><div class="yiv3992118154"><font class="yiv3992118154" face="Andale Mono"><span class="yiv3992118154" style="font-size:18px;"><br clear="none" class="yiv3992118154"></span></font></div><div class="yiv3992118154"><font class="yiv3992118154" face="Andale Mono"><span class="yiv3992118154" style="font-size:18px;">  public:</span></font></div><div class="yiv3992118154"><font class="yiv3992118154" face="Andale Mono"><span class="yiv3992118154" style="font-size:18px;">    virtual void SetPowerMode(PowerMode powermode);</span></font></div></div></blockquote><div class="yiv3992118154"><br clear="none" class="yiv3992118154"></div><div class="yiv3992118154">At the moment, we don’t use this much. Some peripherals implement it, some don’t, and some only partially. Have a look at ::SetPowerMode() in the peripheral code itself.</div><div class="yiv3992118154"><br clear="none" class="yiv3992118154"></div><div class="yiv3992118154">In general:</div><div class="yiv3992118154"><br clear="none" class="yiv3992118154"></div><blockquote class="yiv3992118154" style="margin:0 0 0 40px;border:none;padding:0px;"><div class="yiv3992118154">Undefined<span class="yiv3992118154Apple-tab-span" style="white-space:pre;">   </span>Power mode is undefined</div><div class="yiv3992118154">On<span class="yiv3992118154Apple-tab-span" style="white-space:pre;">                      </span>Fully powered on</div><div class="yiv3992118154">Sleep<span class="yiv3992118154Apple-tab-span" style="white-space:pre;">          </span>Reduced power mode (but all functions expected to be fully operational)</div><div class="yiv3992118154">DeepSleep<span class="yiv3992118154Apple-tab-span" style="white-space:pre;">       </span>Minimal power deep sleep mode (may turn off some functions to save power)</div><div class="yiv3992118154">Off<span class="yiv3992118154Apple-tab-span" style="white-space:pre;">                   </span>Fully powered off</div></blockquote><div class="yiv3992118154"><div class=""><br clear="none" class="yiv3992118154"></div><div class="">This will become important later when we implement the sleep and deep sleep modes in OVMS firmware (primarily to save those little 12V batteries).</div><div class=""><br clear="none" class="yiv3992118154"></div><div class="">Regards, Mark.</div><div class="yiv3992118154yqt8769640332" id="yiv3992118154yqt92294"><div class=""><br clear="none" class="yiv3992118154"><blockquote class="yiv3992118154" type="cite"><div class="yiv3992118154">On 2 May 2018, at 8:10 AM, Greg D. <<a rel="nofollow" shape="rect" class="yiv3992118154" ymailto="mailto:gregd2350@gmail.com" target="_blank" href="mailto:gregd2350@gmail.com">gregd2350@gmail.com</a>> wrote:</div><br clear="none" class="yiv3992118154Apple-interchange-newline"><div class="yiv3992118154"><div class="yiv3992118154">Hi folks (mostly Mark, probably),<br clear="none" class="yiv3992118154"><br clear="none" class="yiv3992118154">I just noticed that there is a power command for OBD2ECU as well as<br clear="none" class="yiv3992118154">ext12v.  I understand (or thought I did) what controlling the ext12v<br clear="none" class="yiv3992118154">power does, but how is "power" related to OBD2ECU?  Is this related to<br clear="none" class="yiv3992118154">firing up the opened CAN bus, or is there some tie to the ext12v power?<br clear="none" class="yiv3992118154"><br clear="none" class="yiv3992118154">I have manually created scripts for vehicle.on and vehicle.off to<br clear="none" class="yiv3992118154">explicitly control ext12v, so that an attached HUD will follow the key. <br clear="none" class="yiv3992118154">We talked about having this sort of thing done automatically, but I<br clear="none" class="yiv3992118154">didn't think it was ever implemented, nor what the particulars would be<br clear="none" class="yiv3992118154">regarding some of the device corner cases.  Is that what is happening here?<br clear="none" class="yiv3992118154"><br clear="none" class="yiv3992118154">Related, what do the other states do?  (Sleep, deepsleep, etc.)<br clear="none" class="yiv3992118154"><br clear="none" class="yiv3992118154">Thanks,<br clear="none" class="yiv3992118154"><br clear="none" class="yiv3992118154">Greg<br clear="none" class="yiv3992118154"><br clear="none" class="yiv3992118154">_______________________________________________<br clear="none" class="yiv3992118154">OvmsDev mailing list<br clear="none" class="yiv3992118154"><a rel="nofollow" shape="rect" class="yiv3992118154" ymailto="mailto:OvmsDev@lists.openvehicles.com" target="_blank" href="mailto:OvmsDev@lists.openvehicles.com">OvmsDev@lists.openvehicles.com</a><br clear="none" class="yiv3992118154"><a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" class="">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br clear="none" class="yiv3992118154"></div></div></blockquote></div></div><br clear="none" class="yiv3992118154"></div></div></div><div class="yqt8769640332" id="yqt15720">_______________________________________________<br clear="none" class="">OvmsDev mailing list<br clear="none" class=""><a shape="rect" ymailto="mailto:OvmsDev@lists.openvehicles.com" href="mailto:OvmsDev@lists.openvehicles.com" class="">OvmsDev@lists.openvehicles.com</a><br clear="none" class=""><a shape="rect" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" target="_blank" class="">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br clear="none" class=""></div></div>
            </div>
        </div></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>