@@ -91,7 +91,8 @@ const char kTasmotaCommands[] PROGMEM =
91
91
92
92
const char kSleepMode [] PROGMEM = " Dynamic|Normal" ;
93
93
94
- const uint8_t kIFan02Speed [4 ][3 ] = {{6 ,6 ,6 }, {7 ,6 ,6 }, {7 ,7 ,6 }, {7 ,6 ,7 }};
94
+ #define FAN_STAGES 4
95
+ const uint8_t kIFan02Speed [FAN_STAGES][3 ] = {{6 ,6 ,6 }, {7 ,6 ,6 }, {7 ,7 ,6 }, {7 ,6 ,7 }};
95
96
96
97
// Global variables
97
98
SerialConfig serial_config = SERIAL_8N1; // Serial interface configuration 8 data bits, No parity, 1 stop bit
@@ -375,7 +376,7 @@ uint8_t GetFanspeed(void)
375
376
{
376
377
uint8_t fanspeed = 0 ;
377
378
378
- // if (SONOFF_IFAN02 == Settings.module ) {
379
+ // if (IS_FAN_MODULE ) {
379
380
/* Fanspeed is controlled by relay 2, 3 and 4 as in Sonoff 4CH.
380
381
000x = 0
381
382
001x = 1
@@ -562,18 +563,18 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len)
562
563
fallback_topic_flag = 0 ;
563
564
return ;
564
565
}
565
- else if ((CMND_FANSPEED == command_code) && (SONOFF_IFAN02 == Settings. module ) ) {
566
+ else if ((CMND_FANSPEED == command_code) && IS_FAN_MODULE ) {
566
567
if (data_len > 0 ) {
567
568
if (' -' == dataBuf[0 ]) {
568
569
payload = (int16_t )GetFanspeed () -1 ;
569
- if (payload < 0 ) { payload = 3 ; }
570
+ if (payload < 0 ) { payload = FAN_STAGES - 1 ; }
570
571
}
571
572
else if (' +' == dataBuf[0 ]) {
572
573
payload = GetFanspeed () +1 ;
573
- if (payload > 3 ) { payload = 0 ; }
574
+ if (payload > FAN_STAGES - 1 ) { payload = 0 ; }
574
575
}
575
576
}
576
- if ((payload >= 0 ) && (payload <= 3 ) && (payload != GetFanspeed ())) {
577
+ if ((payload >= 0 ) && (payload < FAN_STAGES ) && (payload != GetFanspeed ())) {
577
578
SetFanspeed (payload);
578
579
}
579
580
snprintf_P (mqtt_data, sizeof (mqtt_data), S_JSON_COMMAND_NVALUE, command, GetFanspeed ());
@@ -1351,7 +1352,7 @@ void ExecuteCommandPower(byte device, byte state, int source)
1351
1352
1352
1353
// ShowSource(source);
1353
1354
1354
- if (SONOFF_IFAN02 == Settings. module ) {
1355
+ if (IS_FAN_MODULE ) {
1355
1356
blink_mask &= 1 ; // No blinking on the fan relays
1356
1357
Settings.flag .interlock = 0 ; // No interlock mode as it is already done by the microcontroller
1357
1358
Settings.pulse_timer [1 ] = 0 ; // No pulsetimers on the fan relays
@@ -1477,7 +1478,7 @@ void PublishStatus(uint8_t payload)
1477
1478
1478
1479
if ((0 == payload) || (99 == payload)) {
1479
1480
uint8_t maxfn = (devices_present > MAX_FRIENDLYNAMES) ? MAX_FRIENDLYNAMES : (!devices_present) ? 1 : devices_present;
1480
- if (SONOFF_IFAN02 == Settings. module ) { maxfn = 1 ; }
1481
+ if (IS_FAN_MODULE ) { maxfn = 1 ; }
1481
1482
stemp[0 ] = ' \0 ' ;
1482
1483
for (byte i = 0 ; i < maxfn; i++) {
1483
1484
snprintf_P (stemp, sizeof (stemp), PSTR (" %s%s\" %s\" " ), stemp, (i > 0 ? " ," : " " ), Settings.friendlyname [i]);
@@ -1604,7 +1605,7 @@ void MqttShowState(void)
1604
1605
LightState (1 );
1605
1606
} else {
1606
1607
snprintf_P (mqtt_data, sizeof (mqtt_data), PSTR (" %s,\" %s\" :\" %s\" " ), mqtt_data, GetPowerDevice (stemp1, i +1 , sizeof (stemp1), Settings.flag .device_index_enable ), GetStateText (bitRead (power, i)));
1607
- if (SONOFF_IFAN02 == Settings. module ) {
1608
+ if (IS_FAN_MODULE ) {
1608
1609
snprintf_P (mqtt_data, sizeof (mqtt_data), PSTR (" %s,\" " D_CMND_FANSPEED " \" :%d" ), mqtt_data, GetFanspeed ());
1609
1610
break ;
1610
1611
}
@@ -1663,7 +1664,7 @@ void PerformEverySecond(void)
1663
1664
AddLog (LOG_LEVEL_DEBUG);
1664
1665
}
1665
1666
1666
- if ((4 == uptime) && (SONOFF_IFAN02 == Settings. module ) ) { // Microcontroller needs 3 seconds before accepting commands
1667
+ if ((4 == uptime) && IS_FAN_MODULE ) { // Microcontroller needs 3 seconds before accepting commands
1667
1668
SetDevicePower (1 , SRC_RETRY); // Sync with default power on state microcontroller being Light ON and Fan OFF
1668
1669
SetDevicePower (power, SRC_RETRY); // Set required power on state
1669
1670
}
0 commit comments