Page 1 of 1

Exception in MySensorsBase::SendSensor2Domoticz

Posted: Monday 20 April 2020 17:14
by bart59
My Domoticz crashed multiple times/day within the MySensorsBase::SendSensor2Domoticz() function. I downloaded the sources, compiled and found an error around line 990 where vType == V_FORECAST. The following code

Code: Select all

			if (pSensorBaro)
			{
				float Baro;
				if (pSensorBaro->GetValue(V_PRESSURE, Baro))
				{
					int forecast = intValue;
					if (forecast == bmpbaroforecast_cloudy)
					{
						if (Baro < 1010)
							forecast = bmpbaroforecast_rain;
					}
					SendBaroSensor(pSensorBaro->nodeID, pSensorBaro->childID, pSensorBaro->batValue, Baro, forecast, (!pChild->childName.empty()) ? pChild->childName : "Baro");
				}
			}
			else
			{
				if (pChild->GetValue(V_FORECAST, stringValue))
				{
					std::string devname = (!pChild->childName.empty()) ? pChild->childName : "Forecast";
					SendTextSensor(pSensorBaro->nodeID, pSensorBaro->childID, pChild->batValue, stringValue, devname);
				}
The else clause (with pSensorBaro==null) still uses pSensorBaro->nodeID. This will generate an exception which will crash domoticz. I fixed the code as follows:

Code: Select all

			if (pSensorBaro)
			{
				float Baro;
				if (pSensorBaro->GetValue(V_PRESSURE, Baro))
				{
					int forecast = intValue;
					if (forecast == bmpbaroforecast_cloudy)
					{
						if (Baro < 1010)
							forecast = bmpbaroforecast_rain;
					}
					SendBaroSensor(pSensorBaro->nodeID, pSensorBaro->childID, pSensorBaro->batValue, Baro, forecast, (!pChild->childName.empty()) ? pChild->childName : "Baro");
				}
			}
			else
			{
				_tMySensorChild *pSensorForecast = FindChildWithValueType(pChild->nodeID, V_FORECAST, pChild->groupID);
				if (pSensorForecast && pChild->GetValue(V_FORECAST, stringValue))
				{
					std::string devname = (!pChild->childName.empty()) ? pChild->childName : "Forecast";
					SendTextSensor(pSensorForecast->nodeID, pSensorForecast->childID, pChild->batValue, stringValue, devname);
				}
I want to push the change back into github - but I get a 'permission denied'. Not sure how I can get permission to post changes. Any ideas?

(added as issue 4088 on https://github.com/domoticz/domoticz/issues/4088)