Exemplo n.º 1
0
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 "";
	}
}
Exemplo n.º 2
0
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 "";
	}
}