Exception in MySensorsBase::SendSensor2Domoticz

Moderator: leecollings

Post Reply
bart59
Posts: 3
Joined: Wednesday 02 November 2016 0:32
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Exception in MySensorsBase::SendSensor2Domoticz

Post 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)
Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests