diff --git a/lighthub/abstractout.cpp b/lighthub/abstractout.cpp index 480cca8..b8516ee 100644 --- a/lighthub/abstractout.cpp +++ b/lighthub/abstractout.cpp @@ -9,6 +9,7 @@ int abstractOut::isActive() { case CMD_OFF: case CMD_HALT: + case CMD_VOID: return 0; break; default: diff --git a/lighthub/abstractout.h b/lighthub/abstractout.h index b88ae51..a717b7d 100644 --- a/lighthub/abstractout.h +++ b/lighthub/abstractout.h @@ -12,7 +12,7 @@ public: virtual int isActive(); virtual itemCmd getDefaultOnVal(){return itemCmd().Percents255(255);}; virtual int getChanType(){return 0;} - virtual int getDefaultStorageType(){return ST_PERCENTS255;} /// Remove?? Now getChanType used instead + virtual int getDefaultStorageType(){return 0;} /// Remove?? Now getChanType used instead int Setup() override; protected: Item * item; diff --git a/lighthub/item.cpp b/lighthub/item.cpp index c6a5904..d33bf18 100644 --- a/lighthub/item.cpp +++ b/lighthub/item.cpp @@ -417,6 +417,7 @@ void Item::setVal(long int par) // Only store if VAL is int (autogenerated or c //debugSerial<name, sizeof(addrstr)-1); - st.toString(valstr, sizeof(valstr), SEND_PARAMETERS,true); + - if (sendFlags & SEND_PARAMETERS && st.getCmd() != CMD_OFF && st.getCmd() != CMD_HALT) + if (sendFlags & SEND_PARAMETERS && st.getCmd() != CMD_OFF && st.getCmd() != CMD_HALT && + // send only for OH bus supported types + (st.getArgType() == ST_PERCENTS255 || st.getArgType() == ST_HSV255 || st.getArgType() == ST_FLOAT_CELSIUS)) { + st.toString(valstr, sizeof(valstr), SEND_PARAMETERS,true); mqttClient.publish(addrstr, valstr, true); debugSerial<")<itemArr->name,"ON","/cmd"); + // publishTopic(item->itemArr->name,"ON","/cmd"); return 1; break; case CMD_OFF: @@ -310,73 +313,78 @@ int out_AC::Ctrl(itemCmd cmd, char* subItem , bool toExecute) data[B_POWER] = power; data[B_POWER] &= ~1; SendData(off, sizeof(off)/sizeof(byte)); - publishTopic(item->itemArr->name,"OFF","/cmd"); + // publishTopic(item->itemArr->name,"OFF","/cmd"); return 1; break; case CMD_AUTO: data[B_MODE] = 0; data[B_POWER] = power; data[B_POWER] |= 1; - strcpy_P(s_mode,AUTO_P); + // strcpy_P(s_mode,AUTO_P); break; case CMD_COOL: data[B_MODE] = 1; data[B_POWER] = power; data[B_POWER] |= 1; - strcpy_P(s_mode,COOL_P); + // strcpy_P(s_mode,COOL_P); break; case CMD_HEAT: data[B_MODE] = 2; data[B_POWER] = power; data[B_POWER] |= 1; - strcpy_P(s_mode,HEAT_P); + // strcpy_P(s_mode,HEAT_P); break; case CMD_DRY: data[B_MODE] = 4; data[B_POWER] = power; data[B_POWER] |= 1; - strcpy_P(s_mode,DRY_P); + // strcpy_P(s_mode,DRY_P); break; case CMD_FAN: data[B_MODE] = 3; - debugSerial<<"fan\n"; + // debugSerial<<"fan\n"; data[B_POWER] = power; data[B_POWER] |= 1; - strcpy_P(s_mode,FAN_ONLY_P); + if (data[B_FAN_SPD] == 3) + { + data[B_FAN_SPD] = 2; //Auto - fan speed in Ventilation mode not working + } + // strcpy_P(s_mode,FAN_ONLY_P); break; case CMD_UNKNOWN: return -1; break; } - publishTopic(item->itemArr->name,s_mode,"/cmd"); + // debugSerial<itemArr->name,s_mode,"/cmd"); break; case S_FAN: - s_mode[0]='\0'; + s_speed[0]='\0'; switch (cmd.getCmd()) { case CMD_AUTO: data[B_FAN_SPD] = 3; - strcpy_P(s_mode,AUTO_P); + strcpy_P(s_speed,AUTO_P); break; case CMD_HIGH: data[B_FAN_SPD] = 0; - strcpy_P(s_mode,HIGH_P); + strcpy_P(s_speed,HIGH_P); break; case CMD_MED: data[B_FAN_SPD] = 1; - strcpy_P(s_mode,MED_P); + strcpy_P(s_speed,MED_P); break; case CMD_LOW: data[B_FAN_SPD] = 2; - strcpy_P(s_mode,LOW_P); + strcpy_P(s_speed,LOW_P); break; default: //if (n) data[B_FAN_SPD] = Parameters[0]; data[B_FAN_SPD] = cmd.getInt(); //TODO - mapping digits to speed } - publishTopic(item->itemArr->name,s_mode,"/fan"); + publishTopic(item->itemArr->name,s_speed,"/fan"); break; case S_MODE: @@ -401,14 +409,17 @@ int out_AC::Ctrl(itemCmd cmd, char* subItem , bool toExecute) { case CMD_ON: data[B_LOCK_REM] = 3; + publishTopic(item->itemArr->name,"ON","/swing"); break; case CMD_OFF: data[B_LOCK_REM] = 0; + publishTopic(item->itemArr->name,"OFF","/swing"); break; default: //if (n) data[B_SWING] = Parameters[0]; data[B_SWING] = cmd.getInt(); } + break; case S_QUIET: @@ -476,12 +487,13 @@ int out_AC::Ctrl(itemCmd cmd, char* subItem , bool toExecute) data[9] = 1; data[10] = 77; data[11] = 95; + AC_Serial.flush(); SendData(data, sizeof(data)/sizeof(byte)); //InsertData(data, sizeof(data)/sizeof(byte)); - + //AC_Serial.flush(); return 1; } - +int out_AC::getChanType() {return CH_THERMO;} #endif diff --git a/lighthub/modules/out_ac.h b/lighthub/modules/out_ac.h index 6c19ab0..f226559 100644 --- a/lighthub/modules/out_ac.h +++ b/lighthub/modules/out_ac.h @@ -30,6 +30,7 @@ public: int Stop() override; int Status() override; int isActive() override; + int getChanType() override; int getDefaultStorageType(){return ST_FLOAT_CELSIUS;}; int Ctrl(itemCmd cmd, char* subItem=NULL, bool toExecute=true) override;