mirror of
https://github.com/anklimov/lighthub
synced 2025-12-07 20:29:50 +03:00
AC mqtt status fixed
cmd update for "set Enabled & disabled
This commit is contained in:
@@ -49,6 +49,9 @@ const char DECREASE_P[] PROGMEM = "DECREASE";
|
|||||||
const char TRUE_P[] PROGMEM = "TRUE";
|
const char TRUE_P[] PROGMEM = "TRUE";
|
||||||
const char FALSE_P[] PROGMEM = "FALSE";
|
const char FALSE_P[] PROGMEM = "FALSE";
|
||||||
|
|
||||||
|
const char ENABLED_P[] PROGMEM = "ENABLED";
|
||||||
|
const char DISABLED_P[] PROGMEM = "DISABLED";
|
||||||
|
|
||||||
char HEAT_P[] PROGMEM = "HEAT";
|
char HEAT_P[] PROGMEM = "HEAT";
|
||||||
char COOL_P[] PROGMEM = "COOL";
|
char COOL_P[] PROGMEM = "COOL";
|
||||||
char AUTO_P[] PROGMEM = "AUTO";
|
char AUTO_P[] PROGMEM = "AUTO";
|
||||||
@@ -102,6 +105,8 @@ int txt2cmd(char *payload) {
|
|||||||
else if (strcmp_P(payload, DRY_P) == 0) cmd = CMD_DRY;
|
else if (strcmp_P(payload, DRY_P) == 0) cmd = CMD_DRY;
|
||||||
else if (strcmp_P(payload, TRUE_P) == 0) cmd = CMD_ON;
|
else if (strcmp_P(payload, TRUE_P) == 0) cmd = CMD_ON;
|
||||||
else if (strcmp_P(payload, FALSE_P) == 0) cmd = CMD_OFF;
|
else if (strcmp_P(payload, FALSE_P) == 0) cmd = CMD_OFF;
|
||||||
|
else if (strcmp_P(payload, ENABLED_P) == 0) cmd = CMD_ON;
|
||||||
|
else if (strcmp_P(payload, DISABLED_P) == 0) cmd = CMD_OFF;
|
||||||
else if (strcmp_P(payload, INCREASE_P) == 0) cmd = CMD_UP;
|
else if (strcmp_P(payload, INCREASE_P) == 0) cmd = CMD_UP;
|
||||||
else if (strcmp_P(payload, DECREASE_P) == 0) cmd = CMD_DN;
|
else if (strcmp_P(payload, DECREASE_P) == 0) cmd = CMD_DN;
|
||||||
else if (strcmp_P(payload, HIGH_P) == 0) cmd = CMD_HIGH;
|
else if (strcmp_P(payload, HIGH_P) == 0) cmd = CMD_HIGH;
|
||||||
@@ -500,7 +505,7 @@ int Item::Ctrl(short cmd, short n, int *Parameters, boolean send, int suffixCode
|
|||||||
case CMD_SET: // new style SET - w/o turning ON
|
case CMD_SET: // new style SET - w/o turning ON
|
||||||
|
|
||||||
//if (/*itemType !=CH_THERMO && */send) setCmd(CMD_SET); //prevent ON thermostat by semp set ????
|
//if (/*itemType !=CH_THERMO && */send) setCmd(CMD_SET); //prevent ON thermostat by semp set ????
|
||||||
|
setCmd(CMD_SET); ///??? trying
|
||||||
switch (itemType) {
|
switch (itemType) {
|
||||||
|
|
||||||
case CH_RGBW: //only if configured VAL array
|
case CH_RGBW: //only if configured VAL array
|
||||||
@@ -578,9 +583,7 @@ int Item::Ctrl(short cmd, short n, int *Parameters, boolean send, int suffixCode
|
|||||||
if (itemType != CH_GROUP) return -3;
|
if (itemType != CH_GROUP) return -3;
|
||||||
}
|
}
|
||||||
case CMD_ON:
|
case CMD_ON:
|
||||||
case CMD_COOL:
|
|
||||||
case CMD_AUTO:
|
|
||||||
case CMD_HEAT:
|
|
||||||
|
|
||||||
if (itemType==CH_RGBW && getCmd() == CMD_ON && send /*&& getEnableCMD(500) */) {
|
if (itemType==CH_RGBW && getCmd() == CMD_ON && send /*&& getEnableCMD(500) */) {
|
||||||
debugSerial<<F("Force White\n");
|
debugSerial<<F("Force White\n");
|
||||||
@@ -597,6 +600,10 @@ int Item::Ctrl(short cmd, short n, int *Parameters, boolean send, int suffixCode
|
|||||||
if (send) SendStatus(SEND_COMMAND | SEND_PARAMETERS );
|
if (send) SendStatus(SEND_COMMAND | SEND_PARAMETERS );
|
||||||
break;
|
break;
|
||||||
} // if forcewhite
|
} // if forcewhite
|
||||||
|
|
||||||
|
case CMD_COOL:
|
||||||
|
case CMD_AUTO:
|
||||||
|
case CMD_HEAT:
|
||||||
setCmd(cmd);
|
setCmd(cmd);
|
||||||
if (chActive>0 && send)
|
if (chActive>0 && send)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ return 1;
|
|||||||
};
|
};
|
||||||
|
|
||||||
int out_AC::Ctrl(short cmd, short n, int * Parameters, boolean send, int suffixCode, char* subItem)
|
int out_AC::Ctrl(short cmd, short n, int * Parameters, boolean send, int suffixCode, char* subItem)
|
||||||
{
|
{char s_mode[10];
|
||||||
// Some additional Subitems
|
// Some additional Subitems
|
||||||
if (strcmp_P(subItem, LOCK_P) == 0) suffixCode = S_LOCK;
|
if (strcmp_P(subItem, LOCK_P) == 0) suffixCode = S_LOCK;
|
||||||
else if (strcmp_P(subItem, SWING_P) == 0) suffixCode = S_SWING;
|
else if (strcmp_P(subItem, SWING_P) == 0) suffixCode = S_SWING;
|
||||||
@@ -254,67 +254,84 @@ int out_AC::Ctrl(short cmd, short n, int * Parameters, boolean send, int suffixC
|
|||||||
if (set_tmp >= 0 && set_tmp <= 30)
|
if (set_tmp >= 0 && set_tmp <= 30)
|
||||||
{
|
{
|
||||||
data[B_SET_TMP] = set_tmp;
|
data[B_SET_TMP] = set_tmp;
|
||||||
|
if (send) publishTopic(item->itemArr->name,(long)set_tmp,"/set");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case S_CMD:
|
case S_CMD:
|
||||||
|
s_mode[0]='\0';
|
||||||
switch (cmd)
|
switch (cmd)
|
||||||
{
|
{
|
||||||
case CMD_ON:
|
case CMD_ON:
|
||||||
data[B_POWER] |= 1;
|
data[B_POWER] |= 1;
|
||||||
SendData(on, sizeof(on)/sizeof(byte));
|
SendData(on, sizeof(on)/sizeof(byte));
|
||||||
|
if (send) publishTopic(item->itemArr->name,"ON","/cmd");
|
||||||
return 1;
|
return 1;
|
||||||
break;
|
break;
|
||||||
case CMD_OFF:
|
case CMD_OFF:
|
||||||
case CMD_HALT:
|
case CMD_HALT:
|
||||||
data[B_POWER] &= ~1;
|
data[B_POWER] &= ~1;
|
||||||
SendData(off, sizeof(off)/sizeof(byte));
|
SendData(off, sizeof(off)/sizeof(byte));
|
||||||
|
if (send) publishTopic(item->itemArr->name,"OFF","/cmd");
|
||||||
return 1;
|
return 1;
|
||||||
break;
|
break;
|
||||||
case CMD_AUTO:
|
case CMD_AUTO:
|
||||||
data[B_MODE] = 0;
|
data[B_MODE] = 0;
|
||||||
data[B_POWER] |= 1;
|
data[B_POWER] |= 1;
|
||||||
|
strcpy_P(s_mode,AUTO_P);
|
||||||
break;
|
break;
|
||||||
case CMD_COOL:
|
case CMD_COOL:
|
||||||
data[B_MODE] = 1;
|
data[B_MODE] = 1;
|
||||||
data[B_POWER] |= 1;
|
data[B_POWER] |= 1;
|
||||||
|
strcpy_P(s_mode,COOL_P);
|
||||||
break;
|
break;
|
||||||
case CMD_HEAT:
|
case CMD_HEAT:
|
||||||
data[B_MODE] = 2;
|
data[B_MODE] = 2;
|
||||||
data[B_POWER] |= 1;
|
data[B_POWER] |= 1;
|
||||||
|
strcpy_P(s_mode,HEAT_P);
|
||||||
break;
|
break;
|
||||||
case CMD_DRY:
|
case CMD_DRY:
|
||||||
data[B_MODE] = 4;
|
data[B_MODE] = 4;
|
||||||
data[B_POWER] |= 1;
|
data[B_POWER] |= 1;
|
||||||
|
strcpy_P(s_mode,DRY_P);
|
||||||
break;
|
break;
|
||||||
case CMD_FAN:
|
case CMD_FAN:
|
||||||
data[B_MODE] = 3;
|
data[B_MODE] = 3;
|
||||||
data[B_POWER] |= 1;
|
data[B_POWER] |= 1;
|
||||||
|
strcpy_P(s_mode,FAN_ONLY_P);
|
||||||
break;
|
break;
|
||||||
case CMD_UNKNOWN:
|
case CMD_UNKNOWN:
|
||||||
return -1;
|
return -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (send) publishTopic(item->itemArr->name,s_mode,"/cmd");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case S_FAN:
|
case S_FAN:
|
||||||
|
s_mode[0]='\0';
|
||||||
switch (cmd)
|
switch (cmd)
|
||||||
{
|
{
|
||||||
case CMD_AUTO:
|
case CMD_AUTO:
|
||||||
data[B_FAN_SPD] = 3;
|
data[B_FAN_SPD] = 3;
|
||||||
|
strcpy_P(s_mode,AUTO_P);
|
||||||
break;
|
break;
|
||||||
case CMD_HIGH:
|
case CMD_HIGH:
|
||||||
data[B_FAN_SPD] = 0;
|
data[B_FAN_SPD] = 0;
|
||||||
|
strcpy_P(s_mode,HIGH_P);
|
||||||
break;
|
break;
|
||||||
case CMD_MED:
|
case CMD_MED:
|
||||||
data[B_FAN_SPD] = 1;
|
data[B_FAN_SPD] = 1;
|
||||||
|
strcpy_P(s_mode,MED_P);
|
||||||
break;
|
break;
|
||||||
case CMD_LOW:
|
case CMD_LOW:
|
||||||
data[B_FAN_SPD] = 2;
|
data[B_FAN_SPD] = 2;
|
||||||
|
strcpy_P(s_mode,LOW_P);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (n) data[B_FAN_SPD] = Parameters[0];
|
if (n) data[B_FAN_SPD] = Parameters[0];
|
||||||
|
//TODO - mapping digits to speed
|
||||||
}
|
}
|
||||||
|
if (send) publishTopic(item->itemArr->name,s_mode,"/fan");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case S_MODE:
|
case S_MODE:
|
||||||
@@ -413,7 +430,7 @@ int out_AC::Ctrl(short cmd, short n, int * Parameters, boolean send, int suffixC
|
|||||||
data[10] = 77;
|
data[10] = 77;
|
||||||
data[11] = 95;
|
data[11] = 95;
|
||||||
SendData(data, sizeof(data)/sizeof(byte));
|
SendData(data, sizeof(data)/sizeof(byte));
|
||||||
InsertData(data, sizeof(data)/sizeof(byte));
|
//InsertData(data, sizeof(data)/sizeof(byte));
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user