Added configuration of CMT modules frequency to webapp
This commit is contained in:
parent
5e11f0b854
commit
371e405eed
@ -84,6 +84,7 @@ struct CONFIG_T {
|
||||
uint32_t Dtu_PollInterval;
|
||||
uint8_t Dtu_NrfPaLevel;
|
||||
int8_t Dtu_CmtPaLevel;
|
||||
uint32_t Dtu_CmtFrequency;
|
||||
|
||||
bool Mqtt_Hass_Enabled;
|
||||
bool Mqtt_Hass_Retain;
|
||||
|
||||
@ -13,6 +13,7 @@ enum WebApiError {
|
||||
DtuSerialZero,
|
||||
DtuPollZero,
|
||||
DtuInvalidPowerLevel,
|
||||
DtuInvalidCmtFrequency,
|
||||
|
||||
ConfigBase = 3000,
|
||||
ConfigNotDeleted,
|
||||
|
||||
@ -78,6 +78,7 @@
|
||||
#define DTU_POLL_INTERVAL 5
|
||||
#define DTU_NRF_PA_LEVEL 0
|
||||
#define DTU_CMT_PA_LEVEL 0
|
||||
#define DTU_CMT_FREQUENCY 865000
|
||||
|
||||
#define MQTT_HASS_ENABLED false
|
||||
#define MQTT_HASS_EXPIRE true
|
||||
|
||||
@ -81,6 +81,7 @@ bool ConfigurationClass::write()
|
||||
dtu["poll_interval"] = config.Dtu_PollInterval;
|
||||
dtu["nrf_pa_level"] = config.Dtu_NrfPaLevel;
|
||||
dtu["cmt_pa_level"] = config.Dtu_CmtPaLevel;
|
||||
dtu["cmt_frequency"] = config.Dtu_CmtFrequency;
|
||||
|
||||
JsonObject security = doc.createNestedObject("security");
|
||||
security["password"] = config.Security_Password;
|
||||
@ -222,6 +223,7 @@ bool ConfigurationClass::read()
|
||||
config.Dtu_PollInterval = dtu["poll_interval"] | DTU_POLL_INTERVAL;
|
||||
config.Dtu_NrfPaLevel = dtu["nrf_pa_level"] | DTU_NRF_PA_LEVEL;
|
||||
config.Dtu_CmtPaLevel = dtu["cmt_pa_level"] | DTU_CMT_PA_LEVEL;
|
||||
config.Dtu_CmtFrequency = dtu["cmt_frequency"] | DTU_CMT_FREQUENCY;
|
||||
|
||||
JsonObject security = doc["security"];
|
||||
strlcpy(config.Security_Password, security["password"] | ACCESS_POINT_PASSWORD, sizeof(config.Security_Password));
|
||||
|
||||
@ -44,6 +44,9 @@ void InverterSettingsClass::init()
|
||||
Hoymiles.getRadioNrf()->setDtuSerial(config.Dtu_Serial);
|
||||
Hoymiles.getRadioCmt()->setDtuSerial(config.Dtu_Serial);
|
||||
|
||||
MessageOutput.println(" Setting CMT target frequency... ");
|
||||
Hoymiles.getRadioCmt()->setInverterTargetFrequency(config.Dtu_CmtFrequency);
|
||||
|
||||
MessageOutput.println(" Setting poll interval... ");
|
||||
Hoymiles.setPollInterval(config.Dtu_PollInterval);
|
||||
|
||||
|
||||
@ -44,6 +44,7 @@ void WebApiDtuClass::onDtuAdminGet(AsyncWebServerRequest* request)
|
||||
root["nrf_palevel"] = config.Dtu_NrfPaLevel;
|
||||
root["cmt_enabled"] = Hoymiles.getRadioCmt()->isInitialized();
|
||||
root["cmt_palevel"] = config.Dtu_CmtPaLevel;
|
||||
root["cmt_frequency"] = config.Dtu_CmtFrequency;
|
||||
|
||||
response->setLength();
|
||||
request->send(response);
|
||||
@ -88,7 +89,7 @@ void WebApiDtuClass::onDtuAdminPost(AsyncWebServerRequest* request)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(root.containsKey("serial") && root.containsKey("pollinterval") && root.containsKey("nrf_palevel") && root.containsKey("cmt_palevel"))) {
|
||||
if (!(root.containsKey("serial") && root.containsKey("pollinterval") && root.containsKey("nrf_palevel") && root.containsKey("cmt_palevel") && root.containsKey("cmt_frequency"))) {
|
||||
retMsg["message"] = "Values are missing!";
|
||||
retMsg["code"] = WebApiError::GenericValueMissing;
|
||||
response->setLength();
|
||||
@ -121,13 +122,23 @@ void WebApiDtuClass::onDtuAdminPost(AsyncWebServerRequest* request)
|
||||
}
|
||||
|
||||
if (root["cmt_palevel"].as<int8_t>() < -10 || root["cmt_palevel"].as<int8_t>() > 20) {
|
||||
retMsg["message"] = F("Invalid power level setting!");
|
||||
retMsg["message"] = "Invalid power level setting!";
|
||||
retMsg["code"] = WebApiError::DtuInvalidPowerLevel;
|
||||
response->setLength();
|
||||
request->send(response);
|
||||
return;
|
||||
}
|
||||
|
||||
if (root["cmt_frequency"].as<uint32_t>() < 860000 || root["cmt_frequency"].as<uint32_t>() > 923000 || root["cmt_frequency"].as<uint32_t>() % 250 > 0) {
|
||||
retMsg["message"] = "Invalid CMT frequency setting!";
|
||||
retMsg["code"] = WebApiError::DtuInvalidCmtFrequency;
|
||||
retMsg["param"]["min"] = 860000;
|
||||
retMsg["param"]["max"] = 923000;
|
||||
response->setLength();
|
||||
request->send(response);
|
||||
return;
|
||||
}
|
||||
|
||||
CONFIG_T& config = Configuration.get();
|
||||
|
||||
// Interpret the string as a hex value and convert it to uint64_t
|
||||
@ -135,6 +146,7 @@ void WebApiDtuClass::onDtuAdminPost(AsyncWebServerRequest* request)
|
||||
config.Dtu_PollInterval = root["pollinterval"].as<uint32_t>();
|
||||
config.Dtu_NrfPaLevel = root["nrf_palevel"].as<uint8_t>();
|
||||
config.Dtu_CmtPaLevel = root["cmt_palevel"].as<int8_t>();
|
||||
config.Dtu_CmtFrequency = root["cmt_frequency"].as<uint32_t>();
|
||||
Configuration.write();
|
||||
|
||||
retMsg["type"] = "success";
|
||||
@ -148,5 +160,6 @@ void WebApiDtuClass::onDtuAdminPost(AsyncWebServerRequest* request)
|
||||
Hoymiles.getRadioCmt()->setPALevel(config.Dtu_CmtPaLevel);
|
||||
Hoymiles.getRadioNrf()->setDtuSerial(config.Dtu_Serial);
|
||||
Hoymiles.getRadioCmt()->setDtuSerial(config.Dtu_Serial);
|
||||
Hoymiles.getRadioCmt()->setInverterTargetFrequency(config.Dtu_CmtFrequency);
|
||||
Hoymiles.setPollInterval(config.Dtu_PollInterval);
|
||||
}
|
||||
@ -40,6 +40,7 @@
|
||||
"2001": "Die Seriennummer darf nicht 0 sein!",
|
||||
"2002": "Das Abfraginterval muss größer als 0 sein!",
|
||||
"2003": "Ungültige Sendeleistung angegeben!",
|
||||
"2004": "Die Frequenz muss zwischen {min} und {max} kHz liegen und ein vielfaches von 250kHz betragen!",
|
||||
"3001": "Nichts gelöscht!",
|
||||
"3002": "Konfiguration zurückgesetzt. Starte jetzt neu...",
|
||||
"4001": "@:apiresponse.2001",
|
||||
@ -326,6 +327,9 @@
|
||||
"CmtPaLevel": "CMT2300A Sendeleistung:",
|
||||
"NrfPaLevelHint": "Verwendet für HM-Wechselrichter. Stellen Sie sicher, dass Ihre Stromversorgung stabil genug ist, bevor Sie die Sendeleistung erhöhen.",
|
||||
"CmtPaLevelHint": "Verwendet für HMS/HMT-Wechselrichter. Stellen Sie sicher, dass Ihre Stromversorgung stabil genug ist, bevor Sie die Sendeleistung erhöhen.",
|
||||
"CmtFrequency": "CMT2300A Frequenz:",
|
||||
"CmtFrequencyHint": "Stelle sicher, dass du nur Frequenzen verwendet werden welche im entsprechenden Land erlaubt sind!",
|
||||
"khz": "kHz",
|
||||
"Save": "Speichern",
|
||||
"Min": "Minimum ({db} dBm)",
|
||||
"Low": "Niedrig ({db} dBm)",
|
||||
|
||||
@ -40,6 +40,7 @@
|
||||
"2001": "Serial cannot be zero!",
|
||||
"2002": "Poll interval must be greater zero!",
|
||||
"2003": "Invalid power level setting!",
|
||||
"2004": "The frequency must be set between {min} and {max} kHz and must be a multiple of 250kHz!",
|
||||
"3001": "Not deleted anything!",
|
||||
"3002": "Configuration resettet. Rebooting now...",
|
||||
"4001": "@:apiresponse.2001",
|
||||
@ -326,6 +327,9 @@
|
||||
"CmtPaLevel": "CMT2300A Transmitting power:",
|
||||
"NrfPaLevelHint": "Used for HM-Inverters. Make sure your power supply is stable enough before increasing the transmit power.",
|
||||
"CmtPaLevelHint": "Used for HMS/HMT-Inverters. Make sure your power supply is stable enough before increasing the transmit power.",
|
||||
"CmtFrequency": "CMT2300A Frequency:",
|
||||
"CmtFrequencyHint": "Make sure to only use frequencies that are allowed in the respective country!",
|
||||
"khz": "kHz",
|
||||
"Save": "Save",
|
||||
"Min": "Minimum ({db} dBm)",
|
||||
"Low": "Low ({db} dBm)",
|
||||
|
||||
@ -40,6 +40,7 @@
|
||||
"2001": "Le numéro de série ne peut pas être nul !",
|
||||
"2002": "L'intervalle de sondage doit être supérieur à zéro !",
|
||||
"2003": "Réglage du niveau de puissance invalide !",
|
||||
"2004": "The frequency must be set between {min} and {max} kHz and must be a multiple of 250kHz!",
|
||||
"3001": "Rien n'a été supprimé !",
|
||||
"3002": "Configuration réinitialisée. Redémarrage maintenant...",
|
||||
"4001": "@:apiresponse.2001",
|
||||
@ -326,6 +327,9 @@
|
||||
"CmtPaLevel": "CMT2300A Niveau de puissance d'émission",
|
||||
"NrfPaLevelHint": "Used for HM-Inverters. Assurez-vous que votre alimentation est suffisamment stable avant d'augmenter la puissance d'émission.",
|
||||
"CmtPaLevelHint": "Used for HMS/HMT-Inverters. Assurez-vous que votre alimentation est suffisamment stable avant d'augmenter la puissance d'émission.",
|
||||
"CmtFrequency": "CMT2300A Frequency:",
|
||||
"CmtFrequencyHint": "Stelle sicher, dass du nur Frequenzen verwendet werden welche im entsprechenden Land erlaubt sind!",
|
||||
"khz": "kHz",
|
||||
"Save": "Sauvegarder",
|
||||
"Min": "Minimum ({db} dBm)",
|
||||
"Low": "Bas ({db} dBm)",
|
||||
|
||||
@ -5,4 +5,5 @@ export interface DtuConfig {
|
||||
nrf_palevel: number;
|
||||
cmt_enabled: boolean;
|
||||
cmt_palevel: number;
|
||||
cmt_frequency: number;
|
||||
}
|
||||
@ -43,6 +43,13 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<InputElement :label="$t('dtuadmin.CmtFrequency')"
|
||||
v-model="dtuConfigList.cmt_frequency"
|
||||
type="number" min="860250" max="923500"
|
||||
:postfix="$t('dtuadmin.khz')"
|
||||
:tooltip="$t('dtuadmin.CmtFrequencyHint')"
|
||||
v-if="dtuConfigList.cmt_enabled"/>
|
||||
</CardElement>
|
||||
<button type="submit" class="btn btn-primary mb-3">{{ $t('dtuadmin.Save') }}</button>
|
||||
</form>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user