* add LED to display whether it's night time or not. Can be reused as output to control battery system #1308
This commit is contained in:
lumapu 2024-01-03 00:14:10 +01:00
parent f2e1e536f5
commit cd9cc976e7
8 changed files with 51 additions and 37 deletions

View file

@ -456,14 +456,11 @@ void app::mqttSubRxCb(JsonObject obj) {
//-----------------------------------------------------------------------------
void app::setupLed(void) {
uint8_t led_off = (mConfig->led.high_active) ? 0 : 255;
if (mConfig->led.led0 != DEF_PIN_OFF) {
pinMode(mConfig->led.led0, OUTPUT);
analogWrite(mConfig->led.led0, led_off);
}
if (mConfig->led.led1 != DEF_PIN_OFF) {
pinMode(mConfig->led.led1, OUTPUT);
analogWrite(mConfig->led.led1, led_off);
for(uint8_t i = 0; i < 3; i ++) {
if (mConfig->led.led[i] != DEF_PIN_OFF) {
pinMode(mConfig->led.led[i], OUTPUT);
analogWrite(mConfig->led.led[i], led_off);
}
}
}
@ -472,27 +469,34 @@ void app::updateLed(void) {
uint8_t led_off = (mConfig->led.high_active) ? 0 : 255;
uint8_t led_on = (mConfig->led.high_active) ? (mConfig->led.luminance) : (255-mConfig->led.luminance);
if (mConfig->led.led0 != DEF_PIN_OFF) {
if (mConfig->led.led[0] != DEF_PIN_OFF) {
Inverter<> *iv;
for (uint8_t id = 0; id < mSys.getNumInverters(); id++) {
iv = mSys.getInverterByPos(id);
if (NULL != iv) {
if (iv->isProducing()) {
// turn on when at least one inverter is producing
analogWrite(mConfig->led.led0, led_on);
analogWrite(mConfig->led.led[0], led_on);
break;
}
else if(iv->config->enabled)
analogWrite(mConfig->led.led0, led_off);
analogWrite(mConfig->led.led[0], led_off);
}
}
}
if (mConfig->led.led1 != DEF_PIN_OFF) {
if (mConfig->led.led[1] != DEF_PIN_OFF) {
if (getMqttIsConnected()) {
analogWrite(mConfig->led.led1, led_on);
analogWrite(mConfig->led.led[1], led_on);
} else {
analogWrite(mConfig->led.led1, led_off);
analogWrite(mConfig->led.led[1], led_off);
}
}
if (mConfig->led.led[2] != DEF_PIN_OFF) {
if((mTimestamp > (mSunset + mConfig->sun.offsetSecEvening)) || (mTimestamp < (mSunrise + mConfig->sun.offsetSecMorning)))
analogWrite(mConfig->led.led[2], led_on);
else
analogWrite(mConfig->led.led[2], led_off);
}
}