<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I’ve done a very rough implementation of this:<div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">OVMS > time set 1519486746</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">Time set (at stratum 15)</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class=""><br class=""></span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">OVMS > time status</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">UTC Time:   Sat Feb 24 15:39:09 2018</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">Local Time: Sat Feb 24 15:39:09 2018</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">Provider:   time</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class=""><br class=""></span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">PROVIDER             STRATUM  UPDATE TIME</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">*time                     15       4 Sat Feb 24 15:39:10 2018</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class=""><br class=""></span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">OVMS > time status</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">UTC Time:   Sat Feb 24 15:39:14 2018</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">Local Time: Sat Feb 24 15:39:14 2018</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">Provider:   time</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class=""><br class=""></span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">PROVIDER             STRATUM  UPDATE TIME</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">*time                     15       9 Sat Feb 24 15:39:15 2018</span></font></div></blockquote><div class=""><br class=""></div><div class="">I’ll work on it some more tomorrow. As it is, components can now call MyTime.Set(…) to feed their opinion of time into the system.</div><div class=""><br class=""></div><div class="">Regards, Mark.</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 24 Feb 2018, at 10:23 PM, Mark Webb-Johnson <<a href="mailto:mark@webb-johnson.net" class="">mark@webb-johnson.net</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I forgot about vehicles. Tesla Roadster is the same.<div class=""><br class=""></div><div class="">I’ll write an ovms_time component now. Then, we can all submit time to it appropriately.</div><div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">class OvmsTime</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">  {</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">  public:</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">    OvmsTime();</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">    ~OvmsTime();</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class=""><br class=""></span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">  public:</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">    void Set(char* provider, int stratum, bool trusted, time_t time);</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">  };</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class=""><br class=""></span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-size: 14px;" class="">extern OvmsTime MyTime;</span></font></div></div></blockquote><div class=""><br class=""></div><div class="">Just follow the NTP stratum approach (distance from a zero-delay device). Trusted is a separate indication that just sets stratum level to 16. The provider is simply the logging TAG.</div><div class=""><br class=""></div><div class="">Internal implementation is like NTP. We track the last times from all providers, and pick the one with the lowest stratum that has reported within a reasonable time.</div><div class=""><br class=""></div><div class="">We can add the boot-time save/restore later (once Michael has done that code for safe boot, etc).</div><div class=""><br class=""></div><div class="">Regards, Mark.</div><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On 24 Feb 2018, at 9:19 PM, Geir Øyvind Vælidalo <<a href="mailto:geir@validalo.net" class="">geir@validalo.net</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Sounds like a plan. I can get time from the car too, but the resolution is several seconds, so I think we need to have some sort of priority here. Maybe SNTP first, then GPS, cellular and finally “car”?<br class=""><br class="">Geir<br class=""><br class="">Sendt fra min iPhone<br class=""><br class=""><blockquote type="cite" class="">24. feb. 2018 kl. 04:36 skrev Mark Webb-Johnson <<a href="mailto:mark@webb-johnson.net" class="">mark@webb-johnson.net</a>>:<br class=""><br class="">I don’t think so.<br class=""><br class="">There are various sources for date/time. GPS. Cellular. SNTP. Need to ensure that they are not all fighting.<br class=""><br class="">Another module to do this? Have components tell it their opinion of the time, then it centrally decides and updates system clock if necessary<br class=""><br class="">Also store last clock in RTC ram so during a crash/reboot it can recover the last know time?<br class=""><br class="">Regards, Mark<br class=""><br class=""><blockquote type="cite" class="">On 24 Feb 2018, at 9:44 AM, Stephen Casner <<a href="mailto:casner@acm.org" class="">casner@acm.org</a>> wrote:<br class=""><br class="">Does the sytem date get set anywhere (presumably from GPS)?<br class=""><br class="">This question occurred to me as I'm working on a side project using<br class="">the DEVKIT-C module which won't have access to GPS so I added the code<br class="">to set the data using SNTP.<br class=""><br class="">                                                      -- Steve<br class="">_______________________________________________<br class="">OvmsDev mailing list<br class=""><a href="mailto:OvmsDev@lists.teslaclub.hk" class="">OvmsDev@lists.teslaclub.hk</a><br class=""><a href="http://lists.teslaclub.hk/mailman/listinfo/ovmsdev" class="">http://lists.teslaclub.hk/mailman/listinfo/ovmsdev</a><br class=""></blockquote><br class="">_______________________________________________<br class="">OvmsDev mailing list<br class=""><a href="mailto:OvmsDev@lists.teslaclub.hk" class="">OvmsDev@lists.teslaclub.hk</a><br class=""><a href="http://lists.teslaclub.hk/mailman/listinfo/ovmsdev" class="">http://lists.teslaclub.hk/mailman/listinfo/ovmsdev</a><br class=""></blockquote><br class="">_______________________________________________<br class="">OvmsDev mailing list<br class=""><a href="mailto:OvmsDev@lists.teslaclub.hk" class="">OvmsDev@lists.teslaclub.hk</a><br class=""><a href="http://lists.teslaclub.hk/mailman/listinfo/ovmsdev" class="">http://lists.teslaclub.hk/mailman/listinfo/ovmsdev</a><br class=""></div></div></blockquote></div><br class=""></div></div>_______________________________________________<br class="">OvmsDev mailing list<br class=""><a href="mailto:OvmsDev@lists.teslaclub.hk" class="">OvmsDev@lists.teslaclub.hk</a><br class="">http://lists.teslaclub.hk/mailman/listinfo/ovmsdev<br class=""></div></blockquote></div><br class=""></div></body></html>