diff --git a/include/Configuration.h b/include/Configuration.h index 54f912d2a..cf991decf 100644 --- a/include/Configuration.h +++ b/include/Configuration.h @@ -10,7 +10,7 @@ #define CONFIG_FILENAME "/config.json" #define CONFIG_VERSION 0x00011d00 // 0.1.29 // make sure to clean all after change -#define CONFIG_VERSION_ONBATTERY 2 +#define CONFIG_VERSION_ONBATTERY 3 #define WIFI_MAX_SSID_STRLEN 32 #define WIFI_MAX_PASSWORD_STRLEN 64 diff --git a/include/defaults.h b/include/defaults.h index 7d8a50a16..cdb0605ca 100644 --- a/include/defaults.h +++ b/include/defaults.h @@ -84,7 +84,7 @@ #define MQTT_CLEAN_SESSION true #define DTU_SERIAL 0x99978563412U -#define DTU_POLL_INTERVAL 5U +#define DTU_POLL_INTERVAL 5000U #define DTU_NRF_PA_LEVEL 0U #define DTU_CMT_PA_LEVEL 0 #define DTU_CMT_FREQUENCY 865000000U diff --git a/lib/Hoymiles/src/Hoymiles.cpp b/lib/Hoymiles/src/Hoymiles.cpp index 7273648c5..662ab6d10 100644 --- a/lib/Hoymiles/src/Hoymiles.cpp +++ b/lib/Hoymiles/src/Hoymiles.cpp @@ -47,7 +47,7 @@ void HoymilesClass::loop() return; } - if (millis() - _lastPoll > (_pollInterval * 1000)) { + if (millis() - _lastPoll > _pollInterval) { static uint8_t inverterPos = 0; std::shared_ptr iv = getInverterByPos(inverterPos); diff --git a/src/Configuration.cpp b/src/Configuration.cpp index facf0ab7b..ff4c193a8 100644 --- a/src/Configuration.cpp +++ b/src/Configuration.cpp @@ -899,6 +899,10 @@ void ConfigurationClass::migrateOnBattery() config.PowerLimiter.ConductionLosses = doc["powerlimiter"]["solar_passthrough_losses"].as(); } + if (config.Cfg.VersionOnBattery < 3) { + config.Dtu.PollInterval *= 1000; // new unit is milliseconds + } + f.close(); config.Cfg.VersionOnBattery = CONFIG_VERSION_ONBATTERY; diff --git a/src/MqttHandleHass.cpp b/src/MqttHandleHass.cpp index 6491c9baf..b7901545f 100644 --- a/src/MqttHandleHass.cpp +++ b/src/MqttHandleHass.cpp @@ -162,7 +162,7 @@ void MqttHandleHassClass::publishInverterField(std::shared_ptr root["uniq_id"] = serial + "_ch" + chanNum + "_" + fieldName; if (Configuration.get().Mqtt.Hass.Expire) { - root["exp_aft"] = Hoymiles.getNumInverters() * max(Hoymiles.PollInterval(), Configuration.get().Mqtt.PublishInterval) * inv->getReachableThreshold(); + root["exp_aft"] = Hoymiles.getNumInverters() * max(Hoymiles.PollInterval()/1000U, Configuration.get().Mqtt.PublishInterval) * inv->getReachableThreshold(); } publish(configTopic, root); diff --git a/webapp/src/views/DtuAdminView.vue b/webapp/src/views/DtuAdminView.vue index 74f33afb7..959d290dc 100644 --- a/webapp/src/views/DtuAdminView.vue +++ b/webapp/src/views/DtuAdminView.vue @@ -17,10 +17,11 @@ @@ -158,6 +159,14 @@ export default defineComponent({ this.getDtuConfig(); }, computed: { + pollIntervalSeconds: { + get(): number { + return this.dtuConfigList.pollinterval / 1000; + }, + set(value: number) { + this.dtuConfigList.pollinterval = value * 1000; + }, + }, cmtFrequencyText() { return this.$t('dtuadmin.MHz', { mhz: this.$n(this.dtuConfigList.cmt_frequency / 1000000, 'decimalTwoDigits'),