Improve efficiency of MQTT streaming behavior
This commit is contained in:
parent
b36c0c4621
commit
798acb1839
|
@ -282,15 +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);
|
||||
ESP_LOGD(TAG, "metric: %s", (char*)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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -959,7 +1077,47 @@ void OvmsServerV3::Ticker1(std::string event, void* data)
|
|||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue