Adding ext device support

This commit is contained in:
abratchik
2025-07-09 16:43:52 +03:00
parent 062468c6b1
commit 24342db40e
13 changed files with 383 additions and 155 deletions

View File

@@ -199,6 +199,7 @@ protected:
this->emergency();
this->cascadeControl();
this->externalPump();
this->externalDev();
this->miscRunned = millis();
return true;
@@ -688,4 +689,46 @@ protected:
Log.sinfoln(FPSTR(L_EXTPUMP), F("Enabled: anti stuck"));
}
}
};
void externalDev() {
static uint8_t configuredGpio = GPIO_IS_NOT_CONFIGURED;
if(!settings.externalDev.use) return;
// configure output
// if settings are different than the configured GPIO, update
if (settings.externalDev.gpio != configuredGpio) {
if (configuredGpio != GPIO_IS_NOT_CONFIGURED) {
digitalWrite(configuredGpio, LOW);
}
if (GPIO_IS_VALID(settings.externalDev.gpio)) {
configuredGpio = settings.externalDev.gpio;
pinMode(configuredGpio, OUTPUT);
digitalWrite(configuredGpio, LOW);
} else if (configuredGpio != GPIO_IS_NOT_CONFIGURED) {
configuredGpio = GPIO_IS_NOT_CONFIGURED;
}
}
if (configuredGpio == GPIO_IS_NOT_CONFIGURED) {
if (vars.externalDev.state) {
vars.externalDev.state = false;
Log.sinfoln(FPSTR(L_EXTDEV), F("Disabled: use = off"));
}
return;
}
// output configured update relay if required
if(settings.externalDev.state != vars.externalDev.state ) {
digitalWrite(configuredGpio, settings.externalDev.state? HIGH:LOW );
vars.externalDev.state = settings.externalDev.state;
}
}
};