diff --git a/OVMS.V3/components/ovms_location/src/ovms_location.cpp b/OVMS.V3/components/ovms_location/src/ovms_location.cpp index 860834b..ddf4988 100644 --- a/OVMS.V3/components/ovms_location/src/ovms_location.cpp +++ b/OVMS.V3/components/ovms_location/src/ovms_location.cpp @@ -753,7 +753,7 @@ void OvmsLocations::UpdatedVehicleOn(OvmsMetric* metric) void OvmsLocations::UpdateParkPosition() { OvmsRecMutexLock lock(&m_park_lock); - + bool caron = StdMetrics.ms_v_env_on->AsBool(); if (caron) { diff --git a/OVMS.V3/components/ovms_ota/src/ovms_ota.cpp b/OVMS.V3/components/ovms_ota/src/ovms_ota.cpp index 723dfa2..ecfb4a0 100644 --- a/OVMS.V3/components/ovms_ota/src/ovms_ota.cpp +++ b/OVMS.V3/components/ovms_ota/src/ovms_ota.cpp @@ -288,7 +288,7 @@ void ota_flash_http(int verbosity, OvmsWriter* writer, OvmsCommand* cmd, int arg url = MyConfig.GetParamValue("ota","server"); if (url.empty()) - url = "ovms-ota.bit-cloud.de"; + url = "api.openvehicles.com/firmware/ota"; url.append("/"); url.append(GetOVMSProduct()); @@ -830,7 +830,7 @@ void OvmsOTA::GetStatus(ota_info& info, bool check_update /*=true*/) std::string tag = MyConfig.GetParamValue("ota","tag"); std::string url = MyConfig.GetParamValue("ota","server"); if (url.empty()) - url = "ovms-ota.bit-cloud.de"; + url = "api.openvehicles.com/firmware/ota"; url.append("/"); url.append(GetOVMSProduct()); url.append("/"); @@ -1029,7 +1029,7 @@ bool OvmsOTA::AutoFlash(bool force) std::string tag = MyConfig.GetParamValue("ota","tag"); std::string url = MyConfig.GetParamValue("ota","server"); if (url.empty()) - url = "ovms-ota.bit-cloud.de"; + url = "api.openvehicles.com/firmware/ota"; url.append("/"); url.append(GetOVMSProduct()); diff --git a/OVMS.V3/components/ovms_server_v3/src/ovms_server_v3.cpp b/OVMS.V3/components/ovms_server_v3/src/ovms_server_v3.cpp index bdb027a..efd0cf6 100644 --- a/OVMS.V3/components/ovms_server_v3/src/ovms_server_v3.cpp +++ b/OVMS.V3/components/ovms_server_v3/src/ovms_server_v3.cpp @@ -282,14 +282,133 @@ void OvmsServerV3::TransmitModifiedMetrics() if (!m_mgconn) return; - OvmsMetric* metric = MyMetrics.m_first; - while (metric != NULL) + if (StandardMetrics.ms_v_bat_soc->IsModifiedAndClear(MyOvmsServerV3Modifier)) { - if (metric->IsModifiedAndClear(MyOvmsServerV3Modifier)) - { - TransmitMetric(metric); - } - metric = metric->m_next; + TransmitMetric(StandardMetrics.ms_v_bat_soc); + } + if (StandardMetrics.ms_v_charge_voltage->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_voltage); + } + if (StandardMetrics.ms_v_charge_current->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_current); + } + if (StandardMetrics.ms_v_charge_state->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_state); + } + if (StandardMetrics.ms_v_charge_substate->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_substate); + } + if (StandardMetrics.ms_v_charge_mode->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_mode); + } + if (StandardMetrics.ms_v_bat_range_ideal->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_bat_range_ideal); + } + if (StandardMetrics.ms_v_bat_range_est->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_bat_range_est); + } + if (StandardMetrics.ms_v_charge_climit->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_climit); + } + if (StandardMetrics.ms_v_charge_kwh->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_kwh); + } + if (StandardMetrics.ms_v_charge_timermode->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_timermode); + } + if (StandardMetrics.ms_v_charge_timerstart->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_timerstart); + } + if (StandardMetrics.ms_v_bat_cac->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_bat_cac); + } + if (StandardMetrics.ms_v_charge_duration_full->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_duration_full); + } + if (StandardMetrics.ms_v_charge_duration_range->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_duration_range); + } + if (StandardMetrics.ms_v_charge_duration_soc->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_duration_soc); + } + if (StandardMetrics.ms_v_charge_inprogress->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_inprogress); + } + if (StandardMetrics.ms_v_charge_limit_range->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_limit_range); + } + if (StandardMetrics.ms_v_charge_limit_soc->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_limit_soc); + } + if (StandardMetrics.ms_v_env_cooling->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_env_cooling); + } + if (StandardMetrics.ms_v_bat_range_full->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_bat_range_full); + } + if (StandardMetrics.ms_v_bat_power->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_bat_power); + } + if (StandardMetrics.ms_v_bat_voltage->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_bat_voltage); + } + if (StandardMetrics.ms_v_bat_soh->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_bat_soh); + } + if (StandardMetrics.ms_v_charge_power->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_power); + } + if (StandardMetrics.ms_v_charge_efficiency->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_charge_efficiency); + } + if (StandardMetrics.ms_v_bat_current->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_bat_current); + } + if (StandardMetrics.ms_v_bat_range_speed->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_bat_range_speed); + } + if (StandardMetrics.ms_v_tpms_pressure->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_tpms_pressure); + } + if (StandardMetrics.ms_v_tpms_temp->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_tpms_temp); + } + if (StandardMetrics.ms_v_tpms_health->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_tpms_health); + } + if (StandardMetrics.ms_v_tpms_alert->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(StandardMetrics.ms_v_tpms_alert); } } @@ -748,13 +867,25 @@ void OvmsServerV3::MetricModified(OvmsMetric* metric) { if (!StandardMetrics.ms_s_v3_connected->AsBool()) return; - if (m_streaming) + int now = StandardMetrics.ms_m_monotonic->AsInt(); + //ESP_LOGD(TAG, "now: %d, m_lasttx_stream: %d, m_streaming: %d", now, m_lasttx_stream, m_streaming); + if (StandardMetrics.ms_v_env_on->AsBool() && m_streaming && now > m_lasttx_stream+m_streaming) { OvmsMutexLock mg(&m_mgconn_mutex); if (!m_mgconn) return; - metric->ClearModified(MyOvmsServerV3Modifier); - TransmitMetric(metric); + //metric->ClearModified(MyOvmsServerV3Modifier); + + while (metric != NULL) + { + if (metric->IsModifiedAndClear(MyOvmsServerV3Modifier)) + { + TransmitMetric(metric); + } + metric = metric->m_next; + } + //TransmitMetric(metric); + m_lasttx_stream = now; } } @@ -817,13 +948,22 @@ void OvmsServerV3::EventListener(std::string event, void* data) */ void OvmsServerV3::ConfigChanged(OvmsConfigParam* param) { + ESP_LOGD(TAG, "--- ConfigChanged ---"); m_streaming = MyConfig.GetParamValueInt("vehicle", "stream", 0); + ESP_LOGD(TAG, "m_streaming: %d", m_streaming); m_updatetime_connected = MyConfig.GetParamValueInt("server.v3", "updatetime.connected", 60); + ESP_LOGD(TAG, "m_updatetime_connected: %d", m_updatetime_connected); m_updatetime_idle = MyConfig.GetParamValueInt("server.v3", "updatetime.idle", 600); + ESP_LOGD(TAG, "m_updatetime_idle: %d", m_updatetime_idle); m_updatetime_awake = MyConfig.GetParamValueInt("server.v3", "updatetime.awake", m_updatetime_idle); + ESP_LOGD(TAG, "m_updatetime_awake: %d", m_updatetime_awake); m_updatetime_on = MyConfig.GetParamValueInt("server.v3", "updatetime.on", m_updatetime_idle); + ESP_LOGD(TAG, "m_updatetime_on: %d", m_updatetime_on); m_updatetime_charging = MyConfig.GetParamValueInt("server.v3", "updatetime.charging", m_updatetime_idle); + ESP_LOGD(TAG, "m_updatetime_charging: %d", m_updatetime_charging); m_updatetime_sendall = MyConfig.GetParamValueInt("server.v3", "updatetime.sendall", 0); + ESP_LOGD(TAG, "m_updatetime_sendall: %d", m_updatetime_sendall); + ESP_LOGD(TAG, "--- ConfigChanged ---"); } void OvmsServerV3::NetUp(std::string event, void* data) @@ -929,12 +1069,55 @@ void OvmsServerV3::Ticker1(std::string event, void* data) } else if ((m_lasttx==0)||(now>(m_lasttx+next))) { + ESP_LOGD(TAG, "m_lasttx: %d next: %d, now: %d", m_lasttx, next, now); + ESP_LOGD(TAG, "m_updatetime_connected: %d m_updatetime_on: %d, m_updatetime_charging: %d", m_updatetime_connected, m_updatetime_on, m_updatetime_charging); + ESP_LOGD(TAG, "m_updatetime_awake: %d ", m_updatetime_awake); TransmitModifiedMetrics(); m_lasttx = m_lasttx_stream = now; } else if (m_streaming && caron && m_peers && now > m_lasttx_stream+m_streaming) { - // TODO: transmit streaming metrics + //Transmit important metrics while streaming + bool modified = + StandardMetrics.ms_v_pos_latitude->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_pos_longitude->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_pos_direction->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_pos_altitude->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_pos_gpslock->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_pos_gpssq->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_pos_gpsmode->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_pos_gpshdop->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_pos_satcount->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_pos_gpsspeed->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_pos_speed->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_env_drivemode->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_bat_power->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_bat_energy_used->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_bat_energy_recd->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_inv_power->IsModifiedAndClear(MyOvmsServerV3Modifier) | + StandardMetrics.ms_v_inv_efficiency->IsModifiedAndClear(MyOvmsServerV3Modifier); + + // Quick exit if nothing modified + if ((!modified)) return; + + TransmitMetric(StandardMetrics.ms_v_pos_latitude); + TransmitMetric(StandardMetrics.ms_v_pos_longitude); + TransmitMetric(StandardMetrics.ms_v_pos_direction); + TransmitMetric(StandardMetrics.ms_v_pos_altitude); + TransmitMetric(StandardMetrics.ms_v_pos_gpslock); + TransmitMetric(StandardMetrics.ms_v_pos_gpssq); + TransmitMetric(StandardMetrics.ms_v_pos_gpsmode); + TransmitMetric(StandardMetrics.ms_v_pos_gpshdop); + TransmitMetric(StandardMetrics.ms_v_pos_satcount); + TransmitMetric(StandardMetrics.ms_v_pos_gpsspeed); + TransmitMetric(StandardMetrics.ms_v_pos_speed); + TransmitMetric(StandardMetrics.ms_v_env_drivemode); + TransmitMetric(StandardMetrics.ms_v_bat_power); + TransmitMetric(StandardMetrics.ms_v_bat_energy_used); + TransmitMetric(StandardMetrics.ms_v_bat_energy_recd); + TransmitMetric(StandardMetrics.ms_v_inv_power); + TransmitMetric(StandardMetrics.ms_v_inv_efficiency); + m_lasttx_stream = now; } } diff --git a/OVMS.V3/components/ovms_tls/component.mk b/OVMS.V3/components/ovms_tls/component.mk index 1a17834..a7709f7 100644 --- a/OVMS.V3/components/ovms_tls/component.mk +++ b/OVMS.V3/components/ovms_tls/component.mk @@ -11,5 +11,5 @@ ifdef CONFIG_MG_ENABLE_SSL COMPONENT_SRCDIRS := src COMPONENT_ADD_INCLUDEDIRS := src COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive -COMPONENT_EMBED_FILES := trustedca/usertrust.crt trustedca/digicert_global.crt trustedca/starfield_class2.crt trustedca/baltimore_cybertrust.crt trustedca/isrg_x1.crt trustedca/ovms_ca.crt +COMPONENT_EMBED_FILES := trustedca/usertrust.crt trustedca/digicert_global.crt trustedca/starfield_class2.crt trustedca/baltimore_cybertrust.crt trustedca/isrg_x1.crt endif diff --git a/OVMS.V3/components/ovms_tls/src/ovms_tls.cpp b/OVMS.V3/components/ovms_tls/src/ovms_tls.cpp index 29c3602..64cdd34 100644 --- a/OVMS.V3/components/ovms_tls/src/ovms_tls.cpp +++ b/OVMS.V3/components/ovms_tls/src/ovms_tls.cpp @@ -164,10 +164,6 @@ void OvmsTLS::Reload() extern const unsigned char isrg_x1_end[] asm("_binary_isrg_x1_crt_end"); m_trustlist["ISRG X1 CA"] = new OvmsTrustedCert(isrg_x1, isrg_x1_end - isrg_x1); - extern const unsigned char ovms_ca[] asm("_binary_ovms_ca_crt_start"); - extern const unsigned char ovms_ca_end[] asm("_binary_ovms_ca_crt_end"); - m_trustlist["OVMS Bit-Cloud.de CA"] = new OvmsTrustedCert(ovms_ca, ovms_ca_end - ovms_ca); - // Add trusted certs on disk (/store/trustedca) DIR *dir; struct dirent *dp; diff --git a/OVMS.V3/components/ovms_webserver/docs/bms-cell-info.odg b/OVMS.V3/components/ovms_webserver/docs/bms-cell-info.odg new file mode 100644 index 0000000..1643e9d Binary files /dev/null and b/OVMS.V3/components/ovms_webserver/docs/bms-cell-info.odg differ diff --git a/OVMS.V3/components/ovms_webserver/docs/bms-cell-monitor.rst b/OVMS.V3/components/ovms_webserver/docs/bms-cell-monitor.rst index 6c1ec94..cce7b5d 100644 --- a/OVMS.V3/components/ovms_webserver/docs/bms-cell-monitor.rst +++ b/OVMS.V3/components/ovms_webserver/docs/bms-cell-monitor.rst @@ -158,3 +158,4 @@ Also keep in mind, not all deviations may be caused by actual battery issues. Voltage and temperature sensors can lose their calibration or become defective as well. + diff --git a/OVMS.V3/components/ovms_webserver/src/web_cfg.cpp b/OVMS.V3/components/ovms_webserver/src/web_cfg.cpp index 52abbb9..ae7649b 100644 --- a/OVMS.V3/components/ovms_webserver/src/web_cfg.cpp +++ b/OVMS.V3/components/ovms_webserver/src/web_cfg.cpp @@ -1406,7 +1406,6 @@ void OvmsWebServer::HandleCfgServerV2(PageEntry_t& p, PageContext_t& c) c.input_text("Server", "server", server.c_str(), "Enter host name or IP address", "
Public OVMS V2 servers:
" "ovms-server.bit-cloud.de
Registrationapi.openvehicles.com
Registrationovms.dexters-web.de
RegistrationAutomatic updates are normally only done if a wifi connection is available at the time. Before allowing updates via modem, be aware a single firmware image has a size of around 3 MB, which may lead to additional costs on your data plan.
"); c.print( "" @@ -2661,7 +2659,7 @@ void OvmsWebServer::HandleCfgFirmware(PageEntry_t& p, PageContext_t& c) "" ); c.input_text("Update server", "server", server.c_str(), "Specify or select from list (clear to see all options)", - "Default is https://ovms-ota.bit-cloud.de
.
Default is https://api.openvehicles.com/firmware/ota
.
Default is main
for standard releases. Use eap
(early access program) for stable or edge
for bleeding edge developer builds.