@@ -608,15 +608,20 @@ public void setRefreshPeriodInactive(long refreshPeriodInactive) {
608608
609609 public void setRefreshMode (RefreshMode refreshMode ) {
610610 if (this .refreshMode == null || this .refreshMode != refreshMode ) {
611-
612- MqttMessage mqttMessage =
613- new MqttMessage (refreshMode .getStringValue ().getBytes (StandardCharsets .UTF_8 ));
614- try {
615- LOGGER .info ("Setting refresh mode to {}" , refreshMode .getStringValue ());
616- mqttMessage .setRetained (true );
617- this .client .publish (this .mqttVINPrefix + "/" + REFRESH_MODE , mqttMessage );
618- } catch (MqttException e ) {
619- throw new MqttGatewayException ("Error publishing message: " + mqttMessage , e );
611+ LOGGER .info ("Setting refresh mode to {}" , refreshMode .getStringValue ());
612+
613+ if (refreshMode != FORCE ) {
614+ // never send force mode to MQTT.
615+ // If we get restarted while force mode is active, the configuration from MQTT
616+ // feature would enable force mode permanently and polling of the car never stops
617+ MqttMessage mqttMessage =
618+ new MqttMessage (refreshMode .getStringValue ().getBytes (StandardCharsets .UTF_8 ));
619+ try {
620+ mqttMessage .setRetained (true );
621+ this .client .publish (this .mqttVINPrefix + "/" + REFRESH_MODE , mqttMessage );
622+ } catch (MqttException e ) {
623+ throw new MqttGatewayException ("Error publishing message: " + mqttMessage , e );
624+ }
620625 }
621626 }
622627 this .previousRefreshMode = this .refreshMode ;
0 commit comments