1 #pragma once 2 3 #include <string> 4 5 enum _eSwitchType 6 { 7 STYPE_OnOff = 0, //0 8 STYPE_Doorbell, //1 9 STYPE_Contact, //2 10 STYPE_Blinds, //3 11 STYPE_X10Siren, //4 12 STYPE_SMOKEDETECTOR, //5 13 STYPE_BlindsInverted, //6 14 STYPE_Dimmer, //7 15 STYPE_Motion, //8 16 STYPE_PushOn, //9 17 STYPE_PushOff, //10 18 STYPE_DoorContact, //11 19 STYPE_Dusk, //12 20 STYPE_BlindsPercentage, //13 21 STYPE_VenetianBlindsUS, //14 22 STYPE_VenetianBlindsEU, //15 23 STYPE_BlindsPercentageInverted, //16 24 STYPE_Media, //17 25 STYPE_Selector, //18 26 STYPE_DoorLock, //19 27 STYPE_DoorLockInverted, //20 28 STYPE_END 29 }; 30 31 enum _eMeterType 32 { 33 MTYPE_ENERGY = 0, //0 34 MTYPE_GAS, //1 35 MTYPE_WATER, //2 36 MTYPE_COUNTER, //3 37 MTYPE_ENERGY_GENERATED, //4 38 MTYPE_TIME, //5 39 MTYPE_END 40 }; 41 42 enum _eTimerType 43 { 44 TTYPE_BEFORESUNRISE = 0, 45 TTYPE_AFTERSUNRISE, 46 TTYPE_ONTIME, 47 TTYPE_BEFORESUNSET, 48 TTYPE_AFTERSUNSET, 49 TTYPE_FIXEDDATETIME, 50 TTYPE_DAYSODD, 51 TTYPE_DAYSEVEN, 52 TTYPE_WEEKSODD, 53 TTYPE_WEEKSEVEN, 54 TTYPE_MONTHLY, 55 TTYPE_MONTHLY_WD, 56 TTYPE_YEARLY, 57 TTYPE_YEARLY_WD, 58 TTYPE_BEFORESUNATSOUTH, 59 TTYPE_AFTERSUNATSOUTH, 60 TTYPE_BEFORECIVTWSTART, 61 TTYPE_AFTERCIVTWSTART, 62 TTYPE_BEFORECIVTWEND, 63 TTYPE_AFTERCIVTWEND, 64 TTYPE_BEFORENAUTTWSTART, 65 TTYPE_AFTERNAUTTWSTART, 66 TTYPE_BEFORENAUTTWEND, 67 TTYPE_AFTERNAUTTWEND, 68 TTYPE_BEFOREASTTWSTART, 69 TTYPE_AFTERASTTWSTART, 70 TTYPE_BEFOREASTTWEND, 71 TTYPE_AFTERASTTWEND, 72 TTYPE_END 73 }; 74 75 enum _eTimerCommand 76 { 77 TCMD_ON = 0, 78 TCMD_OFF 79 }; 80 81 enum _eMediaStatus 82 { 83 MSTAT_OFF = 0, 84 MSTAT_ON, 85 MSTAT_PAUSED, 86 MSTAT_STOPPED, 87 MSTAT_VIDEO, 88 MSTAT_AUDIO, 89 MSTAT_PHOTO, 90 MSTAT_PLAYING, 91 MSTAT_DISCONNECTED, 92 MSTAT_SLEEPING, 93 MSTAT_UNKNOWN 94 }; 95 96 enum _eHardwareTypes { 97 HTYPE_RFXtrx315 = 0, //0 98 HTYPE_RFXtrx433, //1 99 HTYPE_RFXLAN, //2 100 HTYPE_Domoticz, //3 101 HTYPE_P1SmartMeter, //4 102 HTYPE_P1SmartMeterLAN, //5 103 HTYPE_YouLess, //6 104 HTYPE_TE923, //7 105 HTYPE_Rego6XX, //8 106 HTYPE_TTN_MQTT, //9 107 HTYPE_DavisVantage, //10 108 HTYPE_VOLCRAFTCO20, //11 109 HTYPE_1WIRE, //12 110 HTYPE_RaspberryBMP085, //13 111 HTYPE_Wunderground, //14 112 HTYPE_Dummy, //15 113 HTYPE_PiFace, //16 114 HTYPE_S0SmartMeterUSB, //17 115 HTYPE_OpenThermGateway, //18 116 HTYPE_TeleinfoMeter, //19 117 HTYPE_OpenThermGatewayTCP, //20 118 HTYPE_OpenZWave, //21 119 HTYPE_LimitlessLights, //22 120 HTYPE_System, //23 121 HTYPE_EnOceanESP2, //24 122 HTYPE_DarkSky, //25 123 HTYPE_SolarEdgeTCP, //26 124 HTYPE_SBFSpot, //27 125 HTYPE_ICYTHERMOSTAT, //28 126 HTYPE_WOL, //29 127 HTYPE_PVOUTPUT_INPUT, //30 128 HTYPE_EnOceanESP3, //31 129 HTYPE_RaspberryGPIO, //32 130 HTYPE_Meteostick, //33 131 HTYPE_TOONTHERMOSTAT, //34 132 HTYPE_ECODEVICES, //35 133 HTYPE_HARMONY_HUB, //36 134 HTYPE_Mochad, //37 135 HTYPE_Philips_Hue, //38 136 HTYPE_EVOHOME_SERIAL, //39 137 HTYPE_EVOHOME_SCRIPT, //40 138 HTYPE_MySensorsUSB, //41 139 HTYPE_MySensorsTCP, //42 140 HTYPE_MQTT, //43 141 HTYPE_FRITZBOX, //44 142 HTYPE_ETH8020, //45 143 HTYPE_RFLINKUSB, //46 144 HTYPE_KMTronicUSB, //47 145 HTYPE_KMTronicTCP, //48 146 HTYPE_SOLARMAXTCP, //49 147 HTYPE_KMTronic433, //50 148 HTYPE_Pinger, //51 149 HTYPE_NEST, //52 150 HTYPE_THERMOSMART, //53 151 HTYPE_Netatmo, //54 152 HTYPE_Kodi, //55 153 HTYPE_ANNATHERMOSTAT, //56 154 HTYPE_WINDDELEN, //57 155 HTYPE_SatelIntegra, //58 156 HTYPE_Tellstick, //59 157 HTYPE_LogitechMediaServer, //60 158 HTYPE_RFXtrx868, //61 159 HTYPE_RFLINKTCP, //62 160 HTYPE_Comm5TCP, //63 161 HTYPE_SolarEdgeAPI, //64 162 HTYPE_CurrentCostMeter, //65 163 HTYPE_CurrentCostMeterLAN, //66 164 HTYPE_DomoticzInternal, //67 165 HTYPE_NefitEastLAN, //68 166 HTYPE_PanasonicTV, //69 167 HTYPE_OpenWebNetTCP, //70 168 HTYPE_RaspberryHTU21D, //71 169 HTYPE_AtagOne, //72 170 HTYPE_Sterbox, //73 171 HTYPE_HTTPPOLLER, //74 172 HTYPE_EVOHOME_WEB, //75 173 HTYPE_RAVEn, //76 174 HTYPE_S0SmartMeterTCP, //77 175 HTYPE_BuienRadar, //78 176 HTYPE_AccuWeather, //79 177 HTYPE_Comm5Serial, //80 178 HTYPE_Ec3kMeterTCP, //81 179 HTYPE_BleBox, //82 180 HTYPE_OpenWeatherMap, //83 181 HTYPE_GoodweAPI, //84 182 HTYPE_RaspberryTSL2561, //85 183 HTYPE_Daikin, //86 184 HTYPE_HEOS, //87 185 HTYPE_MultiFun, //88 186 HTYPE_ZIBLUEUSB, //89 187 HTYPE_ZIBLUETCP, //90 188 HTYPE_Yeelight, //91 189 HTYPE_MySensorsMQTT, //92 190 HTYPE_RaspberryPCF8574, //93 191 HTYPE_PythonPlugin, //94 192 HTYPE_XiaomiGateway, //95 193 HTYPE_RaspberryBME280, //96 194 HTYPE_Arilux, //97 195 HTYPE_OpenWebNetUSB, //98 196 HTYPE_IntergasInComfortLAN2RF, //99 197 HTYPE_RelayNet, //100 198 HTYPE_KMTronicUDP, //101 199 HTYPE_SysfsGpio, //102 200 HTYPE_Rtl433, //103 201 HTYPE_OnkyoAVTCP, //104 202 HTYPE_RESERVED_FOR_YOU_2, //105 203 HTYPE_EVOHOME_TCP, //106 204 HTYPE_USBtinGateway, //107 205 HTYPE_EnphaseAPI, //108 206 HTYPE_RaspberryMCP23017, //109 207 HTYPE_eHouseTCP, //110 208 HTYPE_Comm5SMTCP, //111 209 HTYPE_Nest_OAuthAPI, //112 210 HTYPE_EcoCompteur, //113 211 HTYPE_Honeywell, //114 212 HTYPE_Tado, //115 213 HTYPE_DenkoviHTTPDevices, //116 214 HTYPE_DenkoviUSBDevices, //117 215 HTYPE_DenkoviTCPDevices, //118 216 HTYPE_OctoPrint, //119 217 HTYPE_Tesla, //120 218 HTYPE_END 219 }; 220 221 enum _eNotificationTypes 222 { 223 NTYPE_TEMPERATURE = 0, 224 NTYPE_HUMIDITY, 225 NTYPE_RAIN, 226 NTYPE_UV, 227 NTYPE_WIND, 228 NTYPE_USAGE, 229 NTYPE_BARO, 230 NTYPE_SWITCH_ON,//7 231 NTYPE_AMPERE1, 232 NTYPE_AMPERE2, 233 NTYPE_AMPERE3, 234 NTYPE_ENERGYINSTANT, 235 NTYPE_ENERGYTOTAL, 236 NTYPE_TODAYENERGY, 237 NTYPE_TODAYGAS, 238 NTYPE_TODAYCOUNTER, 239 NTYPE_SWITCH_OFF,//16 240 NTYPE_PERCENTAGE, 241 NTYPE_DEWPOINT, 242 NTYPE_RPM, 243 NTYPE_SETPOINT, 244 NTYPE_VIDEO, 245 NTYPE_AUDIO, 246 NTYPE_PHOTO, 247 NTYPE_PAUSED, 248 NTYPE_STOPPED, 249 NTYPE_PLAYING, 250 NTYPE_VALUE, 251 NTYPE_LASTUPDATE, 252 NTYPE_SLEEPING 253 }; 254 255 const char *RFX_Type_Desc(const unsigned char i, const unsigned char snum); 256 const char *RFX_Type_SubType_Desc(const unsigned char dType, const unsigned char sType); 257 unsigned char Get_Humidity_Level(const unsigned char hlevel); 258 const char *RFX_Humidity_Status_Desc(const unsigned char status); 259 const char *Switch_Type_Desc(const _eSwitchType sType); 260 const char *Meter_Type_Desc(const _eMeterType sType); 261 const char *RFX_Forecast_Desc(const unsigned char Forecast); 262 const char *RFX_WSForecast_Desc(const unsigned char Forecast); 263 const char *BMP_Forecast_Desc(const unsigned char Forecast); 264 const char *Timer_Type_Desc(const int tType); 265 const char *Timer_Cmd_Desc(const int tCmd); 266 const char *Hardware_Type_Desc(int hType); 267 const char *Hardware_Short_Desc(int hType); 268 const char *Security_Status_Desc(const unsigned char status); 269 const char *Notification_Type_Desc(const int nType, const unsigned char snum); 270 const char *Notification_Type_Label(const int nType); 271 const char *Get_Moisture_Desc(const int moisture); 272 const char *Get_Alert_Desc(const int level); 273 const char *Media_Player_States(const _eMediaStatus Status); 274 const char *ZWave_Clock_Days(const unsigned char Day); 275 extern const char *ZWave_Thermostat_Fan_Modes[]; 276 int Lookup_ZWave_Thermostat_Modes(const std::vector<std::string> &Modes, const std::string &sMode); 277 int Lookup_ZWave_Thermostat_Fan_Modes(const std::string &sMode); 278 279 void GetLightStatus( 280 const unsigned char dType, 281 const unsigned char dSubType, 282 const _eSwitchType switchtype, 283 const unsigned char nValue, 284 const std::string &sValue, 285 std::string &lstatus, 286 int &llevel, 287 bool &bHaveDimmer, 288 int &maxDimLevel, 289 bool &bHaveGroupCmd); 290 291 int GetSelectorSwitchLevel(const std::map<std::string, std::string> & options, const std::string & levelName); 292 std::string GetSelectorSwitchLevelAction(const std::map<std::string, std::string> & options, const int level); 293 void GetSelectorSwitchStatuses(const std::map<std::string, std::string> & options, std::map<std::string, std::string> & statuses); 294 295 bool GetLightCommand( 296 const unsigned char dType, 297 const unsigned char dSubType, 298 const _eSwitchType switchtype, 299 std::string switchcmd, 300 unsigned char &cmd, 301 const std::map<std::string, std::string> & options 302 ); 303 304 bool IsLightSwitchOn(const std::string &lstatus); 305 306 bool IsSerialDevice(const _eHardwareTypes htype); 307 bool IsNetworkDevice(const _eHardwareTypes htype); 308 void ConvertToGeneralSwitchType(std::string &devid, int &dtype, int &subtype); 309