std::string CPush::ProcessSendValue(const std::string &rawsendValue, const int delpos, const int nValue, const int includeUnit, const int metertypein) { std::string vType = DropdownOptionsValue(m_DeviceRowIdx,delpos); unsigned char tempsign=m_sql.m_tempsign[0]; _eMeterType metertype = (_eMeterType) metertypein; char szData[100]= ""; std::string unit = getUnit(delpos, metertypein); if ((vType=="Temperature") || (vType=="Temperature 1") || (vType=="Temperature 2")|| (vType == "Set point")) { double tvalue=ConvertTemperature(atof(rawsendValue.c_str()),tempsign); sprintf(szData,"%.1f", tvalue); } else if (vType == "Concentration") { sprintf(szData,"%d", nValue); } else if (vType == "Humidity") { sprintf(szData,"%d", atoi(rawsendValue.c_str())); } else if (vType == "Humidity Status") { sprintf(szData,"%s", RFX_Humidity_Status_Desc(atoi(rawsendValue.c_str()))); } else if (vType == "Barometer") { sprintf(szData,"%.1f", atof(rawsendValue.c_str())); } else if (vType == "Forecast") { int forecast=atoi(rawsendValue.c_str()); if (forecast!=baroForecastNoInfo) { sprintf(szData,"%s", RFX_Forecast_Desc(forecast)); } else { sprintf(szData,"%d", forecast); } } else if (vType == "Altitude") { sprintf(szData,"Not supported yet"); } else if (vType == "UV") { float UVI = static_cast<float>(atof(rawsendValue.c_str())); sprintf(szData,"%.1f",UVI); } else if (vType == "Direction") { float Direction = static_cast<float>(atof(rawsendValue.c_str())); sprintf(szData,"%.1f",Direction); } else if (vType == "Direction string") { sprintf(szData,"%s",rawsendValue.c_str()); } else if (vType == "Speed") { int intSpeed = atoi(rawsendValue.c_str()); if (m_sql.m_windunit != WINDUNIT_Beaufort) { sprintf(szData, "%.1f", float(intSpeed) * m_sql.m_windscale); } else { float speedms = float(intSpeed)*0.1f; sprintf(szData, "%d", MStoBeaufort(speedms)); } } else if (vType == "Gust") { int intGust=atoi(rawsendValue.c_str()); if (m_sql.m_windunit != WINDUNIT_Beaufort) { sprintf(szData, "%.1f", float(intGust) *m_sql.m_windscale); } else { float gustms = float(intGust)*0.1f; sprintf(szData, "%d", MStoBeaufort(gustms)); } } else if (vType == "Chill") { double tvalue=ConvertTemperature(atof(rawsendValue.c_str()),tempsign); sprintf(szData,"%.1f", tvalue); } else if (vType == "Rain rate") { sprintf(szData,"Not supported yet"); } else if (vType == "Total rain") { sprintf(szData,"Not supported yet"); } else if (vType == "Counter") { sprintf(szData,"Not supported yet"); } else if (vType == "Mode") { sprintf(szData,"Not supported yet"); } else if (vType == "Status") { sprintf(szData,"Not supported yet"); } else if ((vType == "Current 1") || (vType == "Current 2") || (vType == "Current 3")) { sprintf(szData,"Not supported yet"); } else if (vType == "Instant") { sprintf(szData,"Not supported yet"); } else if ((vType == "Usage") || (vType == "Usage 1") || (vType == "Usage 2") ) { sprintf(szData,"%.1f",atof(rawsendValue.c_str())); } else if ((vType == "Delivery") || (vType == "Delivery 1") || (vType == "Delivery 2") ) { sprintf(szData,"%.1f",atof(rawsendValue.c_str())); } else if (vType == "Usage current") { sprintf(szData,"%.1f",atof(rawsendValue.c_str())); } else if (vType == "Delivery current") { sprintf(szData,"%.1f",atof(rawsendValue.c_str())); } else if (vType == "Gas usage") { sprintf(szData,"Not supported yet"); } else if (vType == "Weight") { sprintf(szData,"%.1f",atof(rawsendValue.c_str())); } else if (vType == "Voltage") { sprintf(szData,"%.3f",atof(rawsendValue.c_str())); } else if (vType == "Value") { sprintf(szData,"%d", atoi(rawsendValue.c_str())); //?? } else if (vType == "Visibility") { float vis = static_cast<float>(atof(rawsendValue.c_str())); if (metertype==0) { //km sprintf(szData,"%.1f",vis); } else { //miles sprintf(szData,"%.1f",vis*0.6214f); } } else if (vType == "Solar Radiation") { float radiation = static_cast<float>(atof(rawsendValue.c_str())); sprintf(szData,"%.1f",radiation); } else if (vType == "Soil Moisture") { sprintf(szData,"%d",nValue); } else if (vType == "Leaf Wetness") { sprintf(szData,"%d",nValue); } else if (vType == "Percentage") { sprintf(szData,"%.2f",atof(rawsendValue.c_str())); } else if (vType == "Fanspeed") { sprintf(szData,"%d",atoi(rawsendValue.c_str())); } else if (vType == "Pressure") { sprintf(szData,"%.1f",atof(rawsendValue.c_str())); } else if (vType == "Lux") { sprintf(szData,"%.0f",atof(rawsendValue.c_str())); } if (szData[0] != '\0') { std::string sendValue(szData); if (includeUnit) { sendValue+=" "; sendValue+=unit; } return sendValue; } else { _log.Log(LOG_ERROR,"Could not determine data push value"); return ""; } }
std::string CDataPush::ProcessSendValue(std::string rawsendValue, int delpos, int nValue, int includeUnit, int metertypein) { std::string vType = DropdownOptionsValue(DeviceRowIdx,delpos); unsigned char tempsign=m_sql.m_tempsign[0]; _eMeterType metertype = (_eMeterType) metertypein; char szData[100]= ""; if ((vType=="Temperature") || (vType=="Temperature 1") || (vType=="Temperature 2")|| (vType == "Set point")) { double tvalue=ConvertTemperature(atof(rawsendValue.c_str()),tempsign); if (includeUnit) { sprintf(szData,"%.1f %c", tvalue,tempsign); } else { sprintf(szData,"%.1f", tvalue); } } else if (vType == "Humidity") { if (includeUnit) { sprintf(szData,"%d %%", atoi(rawsendValue.c_str())); } else { sprintf(szData,"%d", atoi(rawsendValue.c_str())); } } else if (vType == "Humidity Status") { sprintf(szData,"%s", RFX_Humidity_Status_Desc(atoi(rawsendValue.c_str()))); } else if (vType == "Barometer") { if (includeUnit) { sprintf(szData,"%.1f hPa", atof(rawsendValue.c_str())); } else { sprintf(szData,"%.1f", atof(rawsendValue.c_str())); } } else if (vType == "Forecast") { int forecast=atoi(rawsendValue.c_str()); if (forecast!=baroForecastNoInfo) { sprintf(szData,"%s", RFX_Forecast_Desc(forecast)); } else { sprintf(szData,"%d", forecast); } } else if (vType == "Altitude") { sprintf(szData,"Not supported yet"); } else if (vType == "UV") { float UVI=(float)atof(rawsendValue.c_str()); if (includeUnit) { sprintf(szData,"%.1f UVI",UVI); } else { sprintf(szData,"%.1f",UVI); } } else if (vType == "Direction") { float Direction = (float)atof(rawsendValue.c_str()); if (includeUnit) { sprintf(szData,"%.1f Degrees",Direction); } else { sprintf(szData,"%.1f",Direction); } } else if (vType == "Direction string") { sprintf(szData,"%s",rawsendValue.c_str()); } else if (vType == "Speed") { int intSpeed=atoi(rawsendValue.c_str()); if (includeUnit) { sprintf(szData,"%.1f",float(intSpeed) * m_sql.m_windscale); //todo: unit? } else { sprintf(szData,"%.1f",float(intSpeed) * m_sql.m_windscale); } } else if (vType == "Gust") { int intGust=atoi(rawsendValue.c_str()); if (includeUnit) { sprintf(szData,"%.1f",float(intGust) *m_sql.m_windscale); //todo: unit? } else { sprintf(szData,"%.1f",float(intGust) *m_sql.m_windscale); } } else if (vType == "Chill") { double tvalue=ConvertTemperature(atof(rawsendValue.c_str()),tempsign); if (includeUnit) { sprintf(szData,"%.1f %c", tvalue,tempsign); } else { sprintf(szData,"%.1f", tvalue); } } else if (vType == "Rain rate") { sprintf(szData,"Not supported yet"); } else if (vType == "Total rain") { sprintf(szData,"Not supported yet"); } else if (vType == "Counter") { sprintf(szData,"Not supported yet"); } else if (vType == "Mode") { sprintf(szData,"Not supported yet"); } else if (vType == "Status") { sprintf(szData,"Not supported yet"); } else if ((vType == "Current 1") || (vType == "Current 2") || (vType == "Current 3")) { sprintf(szData,"Not supported yet"); } else if (vType == "Instant") { sprintf(szData,"Not supported yet"); } else if ((vType == "Usage") || (vType == "Usage 1") || (vType == "Usage 2") ) { if (includeUnit) { sprintf(szData,"%.1f Watt",atof(rawsendValue.c_str())); } else { sprintf(szData,"%.1f",atof(rawsendValue.c_str())); } } else if ((vType == "Delivery") || (vType == "Delivery 1") || (vType == "Delivery 2") ) { if (includeUnit) { sprintf(szData,"%.1f Watt",atof(rawsendValue.c_str())); } else { sprintf(szData,"%.1f",atof(rawsendValue.c_str())); } } else if (vType == "Usage current") { if (includeUnit) { sprintf(szData,"%.1f Watt",atof(rawsendValue.c_str())); } else { sprintf(szData,"%.1f",atof(rawsendValue.c_str())); } } else if (vType == "Delivery current") { if (includeUnit) { sprintf(szData,"%.1f Watt",atof(rawsendValue.c_str())); } else { sprintf(szData,"%.1f",atof(rawsendValue.c_str())); } } else if (vType == "Gas usage") { sprintf(szData,"Not supported yet"); } else if (vType == "Weight") { if (includeUnit) { sprintf(szData,"%.1f kg",atof(rawsendValue.c_str())); } else { sprintf(szData,"%.1f",atof(rawsendValue.c_str())); } } else if (vType == "Voltage") { if (includeUnit) { sprintf(szData,"%.3f V",atof(rawsendValue.c_str())); } else { sprintf(szData,"%.3f",atof(rawsendValue.c_str())); } } else if (vType == "Value") { sprintf(szData,"%d", atoi(rawsendValue.c_str())); //?? } else if (vType == "Visibility") { float vis=(float)atof(rawsendValue.c_str()); if (includeUnit) { if (metertype==0) { //km sprintf(szData,"%.1f km",vis); } else { //miles sprintf(szData,"%.1f mi",vis*0.6214f); } } else { if (metertype==0) { //km sprintf(szData,"%.1f",vis); } else { //miles sprintf(szData,"%.1f",vis*0.6214f); } } } else if (vType == "Solar Radiation") { float radiation=(float)atof(rawsendValue.c_str()); if (includeUnit) { sprintf(szData,"%.1f Watt/m2",radiation); } else { sprintf(szData,"%.1f",radiation); } } else if (vType == "Soil Moisture") { if (includeUnit) { sprintf(szData,"%d cb",nValue); } else { sprintf(szData,"%d",nValue); } } else if (vType == "Leaf Wetness") { sprintf(szData,"%d",nValue); } else if (vType == "Percentage") { if (includeUnit) { sprintf(szData,"%.2f%%",atof(rawsendValue.c_str())); } else { sprintf(szData,"%.2f",atof(rawsendValue.c_str())); } } else if (vType == "Fanspeed") { if (includeUnit) { sprintf(szData,"%d RPM",atoi(rawsendValue.c_str())); } else { sprintf(szData,"%d",atoi(rawsendValue.c_str())); } } else if (vType == "Pressure") { if (includeUnit) { sprintf(szData,"%.1f Bar",atof(rawsendValue.c_str())); } else { sprintf(szData,"%.1f",atof(rawsendValue.c_str())); } } else if (vType == "Lux") { if (includeUnit) { sprintf(szData,"%.0f Lux",atof(rawsendValue.c_str())); } else { sprintf(szData,"%.0f",atof(rawsendValue.c_str())); } } if (szData[0] != '\0') { std::string sendValue(szData); return sendValue; } else { _log.Log(LOG_ERROR,"Could not determine data push value"); return ""; } }