Add relay status functionality to LED2

Add relay status functionality to LED2 when configured leaving LED1 for (wifi/mqtt) status indication
This commit is contained in:
Theo Arends 2019-01-06 18:02:21 +01:00
parent 55f700cd2f
commit 0195cabbd6
4 changed files with 30 additions and 15 deletions

View File

@ -1,5 +1,6 @@
/* 6.4.1.7 20190106 /* 6.4.1.7 20190106
* Fix HLW8012, HJL01 and BL0937 based energy sensors low Power (below 10W) measurement regression from 6.4.1.6 * Fix HLW8012, HJL01 and BL0937 based energy sensors low Power (below 10W) measurement regression from 6.4.1.6
* Add relay status functionality to LED2 when configured leaving LED1 for (wifi/mqtt) status indication
* *
* 6.4.1.6 20190105 * 6.4.1.6 20190105
* Add commands PowerCal, VoltageCal and CurrentCal for HLW8012, HJL01 and BL0937 based energy sensors * Add commands PowerCal, VoltageCal and CurrentCal for HLW8012, HJL01 and BL0937 based energy sensors

View File

@ -370,6 +370,15 @@ void SetDevicePower(power_t rpower, int source)
} }
void SetLedPower(uint8_t state) void SetLedPower(uint8_t state)
{
if (state) state = 1;
uint8_t led_pin = 0;
if (pin[GPIO_LED2] < 99) { led_pin = 1; }
digitalWrite(pin[GPIO_LED1 + led_pin], (bitRead(led_inverted, led_pin)) ? !state : state);
}
void SetLedWifi(uint8_t state)
{ {
if (state) state = 1; if (state) state = 1;
digitalWrite(pin[GPIO_LED1], (bitRead(led_inverted, 0)) ? !state : state); digitalWrite(pin[GPIO_LED1], (bitRead(led_inverted, 0)) ? !state : state);
@ -1276,7 +1285,10 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len)
else if (CMND_LEDSTATE == command_code) { else if (CMND_LEDSTATE == command_code) {
if ((payload >= 0) && (payload < MAX_LED_OPTION)) { if ((payload >= 0) && (payload < MAX_LED_OPTION)) {
Settings.ledstate = payload; Settings.ledstate = payload;
if (!Settings.ledstate) SetLedPower(0); if (!Settings.ledstate) {
SetLedPower(0);
SetLedWifi(0);
}
} }
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.ledstate); snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.ledstate);
} }
@ -1966,7 +1978,8 @@ void Every250mSeconds(void)
} }
if ((!(Settings.ledstate &0x08)) && ((Settings.ledstate &0x06) || (blinks > 200) || (blinkstate))) { if ((!(Settings.ledstate &0x08)) && ((Settings.ledstate &0x06) || (blinks > 200) || (blinkstate))) {
// if ( (!Settings.flag.global_state && global_state.data) || ((!(Settings.ledstate &0x08)) && ((Settings.ledstate &0x06) || (blinks > 200) || (blinkstate))) ) { // if ( (!Settings.flag.global_state && global_state.data) || ((!(Settings.ledstate &0x08)) && ((Settings.ledstate &0x06) || (blinks > 200) || (blinkstate))) ) {
SetLedPower(blinkstate); // Set led on or off // SetLedPower(blinkstate); // Set led on or off
SetLedWifi(blinkstate); // Set led on or off
} }
if (!blinkstate) { if (!blinkstate) {
blinks--; blinks--;
@ -2501,6 +2514,7 @@ void GpioInit(void)
} }
SetLedPower(Settings.ledstate &8); SetLedPower(Settings.ledstate &8);
SetLedWifi(Settings.ledstate &8);
XdrvCall(FUNC_PRE_INIT); XdrvCall(FUNC_PRE_INIT);
} }

View File

@ -1140,7 +1140,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
GPIO_PWM3, // GPIO12 RGB LED Blue GPIO_PWM3, // GPIO12 RGB LED Blue
GPIO_USER, // GPIO13 RGBW LED White (optional - set to PWM4 for Cold White or Warm White as used on Arilux LC10) GPIO_USER, // GPIO13 RGBW LED White (optional - set to PWM4 for Cold White or Warm White as used on Arilux LC10)
GPIO_PWM1, // GPIO14 RGB LED Red GPIO_PWM1, // GPIO14 RGB LED Red
GPIO_LED2_INV, // GPIO15 RF receiver control (Arilux LC10) GPIO_LED4_INV, // GPIO15 RF receiver control (Arilux LC10)
0, 0 0, 0
}, },
{ "Luani HVIO", // ESP8266_HVIO { "Luani HVIO", // ESP8266_HVIO
@ -1186,7 +1186,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
// (PwmFrequency 1111Hz) // (PwmFrequency 1111Hz)
GPIO_KEY1, // GPIO00 Optional Button GPIO_KEY1, // GPIO00 Optional Button
GPIO_USER, // GPIO01 Serial RXD and Optional sensor GPIO_USER, // GPIO01 Serial RXD and Optional sensor
GPIO_LED2_INV, // GPIO02 RF receiver control GPIO_LED4_INV, // GPIO02 RF receiver control
GPIO_USER, // GPIO03 Serial TXD and Optional sensor GPIO_USER, // GPIO03 Serial TXD and Optional sensor
GPIO_ARIRFRCV, // GPIO04 IR or RF receiver (optional) GPIO_ARIRFRCV, // GPIO04 IR or RF receiver (optional)
GPIO_PWM1, // GPIO05 RGB LED Red GPIO_PWM1, // GPIO05 RGB LED Red
@ -1206,7 +1206,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
// (PwmFrequency 540Hz) // (PwmFrequency 540Hz)
GPIO_KEY1, // GPIO00 Optional Button GPIO_KEY1, // GPIO00 Optional Button
GPIO_USER, // GPIO01 Serial RXD and Optional sensor GPIO_USER, // GPIO01 Serial RXD and Optional sensor
GPIO_LED2_INV, // GPIO02 RF receiver control GPIO_LED4_INV, // GPIO02 RF receiver control
GPIO_USER, // GPIO03 Serial TXD and Optional sensor GPIO_USER, // GPIO03 Serial TXD and Optional sensor
GPIO_PWM2, // GPIO04 RGB LED Green GPIO_PWM2, // GPIO04 RGB LED Green
GPIO_PWM1, // GPIO05 RGB LED Red GPIO_PWM1, // GPIO05 RGB LED Red
@ -1444,7 +1444,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
0, // GPIO09 (SD_DATA2 Flash QIO or ESP8285) 0, // GPIO09 (SD_DATA2 Flash QIO or ESP8285)
0, // GPIO10 (SD_DATA3 Flash QIO or ESP8285) 0, // GPIO10 (SD_DATA3 Flash QIO or ESP8285)
// GPIO11 (SD_CMD Flash) // GPIO11 (SD_CMD Flash)
GPIO_LED2, // GPIO12 (Relay ON, but set to LOW, so we can switch with GPIO05) GPIO_LED3, // GPIO12 (Relay ON, but set to LOW, so we can switch with GPIO05)
GPIO_USER, // GPIO13 GPIO_USER, // GPIO13
GPIO_KEY1, // GPIO14 Button GPIO_KEY1, // GPIO14 Button
0, 0,
@ -1670,7 +1670,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
GPIO_PWM3, // GPIO12 RGB LED Blue GPIO_PWM3, // GPIO12 RGB LED Blue
GPIO_PWM4, // GPIO13 RGBW LED White GPIO_PWM4, // GPIO13 RGBW LED White
GPIO_PWM1, // GPIO14 RGB LED Red GPIO_PWM1, // GPIO14 RGB LED Red
GPIO_LED2_INV, // GPIO15 RF receiver control GPIO_LED4_INV, // GPIO15 RF receiver control
0, 0 0, 0
} }

View File

@ -247,23 +247,23 @@ void AriluxRfHandler(void)
void AriluxRfInit(void) void AriluxRfInit(void)
{ {
if ((pin[GPIO_ARIRFRCV] < 99) && (pin[GPIO_LED2] < 99)) { if ((pin[GPIO_ARIRFRCV] < 99) && (pin[GPIO_LED4] < 99)) {
if (Settings.last_module != Settings.module) { if (Settings.last_module != Settings.module) {
Settings.rf_code[1][6] = 0; Settings.rf_code[1][6] = 0;
Settings.rf_code[1][7] = 0; Settings.rf_code[1][7] = 0;
Settings.last_module = Settings.module; Settings.last_module = Settings.module;
} }
arilux_rf_received_value = 0; arilux_rf_received_value = 0;
digitalWrite(pin[GPIO_LED2], !bitRead(led_inverted, 1)); // Turn on RF digitalWrite(pin[GPIO_LED4], !bitRead(led_inverted, 3)); // Turn on RF
attachInterrupt(pin[GPIO_ARIRFRCV], AriluxRfInterrupt, CHANGE); attachInterrupt(pin[GPIO_ARIRFRCV], AriluxRfInterrupt, CHANGE);
} }
} }
void AriluxRfDisable(void) void AriluxRfDisable(void)
{ {
if ((pin[GPIO_ARIRFRCV] < 99) && (pin[GPIO_LED2] < 99)) { if ((pin[GPIO_ARIRFRCV] < 99) && (pin[GPIO_LED4] < 99)) {
detachInterrupt(pin[GPIO_ARIRFRCV]); detachInterrupt(pin[GPIO_ARIRFRCV]);
digitalWrite(pin[GPIO_LED2], bitRead(led_inverted, 1)); // Turn off RF digitalWrite(pin[GPIO_LED4], bitRead(led_inverted, 3)); // Turn off RF
} }
} }
#endif // USE_ARILUX_RF #endif // USE_ARILUX_RF
@ -387,8 +387,8 @@ void LightInit(void)
} }
} }
if (pin[GPIO_ARIRFRCV] < 99) { if (pin[GPIO_ARIRFRCV] < 99) {
if (pin[GPIO_LED2] < 99) { if (pin[GPIO_LED4] < 99) {
digitalWrite(pin[GPIO_LED2], bitRead(led_inverted, 1)); // Turn off RF digitalWrite(pin[GPIO_LED4], bitRead(led_inverted, 3)); // Turn off RF
} }
} }
} }