Fix issue that in multi inverter environments some inverters where not fetched
When the radio was busy, the current inverter was just skipped and switched to the next one
This commit is contained in:
parent
e5cbeb8990
commit
2b2afee770
@ -28,45 +28,47 @@ void HoymilesClass::loop()
|
|||||||
if (millis() - _lastPoll > (_pollInterval * 1000)) {
|
if (millis() - _lastPoll > (_pollInterval * 1000)) {
|
||||||
static uint8_t inverterPos = 0;
|
static uint8_t inverterPos = 0;
|
||||||
|
|
||||||
std::shared_ptr<InverterAbstract> iv = getInverterByPos(inverterPos);
|
if (_radio->isIdle()) {
|
||||||
if (iv != nullptr && _radio->isIdle()) {
|
std::shared_ptr<InverterAbstract> iv = getInverterByPos(inverterPos);
|
||||||
Serial.print(F("Fetch inverter: "));
|
if (iv != nullptr) {
|
||||||
Serial.println(iv->serial(), HEX);
|
Serial.print(F("Fetch inverter: "));
|
||||||
|
Serial.println(iv->serial(), HEX);
|
||||||
|
|
||||||
iv->sendStatsRequest(_radio.get());
|
iv->sendStatsRequest(_radio.get());
|
||||||
|
|
||||||
// Fetch event log
|
// Fetch event log
|
||||||
bool force = iv->EventLog()->getLastAlarmRequestSuccess() == CMD_NOK;
|
bool force = iv->EventLog()->getLastAlarmRequestSuccess() == CMD_NOK;
|
||||||
iv->sendAlarmLogRequest(_radio.get(), force);
|
iv->sendAlarmLogRequest(_radio.get(), force);
|
||||||
|
|
||||||
// Fetch limit
|
// Fetch limit
|
||||||
if ((iv->SystemConfigPara()->getLastLimitRequestSuccess() == CMD_NOK)
|
if ((iv->SystemConfigPara()->getLastLimitRequestSuccess() == CMD_NOK)
|
||||||
|| ((millis() - iv->SystemConfigPara()->getLastUpdateRequest() > HOY_SYSTEM_CONFIG_PARA_POLL_INTERVAL)
|
|| ((millis() - iv->SystemConfigPara()->getLastUpdateRequest() > HOY_SYSTEM_CONFIG_PARA_POLL_INTERVAL)
|
||||||
&& (millis() - iv->SystemConfigPara()->getLastUpdateCommand() > HOY_SYSTEM_CONFIG_PARA_POLL_MIN_DURATION))) {
|
&& (millis() - iv->SystemConfigPara()->getLastUpdateCommand() > HOY_SYSTEM_CONFIG_PARA_POLL_MIN_DURATION))) {
|
||||||
Serial.println("Request SystemConfigPara");
|
Serial.println("Request SystemConfigPara");
|
||||||
iv->sendSystemConfigParaRequest(_radio.get());
|
iv->sendSystemConfigParaRequest(_radio.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set limit if required
|
||||||
|
if (iv->SystemConfigPara()->getLastLimitCommandSuccess() == CMD_NOK) {
|
||||||
|
Serial.println(F("Resend ActivePowerControl"));
|
||||||
|
iv->resendActivePowerControlRequest(_radio.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set power status if required
|
||||||
|
if (iv->PowerCommand()->getLastPowerCommandSuccess() == CMD_NOK) {
|
||||||
|
Serial.println(F("Resend PowerCommand"));
|
||||||
|
iv->resendPowerControlRequest(_radio.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fetch dev info (but first fetch stats)
|
||||||
|
if (iv->Statistics()->getLastUpdate() > 0 && (iv->DevInfo()->getLastUpdateAll() == 0 || iv->DevInfo()->getLastUpdateSimple() == 0)) {
|
||||||
|
Serial.println(F("Request device info"));
|
||||||
|
iv->sendDevInfoRequest(_radio.get());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if (++inverterPos >= getNumInverters()) {
|
||||||
// Set limit if required
|
inverterPos = 0;
|
||||||
if (iv->SystemConfigPara()->getLastLimitCommandSuccess() == CMD_NOK) {
|
|
||||||
Serial.println(F("Resend ActivePowerControl"));
|
|
||||||
iv->resendActivePowerControlRequest(_radio.get());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set power status if required
|
|
||||||
if (iv->PowerCommand()->getLastPowerCommandSuccess() == CMD_NOK) {
|
|
||||||
Serial.println(F("Resend PowerCommand"));
|
|
||||||
iv->resendPowerControlRequest(_radio.get());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fetch dev info (but first fetch stats)
|
|
||||||
if (iv->Statistics()->getLastUpdate() > 0 && (iv->DevInfo()->getLastUpdateAll() == 0 || iv->DevInfo()->getLastUpdateSimple() == 0)) {
|
|
||||||
Serial.println(F("Request device info"));
|
|
||||||
iv->sendDevInfoRequest(_radio.get());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (++inverterPos >= getNumInverters()) {
|
|
||||||
inverterPos = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_lastPoll = millis();
|
_lastPoll = millis();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user